From 4c49daf7cd961fb47126baf04240243736cae606 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 23 Nov 2022 22:33:57 +0000 Subject: [PATCH 1/4] [subset] actually use the preprocessed face in hb-subset. Tests weren't actually using the preprocessed face due to this typo in util/hb-subset. --- src/hb-subset-input.cc | 5 +++++ util/hb-subset.cc | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index 18a07fead..232ab0493 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc @@ -483,6 +483,11 @@ hb_subset_preprocess (hb_face_t *source) hb_set_invert (hb_subset_input_set(input, HB_SUBSET_SETS_NAME_ID)); + hb_set_clear (hb_subset_input_set(input, + HB_SUBSET_SETS_NAME_LANG_ID)); + hb_set_invert (hb_subset_input_set(input, + HB_SUBSET_SETS_NAME_LANG_ID)); + hb_subset_input_set_flags(input, HB_SUBSET_FLAGS_NOTDEF_OUTLINE | HB_SUBSET_FLAGS_GLYPH_NAMES | diff --git a/util/hb-subset.cc b/util/hb-subset.cc index f2606c767..171f27c8c 100644 --- a/util/hb-subset.cc +++ b/util/hb-subset.cc @@ -120,7 +120,7 @@ struct subset_main_t : option_parser_t, face_options_t, output_options_t for (unsigned i = 0; i < num_iterations; i++) { hb_face_destroy (new_face); - new_face = hb_subset_or_fail (face, input); + new_face = hb_subset_or_fail (orig_face, input); } bool success = new_face; From 51028e63e68b2e06f969da9e4e727d5c2f912bf4 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 23 Nov 2022 22:51:16 +0000 Subject: [PATCH 2/4] [subset] Retain all glyphs in preprocessed face. --- src/hb-subset-input.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index 232ab0493..3217f7222 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc @@ -468,6 +468,9 @@ hb_subset_preprocess (hb_face_t *source) hb_set_clear (hb_subset_input_set(input, HB_SUBSET_SETS_UNICODE)); hb_set_invert (hb_subset_input_set(input, HB_SUBSET_SETS_UNICODE)); + hb_set_clear (hb_subset_input_set(input, HB_SUBSET_SETS_GLYPH_INDEX)); + hb_set_invert (hb_subset_input_set(input, HB_SUBSET_SETS_GLYPH_INDEX)); + hb_set_clear (hb_subset_input_set(input, HB_SUBSET_SETS_LAYOUT_FEATURE_TAG)); hb_set_invert (hb_subset_input_set(input, From ff3cac0ccd0633a7715945e4c9f1e7243f75d1cb Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 23 Nov 2022 23:50:49 +0000 Subject: [PATCH 3/4] [subset] Fix unecessary trailing 0 bytes left by ContextFormat2 pruning. Uneeded rules where beind removed from the count by the bytes for them was being left in the font. --- src/hb-ot-layout-gsubgpos.hh | 6 +++++- ...es_f1.layout-test-retain-gids.41,42,43.otf | Bin 2152 -> 2148 bytes ...rules_f1.layout-test-retain-gids.41,42.otf | Bin 2028 -> 2024 bytes ...-test-retain-gids.retain-all-codepoint.otf | Bin 4012 -> 4008 bytes ...tiple_subrules_f1.layout-test.41,42,43.otf | Bin 1440 -> 1436 bytes ...multiple_subrules_f1.layout-test.41,42.otf | Bin 1320 -> 1316 bytes ...es_f1.layout-test.retain-all-codepoint.otf | Bin 4012 -> 4008 bytes ...r-Regular.default.retain-all-codepoint.ttf | Bin 49248 -> 49244 bytes ...egular.drop-hints.retain-all-codepoint.ttf | Bin 29468 -> 29464 bytes ...Regular.keep-gdef.retain-all-codepoint.ttf | Bin 49248 -> 49244 bytes ...es_f2.layout-test-retain-gids.41,42,43.otf | Bin 2256 -> 2252 bytes ...rules_f2.layout-test-retain-gids.41,42.otf | Bin 2224 -> 2220 bytes ...-test-retain-gids.retain-all-codepoint.otf | Bin 4008 -> 4004 bytes ...tiple_subrules_f2.layout-test.41,42,43.otf | Bin 1460 -> 1456 bytes ...multiple_subrules_f2.layout-test.41,42.otf | Bin 1416 -> 1412 bytes ...es_f2.layout-test.retain-all-codepoint.otf | Bin 4008 -> 4004 bytes 16 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/hb-ot-layout-gsubgpos.hh b/src/hb-ot-layout-gsubgpos.hh index cd011b06e..ec7c13cfe 100644 --- a/src/hb-ot-layout-gsubgpos.hh +++ b/src/hb-ot-layout-gsubgpos.hh @@ -2411,6 +2411,7 @@ struct ContextFormat2_5 const hb_map_t *lookup_map = c->table_tag == HB_OT_TAG_GSUB ? c->plan->gsub_lookups : c->plan->gpos_lookups; bool ret = true; int non_zero_index = -1, index = 0; + auto snapshot = c->serializer->snapshot(); for (const auto& _ : + hb_enumerate (ruleSet) | hb_filter (klass_map, hb_first)) { @@ -2422,8 +2423,10 @@ struct ContextFormat2_5 } if (coverage_glyph_classes.has (_.first) && - o->serialize_subset (c, _.second, this, lookup_map, &klass_map)) + o->serialize_subset (c, _.second, this, lookup_map, &klass_map)) { non_zero_index = index; + snapshot = c->serializer->snapshot(); + } index++; } @@ -2437,6 +2440,7 @@ struct ContextFormat2_5 out->ruleSet.pop (); index--; } + c->serializer->revert (snapshot); return_trace (bool (out->ruleSet)); } diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test-retain-gids.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test-retain-gids.41,42,43.otf index 70dd0fdc6eacfdfc8efa02aefb0af63c3ce7b685..5ae5d5b20cb8895fe37ca82194250206d23244fb 100644 GIT binary patch delta 78 zcmaDM@I+vOxTpvN1BUcA9OstS+44F7%F7w1k6DM0R g?iTl8U}InhN;5KWFfcKgFlYct1_qwZd`wYn08d&G(*OVf delta 82 zcmaDN@IqjMxTpjJ1BC=7<7On1A_n%Gi>H!iedu*lll?U diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test-retain-gids.41,42.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test-retain-gids.41,42.otf index f9349f6f3e06a3b3cd43922304536409ebf7c6bd..cfe6648e200c28c96ba632c1cbfa1c9ee0e799f8 100644 GIT binary patch delta 84 zcmaFE|AK#lm>BaP1_tKW?g9S64;Q`+Wnf@Dz`(#zGf~Hz@x#Olc}AOwGiI=8#MIxM nY{Ix(+=79PfgLE%$iTtC#Gt|;1tb|5cqVf&S#EY_TFD9kQm_?+ delta 86 zcmaFC|Av2pm>3HK0|WDG_W=LkM=mdRF)%P501DJi)bVEgGO5hLG=L-n1J7n5rdhlI{6!X- delta 103 zcmZ1>zeaw7xatK42Cm!gF0O8jm5c=p42&EM3=A6X0sg^{cwPno`6qz C+!mPt diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.layout-test.41,42,43.otf index 070f9ec0d7cc0b121eb76759896e96a34958bf74..6530ab6ecf85e6e6fea7eca81f9b8530c8333b4c 100644 GIT binary patch delta 73 zcmZ3$J%@XOxF`<;1JeZe0RP~JZ7&WnFfg8AU|{H*sFTeYF>%I1=9Dc3-;*sEcZ*vv guraU$r5G7F7?>DT7^HwC0|U=w9wy7p?o1Dv07=*q9smFU delta 80 zcmZ3&wSsGcxabcC1}1&?0RP~JEibAV7#NQ*Ffi0j)X8RanK)w(3(uZX^~n~DyCtm{ i*cjM>Qj8273``7a3^G8Hfq{>KVKNt!5hLG=L-n1J7n5rdhlI{6!X- delta 103 zcmZ1>zeaw7xatK42Cm!gF0O8jm5c=p42&EM3=A6X0sg^{cwPno`6qz C+!mPt diff --git a/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.default.retain-all-codepoint.ttf b/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.default.retain-all-codepoint.ttf index ab0c1d1c66ece1372db4679fa0238baf3a99126e..c64ef972a7e769af022fac46bbcdff8ef4cb85f4 100644 GIT binary patch delta 116 zcmV-)0E_?NfCJos1CTKbo2zI503XNz01MoaJX-;zk(m7h$O|>Im;v)1DP{>O2>J!? z10gwSg0W<)90Av6x1@4oyAY%a>lNcex0a&x#ArArx WP5>GJ0ssI2472tlu?MrME4P&33nbbA delta 120 zcmV-;0EhqFfCJ!w1CTKb!>eQf03XNz01MucJX-;%k(m7hcndePm;v)1DQF2S2>b=` z1<(by1zH6(1dIem1L6bJ16Tt>0gwSg0W<)90Av6x1@M!!AY%a@lNcex0a~-%ArArz aPyieN0ssI24gdhN^dqqc0RXe4E4Y+lTO`*2 diff --git a/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.drop-hints.retain-all-codepoint.ttf b/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.drop-hints.retain-all-codepoint.ttf index 2306381eaac5dda0c87c7c21d6d2b598a53efeb4..b4a267702e55d246b54a6106b5016b1651b67149 100644 GIT binary patch delta 117 zcmV-*0E+*d<^h=I0gy2Zo2zI501}h{01MoaJUan!k$CI`_YZ`EvuFYD5h-Q~DhT=o z?gh>Tv;|lNG6aeQL<8Uh(gRonLIIEgLIE@YegI?uECue9fD>Z@9Fyb|!vR>cs1y$Z X2~GeS00IC201UIj7O@Ajbsncw1b8HZ delta 121 zcmV-<0EYjV<^i1M0gy2Z!>eQf01}h{01MucJUan&k$CI`_P>OLvuFYD5h-X1EC~Ds z@CDEXwgp-RGz5$UMg!sl)B{)pLIIEgLIE@YegI?uECukBfD>Z@9+Tt~!vR{es1y$Z b3s3+Y00IC201f~Ev%nUy2LS-Ha2}{s;q4`U diff --git a/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.keep-gdef.retain-all-codepoint.ttf b/test/subset/data/expected/layout.gdef-attachlist/IndicTestJalandhar-Regular.keep-gdef.retain-all-codepoint.ttf index ab0c1d1c66ece1372db4679fa0238baf3a99126e..c64ef972a7e769af022fac46bbcdff8ef4cb85f4 100644 GIT binary patch delta 116 zcmV-)0E_?NfCJos1CTKbo2zI503XNz01MoaJX-;zk(m7h$O|>Im;v)1DP{>O2>J!? z10gwSg0W<)90Av6x1@4oyAY%a>lNcex0a&x#ArArx WP5>GJ0ssI2472tlu?MrME4P&33nbbA delta 120 zcmV-;0EhqFfCJ!w1CTKb!>eQf03XNz01MucJX-;%k(m7hcndePm;v)1DQF2S2>b=` z1<(by1zH6(1dIem1L6bJ16Tt>0gwSg0W<)90Av6x1@M!!AY%a@lNcex0a~-%ArArz aPyieN0ssI24gdhN^dqqc0RXe4E4Y+lTO`*2 diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test-retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test-retain-gids.41,42,43.otf index 1d3f3cd70030aa31e8780a8a111c755105406fa3..f6b78bc97d39c54548e49f30852ad7cb1b15ed29 100644 GIT binary patch delta 79 zcmca0ct&u7xTpmK1IrZm;83SWf-lt=7#NQ*FfepY)bVCynOGsu7%*|h9F|$^d-hMZ iVB9V4!NA7A3Y2GL;9y{4Fk#RDk_-$yoB5ayu>k;AX%Z;_ delta 83 zcmX>jctLQ2xTp;S1IrZm;83SWk}vfb7#NQ*FfjB@)bVEIm{=jt7&39j9G02i_spMc k!MI!6hk=cO6)4Zhz`?-8V8NgRBpDb4fS6%37tQwC;$Ke diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test-retain-gids.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test-retain-gids.41,42.otf index 5a0d0c4aa1e2cf83e3726f562619c017ec9d81d4..6f2e7ef13de0c1a5b97234722507678aee37b255 100644 GIT binary patch delta 83 zcmdlWxJGb-xTpdH151y4aH!M6%$GI{42%aD7#J!h>UcB0nOGsuXfbid3>H7L)ajE= l7UcALm{=jtXftuf3>Ket>5P+2 n7zeIk5xatW82Cm!gF0O8jm5c=p42&EM3=A6X!J$r%Bwnfm`9OJwo{2Wnj8`T` z=reLm?2u;+nYdyivxvf{$u^9;#XT6<7+8U77#TPim>5hLG=L-n1J7n5rfIwY;Jg+1 delta 103 zcmZ1?ze0Y3xat`O2Cm!gF0O8jm5c=p42&EM3=A6X!J$r%6kh5B`6qz<2@`Fk8E;IC z&}ZbC*dfmtF>%F2W)_8WlWiDxOZzaeF|Y#FFfwp3Ffmv#=m1Fu1_2;u*v!W?jTZnl C-xc@( diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.41,42,43.otf index 0a693c64161f1c4a312e0139ec1ffbb1752ad30d..8086051428af99c432f2f98622ff9003049c4fab 100644 GIT binary patch delta 73 zcmdnOy@7jzxF`<;1Je@s;83TBT`!g~Ffg8BU|{H)sFTeYF>%IHW(Pm#$qtOW#XT6< b7+8Taj0_wMObjLr8bFePfoHQA(>!JX;aCu7 delta 77 zcmdnMy@h*%xTpXF1Je@s;83TBlU}T2U|>AMz`)QqQ74-*X5x&c%m#kylN}g$OZzae eF|Yz<7#TPim>4V=bburS15hsm!)76-dCUMFix6i3 diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.41,42.otf index 128c1d4138267777858f3782c641b75c66782bf5..0a26e0fd19023c401b89f2e429cfae6c97365f38 100644 GIT binary patch delta 75 zcmeC+ZsDFFF8YOmfoXz!aH!M6gcmgo42&lj7#J!h>SQxIOq{WhalvFO#=YVe3~UUn dKygL}4hAL$6$U9F$-uxfS%ArOvpbU`GXMjM5T*bC delta 77 zcmZqS?%SQyzOq{Whv2C&y<6cQC1~vv( fpg1D~2Lls>8iNdwWMJT9V3^FuWV+dr$(b1dA#M<& diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.layout-test.retain-all-codepoint.otf index b3d6ae9e4541b312739af3c80848ee34c6f3083e..ff0595a942f5b0678aa092bf7b5f802fe6da9d1c 100644 GIT binary patch delta 99 zcmZ1>zeIk5xatW82Cm!gF0O8jm5c=p42&EM3=A6X!J$r%Bwnfm`9OJwo{2Wnj8`T` z=reLm?2u;+nYdyivxvf{$u^9;#XT6<7+8U77#TPim>5hLG=L-n1J7n5rfIwY;Jg+1 delta 103 zcmZ1?ze0Y3xat`O2Cm!gF0O8jm5c=p42&EM3=A6X!J$r%6kh5B`6qz<2@`Fk8E;IC z&}ZbC*dfmtF>%F2W)_8WlWiDxOZzaeF|Y#FFfwp3Ffmv#=m1Fu1_2;u*v!W?jTZnl C-xc@( From 64e8707ecac726a4e78772875d069db3f5c0ad6a Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Thu, 24 Nov 2022 18:24:50 +0000 Subject: [PATCH 4/4] [subset] don't use hb repacker when generating test files from fonttools. --- ...iqUrdu-Regular.default.627,644,62D,628.ttf | Bin 24564 -> 24532 bytes ...toNastaliqUrdu-Regular.default.633,6D2.ttf | Bin 14296 -> 14292 bytes ...staliqUrdu-Regular.default.63A,64A,631.ttf | Bin 26152 -> 26124 bytes ...u-Regular.default.retain-all-codepoint.ttf | Bin 542388 -> 542328 bytes ...du-Regular.retain-gids.627,644,62D,628.ttf | Bin 30464 -> 30432 bytes ...staliqUrdu-Regular.retain-gids.633,6D2.ttf | Bin 20140 -> 20132 bytes ...iqUrdu-Regular.retain-gids.63A,64A,631.ttf | Bin 32012 -> 31984 bytes ...gular.retain-gids.retain-all-codepoint.ttf | Bin 542424 -> 542360 bytes test/subset/generate-expected-outputs.py | 2 ++ 9 files changed, 2 insertions(+) diff --git a/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.627,644,62D,628.ttf b/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.627,644,62D,628.ttf index cbfad3d565b2c7d4b02d7102a09fe756f7e014c8..e402e57bb51ea35712f6e98a1ba938b35f66f74d 100644 GIT binary patch delta 323 zcmeyepYh6m#t8}%_foYkFfg#^05OAmaH!L~qiWw67-U)|TG%t@OstS+4B0qChLPpR z=RXfO?_ezEs@Gs(VV=yu$iM)^91M(15l_legu$T og~ay&@@;{k0r4OcqXoku1|}enhk>7A4Z~)4UT4P5J$xB~0L%+3r2qf` delta 330 zcmcbzpYh9n#t8}%_jz<&85r1efLP8wIMiw0QMGRj3^Ge5TG%u8OstS+EZI0ihLPp_ z(w~)^cQ6)n)w?mUFi&P+WMBYd4hBXhGax?sEyMxfB<9KMV|01YB4vj6}9 diff --git a/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.633,6D2.ttf b/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.633,6D2.ttf index f4938d8b07cce333c0c61d12cf2953cda2e03e85..5683d04b22f6928051c4eb7fe4764aff1a9fc12c 100644 GIT binary patch delta 220 zcmcbSe9xw0)Y6;L>p^HnTZwhj3ygr$S|^O ziQIW~^A1Kv7D)#N7KZH%>*wh3kYQxm zow)Jk<{gZTEYeO4EDYNj*cpJD7&sW17>pQXfFuJ09|ObWORUD5+1V~IsS2^bVL!ue z!7jtj!uE=-j4gxBkIjaShgFJ|f#n^`E#^neJAEJy)m;n+(Wcuqc}p$|8%D7!6isB?CTya9M6*y&};K6d7zvCWAp{ zlZjQ{LESq%!|%U6=9va(8b|!C%?WV!0e322uH;tbSOW-M^<*gy}evyMJ_5c6? delta 325 zcmeA5JF#v>bN$TBhq zP1(442jgy@dLITB=E)3<3=BZb!NAC51LTJx@pXWFNhH1u0}Im~Bt8$2KOezo`~&1C zA@Sb;`Kn0#I}9w0FA)5C#xp>H)d&H`JwSdQ5`PVlZ-~U7!@$Du1&QASOm&P7={N7OhBF%5Hm1L4r7$soXhXaxOtC2Kqvqbp(_Ib diff --git a/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.retain-all-codepoint.ttf b/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.default.retain-all-codepoint.ttf index ba99d30f28ae6f9dc0459e1916ecfbd74cb7fc84..ea153c9f5e2bc01fe5eb8e61b050273611f8b7ee 100644 GIT binary patch delta 5899 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 uN8*vI=>VPN3%U|?YX5#6$~wMw^Kh@{A1=XXrDA zOg!<1h3o9G^vydMS%vCT7+9DmGcYnR05JyxBU1>FABMzt0rDl0_$CZ2Om~p@DnR~x zB)$lcpM=C`0rFK5e8w*fEQ~J@{CdVGK!Mc=0mdspejXD42#{}x#NWce!te!&zXZtN yj>Mk=Rh$>0Rsd77X}7SpNTfsj1Chk|yzG=SJ}69gL5eC4CrJ7`8L8GcYhP zGH@_3G1xFj0Z9f1p2^!-?KgjC?ch@F3*u)URzzkHT#K5yWt!*&LC1_lO3 z1`Y-$20I2BAPLmSz%Y3WtNrGWtX*8HlQ?oXeAu_J&tPw0Ph-0MeU% qgw+`t*KIBl`N$+)#n{Qf3UmS36^tzmVGPVbg(?gJKy`KEYUTj%x;|+D diff --git a/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.retain-gids.63A,64A,631.ttf b/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.retain-gids.63A,64A,631.ttf index 2610a64a5b2abb964c1be3dd84c758a45dd3d2be..b9aa70b85468221c1a2c9d92c68e1ac4cb049314 100644 GIT binary patch delta 330 zcmeDA#rWYT;{*i>5w(6v1_r(q1_sW5?!lo>w$d9j85m67Oti3POqp0A&)73@hCXA> z#1n5=zV~qOZ{ES^EmH5sz`{J4fsug$h&dP-naqIvFeJVjkS~eE7h_;yx`V`L1M=r1 z_>A9x{3Im)Gaz3TiGPiOh4BS~U(a|9D6kqKz_<;_&qLxb1M&@#_|q6z7``C!+kpJ- vNc=J&zY2+;2ISi^utPn_#2ChKh=B>n<6+=uSi`VcUObTz$lcr^(USrIwiYXv delta 331 zcmezHld;Ug2LGcfR_Ffee*xCe(i*-CHBWMDAmm}p_o*f6m|o^i#*8TyPf zCZ2f1@*{w$b@L8JZ;|>G1{UVY42%p6K+M6w$P@zPhavG@fP6_Lz6k>h(;Xzf3Xne^ zi7x`=Cn51!fP7U1pYaO=3*!p}zn<|4P+&Defbj~DpNGUh0^}Pa@wYIrFnmGcF9Gtm wBk`vI`Bg~#79ii2fgS2WCdLwm2MkO=o)!=@FiZ|(l-m4PER}I{ibPKe0C_hoq5uE@ diff --git a/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.retain-gids.retain-all-codepoint.ttf b/test/subset/data/expected/layout.notonastaliqurdu/NotoNastaliqUrdu-Regular.retain-gids.retain-all-codepoint.ttf index e41720cdcec8ecccf6aa3a1270124ce9319ba34b..4458d5fbfa3b8418b130c41fbaa5e2c2b1b6155c 100644 GIT binary patch delta 5897 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 delta 5941 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 TxL`A`y&70x;O_mAg}?kiq;zl> diff --git a/test/subset/generate-expected-outputs.py b/test/subset/generate-expected-outputs.py index 48b2f913c..2e22dcc3b 100755 --- a/test/subset/generate-expected-outputs.py +++ b/test/subset/generate-expected-outputs.py @@ -35,6 +35,7 @@ def generate_expected_output(input_file, unicodes, profile_flags, instance_flags "--no-overlap-flag", "--no-recalc-bounds", "--no-recalc-timestamp", + "--no-harfbuzz-repacker", # disable harfbuzz repacker so we aren't comparing to ourself. "--output=%s" % instance_path, input_file] args.extend(instance_flags) @@ -45,6 +46,7 @@ def generate_expected_output(input_file, unicodes, profile_flags, instance_flags args = ["fonttools", "subset", input_path] args.extend(["--drop-tables+=DSIG", "--drop-tables-=sbix", + "--no-harfbuzz-repacker", # disable harfbuzz repacker so we aren't comparing to ourself. "--unicodes=%s" % unicodes, "--output-file=%s" % fonttools_path]) args.extend(profile_flags)