From c35d7863979f2395140d70cda49a19857b98f515 Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Thu, 1 Apr 2021 14:32:38 -0700 Subject: [PATCH] [subset] never drop the 'pref' feature. Never ever drop feature 'pref', even if it's empty. Harfbuzz uses it to choose the shaper for Khmer. --- src/hb-ot-layout-gsubgpos.hh | 7 +++++++ test/subset/data/Makefile.am | 1 + test/subset/data/Makefile.sources | 1 + .../Khmer.keep-layout-retain-gids.1780.ttf | Bin 0 -> 4464 bytes ....1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 0 -> 7848 bytes .../Khmer.keep-layout-retain-gids.31.ttf | Bin 0 -> 4256 bytes .../layout.khmer/Khmer.keep-layout.1780.ttf | Bin 0 -> 4204 bytes ....1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf | Bin 0 -> 6412 bytes .../layout.khmer/Khmer.keep-layout.31.ttf | Bin 0 -> 4140 bytes test/subset/data/fonts/Khmer.ttf | Bin 0 -> 75368 bytes test/subset/data/tests/layout.khmer.tests | 11 +++++++++++ test/subset/meson.build | 1 + 12 files changed, 21 insertions(+) create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.31.ttf create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout.1780.ttf create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf create mode 100644 test/subset/data/expected/layout.khmer/Khmer.keep-layout.31.ttf create mode 100644 test/subset/data/fonts/Khmer.ttf create mode 100644 test/subset/data/tests/layout.khmer.tests diff --git a/src/hb-ot-layout-gsubgpos.hh b/src/hb-ot-layout-gsubgpos.hh index a9f64460f..117aeaad4 100644 --- a/src/hb-ot-layout-gsubgpos.hh +++ b/src/hb-ot-layout-gsubgpos.hh @@ -3728,6 +3728,13 @@ struct GSUBGPOS for (unsigned i : feature_indices->iter()) { const Feature& f = get_feature (i); + hb_tag_t tag = get_feature_tag (i); + if (tag == HB_TAG ('p', 'r', 'e', 'f')) + // Note: Never ever drop feature 'pref', even if it's empty. + // HarfBuzz chooses shaper for Khmer based on presence of this + // feature. See thread at: + // http://lists.freedesktop.org/archives/harfbuzz/2012-November/002660.html + continue; if (f.featureParams.is_null () && !f.intersects_lookup_indexes (lookup_indices) diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index d16052b97..03c32baf4 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -26,6 +26,7 @@ EXTRA_DIST += \ expected/layout.gsub5 \ expected/layout.gsub6 \ expected/layout.gsub8 \ + expected/layout.khmer \ expected/layout.gdef \ expected/layout.context \ expected/layout.gdef-varstore \ diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index abb762ad5..dd71a1101 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources @@ -25,6 +25,7 @@ TESTS = \ tests/layout.gsub5.tests \ tests/layout.gsub6.tests \ tests/layout.gsub8.tests \ + tests/layout.khmer.tests \ tests/layout.notonastaliqurdu.tests \ tests/layout.tests \ tests/sbix.tests \ diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1780.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f5e789065d11f99eed3ed98f4053cecb50d41f5 GIT binary patch literal 4464 zcmdT|Z){W76+ibq+c8Oqoe+|=F7-1H2dJGUU|JH$h@04sgK3kH80@5KY;Y2@HgSec z2MpE-N&(ZZlyyN$yMd-@TBokQE)|51Y1y=?eCal=>i$S{L)xZQD=kthV51Q4cb}a! zRNbd(A9iiud(Q9tyZ794?RQO#h|1CF$lUJn`ly-e0n`A!r@gDQhwh?M@N2-E+k1ko zm+t-TZSWrO&d#3t)kB%Te3wXW1|Qiz5*?$p)$f3R8T^{1?AFlO z@JR9QoGB_=py7X@NYbk*dE2W5%%y;kB&rlk4Zl%0?iPUl+ozOVCB&|%*`|n z?7p!?GL_pwLs;4sAs^d0ICkKYZ4puNAK>!}Ny4|@tKUu4v*eSY*)a zWQmc}tNJ1euZ?hBt?KvJ30{o?h|U8dTmj^}Q->?UE(*~dnr>(geNNMz*L2TmGPBZ5 z&2>)2t1A3$kE%?uzU~m{=R9gy;U8-B!y2ut)tH4~Y&KXZ-kP{a;Vhzfx$nt%+8goI zIa#)(xJ_*vEUt4>wzvdj2`Iio9m}#68<<8&E4=Hn5*ZhYuw1r#qcPsq9rAiCHe0yP z*}=`kW+^Ku7Y zse1Uzy??Di9tXKo^?12Mcnxfxixc=PB;$I!Syj^42+L7Fyn=PiL!t%5U^ibQA@pIV z(rKTn_|lPdbSgK#O;yZlI$K(r9`ho@)D_|k_?yQp-1lslnm6Y( zMTBH}R5kYAh3jj%L0HWfwduj-8y-cQDB5K*af za=#p>gAPf z96yu=D_-w~EsEWn7PTd&AbhFaq4VU*UCypiEN5J_hQc1eys8a#RqIWMVnf^-vBYrF zhLn)S#@%6Ta99luhDD(vLn|*M92%CzrMBKsphpdK_l2;lwy-7<0^v?)_kPZe8nWcw zpyasGZd5{&MGiyJ3_$ULP+ObP^CG(uA2SlJp`uh2i33| zSGcW1{xCoJ+Yo65cKc6?B3_WjxQUhq%3 zOTmWs*n3P4UXpKG8-C6b(^sdZTW4#m4d+7fZo>rb?t=sY32Pn4Q`^)IkfFR;VU)L7m7y7o!3Ii;i;QnHj{ zAE#Jxg5?tIl>|GPV7n5B5>g<+ibq*)l)W;_PL8s`C^Ov6YJzty%2|taIjaF{Zy9FR z;rij0;oPv!J=8UHdWa9{S_YYEFf%CWPsc9DBv~x7GiE6EMF$+#$UwVwplhl1MnAjK z&wBfx?w30H+4_F=uReCQk3HVU0)1?KA2Td+RRr}&oz5i(tuiyoEpkSdO$l3n z=b0@Pi+xkM%V)L}m0+Ac)2s2*?vY+YiEne4!`jl-*)`B5-}JMqesrG3A)nsB;)2~gE$&@om zh6FuD8M;b3GqLe1re{;^c(%94;Rs9>SzZ6x%}L5^gKB}MPRkaRfkW)9erqvkO~C6&-4 zcxtSsUHY^7w^9D{nrnnJP_9p!jAJM)C>9ZR37QF?%{Te;naXL?Fjd_W_k9B-?R)BG09=(G`={UVX zKbwn8xY;FWH?*edT~tlJ&9HTdyqjk5jiKFI=J}Wq&HYG5j#jDD8JL1ixJpSDxSk7 zDx+8dmuVU8EYP}nI(k}%)#m*eG`tPj8>2nY-a*3@rxb1;D`-2d#JHLoXcf803ED$Z zV8OfLb{RybF$6AhiMl*0UtZ(;p=FNW}8H8;ZsDs zA2A#LBd(AS7Te%um*#5^Y#O!s&CXS1Mr*ktap(WSCgCuB<(JSO@==w mdIr20|BI9r!uR6< literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout-retain-gids.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf new file mode 100644 index 0000000000000000000000000000000000000000..572c41feb3d48d1122e31f151413b2252fba02eb GIT binary patch literal 7848 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 WCvK+V#z*iYBnbVJ&vRVyu0D`2A#?{}Y* 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf b/test/subset/data/expected/layout.khmer/Khmer.keep-layout.1789,17BB,17C6,1794,17B6,1793,1798,17BE.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c122b5536496f46805d90db323fe1c589f25fa6 GIT binary patch literal 6412 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 ICvwsL3&q;q_W%F@ literal 0 HcmV?d00001 diff --git a/test/subset/data/fonts/Khmer.ttf b/test/subset/data/fonts/Khmer.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4c37487acb6f0306cd20c8109948e069ead76852 GIT binary patch literal 75368 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

qm)K`~P>0c=fwC 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/tests/layout.khmer.tests b/test/subset/data/tests/layout.khmer.tests new file mode 100644 index 000000000..9e8a37653 --- /dev/null +++ b/test/subset/data/tests/layout.khmer.tests @@ -0,0 +1,11 @@ +FONTS: +Khmer.ttf + +PROFILES: +keep-layout.txt +keep-layout-retain-gids.txt + +SUBSETS: +1 +ក +ញុំបានមើ diff --git a/test/subset/meson.build b/test/subset/meson.build index d8bd328a8..d41c267b2 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -19,6 +19,7 @@ tests = [ 'layout.gsub6', 'layout.gsub8', 'layout.gdef', + 'layout.khmer', 'layout.context', 'layout.gdef-varstore', 'layout.gdef-attachlist',