Behdad Esfahbod [Thu, 2 Aug 2012 14:07:58 +0000 (10:07 -0400)]
[OT] Pipe shape_plan down to pause_callbacks
Behdad Esfahbod [Thu, 2 Aug 2012 13:44:18 +0000 (09:44 -0400)]
More massaging
Behdad Esfahbod [Thu, 2 Aug 2012 13:38:28 +0000 (09:38 -0400)]
[OT] Port complex_shaper to planner/plan
Behdad Esfahbod [Thu, 2 Aug 2012 13:24:35 +0000 (09:24 -0400)]
[OT] Minor refactoring
Behdad Esfahbod [Thu, 2 Aug 2012 12:42:11 +0000 (08:42 -0400)]
[Indic] Move consonant-position-setting into initial_reordering()
Behdad Esfahbod [Thu, 2 Aug 2012 12:36:40 +0000 (08:36 -0400)]
[GSUB] Wire the font, not just the face, down to substitute()
We need the font for glyph lookup during GSUB pauses in Indic shaper.
Could perhaps be avoided, but at this point, we don't mean to support
separate substitute()/position() entry points (anymore), so there is
no point in not providing the font to GSUB.
Behdad Esfahbod [Thu, 2 Aug 2012 12:11:14 +0000 (08:11 -0400)]
[OT] Hide some API
It was impossible to meaningfully use them from the outside these days.
Behdad Esfahbod [Thu, 2 Aug 2012 12:08:04 +0000 (08:08 -0400)]
Minor
Behdad Esfahbod [Thu, 2 Aug 2012 11:53:18 +0000 (07:53 -0400)]
[Indic] More refactoring of consonant position peeking in the font
To be moved to initial_reordering next...
Behdad Esfahbod [Thu, 2 Aug 2012 11:37:46 +0000 (07:37 -0400)]
[Indic] Refactor
Move all the logic that needs to eventually move into the indic table
into hb-ot-shape-complex-indic-private.hh.
Behdad Esfahbod [Thu, 2 Aug 2012 11:13:55 +0000 (07:13 -0400)]
[Indic] Rename
Behdad Esfahbod [Thu, 2 Aug 2012 09:27:46 +0000 (05:27 -0400)]
[Indic] Streamline feature would_apply()
Comes with some 10% speedup for Devanagari even!
Behdad Esfahbod [Thu, 2 Aug 2012 09:01:11 +0000 (05:01 -0400)]
[Indic] Minor
Behdad Esfahbod [Thu, 2 Aug 2012 08:00:31 +0000 (04:00 -0400)]
[GSUB/GPOS] Check array size before accessing digests
Behdad Esfahbod [Thu, 2 Aug 2012 07:51:51 +0000 (03:51 -0400)]
Use Coverage digests in would_apply
Behdad Esfahbod [Thu, 2 Aug 2012 07:45:53 +0000 (03:45 -0400)]
Minor
Behdad Esfahbod [Thu, 2 Aug 2012 02:17:48 +0000 (22:17 -0400)]
Use wider set digests on 64-bit archs
Behdad Esfahbod [Thu, 2 Aug 2012 01:56:35 +0000 (21:56 -0400)]
[GSUB/GPOS] Remove unused get_coverage() methods
Behdad Esfahbod [Thu, 2 Aug 2012 01:46:36 +0000 (21:46 -0400)]
[GSUB/GPOS] Use Coverage digests as gatekeeper
Gives me a good 10% speedup for the Devanagari test case. Less so
for less lookup-intensive tests.
For the Devanagari test case, the false positive rate of the GSUB digest
is 4%.
Behdad Esfahbod [Thu, 2 Aug 2012 01:18:54 +0000 (21:18 -0400)]
[GSUB/GPOS] Add add_coverage()
Behdad Esfahbod [Thu, 2 Aug 2012 01:06:27 +0000 (21:06 -0400)]
Add hb_set_digest_t
Implement two set digests, and one that combines the two.
Behdad Esfahbod [Thu, 2 Aug 2012 01:05:57 +0000 (21:05 -0400)]
[OT] Templatize Coverage::add_coverage()
Behdad Esfahbod [Wed, 1 Aug 2012 23:03:46 +0000 (19:03 -0400)]
Inline font getters
Behdad Esfahbod [Wed, 1 Aug 2012 22:07:42 +0000 (18:07 -0400)]
Use a lookup table for modified_combining_class
Behdad Esfahbod [Wed, 1 Aug 2012 21:13:10 +0000 (17:13 -0400)]
Inline Unicode callbacks internally
Behdad Esfahbod [Wed, 1 Aug 2012 21:01:59 +0000 (17:01 -0400)]
Move unicode accessors around
Behdad Esfahbod [Wed, 1 Aug 2012 20:23:44 +0000 (16:23 -0400)]
Add hb_unicode_combining_class_t
Behdad Esfahbod [Wed, 1 Aug 2012 17:32:39 +0000 (13:32 -0400)]
Add commentary on the compatibility decomposition in the normalizer
Behdad Esfahbod [Wed, 1 Aug 2012 04:21:09 +0000 (00:21 -0400)]
[hb-old] Adjust mark positioning parameters
Fallback mark positioning works now... With hb-ft and hb-view /
hb-shape at least.
Behdad Esfahbod [Wed, 1 Aug 2012 04:03:41 +0000 (00:03 -0400)]
[old] Implement fontMetrics
Behdad Esfahbod [Wed, 1 Aug 2012 03:41:06 +0000 (23:41 -0400)]
[GPOS] Adjust mark advance-width zeroing logic
If there is no GPOS, zero mark advances.
If there *is* GPOS and the shaper requests so, zero mark advances for
attached marks.
Fixes regression with Tibetan, where the font has GPOS, and marks a
glyph as mark where it shouldn't get zero advance.
Behdad Esfahbod [Wed, 1 Aug 2012 03:10:11 +0000 (23:10 -0400)]
Remove some TODO items
Behdad Esfahbod [Wed, 1 Aug 2012 03:08:25 +0000 (23:08 -0400)]
[OT] Zero mark advances if the shaper desires so
Enabled for all shapers except for Indic.
Behdad Esfahbod [Wed, 1 Aug 2012 02:48:38 +0000 (22:48 -0400)]
[OT] Synthesize glyph classes
Behdad Esfahbod [Wed, 1 Aug 2012 02:43:58 +0000 (22:43 -0400)]
[GSUB] Minor
Behdad Esfahbod [Wed, 1 Aug 2012 02:43:32 +0000 (22:43 -0400)]
[hb-old] Implement getGlyphMetrics()
Still working on it.
Behdad Esfahbod [Wed, 1 Aug 2012 01:36:16 +0000 (21:36 -0400)]
Implement Unicode compatibility decompositions
Based on patch from Philip Withnall.
https://bugs.freedesktop.org/show_bug.cgi?id=41095
Behdad Esfahbod [Wed, 1 Aug 2012 01:10:16 +0000 (21:10 -0400)]
Remove unused function
Behdad Esfahbod [Tue, 31 Jul 2012 18:51:36 +0000 (14:51 -0400)]
[buffer] Minor
Behdad Esfahbod [Tue, 31 Jul 2012 01:08:51 +0000 (21:08 -0400)]
[OT] Streamline complex shaper enumeration
Add a shaper class struct.
Behdad Esfahbod [Mon, 30 Jul 2012 23:54:50 +0000 (19:54 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 23:47:53 +0000 (19:47 -0400)]
More refactoring glyph class access
Behdad Esfahbod [Mon, 30 Jul 2012 23:37:44 +0000 (19:37 -0400)]
[OT] Don't crash if no GDEF available
Behdad Esfahbod [Mon, 30 Jul 2012 23:31:17 +0000 (19:31 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 23:30:01 +0000 (19:30 -0400)]
[GSUB/GPOS] Move glyph props matching around
Behdad Esfahbod [Mon, 30 Jul 2012 22:46:41 +0000 (18:46 -0400)]
[GSUB] Don't erase glyph classes if GDEF does not have glyph classes
Behdad Esfahbod [Mon, 30 Jul 2012 22:40:27 +0000 (18:40 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 22:36:42 +0000 (18:36 -0400)]
[GSUB] Minor
Behdad Esfahbod [Mon, 30 Jul 2012 21:54:38 +0000 (17:54 -0400)]
[Uniscribe] Clean up a bit
Behdad Esfahbod [Mon, 30 Jul 2012 21:48:04 +0000 (17:48 -0400)]
[CoreText] Port to shape_plan infrastructure
Behdad Esfahbod [Mon, 30 Jul 2012 21:22:17 +0000 (17:22 -0400)]
Fix build on Mac
Behdad Esfahbod [Mon, 30 Jul 2012 18:53:41 +0000 (14:53 -0400)]
Unbreak Hangul jamo composition
When we removed the separate Hangul shaper, the specific normalization
preference of Hangul was lost. Fix that. Also, the Thai shaper was
copied from Hangul, so had the fully-composed normalization behavior,
which was unnecessary. So, fix that too.
Behdad Esfahbod [Mon, 30 Jul 2012 17:54:46 +0000 (13:54 -0400)]
[Indic] Recategorize Telugu length marks
Fixes 8 more Telugu tests. Failures at 15 (0.
00154548%).
Behdad Esfahbod [Mon, 30 Jul 2012 16:40:18 +0000 (12:40 -0400)]
Add Hebrew test
Behdad Esfahbod [Mon, 30 Jul 2012 14:50:57 +0000 (10:50 -0400)]
[hb-old] Fix misc leaks
Backport (forward-port?!) from upstream:
commit
3ab7b37bdebf0f8773493a1fee910b151c4de30f
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Mon Jul 30 10:50:22 2012 -0400
Fix misc leaks
https://bugs.freedesktop.org/show_bug.cgi?id=31992
https://bugs.freedesktop.org/show_bug.cgi?id=31993
https://bugs.freedesktop.org/show_bug.cgi?id=31994
https://bugs.freedesktop.org/show_bug.cgi?id=31995
Behdad Esfahbod [Mon, 30 Jul 2012 14:06:42 +0000 (10:06 -0400)]
Don't lock user_data set during destruction if empty
Behdad Esfahbod [Mon, 30 Jul 2012 13:53:06 +0000 (09:53 -0400)]
Fix leak
Behdad Esfahbod [Mon, 30 Jul 2012 06:38:39 +0000 (02:38 -0400)]
[OT] Gain back some lost speed
Behdad Esfahbod [Mon, 30 Jul 2012 06:36:46 +0000 (02:36 -0400)]
[OT] Remove hb_ot_layout_ensure()
I didn't like it from the beginning.
Behdad Esfahbod [Mon, 30 Jul 2012 06:35:07 +0000 (02:35 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 05:46:34 +0000 (01:46 -0400)]
[GSUB] Further adjustments to mark-attachment vs ligation interaction
The
d1d69ec52e75a78575b620a1c456d528b6078170 change broke Kannada badly,
since it was ligating consonants, pushing matra out, and then ligating
with the matra. Adjust for that. See comments.
Behdad Esfahbod [Mon, 30 Jul 2012 04:55:15 +0000 (00:55 -0400)]
[GSUB] Minor
Behdad Esfahbod [Mon, 30 Jul 2012 04:51:47 +0000 (00:51 -0400)]
[GSUB] Don't ligate glyphs attached to different components of ligatures
This concludes the mark-attachment vs ligating interaction fixes (for now).
Behdad Esfahbod [Mon, 30 Jul 2012 04:42:07 +0000 (00:42 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 04:39:00 +0000 (00:39 -0400)]
Minor
Behdad Esfahbod [Mon, 30 Jul 2012 04:00:59 +0000 (00:00 -0400)]
[GSUB] Fix mark component stuff when ligatures form ligatures!
See comments.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=437633
Behdad Esfahbod [Mon, 30 Jul 2012 02:02:24 +0000 (22:02 -0400)]
[GSUB/GPOS] Minor
Start squeezing more out of lig_id/lig_comp.
Behdad Esfahbod [Mon, 30 Jul 2012 01:35:22 +0000 (21:35 -0400)]
Behdad Esfahbod [Mon, 30 Jul 2012 00:37:38 +0000 (20:37 -0400)]
[GSUB] Don't set new lig_id on mark ligatures
If two marks form a ligature, retain their previous lig_id, such that
the mark ligature can attach to ligature components...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676343
In fact, I noticed that we should not let ligatures form between glyphs
coming from different components of a previous ligature. For example,
if the sequence is: LAM,SHADDA,LAM,FATHA,HEH, the LAM,LAM,HEH form a
ligature, putting SHADDA and FATHA next to eachother. However, it would
be wrong to ligate them. Uniscribe has this bug also.
Behdad Esfahbod [Mon, 30 Jul 2012 00:31:36 +0000 (20:31 -0400)]
Add Arabic tests for mark ligature component attachments
Behdad Esfahbod [Mon, 30 Jul 2012 00:09:22 +0000 (20:09 -0400)]
[hb-old] Fix cluster formation in RTL
Unlike Uniscribe, hb-old returns glyphs in logical order, so the logic
does not need to duplicated for RTL.
Behdad Esfahbod [Sun, 29 Jul 2012 23:56:54 +0000 (19:56 -0400)]
[Minor]
Behdad Esfahbod [Sun, 29 Jul 2012 21:34:14 +0000 (17:34 -0400)]
Minor
Behdad Esfahbod [Sun, 29 Jul 2012 01:16:08 +0000 (21:16 -0400)]
[Uniscribe] Remove hb_uniscribe_font_ensure()
Wasn't a huge fan of putting the burden on the user. Just remove it and
do what we've got to do transparently.
Behdad Esfahbod [Sun, 29 Jul 2012 01:05:25 +0000 (21:05 -0400)]
[GPOS] Fix mark-to-mark positioning when one of the marks is a ligature
This commit:
a3313e54008167e415b72c780ca7b9cda958d07e broke MarkMarkPos
when one of the marks itself is a ligature. That regressed 26 Tibetan
tests (up from zero!). Fix that. Tibetan back to zero.
Behdad Esfahbod [Sat, 28 Jul 2012 22:53:01 +0000 (18:53 -0400)]
[GSUB] Minor
Behdad Esfahbod [Sat, 28 Jul 2012 22:34:58 +0000 (18:34 -0400)]
[GSUB] Simplify would-apply
Behdad Esfahbod [Sat, 28 Jul 2012 22:03:20 +0000 (18:03 -0400)]
Minor
Behdad Esfahbod [Sat, 28 Jul 2012 21:31:01 +0000 (17:31 -0400)]
[GSUB/GPOS] Add get_coverage() and use it to speed up main loop
And use it to speed up the hotspot by checking coverage directly in
the main loop, not 10 functions deep in.
Gives me a solid 20% boost with Indic test suite. Less so for less
lookup-intensive scenarios.
Remove the "fast_path" hack from before.
Behdad Esfahbod [Sat, 28 Jul 2012 21:25:20 +0000 (17:25 -0400)]
Reject lookups with no subTable
Behdad Esfahbod [Sat, 28 Jul 2012 21:01:59 +0000 (17:01 -0400)]
[GSUB/GPOS] Reject Context/ChainContext lookups with zero input
Behdad Esfahbod [Fri, 27 Jul 2012 08:02:38 +0000 (04:02 -0400)]
Implement shape_plan caching
Should give us some performance boost.
Behdad Esfahbod [Fri, 27 Jul 2012 07:16:22 +0000 (03:16 -0400)]
Add default_shaper_list to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 07:12:23 +0000 (03:12 -0400)]
Don't fail choosing shaper on planning failure
Shapers have a chance to reject a font in face shaper_data creation.
No need to allow failing during planning.
Behdad Esfahbod [Fri, 27 Jul 2012 07:06:30 +0000 (03:06 -0400)]
Add hb_ot_layout_ensure() and hb_uniscribe_font_ensure()
Behdad Esfahbod [Fri, 27 Jul 2012 06:49:39 +0000 (02:49 -0400)]
Choose one shaper per plan
Behdad Esfahbod [Fri, 27 Jul 2012 06:29:32 +0000 (02:29 -0400)]
Move ot shaper completely to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 06:12:28 +0000 (02:12 -0400)]
Partially switch ot shaper to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 05:26:11 +0000 (01:26 -0400)]
Switch old and uniscribe backends to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 05:13:53 +0000 (01:13 -0400)]
Switch to shape_plan
Not optimized yet. Eats babies. And no shaper uses the shape_plan.
Behdad Esfahbod [Fri, 27 Jul 2012 03:46:53 +0000 (23:46 -0400)]
Start implementing shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 02:05:39 +0000 (22:05 -0400)]
Minor
Behdad Esfahbod [Thu, 26 Jul 2012 21:34:25 +0000 (17:34 -0400)]
Start adding a unified shaper access infrastructure
Add global shape_plan. Unused so far.
Behdad Esfahbod [Thu, 26 Jul 2012 20:06:16 +0000 (16:06 -0400)]
Fix visibility warnings with MinGW32
Jonathan Kew [Thu, 26 Jul 2012 19:58:45 +0000 (15:58 -0400)]
[CoreText] Ensure cluster indices in output buffer are non-decreasing.
Does not provide Uniscribe-compatible results, but should at least avoid
breaking hb-view due to out-of-order cluster values.
For RTL runs, ensure cluster values are non-increasing (instead of
non-decreasing).
Behdad Esfahbod [Thu, 26 Jul 2012 16:01:12 +0000 (12:01 -0400)]
Minor
Behdad Esfahbod [Wed, 25 Jul 2012 23:30:15 +0000 (19:30 -0400)]
[hb-old] Fix Arabic cursive positioning
Backporting from upstream:
commit
b847f24ce855d24f6822bcd9c0006905e81b94d8
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Wed Jul 25 19:29:16 2012 -0400
[arabic] Fix Arabic cursive positioning
This was clearly broken in testing. Who knows... Fixes for me.
Test with a Nastaleeq font, or with Arabic Typesetting.
Backporting from Chromium.
Behdad Esfahbod [Wed, 25 Jul 2012 23:22:57 +0000 (19:22 -0400)]
[hb-old] Fixup not-enough-space handling
Behdad Esfahbod [Wed, 25 Jul 2012 23:20:34 +0000 (19:20 -0400)]
[hb-old] Fix clusters
Unlike its "documentation", hb-old's log_clusters are, well, indeed
logical, not visual. Fixup. Adapted / copied from hb-uniscribe.
Behdad Esfahbod [Wed, 25 Jul 2012 22:37:51 +0000 (18:37 -0400)]
[GPOS] Fix MarkMarkPos applied to results of MultipleSubst
This was broken as a result of
7b84c536c10ab90ed96a033d88e9ad232d46c5b8.
As Khaled reported, MarkMark positioning was broken with glyphs
resulting from a MultipleSubst. Fixed. Test with the ALLAH character
in Amiri.