src/hb-ot-shape-complex-indic.cc


Log

Author Commit Date CI Message
Behdad Esfahbod ecb0b24e 2015-07-22T12:02:09 Use foreach_cluster in Indic shaper
Behdad Esfahbod f8160a49 2015-07-21T15:50:02 Add FLAG_SAFE() for values known to be small-enough And add check to FLAG()
Behdad Esfahbod 595d2b96 2014-07-26T18:44:15 Minor
Behdad Esfahbod fc0daafa 2014-07-23T16:48:51 [indic] Handle old-spec Malayalam reordering with final Halant See comment. Micro-tests added.
Behdad Esfahbod 7cd33f23 2014-07-17T14:22:11 Micro optimization
Behdad Esfahbod e7ce50d9 2014-07-16T12:30:39 [indic] Fix access past end of array
Behdad Esfahbod 7627100f 2014-07-11T14:54:42 Mark unsigned integer literals with the u suffix Simplifies hb_in_range() calls as the type can be inferred. The rest is obsessiveness, I admit.
Behdad Esfahbod 68f72448 2014-06-30T15:46:53 [indic] Remove some more now-unused special-cases
Behdad Esfahbod e79c9489 2014-06-30T15:39:39 [indic] Remove special-casing of U+1CF2,1CF3 These were introduced in a498565cedf0441ae723c5e5969f637d792a15e7, but IndicSyllabicCategory has had the correct value already, so the special code was never needed.
Behdad Esfahbod d743ce78 2014-06-30T15:24:02 [indic-table] Update to Unicode 7.0 data Touch code just enough to preserve previous syllable structure and functionality as closely as possible. Many further cleanups coming later.
Behdad Esfahbod 1d634cbb 2014-06-06T17:55:02 Fix base-position when 'pref' is NOT formed If pre-base reordering Ra is NOT formed (or formed and then broken up), we should consider that Ra as base. This is observable when there's a left matra or dotreph that positions before base. Now, it might be that we shouldn't do this if the Ra happend to form a below form. We can't quite deduce that right now... Micro test added. Also at: https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=186#c29
Behdad Esfahbod 04dc52fa 2014-06-06T17:28:38 [indic] Recover OT_H undergone ligation and multiplication Sometimes font designers form half/pref/etc consonant forms unconditionally and then undo that conditionally. Try to recover the OT_H classification in those cases. No test number changes expected.
Behdad Esfahbod 39c8201f 2014-06-06T17:19:35 [indic] Improve base re-finding No test numbers change.
Behdad Esfahbod c04d5f0d 2014-06-06T17:02:39 [indic] Minor
Behdad Esfahbod 832a6f99 2014-06-04T16:57:42 [indic] Don't reorder reph/pref if ligature was expanded Normally if you want to, say, conditionally prevent a 'pref', you would use blocking contextual matching. Some designers instead form the 'pref' form, then undo it in context. To detect that we now also remember glyphs that went through MultipleSubst. In the only place that this is used, Uniscribe seems to only care about the "last" transformation between Ligature and Multiple substitions. Ie. if you ligate, expand, and ligate again, it moves the pref, but if you ligate and expand it doesn't. That's why we clear the MULTIPLIED bit when setting LIGATED. Micro-test added. Test: U+0D2F,0D4D,0D30 with font from: [1] https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=186#c29
Behdad Esfahbod 17c3b809 2014-06-02T15:08:18 [indic] Treat U+A8E0..A8F1 as OT_A instead of OT_VD Apparently they can intermix with other OT_A. Test: U+0915,A8E2,1CD0
Behdad Esfahbod 7977ca17 2014-05-29T15:34:26 [indic] Allow decimal and Brahmi digits as placeholders Tests: U+0967,0951 U+0031,093F
Behdad Esfahbod 52b562a6 2014-05-27T18:18:23 [indic] Clean up a bit No functional change intended.
Behdad Esfahbod 3bf652b9 2014-05-27T18:07:26 [indic] Treat U+002D and U+2010..2014 as placeholders
Behdad Esfahbod e0de95f4 2014-05-27T17:58:34 [indic] Treat U+00D7 MULTIPLICATION SIGN as placeholder
Behdad Esfahbod cf78dd48 2014-05-27T17:53:37 [indic/myanmar] Rename OT_NBSP to OT_PLACEHOLDER
Behdad Esfahbod cf71d28c 2014-05-27T17:47:43 [indic/myanmar] Refactor a few macros
Behdad Esfahbod 2307268e 2014-05-27T17:39:01 [indic] Treat U+0A72..0A73 like regular consonants Unicode 6.x IndicSyllableCategory categorizes them as placeholders, but they can subjoin.
Behdad Esfahbod e9b2a4cf 2014-05-23T15:49:10 [indic] Support U+1CED
Behdad Esfahbod d19f8e85 2014-05-23T15:45:50 [indic] Support U+A8F2..A8F7,1CE9..1CEC,1CEE..1CF1
Behdad Esfahbod 9f9bd9bf 2014-05-23T15:33:13 [indic] Rename avagraha cluster to symbol cluster In anticipation of adding more characters to that class of clusters.
Behdad Esfahbod a498565c 2014-05-22T19:39:56 [indic] Support U+1CF2,U+1CF3
Behdad Esfahbod ecb98bab 2014-05-22T19:36:21 [indic] Support U+1CE2..U+1CE8
Behdad Esfahbod 37bf2c92 2014-05-22T19:35:17 Minor
Behdad Esfahbod 131e17ff 2014-05-22T19:32:51 [indic] Support U+1CF5,1CF6
Behdad Esfahbod 72ead0cc 2014-05-22T19:12:10 [indic] Treat U+1CE1 as a tone-mark too It's spacing, but otherwise the same as the other ones.
Behdad Esfahbod e848bfae 2014-05-22T18:50:34 [indic] Recategorize U+A8E0..A8F1 as OT_VD Up to two of them come after all OT_A characters.
Behdad Esfahbod c11fc683 2014-05-22T18:41:49 [indic] Support more extended Devanagari tone marks Also adjust U+0953,0954 handling.
Behdad Esfahbod 26c836e5 2014-05-21T18:35:48 [indic] Handle "Cantillation marks for the Samaveda"
Behdad Esfahbod 29531128 2014-05-15T14:04:02 [indic] Improve reph formation of Sinhala and Telugu Sinhala and Telugu use "explicit" reph. That is, the reph is formed by a Ra,H,ZWJ sequence. Previously, upon detecting this sequence, we were checking checking whether the 'rphf' feature applies to the first two glyphs of the sequence. This is how the Microsoft fonts are designed. However, testing with Noto shows that apparently Uniscribe also forms the reph if the lookup ligates all three glyphs. So, try both sequences. Doesn't affect test results for Sinhala or Telugu. https://code.google.com/a/google.com/p/noto-alpha/issues/detail?id=232
Behdad Esfahbod b082ef37 2014-04-25T11:48:10 Typo
Behdad Esfahbod 828e109c 2014-04-18T16:53:34 [indic] Fix-up zero-context matching commit b5a0f69e47ace468b06e21cf069a18ddcfcf6064 Author: Behdad Esfahbod <behdad@behdad.org> Date: Thu Oct 17 18:04:23 2013 +0200 [indic] Pass zero-context=false to would_substitute for newer scripts For scripts without an old/new spec distinction, use zero-context=false. This changes behavior in Sinhala / Khmer, but doesn't seem to regress. This will be useful and used in Javanese. The *intention* was to change zero-context from true to false for scripts that don't have old-vs-new specs. However, checking the code, looks like we essentially change zero-context to always be true; ie. we only changed things for old-spec, and we broke them. That's what causes this bug: https://bugs.freedesktop.org/show_bug.cgi?id=76705 The root of the bug is here: /* Use zero-context would_substitute() matching for new-spec of the main * Indic scripts, but not for old-spec or scripts with one spec only. */ bool zero_context = indic_plan->config->has_old_spec || !indic_plan->is_old_spec; Note that is_old_spec itself is: indic_plan->is_old_spec = indic_plan->config->has_old_spec && ((plan->map.chosen_script[0] & 0x000000FF) != '2'); It's easy to show that zero_context is now always true. What we really meant was: bool zero_context = indic_plan->config->has_old_spec && !indic_plan->is_old_spec; Ie, "&&" instead of "||". We made this change supposedly to make Javanese work. But apparently we got it working regardless! So I'm going to fix this to only change the logic for old-spec and not touch other cases.
Behdad Esfahbod 0682ddd0 2014-04-08T16:03:35 [indic] Support U+17DD KHMER SIGN ATTHACAN As requested by Martin Hosken on the list.
Behdad Esfahbod 3d6ca0d3 2013-12-31T16:04:35 [ot] Simplify normalization_preference again No shaper has more than one behavior re this, so no need for a callback.
Behdad Esfahbod 71b4c999 2013-10-28T00:20:59 Revert "Zero marks by GDEF for Tibetan" This reverts commit d5bd0590ae2fbc7b0dee86385a565aef00ffb835. The reasoning behind that logic was flawed and made under a misunderstanding of the original problem, and caused regressions as reported by Jonathan Kew in thread titled "tibetan marks" in Oct 2013. Apparently I have had fixed the original problem with this commit: 7e08f1258da229dfaf7e1c4b5c41e5bb83906cb0 So, revert the faulty commit and everything seems to be in good shape.
Behdad Esfahbod 46a863d9 2013-10-27T23:24:50 [indic] Adjust pref reordering logic For Javanese (pref_len == 1) only reorder if it didn't ligate. That's sensible, and what the spec says. For other Indic (pref_len > 1) only reorder if ligated. Doesn't change any test numbers.
Behdad Esfahbod ddce2d8d 2013-10-18T18:07:11 [indic] Improve positioning of post-base bells and whistles Bug 58714 - Kannada u+0cb0 u+200d u+0ccd u+0c95 u+0cbe does not provide same results as Windows8 https://bugs.freedesktop.org/show_bug.cgi?id=58714 Test with U+0CB0,U+200D,U+0CCD,U+0C95,U+0CBF and tunga.ttf. Improves some scripts. Improves Bengali too, but numbers are up because we produce better results than Uniscribe for some sequences now. New numbers: BENGALI: 353724 out of 354188 tests passed. 464 failed (0.131004%) 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: 1048140 out of 1048334 tests passed. 194 failed (0.0185056%) 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%)
Behdad Esfahbod d5bd0590 2013-10-18T16:44:54 Zero marks by GDEF for Tibetan See: http://lists.freedesktop.org/archives/harfbuzz/2013-April/003101.html
Behdad Esfahbod c16012e9 2013-10-18T02:27:00 [indic] Add Javanese support! Seems to be working just fine!
Behdad Esfahbod 9a49351c 2013-10-18T02:14:53 [indic] Swith pref logic to use _hb_glyph_info_substituted() See comments from caveat! Seems to work fine. This is useful for Javanese which has an atomically encoded pre-base reordering Ra which should only be reordered if it was substituted by the pref feature.
Behdad Esfahbod f175aa33 2013-10-18T02:07:44 [indic] Fix compiler warnings
Behdad Esfahbod a1f7b285 2013-10-18T01:09:08 [otlayout] Switch over from old is_a_ligature() to IS_LIGATED Impact should be minimal and positive.
Behdad Esfahbod 3ddf892b 2013-10-18T00:02:43 [otlayout] Renaming
Behdad Esfahbod 8f9ec92d 2013-10-17T19:52:47 [indic] Adjust Javanese base algorithm
Behdad Esfahbod 74f4bbf0 2013-10-17T19:07:53 [indic] Towards supporting atomicly-encoded prebase-reorderings
Behdad Esfahbod efed40b9 2013-10-17T18:50:11 [indic] Minor refactoring of reph handling
Behdad Esfahbod 684fe59f 2013-10-17T18:30:06 [indic] Minor refactoring of would_substitute()
Behdad Esfahbod b5a0f69e 2013-10-17T18:04:23 [indic] Pass zero-context=false to would_substitute for newer scripts For scripts without an old/new spec distinction, use zero-context=false. This changes behavior in Sinhala / Khmer, but doesn't seem to regress. This will be useful and used in Javanese.
Behdad Esfahbod c4e71ff3 2013-10-17T17:04:47 [indic] Clean up Khmer and Sinhala base finding algorithm
Behdad Esfahbod e10453e6 2013-10-17T16:49:06 [indic] Add BASE_POS_LAST_SINHALA Previously we planted this into the mode used for Khmer. There's not really much in common between the two, so separate again.
Behdad Esfahbod 9ac6b01e 2013-10-17T16:27:38 [indic] Adjust Sinhala cluster merging under uniscribe Similar to 190c8f2b60af0851bf692f653c1604cfbf0561a5 but for Sinhala.
Behdad Esfahbod 6b2abdcd 2013-10-17T13:15:43 [indic] Improve clusters in presence of reph
Behdad Esfahbod 42d0f55c 2013-10-17T13:05:05 [indic] Apply calt,clig in the same stage as presentation features Whic means these twp are applied per-syllable now. Apparently in some Khmer fonts the clig interacts with presentation features. Test case: U+1781,U+17D2,U+1789,U+17BB,U+17C6 with Mondulkiri-R.ttf should produce one big ligature.
Behdad Esfahbod ae9a5834 2013-10-17T12:24:55 [indic] Fix pref vs blwf interaction If a glyph can be both blwf and pref, we were wrongly sorting it in the post position instead of below position.
Behdad Esfahbod c7dacac0 2013-10-17T12:20:24 [indic] Don't apply blwf before base under old-spec mode Test case: U+09AC,U+09CD,U+09A6 with Lohit-Bengali 2.5.3.
Behdad Esfahbod 3756efaf 2013-10-16T19:06:29 [indic] Misc harmless fixes! First, we were abusing OT_VD instead of OT_A. Fix that but moving OT_A in the grammar where it belongs (which is different from what the spec says). Also, only allow medial consonants after all other consonants. This doesn't affect any current character. Finally, fix Halant attachment in presence of medial consonants. Again, this currently doesn't affect any sequence. I lied. There's Gurmukhi U+0A75 which is Consonant_Medial. Uniscribe allows one of those in each of these positions: before matras, after matras and before syllable modifiers, and after syllable modifiers! We currently just allow unlimited numbers of it, before matras.
Behdad Esfahbod 28d5daec 2013-10-16T12:32:12 [indic] More granular post-base cluster merging!
Behdad Esfahbod 9cb59d46 2013-10-16T11:34:07 [indic] Fix cluster merging of left matras The merge_clusters there was totally broken.
Behdad Esfahbod 190c8f2b 2013-10-16T11:33:18 [indic] Adjust cluster merging under uniscribe mode for Tamil Apparently Uniscribe Tamil shaper doesn't ship chubby clusters for Tamil. Adjust to that.
Behdad Esfahbod f5299eff 2013-10-15T18:13:07 [indic] Simplify reph logic *Shouldn't* break anything.
Behdad Esfahbod 65a929b1 2013-10-15T18:08:05 [indic] If Malayalam dot-reph formed a ligature, don't move it Rachana-0.6 implements dot-reph by ligation, so we shouldn't move it. Uniscribe doesn't either. Test case: U+0D4E,U+0D1A,U+0D4D,U+0D1A,U+0D4D
Behdad Esfahbod a01cbf6c 2013-10-15T16:37:53 [indic] Harmless reordering of Khmer features!
Behdad Esfahbod eb10233b 2013-10-15T15:26:44 [indic] Apply 'kern' for all scripts except for Khmer in Uniscribe mode Seems to better match Uniscribe. Note: NotoSansTelugu-Regular has kern feature, so this fixes most of the positioning failures there, except for the kern pairs blocked by a (non-)joiner, in which case we (correctly) kern, but Uniscribe doesn't.
Behdad Esfahbod 30145272 2013-10-15T13:47:27 [indic] Don't apply presentation features across syllables More like Uniscribe... We still allow user-defined features to work across syllables, but not pres,blws,abs,psts,etc. This "regressed" Sinhala numbers by 11. These are cases were there's Consonant followed by Ra,Halant,ZWJ at the of text. The Ra,Halant,ZWJ ends up forming reph, which is wrong... But before we were also ligating that reph with the previous consonant. That's even more wrong. That's also what Uniscribe does. Current numbers: BENGALI: 353732 out of 354188 tests passed. 456 failed (0.128745%) 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: 951030 out of 951913 tests passed. 883 failed (0.0927606%) KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) MALAYALAM: 1048140 out of 1048334 tests passed. 194 failed (0.0185056%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271655 out of 271847 tests passed. 192 failed (0.070628%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
Behdad Esfahbod 3c7b3641 2013-10-15T11:21:01 [indic] Handle Avagraha It can come either at the end(ish!) of the syllable, or independently. When independent, it accepts a few bits and pieces.
Behdad Esfahbod 8acbb6be 2013-10-15T12:15:49 [indic] Some scripts like blwf applied to pre-base characters ...while some don't! Improved Bengali, Devanagari, Gurmukhi, Malayalam. Updated numbers: BENGALI: 353732 out of 354188 tests passed. 456 failed (0.128745%) 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: 951030 out of 951913 tests passed. 883 failed (0.0927606%) KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) MALAYALAM: 1048134 out of 1048334 tests passed. 200 failed (0.0190779%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271666 out of 271847 tests passed. 181 failed (0.0665816%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%)
Behdad Esfahbod bdd8873f 2013-08-07T17:58:25 Revert "[Indic] don't apply 'calt' by default in Indic shaper" This reverts commit 952121007c6f6f374e4cf1734ebcfe2d2d71c71c. In light of discussion on the mailing list...
Jonathan Kew 95212100 2013-08-06T10:36:14 [Indic] don't apply 'calt' by default in Indic shaper
Behdad Esfahbod 9245e987 2013-06-26T20:57:58 [Indic] Add Javanese config We should add for other scripts too, send me the virama codepoint and script name...
Behdad Esfahbod a8cf7b43 2013-03-19T05:53:26 [Indic] Futher adjust ZWJ handling in Indic-like shapers After the Ngapi hackfest work, we were assuming that fonts won't use presentation features to choose specific forms (eg. conjuncts). As such, we were using auto-joiner behavior for such features. It proved to be troublesome as many fonts used presentation forms ('pres') for example to form conjuncts, which need to be disabled when a ZWJ is inserted. Two examples: U+0D2F,U+200D,U+0D4D,U+0D2F with kartika.ttf U+0995,U+09CD,U+200D,U+09B7 with vrinda.ttf What we do now is to never do magic to ZWJ during GSUB's main input match for Indic-style shapers. Note that backtrack/lookahead are still matched liberally, as is GPOS. This seems to be an acceptable compromise. As to the bug that initially started this work, that one needs to be fixed differently: Bug 58714 - Kannada u+0cb0 u+200d u+0ccd u+0c95 u+0cbe does not provide same results as Windows8 https://bugs.freedesktop.org/show_bug.cgi?id=58714 New numbers: BENGALI: 353689 out of 354188 tests passed. 499 failed (0.140886%) DEVANAGARI: 707305 out of 707394 tests passed. 89 failed (0.0125814%) GUJARATI: 366349 out of 366457 tests passed. 108 failed (0.0294714%) GURMUKHI: 60706 out of 60747 tests passed. 41 failed (0.067493%) KANNADA: 951030 out of 951913 tests passed. 883 failed (0.0927606%) KHMER: 299070 out of 299124 tests passed. 54 failed (0.0180527%) LAO: 53611 out of 53644 tests passed. 33 failed (0.0615167%) MALAYALAM: 1048102 out of 1048334 tests passed. 232 failed (0.0221304%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271666 out of 271847 tests passed. 181 failed (0.0665816%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) TIBETAN: 208469 out of 208469 tests passed. 0 failed (0%)
Behdad Esfahbod fb7c182b 2013-03-06T00:53:24 [Indic] Minor
Behdad Esfahbod 8144936d 2013-03-05T20:08:59 [Indic] Work around fonts with broken new-spec tables See comments, and this thread: http://lists.freedesktop.org/archives/harfbuzz/2013-March/002990.html Originally reported here: https://code.google.com/p/chromium/issues/detail?id=96143 Doesn't change test suite numbers.
Behdad Esfahbod 41732f1f 2013-02-27T20:40:54 [Indic] Help compiler put indic_features table in .rodata The overridden "or" operator was preventing the flag expression from being const, and putting the table in .data instead or .rodata.
Behdad Esfahbod 94789fd6 2013-02-26T21:22:37 [Indic] Sort pre-base reordering consonants with post-forms Before, we were marking them as below-form for initial reordering. However, there is a rule that says "post consonants should follow below consonsnts" for base determination purposes. Malayalam has port-form YA/VA, and RA is pre-base. As such, for a sequence like YA,Virama,YA,Virama,RA, the correct base is at index 0. But because the code was seeing RA as a below-base, it was stopping at the second YA as base, instead of jumping it as a post-base. By treating prebase-reordering consonants like post-forms, this is fixed. MALAYALAM went down from 351 to 265. Other numbers didn't change: BENGALI: 353686 out of 354188 tests passed. 502 failed (0.141733%) DEVANAGARI: 707305 out of 707394 tests passed. 89 failed (0.0125814%) GUJARATI: 366262 out of 366457 tests passed. 195 failed (0.0532122%) GURMUKHI: 60706 out of 60747 tests passed. 41 failed (0.067493%) KANNADA: 950680 out of 951913 tests passed. 1233 failed (0.129529%) KHMER: 299074 out of 299124 tests passed. 50 failed (0.0167155%) LAO: 53611 out of 53644 tests passed. 33 failed (0.0615167%) MALAYALAM: 1048069 out of 1048334 tests passed. 265 failed (0.0252782%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271539 out of 271847 tests passed. 308 failed (0.113299%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) TIBETAN: 208469 out of 208469 tests passed. 0 failed (0%)
Behdad Esfahbod cfc507c5 2013-02-14T10:40:12 [Indic-like] Disable automatic joiner handling for basic shaping features Not for Arabic, but for Indic-like scripts. ZWJ/ZWNJ have special meanings in those scripts, so let font lookups take full control. This undoes the regression caused by automatic-joiners handling introduced two commits ago. We only disable automatic joiner handling for the "basic shaping features" of Indic, Myanmar, and SEAsian shapers. The "presentation forms" and other features are still applied with automatic-joiner handling. This change also changes the test suite failure statistics, such that a few scripts show more "failures". The most affected is Kannada. However, upon inspection, we believe that in most, if not all, of the new failures, we are producing results superior to Uniscribe. Hard to count those! Here's an example of what is fixed by the recent joiner-handling changes: https://bugs.freedesktop.org/show_bug.cgi?id=58714 New numbers, for future reference: BENGALI: 353892 out of 354188 tests passed. 296 failed (0.0835714%) DEVANAGARI: 707336 out of 707394 tests passed. 58 failed (0.00819911%) GUJARATI: 366262 out of 366457 tests passed. 195 failed (0.0532122%) GURMUKHI: 60706 out of 60747 tests passed. 41 failed (0.067493%) KANNADA: 950680 out of 951913 tests passed. 1233 failed (0.129529%) KHMER: 299074 out of 299124 tests passed. 50 failed (0.0167155%) LAO: 53611 out of 53644 tests passed. 33 failed (0.0615167%) MALAYALAM: 1047983 out of 1048334 tests passed. 351 failed (0.0334817%) ORIYA: 42320 out of 42329 tests passed. 9 failed (0.021262%) SINHALA: 271539 out of 271847 tests passed. 308 failed (0.113299%) TAMIL: 1091753 out of 1091754 tests passed. 1 failed (9.15957e-05%) TELUGU: 970555 out of 970573 tests passed. 18 failed (0.00185457%) TIBETAN: 208469 out of 208469 tests passed. 0 failed (0%)
Behdad Esfahbod ec544866 2013-02-14T11:25:10 Add hb_ot_map_feature_flags_t Code cleanup. No (intended) functional change.
Behdad Esfahbod e7ffcfaf 2013-02-14T11:05:56 Clean-up add_bool_feature
Behdad Esfahbod 1f91c396 2013-02-13T09:38:40 Indent
Behdad Esfahbod a0cb9f33 2013-02-13T09:26:55 [Indic] Improve base finding in final_reordering Fixes 5 Malayalam failures! MALAYALAM: 1048016 out of 1048334 tests passed. 318 failed (0.0303338%)
Behdad Esfahbod f22b7e77 2013-02-13T07:32:46 [Indic] Track base position when reordering things Ouch, how did things ever work without this?! The added test that has a dot-reph as well as a pre-base reordering Ra perfectly demonstrates the bug (tested with Nirmala font from Win8 for example). Testing suggests that Win8 shaper has the *exact* same bug / behavior that we used to have. Odd.
Behdad Esfahbod 85c51ec2 2013-02-12T18:17:39 [Indic] Fix Eyelash Ra with old Devanagari spec
Behdad Esfahbod 63e48bc3 2013-02-12T17:57:49 [Indic] Apply 'blwf' before 'half' This reverts 167b625d988b74572d6b2f646c285b666b650d49. It didn't matter before, but that's going to change with next commit.
Behdad Esfahbod 70d65657 2013-02-12T18:01:21 [Indic] Apply 'vatu' before 'cjct' This essentially reverts 1d6846db9ebf84561bb30a4e48c6c43184914099, but that commit is from way back when. We should be better following the spec order now again.
Behdad Esfahbod bab02d33 2013-02-12T15:26:45 Rename HB_OT_INDIC_OPTIONS env var to HB_OPTIONS The Myanmar shaper now respects the uniscribe-bug-compatibility option too.
Behdad Esfahbod 3a83d33e 2013-02-12T12:14:10 Add South-East Asian shaper Handles Tai Tham, Cham, and New Tai Lue for now.
Behdad Esfahbod 56800027 2013-02-12T09:44:57 Adjust mark advance-width zeroing logic for Myanmar Before, we were zeroing advance width of attached marks for non-Indic scripts, and not doing it for Indic. We have now three different behaviors, which seem to better reflect what Uniscribe is doing: - For Indic, no explicit zeroing happens whatsoever, which is the same as before, - For Myanmar, zero advance width of glyphs marked as marks *in GDEF*, and do that *before* applying GPOS. This seems to be what the new Win8 Myanmar shaper does, - For everything else, zero advance width of glyphs that are from General_Category=Mn Unicode characters, and do so before applying GPOS. This seems to be what Uniscribe does for Latin at least. With these changes, positioning of all tests matches for Myanmar, except for the glitch in Uniscribe not applying 'mark'. See preivous commit.
Behdad Esfahbod 98628cac 2013-02-11T13:36:23 Add Win8-style Myanmar shaper Myanmar failures down from 51% to 0.00204648%! MYANMAR: 1123860 out of 1123883 tests passed. 23 failed (0.00204648%)
Behdad Esfahbod 1df56449 2013-02-11T14:17:54 Minor
Behdad Esfahbod 9621e0ba 2013-02-11T06:58:27 [Indic] Fix bug introduced in 8b217f5ac54aa0dcbba2dd6d59aa89dde33e56c2 Was breaking reph formation logic when the Ra is the only consonant. Devanagari regression fixed. Down to 57 failures again. Ouch.
Behdad Esfahbod ecd454b3 2013-01-08T18:09:46 [Indic] In old-spec shaping, don't move viramas around if seq ends with one For example: u0c9a u0ccd u0c9a u0ccd with Lohit. See: https://bugs.freedesktop.org/show_bug.cgi?id=59118
Behdad Esfahbod 596740db 2012-12-21T19:41:04 [Indic] Insert dottedcircle after a lone Malayalam dot-reph
Behdad Esfahbod 8b217f5a 2012-12-21T15:48:32 [Indic] Reorder Malayalam dot-reph to after base Test sequence is simple: U+0D4E,U+0D15. The doth-reph should be reordered to after the Ka. https://bugzilla.redhat.com/show_bug.cgi?id=799565
Behdad Esfahbod 742c4ee9 2012-12-21T15:35:03 Minor
Behdad Esfahbod b71b0bd9 2012-12-05T19:20:31 [Indic] Add link to Sinhala split matra section of the Sinhala spec
Behdad Esfahbod 0beb66e3 2012-12-05T18:46:04 Fix warnings