Behdad Esfahbod
dcb527242b
[Indic] Allow joiners before matras
...
Fixes 1 more Devanagari test!
2012-07-18 15:32:26 -04:00
Behdad Esfahbod
391cc03317
[Indic] Allow halant group in Vowel and placeholder syllables
...
Fixes 2 out of 560 Devanagari failures. AND:
Fixes 1 out of 2 Tamil failures.
2012-07-18 15:12:49 -04:00
Behdad Esfahbod
ca4e3d3eab
[Indic] Streamline halant/joiner in grammar
2012-07-18 15:05:40 -04:00
Behdad Esfahbod
418d00dffd
[Indic] Minor
2012-07-18 14:57:28 -04:00
Behdad Esfahbod
4c3691d2a3
[Indic] Hopefully minor!
...
Refactoring Indic machin. No semantic change.
2012-07-18 14:23:55 -04:00
Behdad Esfahbod
e092c556fb
[Indic] Minor
2012-07-18 14:09:25 -04:00
Behdad Esfahbod
14dbdd9e39
[Indic] Unbreak Tamil
...
Tamil has only about 150 failures now!
2012-07-18 13:13:03 -04:00
Behdad Esfahbod
db8981f1e0
[Indic] Position Khmer Robat
...
It's a visual Repha.
Still not positioning logical Repha as occurs in Malayalam.
Another 200 Khmer failures fixed. 547 to go. That's better than
Devanagari!
2012-07-17 23:42:04 -04:00
Behdad Esfahbod
25bc489498
[Indic] Better categorize Register Shifters and Khmer Various signs
...
Down another 500 or so Khmer failures!
2012-07-17 17:53:03 -04:00
Behdad Esfahbod
39b17837b4
Add hb_buffer_normalize_glyphs() and hb-shape --normalize-glyphs
...
This reorders glyphs within the cluster to a nominal order. This should
have no visible effect on the output, but helps with testing, for
getting the same hb-shape output for visually-equal glyphs for each
cluster.
2012-07-17 17:09:29 -04:00
Behdad Esfahbod
25e302da9a
[Indic] Minor
2012-07-17 14:25:14 -04:00
Behdad Esfahbod
5d32690a34
[Indic] For scripts without Half forms, always choose first consonant as base
...
In such scripts (ie. Khmer), a ZWJ/ZWNJ shouldn't stop the search for
base. So, instead just choose the first consonant as base directly.
Test sequence:
U+1798,200c,U+17C9,U+17D2,U+179B,U+17C1,U+17C7
2012-07-17 14:23:28 -04:00
Behdad Esfahbod
34b5714906
[Indic] Treat Khmer Register Shifters more like Nuktas
...
Except that there may be a ZWNJ before a Register Shifter.
2012-07-17 14:09:32 -04:00
Behdad Esfahbod
11e2a601b1
[Indic] Minor
2012-07-17 14:02:28 -04:00
Behdad Esfahbod
0201e0a464
[Indic] Apply 'cfar' for Khmer
...
Mark stuff after a pre-base reordering Ro 'cfar'. Used in Khmer.
This allows distinguishing the following cases with MS Khmer fonts:
U+1784,U+17D2,U+179A,U+17D2,U+1782
U+1784,U+17D2,U+1782,U+17D2,U+179A
2012-07-17 13:56:24 -04:00
Behdad Esfahbod
55f70ebfb9
[Indic] Position final subjoined consonants (and vowels) after matras
...
In Khmer, a final subjoined consonant or independent vowel can occur
after matras. This final subjoined thing should NOT be reordered to
before the matra even though it's subjoined.
Fixes another 1k of the Khmer failures. Not much left really.
2012-07-17 12:50:13 -04:00
Behdad Esfahbod
c50ed71e9a
[Indic] Recategorize Khmer coeng sign as a separate category OT_Coeng
...
Amend the syllable structure to allow a final subscripted consonant
(Coeng+C) and a final subscripted independent vowel (Coeng+V).
Fixes another 2k of Khmer failures.
2012-07-17 11:54:28 -04:00
Behdad Esfahbod
deb521dee4
[Indic] Add a separate Coeng class
...
No characters recategorized yet. No semantic change.
2012-07-17 11:37:32 -04:00
Behdad Esfahbod
74ccc6a132
[Indic] Move Halant with after-base consonants
...
Normally, we attach the Halant to the previous character and move it
with it. For after-base consonants however, the Halant "belongs" to the
consonant after, so attach it so.
This fixes Bengali sequences involving post-base consonant Ya, which
should ligate with the Halant to form Ya Phala, but previously a
reordered matras was blocking the ligation.
2012-07-17 11:16:19 -04:00
Behdad Esfahbod
d5c4edcdd6
[Indic] Apply presentation-forms features all at once
...
Seems like this is what Uniscribe is doing, and does not break any fonts
we tested (with Devanagari, Malayalam, Khmer, and Bengali), while fixing
some Ra Phala sequences for Bengali with Vrinda. Fixes another 2% of
Bengali failures (a couple more to go).
2012-07-17 10:40:59 -04:00
Behdad Esfahbod
559f706678
Fix MarkAttachmentType matching
...
Fixes issue reported by Khaled Hosny with his Hussaini Nastaleeq font
and sequences like those added in the previous commit.
2012-07-16 22:46:52 -04:00
Behdad Esfahbod
ad4494759f
Minor
2012-07-16 22:40:21 -04:00
Behdad Esfahbod
af92b4cc90
[Indic] Disable 'kern' in Uniscribe bug compatibility mode
...
Uniscribe does not apply 'kern' in the Indic module. Some of the Khmer
fonts they ship have small adjustments in the 'kern' table. Disable
'kern' in the Indic module under Uniscribe bug compatibility mode.
Fixes some 10% of the Khmer failures. Remains under 3% (excluding
dotted-circle ones).
2012-07-16 20:31:24 -04:00
Behdad Esfahbod
d96838ef95
Allow complex shapers overriding common features
...
In a new callback... Currently unused by all complex shapers.
2012-07-16 20:26:57 -04:00
Behdad Esfahbod
df50b84740
[Indic] Categorize other Khmer marks
...
Mark them the same as the Register Shifters for now. Need to rename
that category to something more sensible after all is settled.
Fixes another percent of Khmer failures. Down to under 3%!
2012-07-16 20:14:50 -04:00
Behdad Esfahbod
8e7b5882fb
[Indic] Recognize pre-base reordering Ra anywhere in the syllable
...
We were doing that only immediately after base.
Fixes another percent in the Khmer failures. About three more to go...
2012-07-16 17:04:46 -04:00
Behdad Esfahbod
7d09c98a1f
[Indic] Recognizer Register Shifter marks
...
Fixes another 6% of the Khmer failures.
2012-07-16 16:45:22 -04:00
Behdad Esfahbod
60da763dfa
[GSUB/GDEF] Guess glyph classes after substitution only if no GDEF
...
Brings down Khmer failures with Daun Penh font from 36% to 20%.
2012-07-16 16:14:40 -04:00
Behdad Esfahbod
fcdc5f1c88
[Indic] Categorize Khmer Ro
...
Khmer failures down from 58% to 36%.
2012-07-16 15:52:54 -04:00
Behdad Esfahbod
78818124b1
[Indic] Reoder pre-base reordering Ra
...
Brings down Malayalam failures from 14% down to 3%.
2012-07-16 15:49:08 -04:00
Behdad Esfahbod
1a1dbe9a27
[Indic] Rename
2012-07-16 15:41:33 -04:00
Behdad Esfahbod
46e645ec4b
[Indic] Start implementing pre-base reordering
2012-07-16 15:30:05 -04:00
Behdad Esfahbod
921ce5b17d
[Indic] Rename
...
No semantic change.
2012-07-16 15:26:56 -04:00
Behdad Esfahbod
b504e060f0
[Indic] Implement After-Main Reph positioning
...
Almost...
2012-07-16 15:21:12 -04:00
Behdad Esfahbod
17d7de91d7
[Indic] Apply 'pref' to pre-base reodering Ra
...
No reordering yet.
2012-07-16 15:20:15 -04:00
Behdad Esfahbod
362d3db8d3
[Indic] Minor
...
Should not be any semantic change. In preparation for implementing
pre-base reordering Ra.
2012-07-16 15:15:28 -04:00
Behdad Esfahbod
70fe77bb9a
Minor
2012-07-16 14:52:18 -04:00
Behdad Esfahbod
2f903215c5
Minor
2012-07-16 13:54:43 -04:00
Behdad Esfahbod
a3e04bee2c
[Indic] Reorder virama only for old Indic spec
2012-07-16 13:47:19 -04:00
Behdad Esfahbod
0de771b72d
[Indic] Categorize Khmer consonants
2012-07-16 13:39:36 -04:00
Behdad Esfahbod
d487fff266
Split matras without a Unicode decomposition
...
This is a hack for now, to get us going with Khmer. This will be
refactored properly later to move the complex logic into complex
shapers.
2012-07-16 13:25:57 -04:00
Behdad Esfahbod
8aa801a6fd
[Indic] Adjust position for split matras
...
We are going to split matras without a Unicode decompositions in a way
that the second half takes the codepoint of the whole matra. So,
position them where the second half is supposed to end up.
2012-07-16 13:24:26 -04:00
Behdad Esfahbod
1feb8345a5
[GSUB] Allow 1-to-1 ligature substitutions!
...
Apparently Uniscribe allows these, and they are used in some Khmer fonts
shipped with Windows, namely, Daun Penh.
2012-07-16 13:23:40 -04:00
Behdad Esfahbod
29f106d7fb
[Indic] Apply Above Forms
2012-07-16 12:05:35 -04:00
Behdad Esfahbod
fa2bd9fb63
Further simplify atomic ops on Visual Studio
2012-07-14 12:15:54 -04:00
Behdad Esfahbod
0a49235701
Minor
2012-07-13 13:20:49 -04:00
Behdad Esfahbod
11c4ad439e
Add -Wcast-align
2012-07-13 11:29:31 -04:00
Behdad Esfahbod
a98d0ab186
Make sure HB_BEGIN_DECLS / HB_END_DECLS is only used in public headers
...
So we can use them to switch default visibility to internal if desired,
and use these to make only declared symbols public.
2012-07-13 10:19:10 -04:00
Behdad Esfahbod
5c5bc96216
Allow overriding HB_BEGIN_DECLS / HB_END_DECLS
2012-07-13 10:15:37 -04:00
Behdad Esfahbod
50a4e78b53
Check for exported weak symbols
...
Ouch, all our C++ inline functions are being exported (weakly) already.
Fix coming.
2012-07-13 09:48:39 -04:00
Behdad Esfahbod
b5aeb95afe
Make hb_in_range() static
2012-07-13 09:45:54 -04:00
Behdad Esfahbod
271c8f8907
Minor
2012-07-13 09:32:30 -04:00
Behdad Esfahbod
391f1ff5d8
Fix _InterlockedCompareExchangePointer on x86
2012-07-13 09:04:07 -04:00
Behdad Esfahbod
2023e2b54d
[ft] Disable ppem setting
...
The calculations were wrong.
FreeType makes it really hard to set size and ppem independently.
For now, disable it. Need to come up with a fix later.
2012-07-11 19:01:26 -04:00
Behdad Esfahbod
cdf7444505
[ft] Use unfitted kerning if x_ppem is zero
2012-07-11 18:52:39 -04:00
Behdad Esfahbod
6d08c7f1b3
Revert "Towards templatizing common Lookup types"
...
This reverts commit 727135f3a9
.
This is work-in-progress. Didn't mean to push it out just yet.
2012-07-11 18:01:27 -04:00
Behdad Esfahbod
552bf3a9f9
Bump WINNT version requested from 500 to 600
...
Since we use the OpenType versions of Uniscribe functions, we are
relying on that version of the WINNT API. Otherwise, usp10.h will hide
those symbols.
2012-07-11 18:00:28 -04:00
Behdad Esfahbod
9a5b421a64
Fix build with no Unicode funcs implementations provided
2012-07-11 18:00:28 -04:00
Behdad Esfahbod
727135f3a9
Towards templatizing common Lookup types
2012-07-11 18:00:28 -04:00
Behdad Esfahbod
12f5c0a222
Fix check for Intel atomic ops
2012-06-26 11:16:13 -04:00
Behdad Esfahbod
6932a41fb6
Use octal-escaped UTF-8 characters instead of plain text
...
https://bugs.freedesktop.org/show_bug.cgi?id=50970
2012-06-26 10:46:31 -04:00
Behdad Esfahbod
8c0ea7bcb4
Disable introspection again
...
Until I figure out the build issues. Sigh...
2012-06-24 13:20:56 -04:00
Behdad Esfahbod
49f8e0cd9a
GStaticMutex is deprecated
2012-06-16 15:40:03 -04:00
Behdad Esfahbod
1bc1cb3603
Make source more digestable for gobject-introspection
2012-06-16 15:21:55 -04:00
Behdad Esfahbod
84d781e54c
Flesh out gobject-introspection stuff a bit
2012-06-16 15:21:41 -04:00
Behdad Esfahbod
2cf301968c
Add hb_object_lock/unlock()
2012-06-09 14:58:01 -04:00
Behdad Esfahbod
f211d5c291
More Oops! Fix fast-path with sub-type==0
2012-06-09 03:11:22 -04:00
Behdad Esfahbod
b1de6aa1f3
Oops!
2012-06-09 03:07:59 -04:00
Behdad Esfahbod
b12e2549cb
Minor
2012-06-09 03:05:20 -04:00
Behdad Esfahbod
faf0f20253
Add sanitize() logic for fast-paths
2012-06-09 03:02:36 -04:00
Behdad Esfahbod
4e766ff28d
Add fast-path for GPOS too
...
Shaves another 3% for DejaVu Sans long Latin strings.
2012-06-09 02:53:57 -04:00
Behdad Esfahbod
993c51915f
Add fast-path to GSUB to check coverage
...
Shaves a good 10% off DejaVu Sans with simple Latin text for me.
Now, DejaVu is very ChainContext-intensive, but it's also a very
popular font!
2012-06-09 02:48:16 -04:00
Behdad Esfahbod
f19e0b0099
Match input before backtrack
...
Makes more sense, optimization-wise.
2012-06-09 02:26:57 -04:00
Behdad Esfahbod
67bb9e8cea
Add set add_coverage() to Coverage()
2012-06-09 02:02:46 -04:00
Behdad Esfahbod
4952f0aa5b
Minor
2012-06-09 01:43:20 -04:00
Behdad Esfahbod
ad6a6f2240
Minor
2012-06-09 01:43:20 -04:00
Behdad Esfahbod
46617a4213
Fix cache implementation
2012-06-09 01:43:20 -04:00
Behdad Esfahbod
ce47613889
Micro-optimize
...
I know...
2012-06-09 01:43:15 -04:00
Behdad Esfahbod
70416de298
Minor
2012-06-09 00:56:41 -04:00
Behdad Esfahbod
99159e52a3
Use linear search for small counts
...
I see about 8% speedup with long strings with DejaVu Sans.
2012-06-09 00:50:40 -04:00
Behdad Esfahbod
caf0412690
Minor
2012-06-09 00:26:32 -04:00
Behdad Esfahbod
0f8fea71a6
Minor. Hide _hb_ot_layout_get_glyph_property()
2012-06-09 00:24:38 -04:00
Behdad Esfahbod
44b8ee0c90
Minor
2012-06-09 00:23:24 -04:00
Behdad Esfahbod
7b84c536c1
In MarkBase attachment, only attach to first of a MultipleSubst sequence
...
This is apparently what Uniscribe does. Test case is:
SEEN FATHA TEH ALEF
with Arabic Typesetting. Originally reported by Khaled Hosny.
2012-06-08 22:04:23 -04:00
Behdad Esfahbod
ec57e0c565
Set lig_comp for MultipleSubst components
...
To be used for correct mark attachment to first component of a
MultipleSubst output. That's what Uniscribe does.
2012-06-08 21:47:23 -04:00
Behdad Esfahbod
e085fcf7ca
Remove unused buffer->replace_glyphs_be16
2012-06-08 21:45:00 -04:00
Behdad Esfahbod
3ec77d6ae0
Don't use replace_glyphs_be for MultipleSubst
2012-06-08 21:44:06 -04:00
Behdad Esfahbod
4b7192125f
Minor
2012-06-08 21:41:46 -04:00
Behdad Esfahbod
4508789f4b
Add test for static initializers and other C++ stuff
2012-06-08 21:32:43 -04:00
Behdad Esfahbod
56bd259b9a
Minor
2012-06-08 21:29:18 -04:00
Behdad Esfahbod
bc8357ea7b
Merge clusters during normalization
2012-06-08 21:01:20 -04:00
Behdad Esfahbod
fe3dabc08d
Minor
2012-06-08 20:56:05 -04:00
Behdad Esfahbod
e88e14421a
Use merge_clusters instead of open-coding
2012-06-08 20:55:21 -04:00
Behdad Esfahbod
330a2af3ff
Use merge_clusters when forming Unicode clusters
2012-06-08 20:40:02 -04:00
Behdad Esfahbod
bd300df9ad
Minor
2012-06-08 20:36:37 -04:00
Behdad Esfahbod
e51d2b6ed1
Extend into main buffer if extension hit end of out-buffer merging clusters
2012-06-08 20:36:33 -04:00
Behdad Esfahbod
5ced012d9f
Extend end when merging clusters in out-buffer
2012-06-08 20:31:32 -04:00
Behdad Esfahbod
72c0a18783
Extend clusters backward in out-buffer
2012-06-08 20:30:03 -04:00
Behdad Esfahbod
cd5891493d
Extend clusters backwards, into the out-buffer too
2012-06-08 20:28:59 -04:00
Behdad Esfahbod
77471e0371
Clear output buffer before calling GSUB pause functions
2012-06-08 20:21:02 -04:00