From ac53443f1cea83ed43a4e41a9fdb91902f7fae7b Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Thu, 31 Jul 2014 18:51:37 -0400 Subject: [PATCH] [hangul] Don't apply 'calt' See comments. Micro-test added. --- src/hb-ot-shape-complex-hangul.cc | 11 ++++++++++- test/shaping/Makefile.am | 1 + .../757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf | Bin 0 -> 1804 bytes .../7e14e7883ed152baa158b80e207b66114c823a8b.ttf | Bin 0 -> 1644 bytes test/shaping/fonts/sha1sum/MANIFEST | 2 ++ test/shaping/tests/MANIFEST | 1 + test/shaping/tests/hangul-jamo.tests | 11 +++++++++++ 7 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/shaping/fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf create mode 100644 test/shaping/fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf create mode 100644 test/shaping/tests/hangul-jamo.tests diff --git a/src/hb-ot-shape-complex-hangul.cc b/src/hb-ot-shape-complex-hangul.cc index 54c12ebca..6ac18b08b 100644 --- a/src/hb-ot-shape-complex-hangul.cc +++ b/src/hb-ot-shape-complex-hangul.cc @@ -59,6 +59,15 @@ collect_features_hangul (hb_ot_shape_planner_t *plan) map->add_feature (hangul_features[i], 1, F_NONE); } +static void +override_features_hangul (hb_ot_shape_planner_t *plan) +{ + /* Uniscribe does not apply 'calt' for Hangul, and certain fonts + * (Noto Sans CJK, Source Sans Han, etc) apply all of jamo lookups + * in calt, which is not desirable. */ + plan->map.add_feature (HB_TAG('c','a','l','t'), 0, F_GLOBAL); +} + struct hangul_shape_plan_t { ASSERT_POD (); @@ -404,7 +413,7 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hangul = { "hangul", collect_features_hangul, - NULL, /* override_features */ + override_features_hangul, data_create_hangul, /* data_create */ data_destroy_hangul, /* data_destroy */ preprocess_text_hangul, diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index f40f2ffff..9e825133a 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -38,6 +38,7 @@ CLEANFILES += \ TESTS = \ tests/arabic-feature-order.tests \ tests/context-matching.tests \ + tests/hangul-jamo.tests \ tests/indic-old-spec.tests \ tests/indic-pref-blocking.tests \ tests/mongolian-variation-selector.tests \ diff --git a/test/shaping/fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf b/test/shaping/fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bbe22370ae64a2b9972f0f4b38659c8bc6640876 GIT binary patch literal 1804 zcma)6T}&KR6h3!me_&@=*dGX{uv{uO1}P#o+8{Bdv_K0&!(!71BTRRvyUWh*470<^ zCXFF!Vrs#rCZ=gjq=*)iLYj@l=z}pvjn<^mM2#=n*whyuY+uCgr2MSs&VZur19x-p zIp4Y8eE00RKLbNU1K@>8;9;b*tBd}A?e#_gE{{FieQY2MmEZwzJ`Mn4clgDF-)djF z5bpyZGXvo#Ti@yrl%gNS`H|xTgWdcXdf@sAhmuH2()_Ly8fw)bHsZ1rbv@U30{s>2 z&%`kx-f?|^-ycBS5KkEs-u%Wr#7&5UDQQ9j=P`8Q5A3eAl#-o2WpSMU3h{AG%^1bk zpcVBmAf{Q=6ZA*Qkh+YxA&YvR>y9@O|B6@yKrJVF#O`-qXjmC8Z~qH;p7G)P@BTcn zW!I`!mj%sTftUx5MbTM?D1QmIj)Yo ziG~912WA+;Jc*+eSI7O^^f}zwM(76>4D1xbAVC^3=yk$T=tVmSGQ?mU6r9ojhfoF_ zmKN4>)9+)-=r^Fna{+zGU}wXHmH_7)_RSTG0Jgn5cXz~MBY{;P8{@Ku74;3nx6N+cpzCPFp783{|!G6_H!%{lad9-)$pd1@lB%Q^(&0S{Alo&E=i5cR|I^L{y ztTu}L#;Y5PwE%*KgS)~xeX$naICI@QE!JV6SQK}gP;QorkC~%lgBkRJn-G_G_MWG2u|rF4|0q#QjdQ(cZFP+FIxG?Ate zSvMrKqvLua6HP>ngqqGYTZ*g@6f1!%S(W%t@FA7j+bySMJrQ}>RF9NK4ZI`-$PKRi z{@U99%^QFbCpZb=_@=%6UT@*+LXZ^l1%E*-1bB0vdREU>jZV)i*LLNvTwPooyLu|F zDx-B?Fa6=xv$y=~q1%O#+W~DoRB%<+d&Y9F7@n@KMNmTd|MPh#la#r zAu%5S2O-tp{~9mXo}=?1=?e}oP@qO)(>97F#$?aN=tBBk&HA< zTXzYMnsvh6cr)4EvN3@YDBp%TD20k`nB6tsHtYZa{M)b-Zx{Z_fAm~X20^HdNQwcI zI~kSHlnQ5eGG-a`{7y#9hQq3{`-~^a8hOmo1J$q}x;7&vXesj88^)?&v;F8lZ!zp| zx4viW&;xAtS~7jM8oog`;x&8(@m1$F@)@sjKLV)$va%uC?{u*T-)Z|RG@Fh54KOUL Aj{pDw literal 0 HcmV?d00001 diff --git a/test/shaping/fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf b/test/shaping/fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf new file mode 100644 index 0000000000000000000000000000000000000000..27efd7c90ee90fc66ad023fa81ed86921c6e10fd GIT binary patch literal 1644 zcma)6T}&KR6h3!me_&@=es&=>l;u*92TBpq)CT)d3T0_&pka~tU@XJ#ba&a^nPFyF zcM~-vO^oTH@u6uNqewCE(A}7gq^S?Y7$4L`qe)GCF^vsRJg6^XcOr%L+*t^yedtW? zx#v6Q+;7gDd+!;Wm>2^u%mWWo14Bc!C%2&iaMy7t!AoNyXao;{(*XctF!b`-dmHQZ zi0c4I$5`mu-s_{jYSdpv|J3Bzc#xk(4P2*CRE1NL2F)jHk;~8gFr zCSsaKK0$w~21ADtx2KWMxyt>7_zdDI0OaCPBbD)H*LQ`>wWt3Ap5H_Z{P@G4XZGhu zP1~D-=EncT6&$movI!CXCOHbQlV%*eR(^+U37=!EBxp8kC9ooSaPZ%d_rVEO+%=B< z^+;tVuR$+4hgl2Gz4#s^JO1lw_O&Kv>K{CNj(iDFE?2(c=p#K--Nem&Tq}1UCkieG zAb|N1M>T%E6LCf7a7Q~~6jU&APzZqp3K*yjzy%n=c^qVj!W<;gqyGmX4Y2)Ym1^J9 z2N|=Cd3GLP5F@DVb1-}Ta=BcQe_XcXaQDy)fVHw8JBCFdA~rKB<*RJ({{Ijx91ueM zqpGQfB*hrGFmhsCj?N_|o!Ns{vvo8l2CNoh1vsmfw~jcrJ4Jr?t=&QkfS{pp*Ett% zw7|Ppzx6JNt!OBh#bXxKT2Ap9Yg%l#>gvHwh|9Zl=d1gr{)jp)pO46j88@>7s+QH` z(U?hld!BoN+CCb}8m62w=y@fq>YA!crX1;}{mCR9XQ2iimkn7@Gb78I#tkY_QWurZ#-qPN3v!Z1c=! zUpE83V(D(vF%NKrRM%Tn?8sZ02CGf%C|VyjY`>SoO>qw8Tx*^+VeJ=D#8I;#*8ly6 z|6ya^$8tM}$%(@Eo}Y!!ZhRn$>nQBNE(|RCz(L57w&(jSS0kpE!1Px0g}j!>^b(0y zA^lN$<&&p9hA_vJ#id)znMGqZn=u34#iga?%*O(rKX$S`_Pej>i9J)9GUE!>r zgubXQCtx^+b%RNiafl=&1@BH$G8LG&?+YF=yHmIiA%b0p-KC0;gX%+w-J}Db1B64! ziTCHg=YksWhNYwllTRYkGbt4&pG4aKj%NUSiQldQ%a>qJA$E6RsM0T4XJS=ilD#(K gHEa^tIms8;V@Vy5tzEIw56i>Y5BFEFRqP@E00ifYrT_o{ literal 0 HcmV?d00001 diff --git a/test/shaping/fonts/sha1sum/MANIFEST b/test/shaping/fonts/sha1sum/MANIFEST index fe359b1a8..a8ca117f1 100644 --- a/test/shaping/fonts/sha1sum/MANIFEST +++ b/test/shaping/fonts/sha1sum/MANIFEST @@ -3,6 +3,8 @@ 37033cc5cf37bb223d7355153016b6ccece93b28.ttf 4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf 57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf +757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf +7e14e7883ed152baa158b80e207b66114c823a8b.ttf 813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf 8454d22037f892e76614e1645d066689a0200e61.ttf 8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf diff --git a/test/shaping/tests/MANIFEST b/test/shaping/tests/MANIFEST index 8c2bdca19..363913334 100644 --- a/test/shaping/tests/MANIFEST +++ b/test/shaping/tests/MANIFEST @@ -1,5 +1,6 @@ arabic-feature-order.tests context-matching.tests +hangul-jamo.tests indic-old-spec.tests indic-pref-blocking.tests mongolian-variation-selector.tests diff --git a/test/shaping/tests/hangul-jamo.tests b/test/shaping/tests/hangul-jamo.tests new file mode 100644 index 000000000..7c1ef6bff --- /dev/null +++ b/test/shaping/tests/hangul-jamo.tests @@ -0,0 +1,11 @@ +[gid64252=0+920|gid64568=0+0] +[gid3=0+920|gid4=0+0] +win/util/hb-view.exe --viewr uniscribe +[gid64252=0+920|gid64568=0+0] +[gid3=0+920|gid4=0+0] +win/util/hb-shape.exe --shaper uniscribe +win/util/hb-view.exe --viewr uniscribe +[gid64252=0+920|gid64568=0+0] +[gid3=0+920|gid4=0+0] +fonts/sha1sum/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf:U+115F,U+11A2:[gid3=0+920|gid4=0+0] +fonts/sha1sum/7e14e7883ed152baa158b80e207b66114c823a8b.ttf:U+11A2:[gid1=0+920]