src/hb-ot-layout-gpos-table.hh


Log

Author Commit Date CI Message
Behdad Esfahbod 101303db 2013-10-18T00:42:39 [otlayout] More shuffling around
Behdad Esfahbod 3ddf892b 2013-10-18T00:02:43 [otlayout] Renaming
Behdad Esfahbod 6c48f20e 2013-09-09T15:43:10 [otlayout] Add structs for JSTF table
Behdad Esfahbod 45f3d980 2013-05-03T17:49:44 [OTLayout] Merge / templateize apply_string()
Behdad Esfahbod e015b8f2 2013-05-03T17:34:29 [OTLayout] Minor
Behdad Esfahbod 780cd930 2013-05-03T17:33:16 [OTLayout] Minor
Behdad Esfahbod 2e0c44f4 2013-04-24T16:42:05 [OTLayout] Add is_inplace() method to GSUB
Behdad Esfahbod ed79dff5 2013-04-21T15:39:25 Minor
Behdad Esfahbod 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.
Behdad Esfahbod ee5464d1 2013-03-09T01:59:30 [OTLayout] Move code around
Behdad Esfahbod 9c5a9ee9 2013-03-09T01:55:04 [OTLayout] Rename process() to dispatch()
Behdad Esfahbod 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.
Behdad Esfahbod c074ebc4 2013-02-13T11:22:42 [OTLayout] Minor refactoring
Behdad Esfahbod 407fc124 2013-02-13T11:13:06 [OTLayout] Remove bogus caching of glyph property
Behdad Esfahbod 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.
Behdad Esfahbod 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.
Behdad Esfahbod 9082efc4 2013-02-11T13:14:15 [OTLayout] s/mark_skipping/skipping/ In aticipation of upcoming changes.
Behdad Esfahbod 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"
Behdad Esfahbod 8303593b 2012-12-04T17:08:41 Minor Use pointers instead of references, in preparation for upcoming change.
Behdad Esfahbod 1bcfa06d 2012-12-04T16:58:09 [OTLayout] Don't recurse in collect_glyphs() for GPOS
Behdad Esfahbod 3038ae6a 2012-11-30T08:24:13 [OTLayout] Minor
Behdad Esfahbod 2dc1141d 2012-11-24T19:16:34 [OTLayout] Remove operator() from ClassDef
Behdad Esfahbod b67881b1 2012-11-24T19:13:55 [OTLayout] Remove operator() from Coverage
Behdad Esfahbod cdd756b9 2012-11-24T01:38:41 [OTLayout] Implement GPOS collect_glyphs()
Behdad Esfahbod 4c4e8f0e 2012-11-24T01:13:20 [OTLayout] Reuse apply context for recursion
Behdad Esfahbod 26514d51 2012-11-23T18:13:48 [OTLayout] More collect_glyphs()
Behdad Esfahbod c6fb843f 2012-11-23T18:04:08 [OTLayout] Templatize process_recurse_func
Behdad Esfahbod f48ec0e8 2012-11-23T17:23:41 [OTLayout] Add process() tracing
Behdad Esfahbod ed2e1359 2012-11-23T17:10:40 [OTLayout] More Extension templatizing
Behdad Esfahbod 7dddd4e7 2012-11-23T17:04:55 [OTLayout] More templatizing Extension
Behdad Esfahbod 653eeb26 2012-11-23T16:57:36 Make Extension a template
Behdad Esfahbod 08f1eede 2012-11-23T16:51:43 Minor
Behdad Esfahbod be218c68 2012-11-23T15:32:14 Pass this object to trace macros
Behdad Esfahbod c779d82b 2012-11-23T14:07:24 Fix warnings
Behdad Esfahbod ec35a72a 2012-11-22T16:05:59 [OTLayout] Port apply() operator to process() template
Behdad Esfahbod 2005fa53 2012-11-22T14:38:10 [OTLayout] Port would_apply() and get_coverage() to process() templates
Behdad Esfahbod 7d52e660 2012-11-16T18:49:54 Whitespace
Behdad Esfahbod 5a08ecf9 2012-11-16T13:34:29 Implement hb_ot_layout_get_glyph_class()
Behdad Esfahbod 1d3947a6 2012-09-04T22:42:17 Minor
Behdad Esfahbod 2bd9fe35 2012-09-04T15:15:19 Refactor
Behdad Esfahbod 7c8e844d 2012-08-28T17:57:49 Use namespace for OpenType tables Avoids USHORT, SHORT, ULONG, LONG clashes with Windows API.
Behdad Esfahbod df5d5c68 2012-08-23T09:33:30 Whitespace
Behdad Esfahbod 6c459c8f 2012-08-02T03:45:53 Minor
Behdad Esfahbod 0120ce96 2012-08-01T21:56:35 [GSUB/GPOS] Remove unused get_coverage() methods
Behdad Esfahbod 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%.
Behdad Esfahbod a878c58a 2012-08-01T21:18:54 [GSUB/GPOS] Add add_coverage()
Behdad Esfahbod 8fbfda92 2012-08-01T19:03:46 Inline font getters
Behdad Esfahbod 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.
Behdad Esfahbod c2e42c3d 2012-07-30T19:54:50 Minor
Behdad Esfahbod 03f67bc0 2012-07-30T19:47:53 More refactoring glyph class access
Behdad Esfahbod 05bd1b63 2012-07-30T19:30:01 [GSUB/GPOS] Move glyph props matching around
Behdad Esfahbod 0aef425e 2012-07-30T00:55:15 [GSUB] Minor
Behdad Esfahbod 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.
Behdad Esfahbod dadede01 2012-07-28T18:03:20 Minor
Behdad Esfahbod 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.
Behdad Esfahbod ea278d38 2012-07-27T02:12:28 Partially switch ot shaper to shape_plan
Behdad Esfahbod 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.
Behdad Esfahbod 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.
Behdad Esfahbod 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.
Behdad Esfahbod e72b360a 2012-07-19T14:35:23 Refactor / finish would_apply() operation Untested.
Behdad Esfahbod 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.
Behdad Esfahbod 727135f3 2012-07-03T22:15:35 Towards templatizing common Lookup types
Behdad Esfahbod f211d5c2 2012-06-09T03:11:22 More Oops! Fix fast-path with sub-type==0
Behdad Esfahbod b1de6aa1 2012-06-09T03:07:59 Oops!
Behdad Esfahbod faf0f202 2012-06-09T03:02:36 Add sanitize() logic for fast-paths
Behdad Esfahbod 4e766ff2 2012-06-09T02:53:57 Add fast-path for GPOS too Shaves another 3% for DejaVu Sans long Latin strings.
Behdad Esfahbod 44b8ee0c 2012-06-09T00:23:24 Minor
Behdad Esfahbod 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.
Behdad Esfahbod 68b76121 2012-06-08T10:43:49 Fix regressions introduced by sed. Ouch! Introduced in 99c2695759a6af855d565f4994bbdf220570bb48. Broken mark-mark and mark-ligature stuff.
Behdad Esfahbod 99c26957 2012-05-13T15:45:18 Add accessort to buffer for current info, current pos, and prev info
Behdad Esfahbod 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.
Behdad Esfahbod cee71874 2012-05-11T11:41:39 [Indic] Move syllable tracking from Indic to generic layer This is to incorporate it into GSUB/GPOS processing.
Behdad Esfahbod acea183e 2012-05-11T02:33:11 Add return annotation for APPLY
Behdad Esfahbod 0ab8c862 2012-05-11T01:25:34 Annotate SANITIZE return values More to come, for APPLY, CLOSURE, etc.
Behdad Esfahbod a9844d41 2012-05-09T17:53:13 Combine lig_id and lig_comp into one byte, to free up one for Indic
Behdad Esfahbod 5b93e8d9 2012-04-23T22:26:13 Update copyright headers
Behdad Esfahbod 650ac00d 2012-04-23T13:17:09 Minor refactoring
Behdad Esfahbod c6035cf8 2012-04-12T13:23:59 Add names to enums gdb was showing <anonymous enum> instead of useful stuff, so name all our enums.
Behdad Esfahbod 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...
Behdad Esfahbod 4ab97311 2012-01-16T22:05:08 Refactor mark skipping
Behdad Esfahbod 4d3aeb8c 2012-01-16T16:43:26 [GSUB/GPOS] Fix mark skip indexing issues Mozilla bug 701637 and 714067 combined. Patch from Jonathan Kew.
Behdad Esfahbod ae9877de 2011-08-17T14:43:45 Add hhea-table support
Behdad Esfahbod 7a750ac3 2011-08-17T14:19:59 Rename table files from eg maxp-private.hh to maxp-table.hh