@@ -659,6 +659,7 @@ describe('Buffer', function () {
659659 buffer = hb . createBuffer ( ) ;
660660 expect ( buffer . getGlyphInfos ( ) ) . to . deep . equal ( [ ] ) ;
661661 expect ( buffer . getGlyphPositions ( ) ) . to . deep . equal ( [ ] ) ;
662+ expect ( buffer . getGlyphInfosAndPositions ( ) ) . to . deep . equal ( [ ] ) ;
662663 } ) ;
663664
664665 it ( 'getInfos and getPositions return non empty arrays for non empty buffer' , function ( ) {
@@ -670,31 +671,46 @@ describe('Buffer', function () {
670671 buffer . guessSegmentProperties ( ) ;
671672
672673 // before shaping
673- expect ( buffer . getGlyphInfos ( ) ) . to . deep . equal ( [
674+ let infos = buffer . getGlyphInfos ( ) ;
675+ let positions = buffer . getGlyphPositions ( ) ;
676+ let infosAndPositions = buffer . getGlyphInfosAndPositions ( ) ;
677+
678+ expect ( infos ) . to . deep . equal ( [
674679 { codepoint : 120 , cluster : 0 } ,
675680 { codepoint : 768 , cluster : 1 } ,
676681 { codepoint : 102 , cluster : 2 } ,
677682 { codepoint : 105 , cluster : 3 }
678683 ] ) ;
679- expect ( buffer . getGlyphPositions ( ) ) . to . deep . equal ( [
684+ expect ( positions ) . to . deep . equal ( [
680685 { x_advance : 0 , y_advance : 0 , x_offset : 0 , y_offset : 0 } ,
681686 { x_advance : 0 , y_advance : 0 , x_offset : 0 , y_offset : 0 } ,
682687 { x_advance : 0 , y_advance : 0 , x_offset : 0 , y_offset : 0 } ,
683688 { x_advance : 0 , y_advance : 0 , x_offset : 0 , y_offset : 0 }
684689 ] ) ;
685690
691+ for ( let i = 0 ; i < infosAndPositions . length ; i ++ ) {
692+ expect ( infosAndPositions [ i ] ) . to . deep . equal ( { ...infos [ i ] , ...positions [ i ] } ) ;
693+ }
694+
686695 hb . shape ( font , buffer ) ;
687696 // after shaping
688- expect ( buffer . getGlyphInfos ( ) ) . to . deep . equal ( [
697+ infos = buffer . getGlyphInfos ( ) ;
698+ positions = buffer . getGlyphPositions ( ) ;
699+ infosAndPositions = buffer . getGlyphInfosAndPositions ( ) ;
700+
701+ expect ( infos ) . to . deep . equal ( [
689702 { codepoint : 91 , cluster : 0 } ,
690703 { codepoint : 2662 , cluster : 0 } ,
691704 { codepoint : 1652 , cluster : 2 }
692705 ] ) ;
693- expect ( buffer . getGlyphPositions ( ) ) . to . deep . equal ( [
706+ expect ( positions ) . to . deep . equal ( [
694707 { x_advance : 529 , y_advance : 0 , x_offset : 0 , y_offset : 0 } ,
695708 { x_advance : 0 , y_advance : 0 , x_offset : 97 , y_offset : 0 } ,
696709 { x_advance : 602 , y_advance : 0 , x_offset : 0 , y_offset : 0 }
697710 ] ) ;
711+ for ( let i = 0 ; i < infosAndPositions . length ; i ++ ) {
712+ expect ( infosAndPositions [ i ] ) . to . deep . equal ( { ...infos [ i ] , ...positions [ i ] } ) ;
713+ }
698714 } ) ;
699715
700716 it ( 'glyph infos and positions have private properties' , function ( ) {
@@ -707,15 +723,22 @@ describe('Buffer', function () {
707723 hb . shape ( font , buffer ) ;
708724 const infos = buffer . getGlyphInfos ( ) ;
709725 const positions = buffer . getGlyphPositions ( ) ;
726+ const infosAndPositions = buffer . getGlyphInfosAndPositions ( ) ;
710727
711728 expect ( infos . length ) . to . equal ( 1 ) ;
712729 expect ( positions . length ) . to . equal ( 1 ) ;
730+ expect ( infosAndPositions . length ) . to . equal ( 1 ) ;
713731 expect ( Object . keys ( infos [ 0 ] ) ) . to . deep . equal ( [ 'codepoint' , 'cluster' ] ) ;
714732 expect ( Object . keys ( positions [ 0 ] ) ) . to . deep . equal ( [ 'x_advance' , 'y_advance' , 'x_offset' , 'y_offset' ] ) ;
733+ expect ( Object . keys ( infosAndPositions [ 0 ] ) ) . to . deep . equal ( [ 'codepoint' , 'cluster' , 'x_advance' , 'y_advance' , 'x_offset' , 'y_offset' ] ) ;
715734 expect ( infos [ 0 ] . mask ) . to . not . be . undefined ;
716735 expect ( infos [ 0 ] . var1 ) . to . not . be . undefined ;
717736 expect ( infos [ 0 ] . var2 ) . to . not . be . undefined ;
718737 expect ( positions [ 0 ] . var ) . to . not . be . undefined ;
738+ expect ( infosAndPositions [ 0 ] . mask ) . to . equal ( infos [ 0 ] . mask ) ;
739+ expect ( infosAndPositions [ 0 ] . var1 ) . to . equal ( infos [ 0 ] . var1 ) ;
740+ expect ( infosAndPositions [ 0 ] . var2 ) . to . equal ( infos [ 0 ] . var2 ) ;
741+ expect ( infosAndPositions [ 0 ] . var ) . to . equal ( positions [ 0 ] . var ) ;
719742 } ) ;
720743
721744 it ( 'getPositions returns empty array for buffer without positions' , function ( ) {
0 commit comments