Behdad Esfahbod [Fri, 11 May 2012 15:29:40 +0000 (17:29 +0200)]
[GSUB/GPOS/Indic] Apply GSUB/GPOS within syllables only
This does not apply to the context matchings.
This regresses tests right now. And we are not sure whether this is
the right thing to do for GPOS. But we'll figure out.
Behdad Esfahbod [Fri, 11 May 2012 15:18:37 +0000 (17:18 +0200)]
[GSUB/GPOS] Fix wrong buffer access in backward skippy mask matching
Behdad Esfahbod [Fri, 11 May 2012 15:07:08 +0000 (17:07 +0200)]
[Indic] Don't use syllable serial value 0
Behdad Esfahbod [Fri, 11 May 2012 14:54:40 +0000 (16:54 +0200)]
[Indic] Implement Uniscribe Reph+Matra+Halant bug feature
Behdad Esfahbod [Fri, 11 May 2012 14:51:23 +0000 (16:51 +0200)]
[Indic] Add example of different Uniscribe behavior
Behdad Esfahbod [Fri, 11 May 2012 14:43:12 +0000 (16:43 +0200)]
[Indic] Add runtime Uniscribe bug compatibility mode!
Enable by setting envvar:
HB_OT_INDIC_OPTIONS=uniscribe-bug-compatible
Plus, LeftMatra+Halant "feature".
Behdad Esfahbod [Fri, 11 May 2012 14:25:02 +0000 (16:25 +0200)]
[Indic] Add #define UNISCRIBE_BUG_COMPATIBLE 1
Behdad Esfahbod [Fri, 11 May 2012 14:23:43 +0000 (16:23 +0200)]
[Indic] Fix Left Matra + Halant reordering
As can be seen in: U+092B,U+093F,U+094D
Behdad Esfahbod [Fri, 11 May 2012 14:23:38 +0000 (16:23 +0200)]
Minor
Behdad Esfahbod [Fri, 11 May 2012 14:22:46 +0000 (16:22 +0200)]
[Indic] Add test for Left Matra with Halant
Uniscribe doesn't move the Halant, we do. And do a broken job of it now.
Behdad Esfahbod [Fri, 11 May 2012 14:01:44 +0000 (16:01 +0200)]
[GSUB/GPOS] Check all glyph masks when matching input
Behdad Esfahbod [Fri, 11 May 2012 13:34:13 +0000 (15:34 +0200)]
[Indic] Apply Reph mask to all POS_REPH glyphs
Needed for upcoming changes to GSUB/GPOS mask matching.
Behdad Esfahbod [Fri, 11 May 2012 12:39:01 +0000 (14:39 +0200)]
[Indic] Fix state machine to backtrack
Behdad Esfahbod [Fri, 11 May 2012 09:41:39 +0000 (11:41 +0200)]
[Indic] Move syllable tracking from Indic to generic layer
This is to incorporate it into GSUB/GPOS processing.
Behdad Esfahbod [Fri, 11 May 2012 09:17:23 +0000 (11:17 +0200)]
[Indic] Disable conjuncts when a ZWJ happens
Not that the code makes any difference since the presence of ZWJ itself
causes the ligature to fail to match anyway.
Behdad Esfahbod [Fri, 11 May 2012 09:07:40 +0000 (11:07 +0200)]
[Indic] Fix bitops typo!
Another 1000 down!
Behdad Esfahbod [Fri, 11 May 2012 01:45:28 +0000 (03:45 +0200)]
Make APPLY debug output print current index and codepoint
Yay!
Behdad Esfahbod [Fri, 11 May 2012 01:40:58 +0000 (03:40 +0200)]
Minor
Behdad Esfahbod [Fri, 11 May 2012 01:35:08 +0000 (03:35 +0200)]
Some more...
Done. I promise.
Behdad Esfahbod [Fri, 11 May 2012 01:33:36 +0000 (03:33 +0200)]
More beauty in debug output!
Behdad Esfahbod [Fri, 11 May 2012 01:16:57 +0000 (03:16 +0200)]
Finish off debug output beautification
Behdad Esfahbod [Fri, 11 May 2012 00:46:26 +0000 (02:46 +0200)]
Only print class name in debug output if there's one available
Behdad Esfahbod [Fri, 11 May 2012 00:40:42 +0000 (02:40 +0200)]
Only printout class name in tracing, if one is available
Makes debug output much more pleasant.
Behdad Esfahbod [Fri, 11 May 2012 00:34:06 +0000 (02:34 +0200)]
Minor
Behdad Esfahbod [Fri, 11 May 2012 00:33:11 +0000 (02:33 +0200)]
Add return annotation for APPLY
Behdad Esfahbod [Fri, 11 May 2012 00:19:41 +0000 (02:19 +0200)]
/Minor/
Behdad Esfahbod [Thu, 10 May 2012 23:25:34 +0000 (01:25 +0200)]
Annotate SANITIZE return values
More to come, for APPLY, CLOSURE, etc.
Behdad Esfahbod [Thu, 10 May 2012 22:52:16 +0000 (00:52 +0200)]
Minor
Behdad Esfahbod [Thu, 10 May 2012 22:50:38 +0000 (00:50 +0200)]
Code reshuffling
Behdad Esfahbod [Thu, 10 May 2012 22:16:40 +0000 (00:16 +0200)]
Beautify debug output
Behdad Esfahbod [Thu, 10 May 2012 21:24:43 +0000 (23:24 +0200)]
More massaging trace messaging
Behdad Esfahbod [Thu, 10 May 2012 21:09:48 +0000 (23:09 +0200)]
Minor
Behdad Esfahbod [Thu, 10 May 2012 21:06:58 +0000 (23:06 +0200)]
Better trace message support infrastructure
We have varargs in the trace interface now. To be used soon...
Behdad Esfahbod [Thu, 10 May 2012 19:44:50 +0000 (21:44 +0200)]
[Indic] Towards better Reph positioning
Fixed for Deva cases with two full-form consonants. Failures **way** down.
Not much left to go :-).
Behdad Esfahbod [Thu, 10 May 2012 19:20:37 +0000 (21:20 +0200)]
[Indic] Add Ra back for scripts without Reph
We now check that the 'rphp' table exists before forming Reph, so
we don't need to comment out Ra for those scripts.
Behdad Esfahbod [Thu, 10 May 2012 16:38:22 +0000 (18:38 +0200)]
[Indic] Add note re Uniscribe clusters
Behdad Esfahbod [Thu, 10 May 2012 16:34:34 +0000 (18:34 +0200)]
[Indic] Do clustering like Uniscribe does
Hindi Wikipedia failures down to 6639 (0.938381%)!
Behdad Esfahbod [Thu, 10 May 2012 16:31:17 +0000 (18:31 +0200)]
[Indic] Add test for matra group
The spec says: "[{M}+[N]+[H]]", and that's what Uniscribe implements.
We instead do: "{M+[N]+[H]}", which means we allow Nukta and Halant
after all Matras, not just the last one. It makes more sense.
Behdad Esfahbod [Thu, 10 May 2012 13:41:04 +0000 (15:41 +0200)]
[Indic] Reorder Reph to before the Halant after Matras
Uniscribe doesn't do it, but we want to do as it gives the Reph the
opportunity to interact with the Matras. Test with mangal for example.
Sequence: <0930,094d,0915,094b,094d>
In test suite already.
Behdad Esfahbod [Thu, 10 May 2012 13:28:27 +0000 (15:28 +0200)]
[Indic] Don't clear the mask for Reph
This was removing the mandatory global 1 bit in the mask and hence
disabling GPOS for Reph!
Behdad Esfahbod [Thu, 10 May 2012 12:48:25 +0000 (14:48 +0200)]
[Indic] Improve Left Matra repositioning
Move its dependents too.
Behdad Esfahbod [Thu, 10 May 2012 12:43:53 +0000 (14:43 +0200)]
[Indic] Add tricky reordering test cases
In the case of Consonant,LeftMatra,Halant, Uniscribe leaves the Halant
where it is, but we want to move it with the Matra as that makes more
logical sense.
Behdad Esfahbod [Thu, 10 May 2012 11:45:52 +0000 (13:45 +0200)]
[Indic] Do Reph repositioning in final reordering like the spec says
This introduced a failure, which we tracked down to a test case like this:
U+092E,U+094B,U+094D,U+0930
The final character is a Ra that should be put in a syllable of it's
own. And we do. But it will interact with the Halant before it. So
now we finally are convinced that we have to limit features to syllable
boundaries. That's coming after lunch!
Behdad Esfahbod [Thu, 10 May 2012 11:09:08 +0000 (13:09 +0200)]
Minor
Behdad Esfahbod [Thu, 10 May 2012 10:53:53 +0000 (12:53 +0200)]
[Indic] Reorder left matras to be closer to base
Behdad Esfahbod [Thu, 10 May 2012 10:20:21 +0000 (12:20 +0200)]
[Indic] Treat the standalone cluster case reusing the consonant logic
Behdad Esfahbod [Thu, 10 May 2012 10:17:16 +0000 (12:17 +0200)]
[Indic] Minor
Behdad Esfahbod [Thu, 10 May 2012 10:07:33 +0000 (12:07 +0200)]
[Indic] Handle Vowel syllables
Reusing the consonant logic!
Behdad Esfahbod [Thu, 10 May 2012 09:41:51 +0000 (11:41 +0200)]
[Indic] Simplify Reph logic
Behdad Esfahbod [Thu, 10 May 2012 09:37:42 +0000 (11:37 +0200)]
[Indic] Don't form Reph is Ra is the only consonant in the syllable
Behdad Esfahbod [Thu, 10 May 2012 09:32:52 +0000 (11:32 +0200)]
[Indic] Increase max syllable length
20 was way too low, one could hit a syllable with 7ish consonants with it.
Behdad Esfahbod [Thu, 10 May 2012 09:31:20 +0000 (11:31 +0200)]
[Indic] Adjust base after sorting
Behdad Esfahbod [Thu, 10 May 2012 08:51:38 +0000 (10:51 +0200)]
[Indic] Don't return for long syllables. Just not sort.
Behdad Esfahbod [Wed, 9 May 2012 17:10:07 +0000 (19:10 +0200)]
Fix Uniscribe clusters with multiple items
Behdad Esfahbod [Wed, 9 May 2012 16:57:37 +0000 (18:57 +0200)]
[Indic] Don't give up syllable parsing upon junk
Behdad Esfahbod [Wed, 9 May 2012 15:56:03 +0000 (17:56 +0200)]
[Indic] Towards multi-cluster syllables and final reordering
Behdad Esfahbod [Wed, 9 May 2012 15:53:13 +0000 (17:53 +0200)]
Combine lig_id and lig_comp into one byte, to free up one for Indic
Behdad Esfahbod [Wed, 9 May 2012 15:40:00 +0000 (17:40 +0200)]
Minor
Behdad Esfahbod [Wed, 9 May 2012 15:24:39 +0000 (17:24 +0200)]
[Indic] Make room for more reordering positions
Behdad Esfahbod [Wed, 9 May 2012 13:56:35 +0000 (15:56 +0200)]
[Indic] Improve matra vs consonant ordering
Another 1.5% down.
Behdad Esfahbod [Wed, 9 May 2012 13:41:51 +0000 (15:41 +0200)]
[Indic] Categorize Anudatta
Behdad Esfahbod [Wed, 9 May 2012 13:27:56 +0000 (15:27 +0200)]
[Indic] Add joiner test cases for Devanagari
Behdad Esfahbod [Wed, 9 May 2012 13:21:13 +0000 (15:21 +0200)]
[Indic] Make sure Reph jumps over all matras to the right
Another 12 thousand failures gone! (78 to go)
Behdad Esfahbod [Wed, 9 May 2012 13:04:58 +0000 (15:04 +0200)]
[Indic] Keep Vedic signs at the right too
Behdad Esfahbod [Wed, 9 May 2012 13:04:13 +0000 (15:04 +0200)]
Replace zerowidth invisible chars with a zero-advance space glyph
Like Uniscribe does.
Behdad Esfahbod [Wed, 9 May 2012 11:23:27 +0000 (13:23 +0200)]
[indic] Keep the syllable modifier marks to the right
Shaping failures on Hindi Wikipedia go down from 25% to 14%!
Behdad Esfahbod [Wed, 9 May 2012 10:37:27 +0000 (12:37 +0200)]
Minor
Behdad Esfahbod [Wed, 9 May 2012 10:03:09 +0000 (12:03 +0200)]
Minor
Behdad Esfahbod [Wed, 9 May 2012 09:43:43 +0000 (11:43 +0200)]
[indic] Better Reph matching
Behdad Esfahbod [Wed, 9 May 2012 09:38:31 +0000 (11:38 +0200)]
Minor
Behdad Esfahbod [Wed, 9 May 2012 09:07:18 +0000 (11:07 +0200)]
[indic] Apply Indic features in order
Behdad Esfahbod [Wed, 9 May 2012 09:06:47 +0000 (11:06 +0200)]
[indic] Apply rakaar forms
Fixes 10% of the failures against all of Hindi Wikipedia!
Behdad Esfahbod [Wed, 9 May 2012 07:54:54 +0000 (09:54 +0200)]
Add hb-diff-ngrams
Behdad Esfahbod [Wed, 9 May 2012 06:57:29 +0000 (08:57 +0200)]
Add N-gram generator
Behdad Esfahbod [Wed, 9 May 2012 06:16:15 +0000 (08:16 +0200)]
Use groupby()
Behdad Esfahbod [Wed, 9 May 2012 05:45:17 +0000 (07:45 +0200)]
Add hb-diff-stat
Behdad Esfahbod [Wed, 9 May 2012 05:30:07 +0000 (07:30 +0200)]
Make hb-diff-filter-failtures retain all test info for failed tests
Behdad Esfahbod [Tue, 8 May 2012 21:41:41 +0000 (23:41 +0200)]
Add hb-diff-colorize
Accepts --format=html now.
Behdad Esfahbod [Tue, 8 May 2012 20:44:21 +0000 (22:44 +0200)]
Cleanup diff
Doesn't do --color anymore. That will go into a new hb-diff-colorize
tool.
Behdad Esfahbod [Tue, 8 May 2012 17:38:49 +0000 (19:38 +0200)]
Make hb-diff faster
Behdad Esfahbod [Tue, 8 May 2012 16:55:29 +0000 (18:55 +0200)]
More tests
Behdad Esfahbod [Sat, 5 May 2012 20:38:20 +0000 (22:38 +0200)]
Fix warning and build issues
As reported by Jonathan Kew on the list.
Behdad Esfahbod [Wed, 25 Apr 2012 04:14:46 +0000 (00:14 -0400)]
Minor
Behdad Esfahbod [Tue, 24 Apr 2012 20:56:37 +0000 (16:56 -0400)]
Add hb_ot_shape_glyphs_closure()
Experimental API for now.
Behdad Esfahbod [Tue, 24 Apr 2012 20:02:12 +0000 (16:02 -0400)]
Minor
Behdad Esfahbod [Tue, 24 Apr 2012 20:01:30 +0000 (16:01 -0400)]
Minor
Behdad Esfahbod [Tue, 24 Apr 2012 20:00:50 +0000 (16:00 -0400)]
Add test caes for a minority language using Bengali
U+0985 BENGALI LETTER A followed by U+09D7 BENGALI AU LENGTH MARK.
According to Bobby de Vos on the mailing list, this results in a dotted
circle with most shaping engines, but is a legitimate sequence in this
minority language.
We reached the consensus on the list to NOT implement dotted-circle
in HarfBuzz.
Behdad Esfahbod [Tue, 24 Apr 2012 18:21:15 +0000 (14:21 -0400)]
Add a few more set operations
TODO: Tests for hb_set_t.
Behdad Esfahbod [Tue, 24 Apr 2012 03:03:12 +0000 (23:03 -0400)]
Make closure() return void
Behdad Esfahbod [Tue, 24 Apr 2012 02:41:09 +0000 (22:41 -0400)]
Add hb_set_t
Behdad Esfahbod [Tue, 24 Apr 2012 02:26:13 +0000 (22:26 -0400)]
Update copyright headers
Behdad Esfahbod [Tue, 24 Apr 2012 02:23:17 +0000 (22:23 -0400)]
Rename hb_glyph_map_t to hb_set_t
Behdad Esfahbod [Tue, 24 Apr 2012 02:20:14 +0000 (22:20 -0400)]
Improve clustering
Behdad Esfahbod [Tue, 24 Apr 2012 02:18:54 +0000 (22:18 -0400)]
Minor
Behdad Esfahbod [Mon, 23 Apr 2012 21:21:14 +0000 (17:21 -0400)]
Add map->substitute_closure()
Behdad Esfahbod [Mon, 23 Apr 2012 20:54:58 +0000 (16:54 -0400)]
Implement closure() for Context and ChainContext lookups
Behdad Esfahbod [Mon, 23 Apr 2012 19:28:35 +0000 (15:28 -0400)]
Flesh out closure() for GSUB
The GSUBGPOS part still missing.
Behdad Esfahbod [Mon, 23 Apr 2012 18:21:33 +0000 (14:21 -0400)]
Fix Coverage iters
Behdad Esfahbod [Mon, 23 Apr 2012 17:20:52 +0000 (13:20 -0400)]
Minor
Behdad Esfahbod [Mon, 23 Apr 2012 17:17:09 +0000 (13:17 -0400)]
Minor refactoring