Commit Graph

2467 Commits

Author SHA1 Message Date
Behdad Esfahbod
a973b5ce86 [GSUB] Further adjustments to mark-attachment vs ligation interaction
The d1d69ec52e change broke Kannada badly,
since it was ligating consonants, pushing matra out, and then ligating
with the matra.  Adjust for that.  See comments.
2012-07-30 01:47:46 -04:00
Behdad Esfahbod
0aef425e25 [GSUB] Minor 2012-07-30 00:55:15 -04:00
Behdad Esfahbod
d1d69ec52e [GSUB] Don't ligate glyphs attached to different components of ligatures
This concludes the mark-attachment vs ligating interaction fixes (for now).
2012-07-30 00:51:47 -04:00
Behdad Esfahbod
4751dec8be Minor 2012-07-30 00:42:07 -04:00
Behdad Esfahbod
f24bcfbed1 Minor 2012-07-30 00:39:00 -04:00
Behdad Esfahbod
fe20c0f84f [GSUB] Fix mark component stuff when ligatures form ligatures!
See comments.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=437633
2012-07-30 00:00:59 -04:00
Behdad Esfahbod
2ec3ba46a3 [GSUB/GPOS] Minor
Start squeezing more out of lig_id/lig_comp.
2012-07-29 22:16:15 -04:00
Behdad Esfahbod
ef6e9cec33 Fixup bb0e4ba3e9 2012-07-29 21:35:22 -04:00
Behdad Esfahbod
cb3d340631 [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.
2012-07-29 20:37:38 -04:00
Behdad Esfahbod
97a201becf Add Arabic tests for mark ligature component attachments 2012-07-29 20:37:29 -04:00
Behdad Esfahbod
a15b70a81a [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.
2012-07-29 20:09:22 -04:00
Behdad Esfahbod
8a7e70ef65 [Minor] 2012-07-29 19:56:54 -04:00
Behdad Esfahbod
bb0e4ba3e9 Minor 2012-07-29 17:34:14 -04:00
Behdad Esfahbod
a00ad60bc0 [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.
2012-07-28 21:16:08 -04:00
Behdad Esfahbod
5d874d566f [GPOS] Fix mark-to-mark positioning when one of the marks is a ligature
This commit: a3313e5400 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.
2012-07-28 21:05:25 -04:00
Behdad Esfahbod
338fe662b5 [GSUB] Minor 2012-07-28 18:53:01 -04:00
Behdad Esfahbod
e6f7479fe3 [GSUB] Simplify would-apply 2012-07-28 18:34:58 -04:00
Behdad Esfahbod
dadede012e Minor 2012-07-28 18:13:09 -04:00
Behdad Esfahbod
0b99429ead [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.
2012-07-28 17:46:35 -04:00
Behdad Esfahbod
30ec9002d8 Reject lookups with no subTable 2012-07-28 17:25:20 -04:00
Behdad Esfahbod
0981068b75 [GSUB/GPOS] Reject Context/ChainContext lookups with zero input 2012-07-28 17:01:59 -04:00
Behdad Esfahbod
2f87cebe10 Implement shape_plan caching
Should give us some performance boost.
2012-07-27 04:20:39 -04:00
Behdad Esfahbod
e9eb9503e9 Add default_shaper_list to shape_plan 2012-07-27 03:16:22 -04:00
Behdad Esfahbod
3b7c4e2706 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.
2012-07-27 03:12:23 -04:00
Behdad Esfahbod
cfe9882610 Add hb_ot_layout_ensure() and hb_uniscribe_font_ensure() 2012-07-27 03:06:30 -04:00
Behdad Esfahbod
c5b668fb92 Choose one shaper per plan 2012-07-27 02:49:39 -04:00
Behdad Esfahbod
e82061e8db Move ot shaper completely to shape_plan 2012-07-27 02:29:32 -04:00
Behdad Esfahbod
ea278d3895 Partially switch ot shaper to shape_plan 2012-07-27 02:12:28 -04:00
Behdad Esfahbod
b6b7ba1313 Switch old and uniscribe backends to shape_plan 2012-07-27 01:37:18 -04:00
Behdad Esfahbod
c32c096a42 Switch to shape_plan
Not optimized yet.  Eats babies.  And no shaper uses the shape_plan.
2012-07-27 01:13:53 -04:00
Behdad Esfahbod
5b95c148cc Start implementing shape_plan 2012-07-27 01:02:24 -04:00
Behdad Esfahbod
bd26b4d21f Minor 2012-07-26 22:18:24 -04:00
Behdad Esfahbod
027857d041 Start adding a unified shaper access infrastructure
Add global shape_plan.  Unused so far.
2012-07-26 21:14:02 -04:00
Behdad Esfahbod
fa2dfcd560 Fix visibility warnings with MinGW32 2012-07-26 16:06:16 -04:00
Jonathan Kew
ac2085d4b3 [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).
2012-07-26 15:58:45 -04:00
Behdad Esfahbod
441d3bb7de Minor 2012-07-26 12:01:12 -04:00
Behdad Esfahbod
2e7f223054 [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.
2012-07-25 19:30:15 -04:00
Behdad Esfahbod
9550a8c4e8 [hb-old] Fixup not-enough-space handling 2012-07-25 19:22:57 -04:00
Behdad Esfahbod
91e721ea86 [hb-old] Fix clusters
Unlike its "documentation", hb-old's log_clusters are, well, indeed
logical, not visual.  Fixup.  Adapted / copied from hb-uniscribe.
2012-07-25 19:20:34 -04:00
Behdad Esfahbod
a3313e5400 [GPOS] Fix MarkMarkPos applied to results of MultipleSubst
This was broken as a result of 7b84c536c1.
As Khaled reported, MarkMark positioning was broken with glyphs
resulting from a MultipleSubst.  Fixed.  Test with the ALLAH character
in Amiri.
2012-07-25 18:37:51 -04:00
Behdad Esfahbod
35bdab3cf1 Minor 2012-07-25 11:59:52 -04:00
Behdad Esfahbod
8fe4c7405b [hb-old] Add HarfBuzz.old shaper
Choose using shaper name "old".
2012-07-25 11:11:22 -04:00
Behdad Esfahbod
5e1987005e [hb-old] Define Unicode funcs in terms of new HarfBuzz 2012-07-25 11:11:22 -04:00
Behdad Esfahbod
4a31166b28 [hb-old] Shovel out the line-breaking / word-segmentation stuff 2012-07-25 11:11:22 -04:00
Behdad Esfahbod
0bcbe88cf3 [hb-old] Add visibility attributes 2012-07-25 11:11:22 -04:00
Behdad Esfahbod
6a9d43c317 [hb-old] Remove unused header file 2012-07-25 11:11:22 -04:00
Behdad Esfahbod
fb47209c5b [hb-old] Rename hb_buffer_* to HB_Buffer_* 2012-07-25 11:11:22 -04:00
Behdad Esfahbod
1512a73575 [hb-old] Start adding HarfBuzz-old as a new backend 2012-07-25 11:11:16 -04:00
Behdad Esfahbod
478fd0529b Minor 2012-07-24 17:09:01 -04:00
Behdad Esfahbod
8979a7f6f2 [Mongolian] Remove Mongolian Vowel Separator at the end of shaping
Results match Uniscribe now.
2012-07-24 17:03:55 -04:00