|
101303db
|
2013-10-18T00:42:39
|
|
[otlayout] More shuffling around
|
|
3ddf892b
|
2013-10-18T00:02:43
|
|
[otlayout] Renaming
|
|
6c48f20e
|
2013-09-09T15:43:10
|
|
[otlayout] Add structs for JSTF table
|
|
45f3d980
|
2013-05-03T17:49:44
|
|
[OTLayout] Merge / templateize apply_string()
|
|
e015b8f2
|
2013-05-03T17:34:29
|
|
[OTLayout] Minor
|
|
780cd930
|
2013-05-03T17:33:16
|
|
[OTLayout] Minor
|
|
2e0c44f4
|
2013-04-24T16:42:05
|
|
[OTLayout] Add is_inplace() method to GSUB
|
|
ed79dff5
|
2013-04-21T15:39:25
|
|
Minor
|
|
0dc3a4e0
|
2013-04-17T23:04:03
|
|
Obssesive optimization
Not measurable by any means, but conceptually this is faster since
the mask matches more often than the digest.
|
|
ee5464d1
|
2013-03-09T01:59:30
|
|
[OTLayout] Move code around
|
|
9c5a9ee9
|
2013-03-09T01:55:04
|
|
[OTLayout] Rename process() to dispatch()
|
|
607feb7c
|
2013-02-14T07:43:13
|
|
[OTLayout] Ignore default-ignorables when matching GSUB/GPOS
When matching lookups, be smart about default-ignorable characters.
In particular:
Do nothing specific about ZWNJ, but for the other default-ignorables:
If the lookup in question uses the ignorable character in a sequence,
then match it as we used to do. However, if the sequence match will
fail because the default-ignorable blocked it, try skipping the
ignorable character and continue.
The most immediate thing it means is that if Lam-Alef forms a ligature,
then Lam-ZWJ-Alef will do to. Finally!
One exception: when matching for GPOS, or for backtrack/lookahead of
GSUB, we ignore ZWNJ too. That's the right thing to do.
It certainly is possible to build fonts that this feature will result
in undesirable glyphs, but it's hard to think of a real-world case
that that would happen.
This *does* break Indic shaping right now, since Indic Unicode has
specific rules for what ZWJ/ZWNJ mean, and skipping ZWJ is breaking
those rules. That will be fixed in upcoming commits.
|
|
c074ebc4
|
2013-02-13T11:22:42
|
|
[OTLayout] Minor refactoring
|
|
407fc124
|
2013-02-13T11:13:06
|
|
[OTLayout] Remove bogus caching of glyph property
|
|
56800027
|
2013-02-12T09:44:57
|
|
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.
|
|
54f7b4d9
|
2013-02-11T13:27:17
|
|
[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.
|
|
9082efc4
|
2013-02-11T13:14:15
|
|
[OTLayout] s/mark_skipping/skipping/
In aticipation of upcoming changes.
|
|
e95e031b
|
2013-01-08T16:15:46
|
|
[GPOS] If an Anchor offset is NULL, return false
If in a MarkPos table, a base has no anchor for a particular mark class,
return NULL such that the subsequent subtables get a chance at it.
Test case:
hb-shape ./EBGaramond12-Regular.otf ἂ --features="ss20","smcp"
|
|
8303593b
|
2012-12-04T17:08:41
|
|
Minor
Use pointers instead of references, in preparation for upcoming change.
|
|
1bcfa06d
|
2012-12-04T16:58:09
|
|
[OTLayout] Don't recurse in collect_glyphs() for GPOS
|
|
3038ae6a
|
2012-11-30T08:24:13
|
|
[OTLayout] Minor
|
|
2dc1141d
|
2012-11-24T19:16:34
|
|
[OTLayout] Remove operator() from ClassDef
|
|
b67881b1
|
2012-11-24T19:13:55
|
|
[OTLayout] Remove operator() from Coverage
|
|
cdd756b9
|
2012-11-24T01:38:41
|
|
[OTLayout] Implement GPOS collect_glyphs()
|
|
4c4e8f0e
|
2012-11-24T01:13:20
|
|
[OTLayout] Reuse apply context for recursion
|
|
26514d51
|
2012-11-23T18:13:48
|
|
[OTLayout] More collect_glyphs()
|
|
c6fb843f
|
2012-11-23T18:04:08
|
|
[OTLayout] Templatize process_recurse_func
|
|
f48ec0e8
|
2012-11-23T17:23:41
|
|
[OTLayout] Add process() tracing
|
|
ed2e1359
|
2012-11-23T17:10:40
|
|
[OTLayout] More Extension templatizing
|
|
7dddd4e7
|
2012-11-23T17:04:55
|
|
[OTLayout] More templatizing Extension
|
|
653eeb26
|
2012-11-23T16:57:36
|
|
Make Extension a template
|
|
08f1eede
|
2012-11-23T16:51:43
|
|
Minor
|
|
be218c68
|
2012-11-23T15:32:14
|
|
Pass this object to trace macros
|
|
c779d82b
|
2012-11-23T14:07:24
|
|
Fix warnings
|
|
ec35a72a
|
2012-11-22T16:05:59
|
|
[OTLayout] Port apply() operator to process() template
|
|
2005fa53
|
2012-11-22T14:38:10
|
|
[OTLayout] Port would_apply() and get_coverage() to process() templates
|
|
7d52e660
|
2012-11-16T18:49:54
|
|
Whitespace
|
|
5a08ecf9
|
2012-11-16T13:34:29
|
|
Implement hb_ot_layout_get_glyph_class()
|
|
1d3947a6
|
2012-09-04T22:42:17
|
|
Minor
|
|
2bd9fe35
|
2012-09-04T15:15:19
|
|
Refactor
|
|
7c8e844d
|
2012-08-28T17:57:49
|
|
Use namespace for OpenType tables
Avoids USHORT, SHORT, ULONG, LONG clashes with Windows API.
|
|
df5d5c68
|
2012-08-23T09:33:30
|
|
Whitespace
|
|
6c459c8f
|
2012-08-02T03:45:53
|
|
Minor
|
|
0120ce96
|
2012-08-01T21:56:35
|
|
[GSUB/GPOS] Remove unused get_coverage() methods
|
|
1336ecdf
|
2012-08-01T21:46:36
|
|
[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%.
|
|
a878c58a
|
2012-08-01T21:18:54
|
|
[GSUB/GPOS] Add add_coverage()
|
|
8fbfda92
|
2012-08-01T19:03:46
|
|
Inline font getters
|
|
1e7d8606
|
2012-07-31T23:41:06
|
|
[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.
|
|
c2e42c3d
|
2012-07-30T19:54:50
|
|
Minor
|
|
03f67bc0
|
2012-07-30T19:47:53
|
|
More refactoring glyph class access
|
|
05bd1b63
|
2012-07-30T19:30:01
|
|
[GSUB/GPOS] Move glyph props matching around
|
|
0aef425e
|
2012-07-30T00:55:15
|
|
[GSUB] Minor
|
|
5d874d56
|
2012-07-28T21:05:25
|
|
[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.
|
|
dadede01
|
2012-07-28T18:03:20
|
|
Minor
|
|
0b99429e
|
2012-07-28T17:31:01
|
|
[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.
|
|
ea278d38
|
2012-07-27T02:12:28
|
|
Partially switch ot shaper to shape_plan
|
|
a3313e54
|
2012-07-25T18:37:51
|
|
[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.
|
|
ec8d2494
|
2012-07-24T15:40:37
|
|
Make data members of various OpenType structs protected instead of private
Should fix warnings generated when building with -Wunused-private-field.
Based on patch from Jonathan Kew.
|
|
34a7440b
|
2012-07-20T12:32:59
|
|
[GPOS] Don't zero mark advances
Fixes more of Telugu, Kannada, and Oriya.
May break things (outside Indic...), but we cannot think of any font relying
on this immediately.
|
|
e72b360a
|
2012-07-19T14:35:23
|
|
Refactor / finish would_apply() operation
Untested.
|
|
6d08c7f1
|
2012-07-11T18:01:27
|
|
Revert "Towards templatizing common Lookup types"
This reverts commit 727135f3a9938c1ebd5b9f5015a46c7ccc8573c5.
This is work-in-progress. Didn't mean to push it out just yet.
|
|
727135f3
|
2012-07-03T22:15:35
|
|
Towards templatizing common Lookup types
|
|
f211d5c2
|
2012-06-09T03:11:22
|
|
More Oops! Fix fast-path with sub-type==0
|
|
b1de6aa1
|
2012-06-09T03:07:59
|
|
Oops!
|
|
faf0f202
|
2012-06-09T03:02:36
|
|
Add sanitize() logic for fast-paths
|
|
4e766ff2
|
2012-06-09T02:53:57
|
|
Add fast-path for GPOS too
Shaves another 3% for DejaVu Sans long Latin strings.
|
|
44b8ee0c
|
2012-06-09T00:23:24
|
|
Minor
|
|
7b84c536
|
2012-06-08T22:04:23
|
|
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.
|
|
68b76121
|
2012-06-08T10:43:49
|
|
Fix regressions introduced by sed. Ouch!
Introduced in 99c2695759a6af855d565f4994bbdf220570bb48.
Broken mark-mark and mark-ligature stuff.
|
|
99c26957
|
2012-05-13T15:45:18
|
|
Add accessort to buffer for current info, current pos, and prev info
|
|
5df809b6
|
2012-05-13T15:17:51
|
|
[GSUB/GPOS] Remove context_length
The spec doesn't say contextual matching should be done this way,
and AOTS doesn't do it either. It was inherited from old HarfBuzz.
Remove it.
|
|
cee71874
|
2012-05-11T11:41:39
|
|
[Indic] Move syllable tracking from Indic to generic layer
This is to incorporate it into GSUB/GPOS processing.
|
|
acea183e
|
2012-05-11T02:33:11
|
|
Add return annotation for APPLY
|
|
0ab8c862
|
2012-05-11T01:25:34
|
|
Annotate SANITIZE return values
More to come, for APPLY, CLOSURE, etc.
|
|
a9844d41
|
2012-05-09T17:53:13
|
|
Combine lig_id and lig_comp into one byte, to free up one for Indic
|
|
5b93e8d9
|
2012-04-23T22:26:13
|
|
Update copyright headers
|
|
650ac00d
|
2012-04-23T13:17:09
|
|
Minor refactoring
|
|
c6035cf8
|
2012-04-12T13:23:59
|
|
Add names to enums
gdb was showing <anonymous enum> instead of useful stuff, so name
all our enums.
|
|
41ae674f
|
2012-04-11T17:11:05
|
|
Don't create hb_apply_context_t per glyph!
I couldn't measure significant performance gains out of this; maybe
about 5% (with one million Malayalam strings). Still, not bad.
But reminds me that optimizing this codebase without profiling first
is simply not going to work. Oh well...
|
|
4ab97311
|
2012-01-16T22:05:08
|
|
Refactor mark skipping
|
|
4d3aeb8c
|
2012-01-16T16:43:26
|
|
[GSUB/GPOS] Fix mark skip indexing issues
Mozilla bug 701637 and 714067 combined.
Patch from Jonathan Kew.
|
|
ae9877de
|
2011-08-17T14:43:45
|
|
Add hhea-table support
|
|
7a750ac3
|
2011-08-17T14:19:59
|
|
Rename table files from eg maxp-private.hh to maxp-table.hh
|