platform/upstream/libHarfBuzzSharp.git
11 years ago[Indic] Move more stuff to the shape_plan
Behdad Esfahbod [Thu, 2 Aug 2012 16:21:44 +0000 (12:21 -0400)]
[Indic] Move more stuff to the shape_plan

Almost done.  Need to add per-script static tables.

11 years ago[Indic] Move more repeated work into shape_plan
Behdad Esfahbod [Thu, 2 Aug 2012 15:03:39 +0000 (11:03 -0400)]
[Indic] Move more repeated work into shape_plan

11 years ago[OT] Add per-complex-shaper shape_plan data
Behdad Esfahbod [Thu, 2 Aug 2012 14:46:34 +0000 (10:46 -0400)]
[OT] Add per-complex-shaper shape_plan data

Hookup some Indic data to it.  More to come.

11 years ago[OT] Pipe shape_plan down to pause_callbacks
Behdad Esfahbod [Thu, 2 Aug 2012 14:07:58 +0000 (10:07 -0400)]
[OT] Pipe shape_plan down to pause_callbacks

11 years agoMore massaging
Behdad Esfahbod [Thu, 2 Aug 2012 13:44:18 +0000 (09:44 -0400)]
More massaging

11 years ago[OT] Port complex_shaper to planner/plan
Behdad Esfahbod [Thu, 2 Aug 2012 13:38:28 +0000 (09:38 -0400)]
[OT] Port complex_shaper to planner/plan

11 years ago[OT] Minor refactoring
Behdad Esfahbod [Thu, 2 Aug 2012 13:24:35 +0000 (09:24 -0400)]
[OT] Minor refactoring

11 years ago[Indic] Move consonant-position-setting into initial_reordering()
Behdad Esfahbod [Thu, 2 Aug 2012 12:42:11 +0000 (08:42 -0400)]
[Indic] Move consonant-position-setting into initial_reordering()

11 years ago[GSUB] Wire the font, not just the face, down to substitute()
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.

11 years ago[OT] Hide some API
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.

11 years agoMinor
Behdad Esfahbod [Thu, 2 Aug 2012 12:08:04 +0000 (08:08 -0400)]
Minor

11 years ago[Indic] More refactoring of consonant position peeking in the font
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...

11 years ago[Indic] Refactor
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.

11 years ago[Indic] Rename
Behdad Esfahbod [Thu, 2 Aug 2012 11:13:55 +0000 (07:13 -0400)]
[Indic] Rename

11 years ago[Indic] Streamline feature would_apply()
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!

11 years ago[Indic] Minor
Behdad Esfahbod [Thu, 2 Aug 2012 09:01:11 +0000 (05:01 -0400)]
[Indic] Minor

11 years ago[GSUB/GPOS] Check array size before accessing digests
Behdad Esfahbod [Thu, 2 Aug 2012 08:00:31 +0000 (04:00 -0400)]
[GSUB/GPOS] Check array size before accessing digests

11 years agoUse Coverage digests in would_apply
Behdad Esfahbod [Thu, 2 Aug 2012 07:51:51 +0000 (03:51 -0400)]
Use Coverage digests in would_apply

11 years agoMinor
Behdad Esfahbod [Thu, 2 Aug 2012 07:45:53 +0000 (03:45 -0400)]
Minor

11 years agoUse wider set digests on 64-bit archs
Behdad Esfahbod [Thu, 2 Aug 2012 02:17:48 +0000 (22:17 -0400)]
Use wider set digests on 64-bit archs

11 years ago[GSUB/GPOS] Remove unused get_coverage() methods
Behdad Esfahbod [Thu, 2 Aug 2012 01:56:35 +0000 (21:56 -0400)]
[GSUB/GPOS] Remove unused get_coverage() methods

11 years ago[GSUB/GPOS] Use Coverage digests as gatekeeper
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%.

11 years ago[GSUB/GPOS] Add add_coverage()
Behdad Esfahbod [Thu, 2 Aug 2012 01:18:54 +0000 (21:18 -0400)]
[GSUB/GPOS] Add add_coverage()

11 years agoAdd hb_set_digest_t
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.

11 years ago[OT] Templatize Coverage::add_coverage()
Behdad Esfahbod [Thu, 2 Aug 2012 01:05:57 +0000 (21:05 -0400)]
[OT] Templatize Coverage::add_coverage()

11 years agoInline font getters
Behdad Esfahbod [Wed, 1 Aug 2012 23:03:46 +0000 (19:03 -0400)]
Inline font getters

11 years agoUse a lookup table for modified_combining_class
Behdad Esfahbod [Wed, 1 Aug 2012 22:07:42 +0000 (18:07 -0400)]
Use a lookup table for modified_combining_class

11 years agoInline Unicode callbacks internally
Behdad Esfahbod [Wed, 1 Aug 2012 21:13:10 +0000 (17:13 -0400)]
Inline Unicode callbacks internally

11 years agoMove unicode accessors around
Behdad Esfahbod [Wed, 1 Aug 2012 21:01:59 +0000 (17:01 -0400)]
Move unicode accessors around

