From e6f80fa1044243898c402ec6a59d6c1b5420be53 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 10 Dec 2014 12:05:24 -0800 Subject: [PATCH] [indic] Allow ZWJ/ZWNJ before SM In Oriya, a ZWJ/ZWNJ might be added before candrabindu to encourage or stop ligation of the candrabindu. This is clearly specified in the Unicode section on Oriya. Allow it there. Note that Uniscribe doesn't allow this. Micro tests added using Noto Sans Oriya draft. No changes in numbers. Currently at: BENGALI: 353725 out of 354188 tests passed. 463 failed (0.130722%) DEVANAGARI: 707307 out of 707394 tests passed. 87 failed (0.0122987%) GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) GURMUKHI: 60732 out of 60747 tests passed. 15 failed (0.0246926%) KANNADA: 951190 out of 951913 tests passed. 723 failed (0.0759523%) KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) MALAYALAM: 1048147 out of 1048334 tests passed. 187 failed (0.0178378%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271662 out of 271847 tests passed. 185 failed (0.068053%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) --- src/hb-ot-shape-complex-indic-machine.rl | 2 +- test/shaping/Makefile.am | 1 + .../5028afb650b1bb718ed2131e872fbcce57828fff.ttf | Bin 0 -> 4720 bytes test/shaping/fonts/sha1sum/MANIFEST | 1 + test/shaping/tests/MANIFEST | 1 + .../shaping/tests/indic-joiner-candrabindu.tests | 2 ++ 6 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 test/shaping/fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf create mode 100644 test/shaping/tests/indic-joiner-candrabindu.tests diff --git a/src/hb-ot-shape-complex-indic-machine.rl b/src/hb-ot-shape-complex-indic-machine.rl index f6768a581..694b235d1 100644 --- a/src/hb-ot-shape-complex-indic-machine.rl +++ b/src/hb-ot-shape-complex-indic-machine.rl @@ -69,7 +69,7 @@ cn = c.ZWJ?.n?; forced_rakar = ZWJ H ZWJ Ra; symbol = Symbol.N?; matra_group = z{0,3}.M.N?.(H | forced_rakar)?; -syllable_tail = (SM.SM?.ZWNJ?)? A{0,3}? VD{0,2}; +syllable_tail = (z?.SM.SM?.ZWNJ?)? A{0,3}? VD{0,2}; place_holder = PLACEHOLDER | DOTTEDCIRCLE; halant_group = (z?.h.(ZWJ.N?)?); final_halant_group = halant_group | h.ZWNJ; diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index e2dcc98ef..70bcdd525 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -40,6 +40,7 @@ TESTS = \ tests/arabic-feature-order.tests \ tests/context-matching.tests \ tests/hangul-jamo.tests \ + tests/indic-joiner-candrabindu.tests \ tests/indic-old-spec.tests \ tests/indic-pref-blocking.tests \ tests/mongolian-variation-selector.tests \ diff --git a/test/shaping/fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf b/test/shaping/fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8fb2f16264fb007e27f3d6f7805169fa555351af GIT binary patch literal 4720 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 literal 0 HcmV?d00001 diff --git a/test/shaping/fonts/sha1sum/MANIFEST b/test/shaping/fonts/sha1sum/MANIFEST index c51639b61..924732dc2 100644 --- a/test/shaping/fonts/sha1sum/MANIFEST +++ b/test/shaping/fonts/sha1sum/MANIFEST @@ -2,6 +2,7 @@ 270b89df543a7e48e206a2d830c0e10e5265c630.ttf 37033cc5cf37bb223d7355153016b6ccece93b28.ttf 4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf +5028afb650b1bb718ed2131e872fbcce57828fff.ttf 57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf 757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf 7e14e7883ed152baa158b80e207b66114c823a8b.ttf diff --git a/test/shaping/tests/MANIFEST b/test/shaping/tests/MANIFEST index 3f2aed45e..849ebc56d 100644 --- a/test/shaping/tests/MANIFEST +++ b/test/shaping/tests/MANIFEST @@ -2,6 +2,7 @@ arabic-fallback-shaping.tests arabic-feature-order.tests context-matching.tests hangul-jamo.tests +indic-joiner-candrabindu.tests indic-old-spec.tests indic-pref-blocking.tests mongolian-variation-selector.tests diff --git a/test/shaping/tests/indic-joiner-candrabindu.tests b/test/shaping/tests/indic-joiner-candrabindu.tests new file mode 100644 index 000000000..351e927fd --- /dev/null +++ b/test/shaping/tests/indic-joiner-candrabindu.tests @@ -0,0 +1,2 @@ +fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf:U+0B13,U+200D,U+0B01:[omorya=0+1450] +fonts/sha1sum/5028afb650b1bb718ed2131e872fbcce57828fff.ttf:U+0B13,U+200C,U+0B01:[oorya=0+1309|space=1+0|candrabinduorya=1+0]