From 0eef8113d8a7940b4529a340790976a577fe829e Mon Sep 17 00:00:00 2001 From: blueshade7 Date: Tue, 9 Jul 2019 11:43:59 -0700 Subject: [PATCH] retain gids in HVAR so in sync with fontTools regenerate Comfortaa subset test results --- src/hb-bimap.hh | 6 + src/hb-ot-var-hvar-table.hh | 123 +++++++++++------- ...Comfortaa-Regular-new.default.61,62,63.ttf | Bin 6492 -> 7460 bytes .../Comfortaa-Regular-new.default.61,63.ttf | Bin 6316 -> 7104 bytes .../Comfortaa-Regular-new.default.61.ttf | Bin 6148 -> 6752 bytes .../Comfortaa-Regular-new.default.62.ttf | Bin 6088 -> 6696 bytes .../Comfortaa-Regular-new.default.63.ttf | Bin 6068 -> 6676 bytes ...ar-new.drop-hints-retain-gids.61,62,63.ttf | Bin 3284 -> 4912 bytes ...gular-new.drop-hints-retain-gids.61,63.ttf | Bin 3164 -> 4620 bytes ...-Regular-new.drop-hints-retain-gids.61.ttf | Bin 2868 -> 4056 bytes ...-Regular-new.drop-hints-retain-gids.62.ttf | Bin 3020 -> 4296 bytes ...-Regular-new.drop-hints-retain-gids.63.ttf | Bin 3024 -> 4304 bytes ...fortaa-Regular-new.drop-hints.61,62,63.ttf | Bin 1952 -> 2920 bytes ...Comfortaa-Regular-new.drop-hints.61,63.ttf | Bin 1832 -> 2620 bytes .../Comfortaa-Regular-new.drop-hints.61.ttf | Bin 1704 -> 2308 bytes .../Comfortaa-Regular-new.drop-hints.62.ttf | Bin 1688 -> 2296 bytes .../Comfortaa-Regular-new.drop-hints.63.ttf | Bin 1688 -> 2296 bytes ...omfortaa-Regular-new.name-ids.61,62,63.ttf | Bin 6236 -> 7204 bytes .../Comfortaa-Regular-new.name-ids.61,63.ttf | Bin 6060 -> 6848 bytes .../Comfortaa-Regular-new.name-ids.61.ttf | Bin 5892 -> 6496 bytes .../Comfortaa-Regular-new.name-ids.62.ttf | Bin 5832 -> 6440 bytes .../Comfortaa-Regular-new.name-ids.63.ttf | Bin 5812 -> 6420 bytes ...ortaa-Regular-new.retain-gids.61,62,63.ttf | Bin 7824 -> 9452 bytes ...omfortaa-Regular-new.retain-gids.61,63.ttf | Bin 7648 -> 9104 bytes .../Comfortaa-Regular-new.retain-gids.61.ttf | Bin 7312 -> 8500 bytes .../Comfortaa-Regular-new.retain-gids.62.ttf | Bin 7420 -> 8696 bytes .../Comfortaa-Regular-new.retain-gids.63.ttf | Bin 7404 -> 8684 bytes test/subset/run-tests.py | 2 +- 28 files changed, 85 insertions(+), 46 deletions(-) diff --git a/src/hb-bimap.hh b/src/hb-bimap.hh index c08eec9d6..cdea03b9a 100644 --- a/src/hb-bimap.hh +++ b/src/hb-bimap.hh @@ -108,6 +108,12 @@ struct hb_inc_bimap_t : hb_bimap_t return rhs; } + void add_set (const hb_set_t *set) + { + hb_codepoint_t i = HB_SET_VALUE_INVALID; + while (hb_set_next (set, &i)) add (i); + } + /* Create an identity map. */ bool identity (unsigned int size) { diff --git a/src/hb-ot-var-hvar-table.hh b/src/hb-ot-var-hvar-table.hh index 9693f13a3..0fb1523c0 100644 --- a/src/hb-ot-var-hvar-table.hh +++ b/src/hb-ot-var-hvar-table.hh @@ -128,10 +128,9 @@ struct index_map_subset_plan_t VORG_INDEX }; - void init (const DeltaSetIndexMap &index_map, - unsigned int im_index, - hb_inc_bimap_t &outer_map, - hb_vector_t &inner_maps, + void init (const DeltaSetIndexMap &index_map, + hb_inc_bimap_t &outer_map, + hb_vector_t &inner_sets, const hb_subset_plan_t *plan) { map_count = 0; @@ -140,36 +139,27 @@ struct index_map_subset_plan_t max_inners.init (); output_map.init (); - if (&index_map == &Null(DeltaSetIndexMap)) - { - /* Advance width index map is required. If its offset is missing, - * treat it as an indentity map. */ - if (im_index == ADV_INDEX) - { - outer_map.add (0); - for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++) - { - hb_codepoint_t old_gid = gid; - (void)plan->old_gid_for_new_gid (gid, &old_gid); - inner_maps[0].add (old_gid); - } - } - return; - } + if (&index_map == &Null(DeltaSetIndexMap)) return; unsigned int last_val = (unsigned int)-1; hb_codepoint_t last_gid = (hb_codepoint_t)-1; hb_codepoint_t gid = (hb_codepoint_t) hb_min (index_map.get_map_count (), plan->num_output_glyphs ()); outer_bit_count = (index_map.get_width () * 8) - index_map.get_inner_bit_count (); - max_inners.resize (inner_maps.length); - for (unsigned i = 0; i < inner_maps.length; i++) max_inners[i] = 0; + max_inners.resize (inner_sets.length); + for (unsigned i = 0; i < inner_sets.length; i++) max_inners[i] = 0; /* Search backwards for a map value different from the last map value */ for (; gid > 0; gid--) { - hb_codepoint_t old_gid = gid - 1; - (void)plan->old_gid_for_new_gid (gid - 1, &old_gid); + hb_codepoint_t old_gid; + if (!plan->old_gid_for_new_gid (gid - 1, &old_gid)) + { + if (last_gid == (hb_codepoint_t)-1) + continue; + else + break; + } unsigned int v = index_map.map (old_gid); if (last_gid == (hb_codepoint_t)-1) @@ -187,14 +177,16 @@ struct index_map_subset_plan_t map_count = last_gid; for (gid = 0; gid < map_count; gid++) { - hb_codepoint_t old_gid = gid; - (void)plan->old_gid_for_new_gid (gid, &old_gid); - unsigned int v = index_map.map (old_gid); - unsigned int outer = v >> 16; - unsigned int inner = v & 0xFFFF; - outer_map.add (outer); - if (inner > max_inners[outer]) max_inners[outer] = inner; - inner_maps[outer].add (inner); + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + { + unsigned int v = index_map.map (old_gid); + unsigned int outer = v >> 16; + unsigned int inner = v & 0xFFFF; + outer_map.add (outer); + if (inner > max_inners[outer]) max_inners[outer] = inner; + hb_set_add (inner_sets[outer], inner); + } } } @@ -209,10 +201,7 @@ struct index_map_subset_plan_t const hb_vector_t &inner_maps, const hb_subset_plan_t *plan) { - /* Leave output_map empty for an identity map */ - /* TODO: if retain_gids, convert identity to a customized map, or not subset varstore? */ - if (input_map == &Null(DeltaSetIndexMap)) - return; + if (input_map == &Null(DeltaSetIndexMap)) return; for (unsigned int i = 0; i < max_inners.length; i++) { @@ -224,11 +213,15 @@ struct index_map_subset_plan_t output_map.resize (map_count); for (hb_codepoint_t gid = 0; gid < output_map.length; gid++) { - hb_codepoint_t old_gid = gid; - (void)plan->old_gid_for_new_gid (gid, &old_gid); - unsigned int v = input_map->map (old_gid); - unsigned int outer = v >> 16; - output_map[gid] = (outer_map[outer] << 16) | (inner_maps[outer][v & 0xFFFF]); + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + { + unsigned int v = input_map->map (old_gid); + unsigned int outer = v >> 16; + output_map[gid] = (outer_map[outer] << 16) | (inner_maps[outer][v & 0xFFFF]); + } + else + output_map[gid] = 0; /* Map unused glyph to outer/inner=0/0 */ } } @@ -264,17 +257,50 @@ struct hvarvvar_subset_plan_t index_map_plans.resize (index_maps.length); var_store = &_var_store; + inner_sets.resize (var_store->get_sub_table_count ()); + for (unsigned int i = 0; i < inner_sets.length; i++) + inner_sets[i] = hb_set_create (); + adv_set = hb_set_create (); + inner_maps.resize (var_store->get_sub_table_count ()); for (unsigned int i = 0; i < inner_maps.length; i++) inner_maps[i].init (); - for (unsigned int i = 0; i < index_maps.length; i++) - index_map_plans[i].init (*index_maps[i], i, outer_map, inner_maps, plan); + bool retain_adv_map = false; + index_map_plans[0].init (*index_maps[0], outer_map, inner_sets, plan); + if (index_maps[0] == &Null(DeltaSetIndexMap)) + { + retain_adv_map = plan->retain_gids; + outer_map.add (0); + for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++) + { + hb_codepoint_t old_gid; + if (plan->old_gid_for_new_gid (gid, &old_gid)) + hb_set_add (inner_sets[0], old_gid); + } + hb_set_union (adv_set, inner_sets[0]); + } + + for (unsigned int i = 1; i < index_maps.length; i++) + index_map_plans[i].init (*index_maps[i], outer_map, inner_sets, plan); outer_map.sort (); - for (unsigned int i = 0; i < inner_maps.length; i++) - if (inner_maps[i].get_population () > 0) inner_maps[i].sort (); + + if (retain_adv_map) + { + for (hb_codepoint_t gid = 0; gid < plan->num_output_glyphs (); gid++) + inner_maps[0].add (hb_set_has (inner_sets[0], gid)? gid: HB_MAP_VALUE_INVALID); + } + else + { + inner_maps[0].add_set (adv_set); + hb_set_subtract (inner_sets[0], adv_set); + inner_maps[0].add_set (inner_sets[0]); + } + + for (unsigned int i = 1; i < inner_maps.length; i++) + inner_maps[i].add_set (inner_sets[i]); for (unsigned int i = 0; i < index_maps.length; i++) index_map_plans[i].remap (index_maps[i], outer_map, inner_maps, plan); @@ -282,6 +308,9 @@ struct hvarvvar_subset_plan_t void fini () { + for (unsigned int i = 0; i < inner_sets.length; i++) + hb_set_destroy (inner_sets[i]); + hb_set_destroy (adv_set); inner_maps.fini_deep (); index_map_plans.fini_deep (); } @@ -291,6 +320,10 @@ struct hvarvvar_subset_plan_t hb_vector_t index_map_plans; const VariationStore *var_store; + + protected: + hb_vector_t inner_sets; + hb_set_t *adv_set; }; /* diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf index efe5bcb4c2d6263c061bd1c66ea8b2008ed36b0c..bb287436e660558315482db4218a0b82009212d1 100644 GIT binary patch delta 1280 zcmXX^OK4nG82-<>=e{O0cP5#+amIp7H5w3#8cLB;FqI-ju%$^W;>sb-quAIX38CFM zPDXU2pw&edqApyyvIdGSgxRa$!i8X$NkOKu^SCo}pXd19#Q$>6J>UQQ&i|hWbKjk9 z5F?@@HbF05eDnN*Ue)dqmFJ;dxV-qn-15rCM@0I|!0#+xJ%9DiXE%O^{Y&8Im)2`_ z%F=zy?JNl`(N+9LB!4xY1da#;N^Ppx}7;i5wJ+}-n_L`A2i1?rNTbo5a%!({EZ1MU`2OE$+5TRceWi)F4*xRteiH8%ufR@e z)z{O*k)*9H5XWA{dX5Bnw&OUqsgvtIdZg=iE|+sAOpQWhie#8_l^;$p z&N(R#Gp>RjX6aIu=t`AU%EY;*p_I-vjpG75Z5zivZ8JsCS%x#kyhhi{mr5nhE#4GL z5o66J{`iFic5=#k$<+>;eV;Qnd0|33f-Dm*b@EJdpuN-ZO|g7S}CXWu#Q=xRC>nJQ$@2BkG;o_|MddQ!6_CU zKJ0cmX-Z0a$FavTe5f}hJ(JJqO=4V1)jDZqrz(}oiAh^m=}SrExN~rD&>2g;Fg-n8 z&?#;jj5W9>ykN%+ysQbbsyT&ZuA4V0>UKJvZbW9@-63`K2ruCgUIX1(nYt>xnOLb< zGR?|}VASt+yIvs4%3w}1mXeYtQ|jXrDpA6;41tMe1SO+hujh@2!;zmT_4W?2S&l>w}6}2%iuu1?$6M{n=LnIO_zmO(#TW!~@{<#p_A>qe@)rR4T)BxA1&nU| z7C?Rjkgt%Jn47Aexa}DOgQyAv1Jjj)e5vA+|MMA)7#PHXniv!cic$*zx^X+ww;9@q2IH*YDjrb^Jn$ z7!j3l2zq|)t<^W=1(2KY^d!Xar5V zOh3b(;gyZUV9$S|{ykCk4DcTthX*x3zW`hYq?=pKdgH6*@~=eZNg}_pbr`hvIQN6L%2_KF00Tcdl;T{;si1#8!y-4|OCs`^(cQ(L4h1Z?`vtcTVhowvGa- z_`kdjh5aS{1$+^BVY_i~#eSE*0e%hG+u7X+SdQHXMhSmWEu&YLP#hQLXeV4lB7e|9V!NF5VIV|;b}4&jiN+eFKCrY zsg#n_G>PLl?X->Q#5FsH*>We-&XaN)hhdmZB@G6?FJ%&ilQ2#-3B)m&VcWJ~tdrAP zD`GlL5ViBNXCb7ryjWWh9rLUx;=*-Zvosi#xJFr$WHcNOmE{zRMb9x&J{Oj0Ky1^p zTKMc*sK?0p_isp=rm8*92y{`kQcU{Y zzE#w=msH5Jp?x^ia~SHI+58t3K5C62q*|wn8P1G|!$Ggt8^wy888og^rAW4!)*n5l zr53hh2~ad6NQV7>e>547!$@jA0V`ex+KimRv!j{uu5iH^^*f kq&(BEF+>H6ESZcaaktwYq+}HAuq-Xnf5p*SBLDyZ delta 307 zcmX?LzQ(YgfsuiMK@do=FbMbu>l>w}6}1652|&?=;1I`<$_be}85qP1fPAgw+{6Ng za)v!X`2#?{O>$Xc5ubAUCZPNUApcHsS&0H4uL_Va`~b+Glva?QJI_o6D97@Lfq_pn z4XD1^C36x`{T!gYNqS;&J;-1Ipg;zY=19+}Ogq0U*NlOIQHFtmX-h_GVv11lM1KYb z<{v%1G zRr{7r1VM{gwhU@l3#pJw1@#T%oA=xItaEwip6~pA_q@&C-GL2aM3jIMsdwz|$Q>a? zuZhyX;2ocsywX22TiPTNc7dlSr$(mMp3J`|>Kp*RoGTbbiqcyY4+9V6R*aHgfD73Z}ybd81s!9S4D3+-iPd zZFW8X`92XFBI4;h2K=dYnnW4ov7@;e<9!NqK>pwy9Lfv&4*UVQXRffkDy0ea z0!Wg&u#_`cgm!>IfaHR4ZMDco+pfYf1xI$#D9l_k-tB?$0S104E|r&qSJV$e^)Oy6 z%@q5_*1r;UY}GPsoQr)sKNf3qLN0L=aZ2L55gKO_t~O2_I*acjR?X{Fhe5{LOsgtbW=yU2h>E7`x~52! zN*x?Xk`{}_^oSymjZThlhg|*52;-bnz!An%u(>GR$`akqvaSqqE(jPUF+t#X01wy3 zq0<@*2tHNTJ6PkW(UvSHlbox(A_f65R*4-QH^sJy+ayaoCaZ$F?k-f|{b9HN2LOTz tohD0*R+Q6?3)kN1z|c%Ve>6h#$y=`ZR03F0Nh-(1(caqCW6!>^mfP7&KAb(O?L3-{yGm#5G^&t!l ze4=SU_02AslYr)Z0qIXqEUqsAG6aAE2Y@t3dQN3pUHat|1_nkM1_mavjMT&wq2h`D zKnKMD<;^mH0_-yw9s&7tfP9sV+>#1bF$SP|<|!ckIr+(njNA-UfqbBa3~afH6$Okg z{6NPrn*jL=d5O8H>WSN)0UdY-X#SOge5vA+|MMA)fDTvyQczHoT43l=cbkDhC}*<; XqYo3yo-c1yHg_;53vV_Tw`2qWttd#~ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.62.ttf index 9fbebb5d4f92b4a617fafc734cd25c5a60569090..ff9379c17047d41ee54e4b0153fc859d19b0c683 100644 GIT binary patch delta 917 zcmX9*OK1~O6utB2`)o3aO%qcUsaO?6P)iUI!4`^C5i7QcONZE|g~o=q)Vi^zqq_=z z5M1fTg@_BWD7fp=r3+W;N~oZzZB5c7^Lyi&cxT?7d+ztleV>lK$}N&aL@6kRjt^ZO zxFV`GedBmv;=Uim8C0cEg7<3QLA(Du#(ke`% zemuaDL^{fmnBTV8%5vt6^#5W|0pISnCfW!43H@G0?Ole&F9Sb7eXiw65U-_>2O&k^ zLKG5#>$-l8^O}%=Ws)?*FqrSw>-Cl!EG0tW2Z0bG@O;;C9N#X>UX!b~tn%ifXCDka zr_pG*UO?5VX$FDYYBU>;ACiJTvLx%eu1J#I5r&~4DfC@*wa>;hv=my*2{lOQu!s~f zg>$Z^s?`(=K`Wr3Rjbv6W+aozn4y9`Q#4hE=&Gi1zR0--K1RIOvgKASZrHtw&P~(g zx=QKv`nsy}csy=)=rXzJ~i zU+(go_07$Vx`RJ6Z>3Tu+uqt@B!@!qC6hOOB+=h(Qg%ckkKB z)i7FqAexo6wY5r9sL4zwlT^tsYwclmXGwSJF&*0q%bnl>w}7qv1lFt-3j6M{n=LnjCn$l5-Oa z76?J^Z-D$e$z>%9e7q_^zR({ae^OdOdhR?kkqbb>B^Vg^ zMALxkn_V&|0oCsS=}%8At}g&G1b_k{3pvtrD$_!~GkP&FFvIdbxo6B*tzOa=0R7BaBqCRP+My6{^t zFfjc9@)hzDb5qq5w>@KE5S{=OyHb!ZRb29aK7$d^0VyB_1x2X^h8}gdfj%(UY{4kN U#KM1Nir8i!=49c`zr`#W0rq}Ln*aa+ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.63.ttf index 73917418a33d7055de3c7fd6d90e788234192b7f..7658bc3504cc584f54b8a02f3eec7d27f519edb9 100644 GIT binary patch delta 917 zcmX9*O=wg}5U%dm@28WQm(g+Ju)D~B*$s%`4?#o%Dg<#s6joQSKE`AsWOPVEj2GiL zq8Eku2OdQ49*qdza#;|)>|rmv?n%^3JY@do{dBkAi}k4L`l`CBzOMIr-{XlDVnmdO z5w!p0`Qv}6U+5*#=u<>bojJSj;PmYL9U^NL_~O}f$Io3~z5EvW&%k@i)u2WhdV~BX z@I-kjnD=*AUJ>n_0{*|ev{>@9W59V2_~A^gQhk1C$KMz>M&uV}mV%Y}#?oL*(_`pk#i1)GRXLf=&|;QfVnS)yVIxHCH)T-v_y;0y@t#r;FG2)Iw_ z6Yw1H*lcxiS^PzpfT85gT`dRnnVtZH06Ep*$a0NMjT}ZmAW*szRHw&-H($Z{84>@d zc6DLVyr6?1loBh|=BH~1PTu%Pw0&}|$Py;L{9FHTt!S0=zavjOpeIsiOVZWmh{Kkk zzY!z8PU~=qj^P7NCAH}trtnU9d~JDjlKuEGs6gzeElacu{v+C0N9|3H#oq(IkNSy0 z%pmbVPz)iVNeDq&MNyQrrEF^kY!P!j&*Mqd>2wB>x;0{SqLkKJ#Yq%~VbZ8uabMaE z%a;9>xbdrs!(Oi!#fn-j-&ZOc^!mLpF(lB(VwUT=g0aT1F-8+JNrbMAqZtP+wUY^r z12G{_Nf8%PN;}_b<+%YZMQYG)x3%Nta=DCWgFY9IZ9!byaim<4(g7bY+a5HmK|AX; z#)K<<-ABC)DH(p_NXwCRJzVnz{S4QAW6)BQSMHkm@y?%}&4D?G2PMw}_1k zD_y(gN|$rnGD)`?Nxx7m7V}b2r`bih%`LL)9M|e4#xR`QEb4dr;l{>BDl>wJ6tyuhFc$zt6M{n=Ln6?J^H-P**$z>%9e7q_^zR(LGe^OdOdhR?k5ujQY76t}B z(KMj?W|z!KK=n&N`qLAO>p>O?00lraM|w_W+G&AsRt5$}86ZB9k(!tyR6NliXdw?! z-Yf$sz&?ZF5s>c#$ZWP?{KLqi S(*H_hvjuaq@aE@YmW%)i3`r^g diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf index 05d83d8f956fdd85cc75a4643cc9eea1ad2aed35..edc9c66613958e820ae81c2ca3d8412666ddd3b8 100644 GIT binary patch delta 1671 zcmcgr&1+m$6hHUAd*8?8&6`OkFU}an2r&UcT1pY=#s*weg%(W|7lIvXz92Cn38h_4 zCsTBzpvFbSg@1q>MG)Lb#Qq6cbRj~)6w9=BKHhx1uY3Ky#BC8=(#BsYpY-4z6JUGa&>zX-y-~dim$!Ac5`Xzuhp-?!ymt} ze7#!R+A6GGBJ!q*q`R_M{cvpii!0!tfzit=P+0rySG>Iod3t4i=SJ=&igCX{WZYic zxK=&;`q>BI-vi(~>(v{Z)TTqoufTrlqw4zNZ1t!60Jx8UhnpMQJNjEX2S97tJ&7Ow zm=WTG=bruLM_X=KZ$e4q*l%RaF=gc`6301(J%e)b13CapbP)@3Mh13f!&1o;uAsfQ zHz$8%CeBGi3fkLoub$Kz4q$he?q%=T?>P2OY1K|E&=ca+PAShPgs1<^{{j84#V)e_ z1I)rLPA+AG{u%mzei$=QJQNgzNGPfaAxNcB6eV59=_&@y6@I)k|JLK=ttem{y+>U2CWO`~Cd&<_($0&WauSe7LiYm8{E zF@`#c;I#3oYrYE@ zs}+Qb>>L`U5~V1uGp#?F)TtJhZ3?tBCn)W=+wEY`>-C4J*1N=JMb;3H0A>Uk AJOBUy delta 240 zcmdm>c15zDfsuiMftR6yftew|KUm)=HLa+Pfq~-=P&6Sp#4)6DLgr2e2A&ciUn@B` zv4BaKaW(@3rwx#Al~$Hm)a;Tu2`Ik+$Tvw(EG_`j0ziHakmg9wsZ2|IkvS8{2AaoY zm64j5B2+xlpMinp4^Yf3BO^63k$nc^L7>_lKmnDE+>#0|U54Kb46G&$49qP#`N@d} zo(3<0Yzqbk#v{3j6$K0*8Lj~N5WSN)0UcBUwBSlXesRhF`3y!t2l#CK Vp~J%RRpfZ}W)0SS_Q}V2V*&ZTJ^cUx diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf index f47887e941b2ac2b0c441da55e814ff4ef8b37e8..3137fc44141cd875359d251571eaca669596240b 100644 GIT binary patch delta 1496 zcmcgr%WGU!82`@WzA~?yCZm(u#Vn!$L0U=?7lIAAh#)Q6>Pj?2%%jqnAt@zYO{Wud z(?T^HaU+6DDTp8xH!1ojbm5|ig<6nlVeZVGJNI$!IsR_jZ4q4LJDkV&`hBl^?=`N^ zcZd;DjjocQ_R@!o@0+9Y22uGK5qs_Ix#K5S*S5bPa`#}heD3_>`71Xs+$O5L3;xxW z%~qSe!M=t50r)r9F1NOOZ(sNt`d#p+)>}Jm+&=JTal7jmudJ=yUiuYp1^nOFFSk0| z`+oaxIQ&Q?Ki*hveR^c)tFw6j0HfD8AaK56ci_7Wetu)~(ysFveGmOTBC&UIYo&Ff zdg2xl|EmDpZ0)uwpu6A?VBh?_wYj>``sE>!*M#hDdu!*C`HoH!mBK<#@~1y<33;4- z^3l&X<(BgfgjA%uR6L$g(H@^T&L;LNXcwRl@FY5o1-_s{Uu>3JT;smKe@Fht1kPi! zkngL~^3ztsA7+2heMpI+3fe!U)j6y{&xzAHq&lAyp8m7`f9QWMws=6N=_;o(UB^Ig z;G;MdXAG3Zk}?oUO&uvE={!wSHS)ZXX5a-e+jU*8(l89;G{06eTIIRcI?q&^B#G*E zMKJOET`eHTFvt`jwVr}3`xKUCLG6+jP**!7){Km6rjDg$~F)? z+Ab%?2APBxSrM0>=UFqu;S4uOE2lgjjYisbecvy;7V_uPwgkwrY#X+ojda|~DDH`P zRB?Or(($U*s^?f#uRnTZSze`5sg@i;DS$Ga7P;!Z662gx$8hLT3jTmHooN!i*JN`I z;#>%XvX~GY74V{O9OnxjGX$AySC6o85Y}dAXE}FyR~kc%bt{7)lC_eGD3$@mUAP^c zg9GX>z@9BIAOv`^Gh!^yRTw{h_}HFqO!psvlv27o#|ZtRM%_KRP+159;6!_F8CK^dbo6Yi8uqTygL2op{26bjc$Ys$OKm@i*4xsi@*OSEW8(ncNy zK@d*H<0#IJxkhY37KLMIp2N8%j2Z{2SFJZ1jTui;7>wa>aY0tMXiB%qfQlxvbTXbK X{eFL_$oA{?`gFygu9Y#bA}rCr_SN9X delta 240 zcmeBCxg$}}z{tSBz{}9Uz|0WfAFOYbnpV`tz`&6L6io;YaSW-PkhznAf%^}Tua%se zSioq(I14C$1jx5ZD@!bDcFCN?z`&ycEG{$#8feQ98Ffg~|Q@ z@ENRQU|>1`G9WjxqJZHe!xbQZ0Z_d{USe*ldg8Wc3=Et=F4L8Q{Nj@T^BIhQ4!E-M W#};N5W>tam%^O(q*(dw+#sUCPaXuIT diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf index bfa9267b9783d46559cddb592ee9ab7c9be03a5b..619b4276bc72e35dbec3057d794f682b878ff17a 100644 GIT binary patch delta 1249 zcmcgqOGs2<6h8mszMO}n&X~4wA~R`Ih_s6|qFRKKN^38^L32;+Dbdm;hz6LukSqmyWaf0El-Sy>S=`pW z9S}e04N+Z%h$Z_6&v%WD&#e+^qlg+F9O@lfemwPwC@!I&8<{b4^p)1(--O;hzG%)B zuTDLM|3aisnDaTDDd3fG>J!t;*5={o@BF_usE1ZK#pwZ_Qq* zY{$P>9|oT92SMPwo>QyUykbGPhj~LO3dJ~di)VbdR;^YY*Qathne=_ft{zrvUPux+ zf(cF2BxA)`7={6{&~t!Vyc|~n8L07EsDi>8kD4Mb4Z~2H%H<{=qAj0%+p?@c)l;cd zTvyOOm#QL!$O}zTRRkL<`q2}XT@<#J(2MO-Gm^=qp(&KfluC+XBoc{aOcUe)$qk&S z*I+fqIOh~{xG@QS<2dzYiEd?CYYTBM1WGAP2#x`Gv^EaeY_O1E)79kNMpoIc)Th&F z&UIdpVMvS>68i^LSs(MNWXl7x3&=a!iVVyjq5WehAXGSEG3NVT#opW5QyW?ucDF&E c=LLmUMpzfMWKzz-?tz*LwYZa^xCSfz2IrD=1^@s6 delta 240 zcmca1zeTK`fsuiMftR6yftew|KUm)=HLa+Hfq~rxD4Gx);uumnA#*1K1J@NGUn@B` zv4G(m!xo_Y5+L6stt_#q*(Gxl0|PgZ%V3h8SX=<41%T?$0BMf&oXWI|8vXJ>_8kTW zM!$^I#1x_8iT(@>%r}5yW*Hf&k%{ax7=ebdD*y#lGIC2QSj8Ap7#LW9hA<1{Sp zy-{1mz`*1KG@vUtv7&(C3J@|d=>XL$Olk%MGr#p)Uwl(Z1Pv^S<}qzQ5ghx9#oDA`}2= zEI>u!#JT(#wT4GP;ufIvo*vxSKQcCT9nb^vx;S_?e|G-PrB^`mCE?zoNxOhmJO_*m zga<}v?J4KzrF&%m9^)~4x*#@1ebi#>JMgOd@cE7U7s;9{VVa8pF4xJpZZ^UYbZ;{5N5GjjSK>jm%I! z6IFfq|B<5cw?*p9oxn^CE`~JW(v38t$YpU=VB9oK(Ye0f z$s#H%MA)j;YEm;YnM~3UR6paIP>FP*Y2<5aRF09VwH&ooOBv2CuA7!+nYutW`}3y| zW-67k61obH0{PO5Yn6)$g)xSR70FJmvP-MMzSN9%k9`|iYOj_D4Ug) xm6b~KpcI+z?(U30P}17T>TX$g>q(u)6_q+DST>v1;a4k_O4Wy+&Xy4Ye*q)0kx2jm delta 240 zcmX@1ct*UQfsuiMftR6yftew|KUm)=HNB{nfr0%FP&6Sp#4)6DLgr2e2JRdnUn@B` zv4G(f!&U|c4jUlfB&{s5sM#fR5>S2yh@YNVTmYm6fcz97&5@o{nYP!roE69hn#bsn zk(!tyR6Nn2fq?}m#9)?@ks6uEK7;W9(83)+0hNs0k_uK6hDM+Q3kC+}hMfH5M4fCM z0|o{rpoNTwauX{G7(Osu0rF*l>J{=5b5qq5w><;e1+T#+Gv4fW_sA7rYW8|Nh znDeG9=kC0s_03e^+j4ognu?a=ar|O_vt|(wGS{p7RJ5X zyJlWq21JgMP8Mjxe#5>3_D}K$3&q)c;yZ3r{08Menw+}j4Idp|0r*V<{8setl~BVf z`KKvAch@V94|z*}sP=2xTP;n^%<8u|MuZA+9OA>TLxwp1E}UFUioAV+HnE$Y^YLQK zVtF#)H0S6!NOJLIEYlJ=ON0E_;yKP?(xiE9VMP4q91Eqy*gt{k6a{}^jiO+2FAF;~ z$~#qPn>ytk>T{d&_>cWpm+1mL;7H;bebDE02~KoFMizDjLNW-2vJe7F20;)tT(_YZ z`39KfI1Z13X0zE1P>_oK?Z5q4a&Vwi3xtQ?S`-)^^qP@-N>r=<+K z?M~Z|Gz7sI%&=`+Fjh%utreJ#0s^g^Nm_(hR#wv27Mb>W%nDq%u50$!>-}64EeY9e zG#bisGMP-$F^NAHmT8dLre#sCYY`nM)#z4?ZX@MX28HdW(`nZ>kJkZcjf5IfL{)3*E7Cer%y4>y->z?NZZ>@dr-!gq zq!i>l)B4F?Ew!*6OHkDw0oktAYRyio)$U5IAA$`DBbME;U7K^$&{3-vxasV`z(Buy uN}yS5(Rq^_Fy}et&F2`Q5-%2XS{=Vyt=1!0nQS)Om&)|@CP{+0Ebtc_0;Meg delta 240 zcmcbhctO0LfsuiMftR6yftew|KUm)=HKVAFfr0%2P&6Sp#4)6DLgr2e2JQkNUn@B` zv4G(S2)h@YNV3{ocm#&TT;PtlpzJEz=DB+xg{q*IZ?+z z=K=!*lMT>-Be{tc1q>ex==JNOVC6N(dqzbQ2WCLt=KLNKQK>`+{t;?1qq> zCcPtiQBZS*je9jVI$c(D6K!;0NGAuPvrUB{B-`%j-r=~OBecg8X(L8eqC1y}X? z4C9=W<}l+b=wX@8HHj`XS))#z8wN^AW*8h7;6>Xw_63J&g3dPGITp5iVYODPac=WK zXiba-m0o`=sx#S`BGIQPK-`NBMBx5Kw*Nl>2r9fVWGv6KFnad*nK@gZ?LLBJS*C&p zBeaX^zL)g7ebducIq|7%L3=b*kZscnrrM|%^stUtqEvCll7%9uWs~sv^MAt_b8zS9 zT|VmdI2l?gXWw-u8GNWeB3Y`IWI&87r8~#%@?4|QI5z7@UA&ZBO}dANhuw*i-onCy zCn*a|#@gHvVZ3j}Vc7y%9n2w_?^i8Kd);ogmy%WW_eoD5;W<3QPe6B36|Nd@Ceu1o z%&&quFYOas6vd!$ zH^<^!8af;G6UX)I_4>RcDD00AFS$W7n0BMdkQGB`$z(K%L2{6h>G{4tTk&SAWxTJV GEYW|=BZpuB delta 240 zcmaDMwt&B$fsuiMftR6yftew|KUm)=HLa+Pfq{7gP&6Sp#4)6DLgr2e26hJ^Un@B` zv4DYxVH*PjivW;sl2(>j)a;Tu2`HZf;-@DT7XWFX9J>XO=19+}OiO!_ITOgf!@$5~ zm64j5B2+xlA85V{P|PeNBQ-LSeFno5pg<2$KqVu$q=HMA;Wv<91LORG9$|C` z@<9f2Tu0gkTmUxbO$eS^`Q?dIJ5ZuCCX;*RK*!aqHgioO`}|&Ud~K?lro^ zh^S6CNl<6){OY^vS?dQP`yY7M*U!Fua&v3%Vg9Hr8{*D(V9qiQd2mTv-*b7E>12*aZnrcmA+1Jk}RUa6SWfWo@iG z^eYy2 zR7z{DiZai#tnBwhG4rgxu)5x?=$}wUmLy4DC>oE0K&d=UW=U2WlHd_cIF2J3>(3iw zG%-`=VC}!|+o068pBWowGF}x$TzZ~oEsn>F+@LH)DxFLw+IGV*^j!<(b7@-w=2*7f z#bwV%J#KB1_C-3Wx&3A7ctH?&jz!Jp(UE0&wOTEhcLe2NDs*1esy~`%oO3c9VYC7T zeL4f_-f6R?7I7{Fp0bz_91ZYFHje)j9y0`=YX`?zJdC^bMx(*G%X`uoVyssijuKg) zFB3}Th|(VNo?1c%`mfmj{{Uck;mHYON|kZ?@WDfSp|vph8&;O3?kzEbT-0iY`Die* zL*w{)lY9r>$3s1Xp}tqme?{Y>F&IK=OsSc0=VX?Qhr?l#Y#xGuFO)nmqd^0ZM# zI<74t(VQfej7Fn)Hk~G^GUgVs6sD%r49|NnNCHfDv)KEkK delta 240 zcmdlZvVyOkfsuiMftR6yftew|KUm)=HLa+Pfq~foD4Gx);uumnA#*1K1KSB8Un@B` zv4EkRVGmG#0+4T$R+d=Q?2H%U({E&$R3K>h(B&5@o{nU=iMV>gg}hk=3d zNJeU6ics-He+C97ka=bq8L5$p>@yf10}bQ>3aDh{mQ=83F)Re~fm{Zjoc!cOhUJXz zKn(|ge2(12iUI~p zTq@#5DuTO$zd-21m54||+d`8Y(wqDAyVdV<=gc>AX68HdHnE+l6CN-d=u* z{Evt)nbiu;GU(8@&4VSK$ z5YS%HPw;5qg;Ke;p$yOh`1`2g%IdsHZ>R{q0-pP~1h3poH#3&KaWhq>01k@n0fFe2@0v5{=^n zj}Y1D4&%X@$9E>x!oS_30HKjHOLPwY4*lLk=@!TCo`63^`Izl8z_lg00Lg%)loa@m z<9L=~SOH{8K}^+koqJBF)3F`@aViWv-w%SocRi=q>v_$Fa8C`TDHP+h?lv#_Zm-+z zI<8Ocb~5Svj@>=&_PmfJ`Uoa8O_Pi@V__Hu#6r(O*XFIbik5*I?}aK5_IM2J6Dc?elP`L<A0>yK9{N@08LRAjE3O#zlvYW!T5_kx@Mg`sTESb-z{tSBz{}9Uz|0WfAFOYbnpV`pz`(QvD4Gx);uumnA#*1K1Dgksua%se zSir!;u!VtvSpvv6Nh?b%YIez-1e7lU@zWEF3xKo$knaGbInr|~(=KZC%LCbW7#JA+ zGEx&$go-En1I-TsikW3(q(&yP&tP~26qo`OP|3(GsbCdjNCEPDKnCRGCnqv2XGjI| zeSmzn+{B6k1|fzkK)w!;uaK9Ro2s6;?HSNPKzXJs1^LA#|K~Fp0hKCj{L#Y5(tlau P;^qdX*UXc*v&8}cggiMc diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.62.ttf index ada1649afcc05f411e016013c26ca1a5144434e6..467f0fb2f900b30d6741337276d40e49111a3b52 100644 GIT binary patch delta 856 zcmXAmO=uHQ5P)aj?%UnhCYx>26r&&&>JMI&QpAH`3nB_?OIyT)hc0cJ2AVdsr9Y=M zS;b2QwU-_QJ$UjaqToU3u}2R*dk|{Dlr|=5vcK;+8)x^;&Nnk}-n`kJxYJVt2>=qX z2{IJ#JsugCQ}7W$eS+QxqZ8K#v$>_`0Avq&YGQI^a^qG08^%8%U!5*kMTo%{0Qm~? z(Cn(UWZ%iZ!T67ebJlVZzb5h+e)Zh^#_acpYZUDOKpM`iTBW6})rl6xfm$hb+ z%dbcAz!^-sF^3Lq2Yw+(2M){?R@Uhdl#$;?1?Ly1EqD)E zh3sYP>u+oj<7B_MxV$3X!62qykK&+w`nez}hcEUHKaY{Bd>@_Ai|cM=bR-&&2?TXN zu1g>R*@ay+0fzBGjwI4ijzofvMYeCMQ~zg+8_;#OqXEvNy$yeMaqA|**=-@e#O*_l zFQNF30zL{T927+X9(tY^G#G1e30Ve7)peZ&UbESBys(lGJP1S1dFTh8>$-tmmi;!P zwoF;O0^GKYG03*s{}z z>-K=6F~cyJMj@R(I--=t<8h-~lflDEKKG(t`Lk|`5CVc=7_ZWq)1!WX37k{r42jO^ zyr^WQV0{hoYratWWhPB7_1#&68t>{+Lh>{W&B;73;Ti| zOJ*{eb3KfTX!s#-R}T&js%=iqzP>(_LQqyahc(@b<~Cy*PD_-NSSy`QXyDhX)oRTL KEs?H(0Qd({I|!Em delta 240 zcmew%ID@yIfsuiMftR6yftew|KUm)=HNB{nfq`iSP&6Sp#4)6DLgr2e1~v;IUn@B` zv4DYxVJiazGY61wl2(>j)a;Tu2`HZe;-@DT7XWDiAm0E;bEM}~rtS4DX9cqFFfcGW zWTYmh2o+EC2b%8!6f?`nNR3QnpTY15D9{2FP|3(GsbDo>Xaw?WKnCRGCnqv2U`Pe> zZGe2X+{B6k1|fzkK)wu+uaK9Ro2s6;?HSNPKzXJs1^LA#|K~Fp0hJ1D{87TlvOO|z P>gEEb*UXcbv&8}cf)Y4N diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.63.ttf index 6b0dc6c3d69cd7a74828cc50fa5433d274c503fc..c26575461fc2a01afd5284699c1e11324a3557d2 100644 GIT binary patch delta 856 zcmX9)OGs2v82-<>=RS_k9Y<|ID#C@Ov?)ZQMUX;7LZqZU7A?H!=m?Guj+m~-@kVV5 zDmN~KTC{2xg3u=11k$R7>lQ5{7#Gg#&V8M8`mg<$d(Qv;&+mM@w%=U_0svjG1sW9Z zJsx`~F2ZL3<0(e(PfT4K&gEBM0?;GGGgH%J)0=M>zheFq;;XX-rwA!H0MLdIkIb(- ztL~k}_n7~g;032t#5;p{5^rl^X>-2x?e9MNF#s7|Sa-^+Kb{=f04BpgGoN$jdP?sm zaN!&l-N<9W+=btWlZ6BM!rBJ=4w$2R$-t$RSqDBs4)HU@M#0%ALJu4xzJ<7d*(u}( zor6C}5cBl7xKdhEA7B_uuP1q6Uw$nUmf9N{-=CyaZ5)Ge4*$D}b7qM=8K8Lf<9`JR z&_g&x7hn`W#EB(mQbUA(=Fy#-#>{_hu>nKp&rX0#=q>YWEuP8*Cr(BZ3zB z3?ejO5*TA3MHq&0gY$+Yh&3RFWmz;1o6V*litR2XVT(F(?W#4*Y<)~0mC^O(M;21gt(nbDG5ZyAx?E~rwkk^jZ~lvG!@W< z6i~)F*L&;rUaF9m0O2{(vb#B{sy3^Dk#7U716Rz?_C!v&rqL{{~oayucb$Wz44N7FH6h13fDwagE zI#}SxK#^zI@{OR*UK3+Yb|WosRnw5Vp*l15L`}m61H3IpjxfgV=yw=Y_{9Zba$mt I0$i*90go~o%m4rY delta 240 zcmew%ID@yIfsuiMftR6yftew|KUm)=HKVAFfq`iSP&6Sp#4)6DLgr2e1~v;IUn@B` zv4DYxVH*PjGY61wl2(>j)a;Tu2`HZe;-@DT7XWDiAm0E;bEM}~rWNmdu^Gs|!@$7k zkdd00B2+xlA85V{P|PeNBQ-LSeFnoLpg;>yKqVu$q=Mxr1JE$08jt}w`N@e43m8&? zd>bI2EjO{EfI*1i3Xm@Y%vdd)m}Ia@3MR988Q diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf index 90e49bef6b67ebb086e89914bd70e964feba8a45..ea9bb95f62a67b674f1f3b1898494a1ce3a754ce 100644 GIT binary patch delta 1280 zcmXX^OK4nG82-<>=e{O0cV;qklNk##)zpGetfiD91ydA!M(DxV5-S1ew;(8x{^op> z7!j4Q2|9iGt&4MdO?yZ*JqzvJ)%lmsEH15oM5LbwerNvr#p`!JUHu96&w*cDSgSWE zOFzKA1AKO2tG@0$zx+My9`K`ut<9Q~n*lC=2Yi32vAp)>x$^Ju|CPvbm$vH7_4cLJ z`v}-e6D-#^8u%B0(}LFWt-DL#{_^lmB6fjDySa=4$A3HZ8c_vFw7HeV`pwCW&#rOV6W#qLL|NAd3DHP|Vw z`bK&i0`rfmT9^KNt+8VHFC6tfhlK z7ly7uOucCsaJCKbv2p{yt@(qT)t(Wi?KqBY>g2kQAM3iE%jKL2Q=<@>A{nM!<%biD zb54rGjH{rBS-Mgqx>jS=3URJ!D5Wz^QLxPO}M{|^9y3ey9|k|g&0Cx1UNij`t#9}>s0Y*iVd zT~u)kVXxCO3d+oeE@e$Qc}`lN_~7xB}$lg~Ag?z>yv{Y!TZi4KF=WNiSvVe!1CZ>;WE5Q2E#?Zvd=~F3 HElczt5U-gl delta 307 zcmZ2tamS#ZfsuiMK@do=FbMbu>l>w}6}2%iuu1?$6M{n=LnIO_zmO(#TW!~@{<#p_A>qe@)rR4T)BxA1&nU| z7C?Rjkgt%Jn48L*Ir$?4gQyD7j!OmkQpF|z=Q9{FFo*#)F(?!ir4|@^)ZJ!a5I(Zm Yf^iNrOILeh&*mE}*+QGAi(4`R0B1H#1^@s6 diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf index 5277d1508c02f5436656c2a0d611e862c4c4f1f0..fb2371353b3af90b2d36f6c0e9c8e6025bee5dbc 100644 GIT binary patch delta 1099 zcmXX@OK%%h6h8McuXsFm5<7LENR|i`*c7S|Ary&50x6p|KntrbYMI0ds)?0Eq21uR zM!*83(z0L$f(5It2pc38=`R4Wg#{7_f!wMdKgKiTnS1%BCJ z5zXU}^!)nUYj37c7s|T=_;q0S%5J^Ja_j*xa**Auy?nLBUMsvrB>GTP->Wq@ z^Eqk=V&Ygq(VV~>S zb5$ z#B>rPYWEe_L`Y@2kv1VZ;#pC|rQ;N4&Jq+O(p1G+t?I)ZW|umQmMqb%{x+SVyu(z`++Rv zl7K?#Q`mvuV~g-W|5>#E7XSnqP7E1K(_|Fh|NFi{n+u!l}csaku>tha5uOhqmz;H jY^TZ)6)duNGM+@eUT=_)SuB^!v-#p|!NtI`v_$^_8kSi{ delta 307 zcmX?Lx<l>w}6}1652|&?=;1I`<$_be}85qP0fPAgw+{6Ng za)v!X`2#?{O>$Xc5ubAUCZPNUApcHsS&0H4uL_Va`~b+Glva?QJI_o6D97@Lfq_pn z4XD1^C36x`{T!gYNqS;&J;-1Ipg;zY=19+}Ogq0U*NlOIQHFtmX-h_GVv11lM1KYb z<{vfXe{7! diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf index de06660d073e7489213056216607f00006ed4393..72e086001f54cd22737471fcde0d684bf40d0c4b 100644 GIT binary patch delta 913 zcmXX@OK1~O6us}wpCpqsP5N6%!0N(<+ER*0!4`^CC>CuIan+EfX`!(p38e*TjVZ1w zXsh5#_b!ba!9|uXMVGoLBBHj1CKJ-hd_7aWkGb!j`#tZ@_Qn0-En-B}4JFd$sXG(5 zg(STpO8$a(dS>?0aCWh{O(g6C&(F?H%xyefeoxdh0(>EpPZuam?@&ArJd#;U7xlBb zw}?Ln{+3xQr}W4maQ9u{-NiyK|7tYx3HfCrJ-N7+-YQlnmv>PxA2i6NO9k995ZK49 z=2kWqH*;SWh}akr@5y1npIWa$)QdcJyp&BZ#7oa+K=1+bN0;DGUeb5q55R*<`SQBd zL#P)(lGK&eOqzx01uzJZoKIg}FR;nz6*%VLNZn88vytV!1{fb=z~{nhsqDX|VGybZ z@j@|M7@FGrN)+Fz^|5I#W*-mTt1Stc_zlDPJkQL2Oeb8$zN-q9~H* zT9)M)nr3(mSRf{=s>&U!)oPiR`zY#rj_Z1!=h}|d>2#cGMX*masVYd?$(CI`=h~fi zyKUJnHJiHbx|Z2KX?Gl-MD!7upeTySST*GPzDLY=EOf123(IKf$>EMKL;Ma8ND&t` zO_REt&2H|4mP@W_7=|aSu~;muN}$h0SrQAJ2d z5+##|hmxd4A`v~L2xOs??O6d=Z#%>|=j3yQ@f2(>OgB?Rw^FRXk2n_ujFOlja6Etq zYva&88uJN0Ro3IIb=-<3N{IyLDzAvXPmEO}$Bnia4LNNx#Ri!b)D85b0`CvH{XYN@ vOz1Tjb6uxp9{oI$yZX8gen1?@@hbg{urBIL#;nFcLyq}M*h*4ZftUUQ;@}G` delta 307 zcmaE0)S_3F0Nh-m=%caqCW6!>^mfP7&KAb(O?L3-{yGm#5G^&t!l ze4=SU_02AslYr)Z0qIXqEUqsAG6aAE2Y@t3dQN3pUHat|1_nkM1_mavjMT&wq2h`D zKnKMD<;^mH0_-yw9s&7tfP9sV+>#1bF$SP|<|!ckIr+(njNA-UfqbBa3~afH6$Okg z{6NPrn*jL=d5O8HyqS|f0v&h;Xvd|3e5vA+|MMA)fDTvyQczHoT43l=cbkDhC}*<; XqYo3yho=?-n>(13g*KauSuz3ulQT#K diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.62.ttf index effad7b68552031f1a66fb93f25119cd0fd81ede..15b4d193d4a1cbef4fd89be8c81b2d77bc1fb272 100644 GIT binary patch delta 917 zcmX9*OH30{6utB2`=FiHmLjMz7}15%sDz*~Btk+A8Y2dXacNVbkWguWAZ&y(xWhyt zCa!ej!Wb7u;=&zEm&T>KGGSwpPg~l~?~P~boq2cex!*JQeZBCmYl$QxNMTETslt?`ix=)xH~hSo-t2n zKM}Rw2mY0rpX)HAoxsTx!0Y4rZ0>bW%Qxg-B{Eav^Xa7-YhZF61)X7oYc8uNg}pITQG_G z@BoJr>M%!QUc+LWYpGu8|HYsJzGDqdbQ1Ok{nS+}~#;2SV@_lh-^X(ZM09O|d4mfcp|6uud6~M0l>w}7qv1lFt-3j6M{n=Ln6?J^Z-D$e$z>%9e7q_^zR({ae^OdOdhR?kkqbb>B^Vg^ zMALxkn_V&|0oCsS=}%8At}g&G1b_k{3pvtrD$_!~GkP&FFvIdbxo6B*tzOa=0R7BaBqCRP+My6{^t zFfjc9@)hzDb5nUUCx2vM5S{=u|58D|RB_4w`3y!t2c&=$6cnWv7<$y*2KvBYvjw97 V6N~ea2TYrNn3IJz{}#1m1OVuKNxuL9 diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.63.ttf index 21c8205cb6b397547e4c8d71b6f0774e01b7b3f9..fdc0413d0b68c81f620d7cee1179f827d40be116 100644 GIT binary patch delta 917 zcmX9*O=whC6h8O9`+jaR?`4w7v(qXvU~E8IT0;<#Kr4h|p(xb9t;3j10-0t=LYi!h zaYQ!?Q7gERcHd=F3f*PXV%vqKTV08}xXAp^`?>e_d+|KZx#v6Qo^!r?-mjnjFttUD zhzc-*KEH77{I}{D{Y(@-L-dS-;sX{e5z6_*C|K8 zA%6foU0E-$1ShJ$5FMEXeqC8#D+T@paKQt9JYTQYempb&FNRGJ1>yX9d26LHyZ9Id z`K&>;yjsTzKit9TRhKsB|H)ssiP#MEMHK`7zW%}|`k(~dS(q!|99w;K2?RdD{WA*) zxX!sX@c={ z4EV3Uyt-z7qA3u{h?VLqbM?~~ZoMKJo7pY0l!*`jdim#W(W;DnjXaG*zsj6L$yS>u z4qJkLOpN#*?ZGAb5+86Tna%Dng?GZ^yBpyQd;eolf!IffmgqSAC$ztZ+S?q9e*pXt z_0xldL6U)>1VTcS5Q4Od<2Y?g+13o$BIbCW$J4me=?r3ZXT<1KDXq0i(m0Buw6Sd^ zeQ7r=TlTk-#z~b#yl>wJ6tyuhFc$zt6M{n=Ln6?J^H-P**$z>%9e7q_^zR(LGe^OdOdhR?k5ujQY76t}B z(KMj?W|z!KK=n&N`qLAO>p>O?00lraM|w_W+G&AsRt5$}86ZB9k(!tyR6NliXdw?! z-Yf$sz&?ZF5s>c#TUylAhX$m@ed=e{O0cP5#cIMYy#G#U^jT1t^pF$EW?j}}er#*IVXkfg&TgmmLL znV=hm+HMMh4{)U`4G4mZh~2qy;X<$r3r$5Pwez_1xOeV7$L}U?i{K*v;hcN^_xGRw zzt>+pxL77eL}?s?o}0RI;Y}vYuZd1>5V48N(-WuX7fSCF#pYo3&h*TMnQPaVzbAV9 zOYqOkt`>?s%|3ztHu!V1n}w2dYVlj5Cj|IAvzr^EPGSsv{vP-n3&q9NPtRt4AsPVd zWEVCIHMPo&K)B0(v+JcR^*5b5!y z`NG`L`p1`vj2+mYU4p>8#eM{!N$_J!s~cOfXQ>bU5AfevxjI{zDqXySYWEQH_G;nW zR*|1dz5v1Ja2Q=Htj>=YzPnF!VvC6XTD-cxp+2M20Q6dZ_fdB7#4cW-`S z{KO2LBbqK~cjn}IcGM_DfZ=a+H*#cmaNInmRX(mnkH}L#raB*yp8m7`zvzE0Hpy=7 zVHn=y6sHf-(2ph}coK_n!Vg%Bh|-}i%-ZMP%?uMsmW%i@9Wx^B-8x06Z+ zVJM{x`+@IyUQn%Q{jRN7HQny^t51b}uhZ%H{g9eX#|cBf*Xee=K#@QgjcKN73dX7f zN-4~t3VZ~uz7#hQu`G?arwowtc!Y|$ux(pUH=Aj$04t=h*J`z-VWm>3xTOO>7ly8Z zOx-YGYa4)LC0f0z)@voK>X7%K-cX=BH;{}8uN;N(YtY+!!}a{nPoUb%&oi0OeVv*#VbN7Vyu#= zH##CY5Ok;~8q}-6?L;09s6Pt!?*aotg2&1&#=U}bk*=JXL2jcBcb#jbR}Noelp!d3&irn>>(y$*wPrv@Dx1v?CQ^gRIOZ!# F`wtX+D2)IB delta 307 zcmaFkIl;D`fsuiMK@do=FbMbu>l>w}6}2%iaJc|Q6M{n=Ln6?J^TY&sK$z>%9e7q_^zT^=ge^OdOdhR?kkqbce4;UEu zMALxkn_V&|0o6AETWYI cNc`Ar!5G5Iax}#zW%C5K=VF_e%ULo40E9+Nwg3PC diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf index a5ce9e05d9061fe5afb4a739079549dbebb2e7dd..32d959e2e06c4e64bcabb63ee7951d96d50ced1d 100644 GIT binary patch delta 1557 zcmcgrPiP!f82{dzH~*5|*-5ioH!Ac^dPhc3tEwFVQ2r$&dkod=WndnB6!I6nD5Q^|Mz|0 z%x^F3yxbs0M3Z2GjxN8s^tzfBmx*R>5V2=YoqqP%+WN+aMD}%fy?uIRY30JsneT`m z>qCBewN|dP$SZ?A4|m7MG>FP*u9fD#<$E9K2PZWjQ)$8A;4UReM6>)HaqEE4hS6%^QY>wgeEaTJK( zs;-saIkfr7DI)zQ{1>WFn4hvA0C)%TY_+y^-h7w7A~G^W+NHDSR?ExN%M!7u!EV&b z&!4aJBe~-+b`Vf{uUuQ3D}Q?zh<`%CoAq;>Tk1|4PU#qy)0clJ9j!|oyoBc|jGFJ$K3<7V;6P3(wWkkDbPi;6XV=qz zWE%L4NcDSHXBOFmJs|=7ex*B56T1zzdqAggP=y{+r*S}iKBPSTXa9fE|2%AIpH9#R zoHFz=7J3<9#e6Vgpiv-b1R^1+A%q~AL{Sv?Y`Z5JWQ~|%Sr(6@e!m|?$;F(KagsAIcGW}R_UqX>ycGD@+^OXG}lP7TFjM=SUP zGIX*;^je8c6^V0ALn)nU8b=2_of`)~Y%@jBS%!0n^*jAsKA-2@;!U9xG1km>JYVF- zW1j-yQP4!#^b`Wnf12#y0|A5rk2HFWB}v>5?%%y{OcW>Dzk}j9mdzkkJ5KS-3iNNi4|jbmxH$+@nnc;H30Qz#aTleVC~H$c43HPV~u jP?{x%tQaDThJ#_)ZnwKJ8E&Can8>;lxeWG|mL>WdBrfoT delta 307 zcmbQ>{=mAPfsuiMK@do=FbMbu>l>w}6}2%ia83b=CIp8#hEz_-+{wTovjoW3O3qCz zV6nn(g7n;ZW+E3D7`O}= z82Ciffa;rFGA9Ae1Bx-2q$d{F7XTRoK!G_xnj<}@GVT1bTr&m+Mi~YMrY#w%i77(G z6a5(&ShoP>%`$)j>@ye-0v!O-r;?FdQo)|Zun;K!hJk^(B_}^Q(L>7PACUb4XvUG; z#EJqYWqu1F{{m3GLSABSs(RwKXFvz80GfZLAYZDuTWYI cNO)|vU|hn&(md{ey?V`Whgd6Q{QA92=jy4p@_nI&*5|z{sWB=bi%_Xv5agid)5NJf;5? z@vhMscgopZenS6y;{QfxY9%K-NW3=1cgCyb%KhE>H-Js(6vk)V`c(7KxjRgFoE9j% z(^YW<+n|8k<@Tv5DH+R^Qg!np@^~9==I>wK+)Y z68EpXYB`U29)bN_#Hpk@jS(`YetCD3{z4JYjjZ1%zCRE1=)RAa^h5kbb$5kUeWi$g z!c$+NIe$Wr|DFHiJoe+NLkfLE|;-%wl6h9S4!2DsT&4^ZG-(-*_PK-UMp)g2Q|}n9LF|w6bcIqx^8E)S*OQT z@L4H{{j}HkdXJD&B9U}+68^>+94`TXl*B+0QYu9%T_`0vfK0DVQuo^;0d1DyTwWvE zU)sI-d|paRHnb#x5RL4Y#g5k76L#Qfi|`uETQ|TA&YxEMu?Q$+SlbdJio&+{`NL;p ib#e8l_mnUUl>w}6}2!haQFa46M{n=LnDR-fnp4IlFLdI_;^)-eDNbd{-m^m^xS!7A{T(_A22ZR ziKYS7H@jp`0;+ES%A2Go7S|U583I57kcAxSIhAR3>6cR&7#L+37?{K|QWH~ziYNL5 zUH1SeZyhya>@r66Cbxa9wQ1|y&YbU+FUic$*lJdyaaE;8}gEkkkus#K`*YG zQB+Xy=i*7P9>jxD(c9u#!GnnCgO|gLh$|Yi>+a59kKe3kkEVLM=&!4~>Z|IWU{`a0 zkrX1zKylhKbbRnHwMzGhdKQS3O-F|}ZyU=^T_iHz!t3whk-?F(*H1npTAKjgG@7>y z^obr5nLB|8MrZ9Q>yO++*e8Mi9i5%&wUYh7UB`fLju&$IJKH;6!5?-jJ3ea{r2R z2jfLc;?|~#LHA;AK&x4q%2*QZ!vKyY*0GPm;u;oitr!2P!1LvvJ<8AP!8w@U&;sn} z0@SS)8pV}L^ou;j6{_FKxC|EY`zaGp_uuHrhc;SmfpeFfq-Ir$Lck~lANlA-5$ zLDe*?QsJDdq-cg=u)wR;YE3VkOGPpWLn&qG2cGM?fm2fbhAA9Xm<`|gGxXhhz3%xT zEiYSE7<$cmqwWR~afDG7Ro8W{C{9}xMUs>#@DSA5o6rzZYQ=;bX^_ZeF)L!+G)<9N zUe2%xv_cA-)oN90Mmn8N7y|qm*Mthug{HyR)Ii5bR-2C6tR@YopX;V&S*9*1oBjM* z2s4>XT5Y;Y9s>E&i@C}RZ3<(IB36VQrL-D#q?c$Ijq2`Vah}!(rSjGqSj79Kj-XNd z`t?iAMQK(hW3lf`ON`V=N^{OK8v%Ui+jkPHQmaG>Kb@43v))LwcXxO9tTsgyH$Rk( z%HrZ;rLjYbbZ2L0T2N5ZTFGkeobJ{VI@%SL+7T?9P3hz>RVtMwpY&9Ajv}HTIpm@U delta 307 zcmez2{KvAMfsuiMK@do=FbMbu>l>w}7qv1laO?nzCIp8#hEz_-+{wToeE`VUO3qCz zV0gu_m4Sg%0?0Q>E=w%pQ%>K+z#yXlar?RfrMM5R{-JXTO^~FJrz&H1Zb_J9O^C;bYUYb9afH=ZLy`;o{`QrJt|=LG*C~ z`?IN1P^KC^A#xAG9-mqa=DdBy$3&l8f&FS~aiQR4M`7nr!@fULE|wlm3>+AQCumeyG=F14ofk0Z&Dc)F`d6Bzpg3L+m=S387*1S=oPd_Iz9?wn(*Y?cc zI|ugvA%0>OAMA(hDN=uhJvv)jxGkR1H6pWs_|+S?rh>^MUk>984EAR!IB~no_YI_A z0ttniL1}s{c=8sEH;MRW`PTe`{)LW#&|2y*&rO$)p1t#u=%a=8Jp0`cZ)SXdeN+6i z_YC|5WcnsO>_|G=9C7FZ_5qBVZ_oygM5nP}r;_S4hDr2EuOAGW|8h?2zm1$^?`{Wa z@cvD&;U@M9>cK9p%5D{UPo2sx_4%Ii^a1;?ZQuob&nZJc;zEDID;V#^3=;PQ#SjvT zDnbZSGK!+4>AFqDU>n3N$8mTPwOXxSBv%HsN~Bau$vBC^Fifh;M%;DHs$sg_xVm4) zVW-oHVo8mL=Sdm$I^9l~XcB-im|@$tV657&wN}J*5&^V&Dq{h$qO44)Erhukj&wd!r;o7^CCnImqwz<>%~Eb6wqVXancBxL1$-yh881_v@2L0XpR Ee@;`f`~Uy| delta 307 zcmaFk{Km4LfsuiMK@do=FbMbu>l>wJ6tyuhaI64|CIp8#hEz_-+{wToy#dJAO3qCz zV0g{2je&ua1IRZ?E=w%pQ%>K+z#t<4}KnF-cK~ZXfp-0_q1_tqv Z%@&M1m{}H7%Smni!g611^M4sjMgTplOa1@= diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py index 7bea7948c..4bf57140f 100755 --- a/test/subset/run-tests.py +++ b/test/subset/run-tests.py @@ -67,7 +67,7 @@ def run_test (test, should_check_ots): "--font-file=" + test.font_path, "--output-file=" + out_file, "--unicodes=%s" % test.unicodes (), - "--drop-tables+=DSIG,GPOS,GSUB,GDEF,HVAR,VVAR,gvar"] + "--drop-tables+=DSIG,GPOS,GSUB,GDEF"] cli_args.extend (test.get_profile_flags ()) print (' '.join (cli_args)) _, return_code = cmd (cli_args)