11 years agoAdd hb_unicode_combining_class_t
Behdad Esfahbod [Wed, 1 Aug 2012 20:23:44 +0000 (16:23 -0400)]
Add hb_unicode_combining_class_t

11 years agoAdd commentary on the compatibility decomposition in the normalizer
Behdad Esfahbod [Wed, 1 Aug 2012 17:32:39 +0000 (13:32 -0400)]
Add commentary on the compatibility decomposition in the normalizer

11 years ago[hb-old] Adjust mark positioning parameters
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.

11 years ago[old] Implement fontMetrics
Behdad Esfahbod [Wed, 1 Aug 2012 04:03:41 +0000 (00:03 -0400)]
[old] Implement fontMetrics

11 years ago[GPOS] Adjust mark advance-width zeroing logic
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.

11 years agoRemove some TODO items
Behdad Esfahbod [Wed, 1 Aug 2012 03:10:11 +0000 (23:10 -0400)]
Remove some TODO items

11 years ago[OT] Zero mark advances if the shaper desires so
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.

11 years ago[OT] Synthesize glyph classes
Behdad Esfahbod [Wed, 1 Aug 2012 02:48:38 +0000 (22:48 -0400)]
[OT] Synthesize glyph classes

11 years ago[GSUB] Minor
Behdad Esfahbod [Wed, 1 Aug 2012 02:43:58 +0000 (22:43 -0400)]
[GSUB] Minor

11 years ago[hb-old] Implement getGlyphMetrics()
Behdad Esfahbod [Wed, 1 Aug 2012 02:43:32 +0000 (22:43 -0400)]
[hb-old] Implement getGlyphMetrics()

Still working on it.

11 years agoImplement Unicode compatibility decompositions
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

11 years agoRemove unused function
Behdad Esfahbod [Wed, 1 Aug 2012 01:10:16 +0000 (21:10 -0400)]
Remove unused function

11 years ago[buffer] Minor
Behdad Esfahbod [Tue, 31 Jul 2012 18:51:36 +0000 (14:51 -0400)]
[buffer] Minor

12 years ago[OT] Streamline complex shaper enumeration
Behdad Esfahbod [Tue, 31 Jul 2012 01:08:51 +0000 (21:08 -0400)]
[OT] Streamline complex shaper enumeration

Add a shaper class struct.

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 23:54:50 +0000 (19:54 -0400)]
Minor

12 years agoMore refactoring glyph class access
Behdad Esfahbod [Mon, 30 Jul 2012 23:47:53 +0000 (19:47 -0400)]
More refactoring glyph class access

12 years ago[OT] Don't crash if no GDEF available
Behdad Esfahbod [Mon, 30 Jul 2012 23:37:44 +0000 (19:37 -0400)]
[OT] Don't crash if no GDEF available

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 23:31:17 +0000 (19:31 -0400)]
Minor

12 years ago[GSUB/GPOS] Move glyph props matching around
Behdad Esfahbod [Mon, 30 Jul 2012 23:30:01 +0000 (19:30 -0400)]
[GSUB/GPOS] Move glyph props matching around

12 years ago[GSUB] Don't erase glyph classes if GDEF does not have glyph classes
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

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 22:40:27 +0000 (18:40 -0400)]
Minor

12 years ago[GSUB] Minor
Behdad Esfahbod [Mon, 30 Jul 2012 22:36:42 +0000 (18:36 -0400)]
[GSUB] Minor

12 years ago[Uniscribe] Clean up a bit
Behdad Esfahbod [Mon, 30 Jul 2012 21:54:38 +0000 (17:54 -0400)]
[Uniscribe] Clean up a bit

12 years ago[CoreText] Port to shape_plan infrastructure
Behdad Esfahbod [Mon, 30 Jul 2012 21:48:04 +0000 (17:48 -0400)]
[CoreText] Port to shape_plan infrastructure

12 years agoFix build on Mac
Behdad Esfahbod [Mon, 30 Jul 2012 21:22:17 +0000 (17:22 -0400)]
Fix build on Mac

12 years agoUnbreak Hangul jamo composition
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.

12 years ago[Indic] Recategorize Telugu length marks
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%).

12 years agoAdd Hebrew test
Behdad Esfahbod [Mon, 30 Jul 2012 16:40:18 +0000 (12:40 -0400)]
Add Hebrew test

12 years ago[hb-old] Fix misc leaks
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

12 years agoDon't lock user_data set during destruction if empty
Behdad Esfahbod [Mon, 30 Jul 2012 14:06:42 +0000 (10:06 -0400)]
Don't lock user_data set during destruction if empty

12 years agoFix leak
Behdad Esfahbod [Mon, 30 Jul 2012 13:53:06 +0000 (09:53 -0400)]
Fix leak

12 years ago[OT] Gain back some lost speed
Behdad Esfahbod [Mon, 30 Jul 2012 06:38:39 +0000 (02:38 -0400)]
[OT] Gain back some lost speed

12 years ago[OT] Remove hb_ot_layout_ensure()
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.

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 06:35:07 +0000 (02:35 -0400)]
Minor

12 years ago[GSUB] Further adjustments to mark-attachment vs ligation interaction
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.

