Commit Graph

2982 Commits

Author SHA1 Message Date
Behdad Esfahbod
f22b7e7778 [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.
2013-02-13 07:32:46 -05:00
Behdad Esfahbod
bc11de144c [SEA] Don't zero any mark advances
Keep the logic simple, easier to explain to font developers.
2013-02-13 05:59:06 -05:00
Behdad Esfahbod
0291a65286 Further adjust mark advance zeroing
This is a followup to 568000274c.
Looks like in the Latin shaper, Uniscribe zeroes all Unicode NSM
advances *after* GPOS, not before.  Match that.

Can be tested using DejaVu Sans Mono, since that font has GPOS
rules to zero the mark advances on its own.
2013-02-13 05:57:24 -05:00
Behdad Esfahbod
85c51ec2e1 [Indic] Fix Eyelash Ra with old Devanagari spec 2013-02-12 18:17:39 -05:00
Behdad Esfahbod
cc5f24cde0 [tests] Add tests for Devanagary Eyelash Ra
Currently broken with Sanskrit 2003 font.
2013-02-12 18:17:12 -05:00
Behdad Esfahbod
63e48bc33b [Indic] Apply 'blwf' before 'half'
This reverts 167b625d98.  It didn't
matter before, but that's going to change with next commit.
2013-02-12 18:02:07 -05:00
Behdad Esfahbod
70d6565711 [Indic] Apply 'vatu' before 'cjct'
This essentially reverts 1d6846db9e,
but that commit is from way back when.  We should be better
following the spec order now again.
2013-02-12 18:02:07 -05:00
Behdad Esfahbod
64bb2ae857 Didn't mean to push this out
Ouch!
2013-02-12 16:29:25 -05:00
Behdad Esfahbod
f9b660534c [Myanmar] Use master Indic table for syllable data 2013-02-12 16:13:56 -05:00
Behdad Esfahbod
f60793e854 [tests] Add Cham sample 2013-02-12 15:45:59 -05:00
Behdad Esfahbod
e2aab4b5db Improve checks for setmode()
As reported by Jonathan, OS X has setmode() that is something other
than what setmode() is on Win32.  So, limit invocation to Windows
platforms only.
2013-02-12 15:35:32 -05:00
Behdad Esfahbod
a6c1e040e5 Improve check for Windows platforms
Instead of checking for compiler, check for platform.
2013-02-12 15:31:58 -05:00
Behdad Esfahbod
9e1f80ab3e [SEA] Treat Consonant_Final like Consonant_Medial 2013-02-12 15:28:21 -05:00
Behdad Esfahbod
bab02d339f Rename HB_OT_INDIC_OPTIONS env var to HB_OPTIONS
The Myanmar shaper now respects the uniscribe-bug-compatibility
option too.
2013-02-12 15:26:45 -05:00
Behdad Esfahbod
3a83d33ec0 Add South-East Asian shaper
Handles Tai Tham, Cham, and New Tai Lue for now.
2013-02-12 12:14:10 -05:00
Behdad Esfahbod
fb96021206 Minor test reshufflings 2013-02-12 10:33:58 -05:00
Behdad Esfahbod
5676d5d527 [Indic] Make sure New Tai Lue works! 2013-02-12 10:31:14 -05:00
Behdad Esfahbod
568000274c 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.
2013-02-12 09:44:57 -05:00
Behdad Esfahbod
99749ca8e0 [Myanmar] Add note re Uniscribe NOT applying 'mark' 2013-02-12 09:44:35 -05:00
Behdad Esfahbod
b842780138 Minor 2013-02-11 17:02:17 -05:00
Behdad Esfahbod
419c933ed1 [Myanmar] Fix handling of Punctuation and Symbol types
Testing with "clusters" now on par with testing without them.  15
failures both.
2013-02-11 16:16:16 -05:00
Behdad Esfahbod
0572c1410a [Myanmar] Fixup handling of joiners and GB characters 2013-02-11 16:16:07 -05:00
Behdad Esfahbod
1c8654ead4 [Myanmar] Prevent reordering between Asat and Dot below
Implemented as a hack for now.  Myanmar failures down from 23 to 15.

MYANMAR: 1123868 out of 1123883 tests passed. 15 failed (0.00133466%)

The remaining 15 cases are all where the syllable is wrong according to
the OpenType spec.  We insert dottedcircle.  Uniscribe fails to do that,
but it also fails to reorder the prebase-reordering medial-Ra.  So it
gets it wrong.
2013-02-11 14:28:59 -05:00
Behdad Esfahbod
bed687f886 Shuffle test data around 2013-02-11 14:24:03 -05:00
Behdad Esfahbod
98628cac9f Add Win8-style Myanmar shaper
Myanmar failures down from 51% to 0.00204648%!

MYANMAR: 1123860 out of 1123883 tests passed. 23 failed (0.00204648%)
2013-02-11 14:20:08 -05:00
Behdad Esfahbod
1df5644958 Minor 2013-02-11 14:18:09 -05:00
Behdad Esfahbod
54f7b4d9ec [OTLayout] Respect lookup-flags skipping over non-mark glyphs
Before, when matching ligatures, we never skipping over base / liga
glyphs even if that was what the LookupFlags asked for.

Fixed now.  We carefully reviewed all instances of this, and tested with
Amiri as well as some Indic scripts, and are confident that this should
NOT break anyone's fonts.  It's also how Uniscribe does it, from what
we can tell.
2013-02-11 13:27:17 -05:00
Behdad Esfahbod
9082efc4aa [OTLayout] s/mark_skipping/skipping/
In aticipation of upcoming changes.
2013-02-11 13:14:56 -05:00
Behdad Esfahbod
9621e0ba29 [Indic] Fix bug introduced in 8b217f5ac5
Was breaking reph formation logic when the Ra is the only consonant.
Devanagari regression fixed.  Down to 57 failures again.  Ouch.
2013-02-11 12:59:36 -05:00
Behdad Esfahbod
6e74c64211 Improve normalization heuristic
Before, for most scripts, we were not trying to recompose two characters
if the second one had ccc=0.  That fails for Myanmar where U+1026
decomposes to U+1025,U+102E, both of which have ccc=0.  However, we do
want to try to recompose those.  We now check whether the second is a
mark, using general category instead.

At the same time, remove optimization that was conflicting with this.

[Let the Ngapi hackfest begin!]
2013-02-11 12:59:00 -05:00
Behdad Esfahbod
614242efb0 Revert "Include config.h.in in tree"
This reverts commit 01013a0f5c.

Conflicts:
	config.h.in

Same argument as previous commit.
2013-02-06 23:45:27 -05:00
Behdad Esfahbod
adff377815 Revert "[Indic] Import ragel-generated Indic machine in git"
This reverts commit fab7a71f11.

Conflicts:
	src/hb-ot-shape-complex-indic-machine.hh

Keeping that generated file in-tree causes problems with processes like
tinderbox  that automatically fetch and build harfbuzz.  It's harder to
bootstrap harfbuzz now (as was previously), but I'm willing to give this
another chance and see how it goes.
2013-02-06 23:43:27 -05:00
Behdad Esfahbod
5898fa94d1 Don't use $(ENV)
As reported by Peter Breitenlohner:

I think this is a very bad idea because ENV is used to specify a startup
file to be read by some/all shells.
2013-02-06 15:29:07 -05:00
Behdad Esfahbod
52d66c26a2 Add color-tests automake option 2013-02-04 23:31:24 -05:00
Behdad Esfahbod
9de5f98f36 Bug 60035 - intermittent make install failure on hb-version.h 2013-02-04 23:28:22 -05:00
Behdad Esfahbod
6c1e8b614c Bug 59637 - check-exported-symbols.sh & check-internal-symbols.sh fail on mips/mipsel 2013-02-04 23:24:16 -05:00
Behdad Esfahbod
bafdf3d983 Merge check-internal-symbols.sh and check-exported-symbols.sh 2013-02-04 23:06:50 -05:00
Behdad Esfahbod
ceeae30f47 Really fix setmode this time
Thanks to Khaled for spotting it.
2013-01-31 19:27:36 -05:00
Behdad Esfahbod
7cba8a673b Fixup previous commit
Now, it looks like this breaks Cygwin again.  Have to figure out what's
going on.
2013-01-31 18:37:10 -05:00
Behdad Esfahbod
bc76449f51 Use setmode() instead of _setmode()
Looks like Cygwin / MSVC declare it that way, and it still works on
MinGW32 cross.
2013-01-31 18:18:05 -05:00
Behdad Esfahbod
e9171af55c Bug 60053 - hb-common.cc:181:6: warning: ‘void free_langs()’ defined but not used 2013-01-29 22:45:00 -05:00
Behdad Esfahbod
09b5393874 0.9.12 2013-01-18 17:10:47 -06:00
Behdad Esfahbod
eb45c0a2fb Minor 2013-01-16 22:07:50 -06:00
Behdad Esfahbod
52c8d1226f Minor 2013-01-14 13:51:46 -06:00
Behdad Esfahbod
f88d3bd7e4 Fix build with Sun compiler 2013-01-14 00:33:58 -06:00
Behdad Esfahbod
08b29c0809 Revert "Minor"
This reverts commit 0a49235701.

Enables code on more compilers.
2013-01-14 00:32:12 -06:00
Behdad Esfahbod
e78463211e Fix linking with non-gcc compilers 2013-01-14 00:27:21 -06:00
Behdad Esfahbod
de649f07f1 Fix residuals from fontconfig changes 2013-01-14 00:26:43 -06:00
Behdad Esfahbod
cf81fb3624 0.9.11 2013-01-10 09:06:34 -06:00
Behdad Esfahbod
2dcb333f52 Add atomic ops for Solaris
Based on fontconfig patch from Raimund Steger.
2013-01-10 01:18:10 -06:00