12 years ago[GSUB] Minor
Behdad Esfahbod [Mon, 30 Jul 2012 04:55:15 +0000 (00:55 -0400)]
[GSUB] Minor

12 years ago[GSUB] Don't ligate glyphs attached to different components of ligatures
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).

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 04:42:07 +0000 (00:42 -0400)]
Minor

12 years agoMinor
Behdad Esfahbod [Mon, 30 Jul 2012 04:39:00 +0000 (00:39 -0400)]
Minor

12 years ago[GSUB] Fix mark component stuff when ligatures form ligatures!
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

12 years ago[GSUB/GPOS] Minor
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.

12 years agoFixup bb0e4ba3e9c5a407fc5d73c914e429d24d336380
Behdad Esfahbod [Mon, 30 Jul 2012 01:35:22 +0000 (21:35 -0400)]
Fixup bb0e4ba3e9c5a407fc5d73c914e429d24d336380

12 years ago[GSUB] Don't set new lig_id on mark ligatures
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.

12 years agoAdd Arabic tests for mark ligature component attachments
Behdad Esfahbod [Mon, 30 Jul 2012 00:31:36 +0000 (20:31 -0400)]
Add Arabic tests for mark ligature component attachments

12 years ago[hb-old] Fix cluster formation in RTL
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.

12 years ago[Minor]
Behdad Esfahbod [Sun, 29 Jul 2012 23:56:54 +0000 (19:56 -0400)]
[Minor]

12 years agoMinor
Behdad Esfahbod [Sun, 29 Jul 2012 21:34:14 +0000 (17:34 -0400)]
Minor

12 years ago[Uniscribe] Remove hb_uniscribe_font_ensure()
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.

12 years ago[GPOS] Fix mark-to-mark positioning when one of the marks is a ligature
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.

12 years ago[GSUB] Minor
Behdad Esfahbod [Sat, 28 Jul 2012 22:53:01 +0000 (18:53 -0400)]
[GSUB] Minor

12 years ago[GSUB] Simplify would-apply
Behdad Esfahbod [Sat, 28 Jul 2012 22:34:58 +0000 (18:34 -0400)]
[GSUB] Simplify would-apply

12 years agoMinor
Behdad Esfahbod [Sat, 28 Jul 2012 22:03:20 +0000 (18:03 -0400)]
Minor

12 years ago[GSUB/GPOS] Add get_coverage() and use it to speed up main loop
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.

12 years agoReject lookups with no subTable
Behdad Esfahbod [Sat, 28 Jul 2012 21:25:20 +0000 (17:25 -0400)]
Reject lookups with no subTable

12 years ago[GSUB/GPOS] Reject Context/ChainContext lookups with zero input
Behdad Esfahbod [Sat, 28 Jul 2012 21:01:59 +0000 (17:01 -0400)]
[GSUB/GPOS] Reject Context/ChainContext lookups with zero input

12 years agoImplement shape_plan caching
Behdad Esfahbod [Fri, 27 Jul 2012 08:02:38 +0000 (04:02 -0400)]
Implement shape_plan caching

Should give us some performance boost.

12 years agoAdd default_shaper_list to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 07:16:22 +0000 (03:16 -0400)]
Add default_shaper_list to shape_plan

12 years agoDon't fail choosing shaper on planning failure
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.

12 years agoAdd hb_ot_layout_ensure() and hb_uniscribe_font_ensure()
Behdad Esfahbod [Fri, 27 Jul 2012 07:06:30 +0000 (03:06 -0400)]
Add hb_ot_layout_ensure() and hb_uniscribe_font_ensure()

12 years agoChoose one shaper per plan
Behdad Esfahbod [Fri, 27 Jul 2012 06:49:39 +0000 (02:49 -0400)]
Choose one shaper per plan

12 years agoMove ot shaper completely to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 06:29:32 +0000 (02:29 -0400)]
Move ot shaper completely to shape_plan

12 years agoPartially switch ot shaper to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 06:12:28 +0000 (02:12 -0400)]
Partially switch ot shaper to shape_plan

12 years agoSwitch old and uniscribe backends to shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 05:26:11 +0000 (01:26 -0400)]
Switch old and uniscribe backends to shape_plan

12 years agoSwitch 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.

12 years agoStart implementing shape_plan
Behdad Esfahbod [Fri, 27 Jul 2012 03:46:53 +0000 (23:46 -0400)]
Start implementing shape_plan

12 years agoMinor
Behdad Esfahbod [Fri, 27 Jul 2012 02:05:39 +0000 (22:05 -0400)]
Minor

12 years agoStart adding a unified shaper access infrastructure
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.

12 years agoFix visibility warnings with MinGW32
Behdad Esfahbod [Thu, 26 Jul 2012 20:06:16 +0000 (16:06 -0400)]
Fix visibility warnings with MinGW32

12 years ago[CoreText] Ensure cluster indices in output buffer are non-decreasing.
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).

12 years agoMinor
Behdad Esfahbod [Thu, 26 Jul 2012 16:01:12 +0000 (12:01 -0400)]
Minor

12 years ago[hb-old] Fix Arabic cursive positioning
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.