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


Log

Author Commit Date CI Message
Behdad Esfahbod 7a4bd97e 2023-01-31T14:59:39 [layout] Build lookup accelerators lazily on-demand Reduces memory consumption for large multi-script fonts drastically.
Behdad Esfahbod 83353f13 2023-01-31T14:32:14 [layout] Reduce memory use slightly By using raw pointer instead of vector for subtable accelerator. To be used for more memory saving by making subtable accelerators lazy-loaded by shape-plans for large fonts.
Behdad Esfahbod 950c7ab3 2023-01-26T15:26:05 [gsubgpos] Use accelerator when recursing
Kleis Auke Wolthuizen 3238cb74 2022-07-06T13:18:14 [GPOS] Fix build on GCC < 7
Garret Rieger 900476c6 2022-06-30T19:21:23 Move GSUB.hh GPOS.hh back into the GPOS/GSUB sub directories.
Behdad Esfahbod 050f1690 2022-06-28T18:52:27 [GPOS/kerx] Call into impl namespace from kerx
Garret Rieger 3fbf2dec 2022-06-28T23:55:32 [reorg] Move OT::Layout::GPOS_impl::GPOS to OT::Layout::GPOS.
Garret Rieger 88ef3c5a 2022-06-28T23:26:49 [reorg] Change OT::Layout::GPOS to OT::Layout::GPOS_impl.
Garret Rieger 49ddf069 2022-06-28T23:15:07 [reorg] Move GPOS reverse_cursive_minor_offset implementation into new directory layout.
Garret Rieger 74f45f7c 2022-06-24T23:14:30 [reorg] Move remaining GPOS lookup types to new directory.
Garret Rieger 197d9a5c 2022-06-24T22:36:14 [reorg] Move more GPOS lookups to new directory.
Garret Rieger c7307ca0 2022-06-24T22:01:02 [reorg] Begin moving GPOS into the new directory layout.
Behdad Esfahbod d15260ca 2022-06-25T19:53:11 [gpos] Limit recursion depth in propagate_attachment_offsets() Fixes https://github.com/harfbuzz/harfbuzz/issues/2927
Behdad Esfahbod 9fc9b1ec 2022-06-08T12:35:43 [layout] Minor, add using Lookup to GSUB/GPOS
Behdad Esfahbod 4119f73c 2022-06-08T06:34:48 [subset/layout] Rename dispatch_closure_lookups_recurse_func to dispatch_recurse_func<>
Behdad Esfahbod c13ff395 2022-06-08T06:25:23 [layout] Rename apply_recurse_func to specialization of dispatch_recurse_func
Behdad Esfahbod 880f50f7 2022-05-20T16:50:00 Refactor varstore cache
Behdad Esfahbod f2a2fb91 2022-05-20T16:06:05 [GPOS] Cache VarStore region scalars
Behdad Esfahbod 88798ee8 2022-02-04T18:59:50 [GPOS] Disable split-kerning Fixes https://github.com/harfbuzz/harfbuzz/issues/3408 Reverts https://github.com/harfbuzz/harfbuzz/pull/3235 Fixes https://github.com/harfbuzz/harfbuzz/pull/3235#issuecomment-1029814978
Behdad Esfahbod 8663eda4 2022-01-22T10:35:05 [unsafe-to-concat] More annotations for MarkMarkPos Failures down to one: 265/401 harfbuzz:shaping+aots / lookupflag_ignore_attach FAIL
Behdad Esfahbod 6a7d6d4b 2022-01-22T10:33:35 [unsafe-to-concat] More annotations for MarkLigaturePos
Behdad Esfahbod b443898c 2022-01-22T10:24:59 [unsafe-to-concat] Adjust MarkBasePos A couple more aots tests down. Four failing: 209/401 harfbuzz:shaping+aots / gpos6 FAIL 0.06s exit status 1 261/401 harfbuzz:shaping+aots / gsub4_1_multiple_ligatures FAIL 0.07s exit status 1 265/401 harfbuzz:shaping+aots / lookupflag_ignore_attach FAIL 0.07s exit status 1 267/401 harfbuzz:shaping+aots / lookupflag_ignore_combination FAIL 0.07s exit status 1
Behdad Esfahbod 95d052a7 2022-01-22T10:16:23 [unsafe-to-concat] Adjust GPOS lookbacks Fixes Cursive aots test, fails a couple new aots ones.
Behdad Esfahbod 11bdd7a0 2022-01-21T18:59:06 [unsafe-to-concat] Adjust CursivePos Doesn't fix the test yet.
Behdad Esfahbod 48c5f261 2022-01-21T12:18:50 [unsafe-to-concat] Fix PairPos2 logic Test failures down from 8 to 6: 113/400 harfbuzz:shaping+in-house / mongolian-variation-selector FAIL 0.06s exit status 1 203/400 harfbuzz:shaping+aots / gpos3 FAIL 0.06s exit status 1 204/400 harfbuzz:shaping+aots / gpos4_lookupflag FAIL 0.06s exit status 1 260/400 harfbuzz:shaping+aots / gsub4_1_multiple_ligatures FAIL 0.06s exit status 1 264/400 harfbuzz:shaping+aots / lookupflag_ignore_attach FAIL 0.06s exit status 1 266/400 harfbuzz:shaping+aots / lookupflag_ignore_combination FAIL 0.06s exit status 1
Behdad Esfahbod 78481b32 2021-11-21T16:50:34 [gsubgpos] Combine input/backtrack/lookahead unsafe-to-concat I feel like this is correct logic. Still have to prove. Errors unchanged at 10.
Behdad Esfahbod 596bc7e9 2021-11-20T12:02:47 [unsafe-to-concat] Add to GPOS kerning
Behdad Esfahbod e1cbd453 2021-11-20T11:46:48 [unsafe-to-concat] Add annotations to GPOS and kern Failures from 13 to 14.
Behdad Esfahbod cce37a6f 2022-01-21T07:31:21 [gpos] Fix conditional
Behdad Esfahbod 84aa1a83 2022-01-20T13:18:19 [PairPos] Split GPOS kerning to both sides (#3235)
Behdad Esfahbod ac1bb3e3 2022-01-20T11:47:17 [machinery] Move accelerators to constructor/destructor
Behdad Esfahbod 7e160dc3 2022-01-19T09:26:53 [gpos] Fix unsafe-to-break of mark-attachment This was undetected because most of the time marks were in same cluster of their base already. Fixes https://github.com/harfbuzz/harfbuzz/issues/3093
Behdad Esfahbod ff697deb 2021-12-19T07:25:37 [GPOS] Apply font synthetic slant Part of fixing https://github.com/harfbuzz/harfbuzz/issues/3196
Behdad Esfahbod ef14cad7 2021-12-08T10:43:52 [GPOS] Disable vertical advance if HB_NO_VERTICAL
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Nico Weber 96299d70 2021-10-12T10:42:43 Fix Wbitwise-instead-of-logical warnings `a || b` only evaluates b if a is false. `a | b` always evaluates both a and b. If a and b are of type bool, || is usually what you want, so clang now warns on `|` where both arguments are of type bool. This warning fires twice in harfbuzz. In both cases, `|` is used intentionally, with a comment explaining this. Slightly reorder the code a bit to make the compiler happy, and to make it obvious even without a comment that both calls should be evaluated. No intended behavior change.
Garret Rieger c2cc566c 2021-09-22T14:15:55 [subset] Fix subset_offset_array adding unused space to serializer. ArrayOf.serialize_append allocates space for the new item, but ArrayOf.pop() does not recover the allocated space. So in the case where the revert path was entered the extra space added by serialize_append gets left in the serialization buffer. This moves the snapshot to before ArrayOf.serialize_append is called so that revert cleans up the buffer extend.
Behdad Esfahbod c852b868 2021-09-19T16:30:12 Rename HBGlyphID to HBGlyphID16
Garret Rieger 46d4a5e6 2021-07-29T15:07:13 [subset] Convert subset plan to use a flags bit set.
Behdad Esfahbod f0a1892f 2021-07-28T17:36:22 [serialize] Remove unnecessary pointer indirection
Behdad Esfahbod bb48bf52 2021-07-08T10:53:45 Rename misc uses of "free" In preparation for fixing https://github.com/harfbuzz/harfbuzz/issues/3044
Garret Rieger 8443cc85 2021-06-11T13:40:39 [subset] Correct OffsetTo serialization in GPOS to use serialize_serialize ().
Garret Rieger e25efb31 2021-04-23T19:09:37 [subset] consider all value formats when computing effective format.
Qunxin Liu 84dbfacf 2021-04-15T16:52:11 [subset] fix collect_variation_idx in PairPosFormat2
Garret Rieger d356d0f7 2021-04-23T17:41:09 [subset] optimize ValueRecord's for PairPosFormat1.
Garret Rieger f9fbe481 2021-04-23T17:06:06 [subset] implement value record optimization for PairPosFormat2.
Garret Rieger badb8e40 2021-04-23T16:32:56 [subset] use copy_values for PairPos serialize.
Garret Rieger 2f50283c 2021-04-23T15:21:30 [subset] Begin implementing ValueRecord optimization: remove value records which have a zero value.
Garret Rieger 5df7c668 2021-04-22T16:45:14 [subset] In SinglePosFormat1 serialize only 1 value record. Previously one record per glyph in the subset was serialized.
Garret Rieger 92757f68 2021-04-22T15:18:35 [subset] Don't drop anchor device tables when dropping hints. These may contain variation data. Update subseting expected files to match latest version of fontTools.
Qunxin Liu 9dc9f038 2021-04-08T11:00:17 [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/5858518134554624
Qunxin Liu 553ffaf6 2021-04-07T17:15:32 [subset] fix for fuzzer testcase: https://oss-fuzz.com/testcase-detail/6382598554255360 avoid writing to null pointer
Garret Rieger 6f98a8ed 2021-04-02T14:37:10 [subset] Anchor should only use format 1 when hints are dropped. Refactor Anchor to have a subset method instead of copy. This also allows use to use serialize_subset in several places which simplifies calculating offset bases.
Behdad Esfahbod 5639e253 2021-03-31T16:04:43 Add Array16Of<>
Behdad Esfahbod 5efe3609 2021-03-31T15:33:22 Rename (Unsized)OffsetListOf
Behdad Esfahbod 6c4e0491 2021-03-31T15:31:32 s/OffsetArrayOf/Array16OfOffset16To/g
Behdad Esfahbod ad28f973 2021-03-31T12:49:14 Rename offset types to be explicit about their size Add Offset16To<>, Offset24To<>, and Offset32To<> for most use-cases.
Garret Rieger b14475d2 2021-03-18T10:51:26 [subset] further changes to serializer error handling. - Rename enum type and enum members. - in_errors() now returns true for any error having been set. hb-subset now looks for offset overflow only errors to divert to repacker. - Added INT_OVERFLOW and ARRAY_OVERFLOW enum values.
Garret Rieger 73ed59f7 2021-03-17T15:53:10 [subset] store errors in the serializer as a flag set. Make check_assign/check_equal specify the type of error to set.
Qunxin Liu 56ca4357 2021-01-28T15:21:26 [subset] fix for collect_features and remove_redundant_lamngsys previously remove_redundant_sys () is missing in harfbuzz, after redundant langsys removal, some features are removed as well in prune_features() in fonttools. This change is trying to get the same result between harfbuzz and fonttools.
Garret Rieger 2df39bca 2021-03-16T14:20:49 [subset] don't allocate a set to use as a glyph filter for PairPosFormat2.
Garret Rieger bb54e104 2021-03-16T13:19:26 [subset] Also filter class1 by coverage when collecting variation indices for PairPosFormat2.
Garret Rieger 190b7a98 2020-10-08T14:44:54 [subset] Update PairPosFormat2 subsetting to match fontTools updated subsetting (https://github.com/fonttools/fonttools/pull/2221) - subset class def 1 against the coverage table. - Don't re-use class 0 in class def 2. - Ignore class 0 glyphs for the purposes of determing format 1 vs format 2 encoding for ClassDef. Add an additional test case which demonstrates these issues.
Behdad Esfahbod 103ed7da 2021-02-19T16:48:30 [subset] Use dagger Better fix for https://github.com/harfbuzz/harfbuzz/pull/2858
Garret Rieger 5ca353a2 2021-02-12T15:16:59 [subset] fix heap buffer overflow found by fuzzer.
Behdad Esfahbod c7d232ce 2021-02-10T18:13:38 Merge pull request #2701 from googlefonts/Mark-To-Ligature_grieger [subset] GPOS 5 MarkToLigature subsetting support
Garret Rieger 1d9801e0 2020-10-05T14:41:55 [subset] In AnchorMatrix::subset eliminate the use of dynamically allocated vector.
Garret Rieger 093909b2 2020-10-05T13:14:53 [subset] Fix wrong offset base for subsetting LigatureArray. Offsets from LigatureArray must be relative to the beginning of the LigatureArray table. For the serialization mechanism to use the correct beginning point the LigatureArray must be created using the push()/pop() mechanism. So convert LigatureArray subsetting to use serialize_subset() instead of a manually called serialize and subset.
Garret Rieger 147e93b9 2020-10-01T16:44:16 [subset] Fixes to get GPOS 5 subsetting code compiling.
Qunxin Liu 3a0b05fa 2020-02-06T15:08:26 [subset] GPOS 5 MarkToLigature subsetting support
Garret Rieger e5835053 2020-09-29T11:05:08 [subset] Use plan->glyphset_gsub instead of plan->glyphset for GSUB/GPOS This matches fontTools behaviour. glyphset_gsub does not contain gids added from closing over composite glyphs in glyf, since these cannot particpate in GSUB/GPOS processing.
Behdad Esfahbod fce64a40 2020-08-08T14:04:54 Minor
Ebrahim Byagowi 5a7cc7fd 2020-07-29T08:33:32 minor spacing tweak
Ebrahim Byagowi d0e2addd 2020-07-18T22:14:52 minor
Behdad Esfahbod 9ef9ac37 2020-06-17T17:41:15 [gpos] Break cycle-of-2 when cursive attaching Fix thinko this time around. Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
Behdad Esfahbod 3fe71957 2020-06-17T17:51:08 Revert "[gpos] Break cycle-of-2 when cursive attaching" This reverts commit 7090707de67e660ae626ecf774f6af8a63a692ab.
Behdad Esfahbod 7090707d 2020-06-17T17:41:15 [gpos] Break cycle-of-2 when cursive attaching Fixes https://github.com/harfbuzz/harfbuzz/issues/2469
Qunxin Liu 973c47f6 2020-06-11T11:27:57 [subset] Move 2 experimental public api methods to be private methods in GSUB/GPOS. 2 methods are: hb_ot_layout_closure_lookups and hb_ot_layout_closure_features
Behdad Esfahbod 56719474 2020-06-05T12:57:23 s/blacklist/blocklist/g
Qunxin Liu d7c012a0 2020-02-26T13:11:42 [subset] GDEF Variation Store: step 2 do subset based on variation indices collected in step 1
Qunxin Liu 8200e48f 2020-02-26T13:11:42 [subset] GDEF Variation Store: step 1 closure device variation indexes, create old->new variation idx mapping and store them in subset-plan
Behdad Esfahbod 5cf53c06 2020-04-23T10:55:41 Rename add_coverage to collect_coverage
Ebrahim Byagowi 2dda6dd7 2020-04-20T14:12:45 minor, tweak spacing turn 8 spaces to tab, add space before Null/Crap
Qunxin Liu c8cc1e37 2020-04-02T16:57:01 fix issues in ClassDefFormat1 serialize: glyph ids in Iterator may be non-consecutive, so the number in classValue might be larger than length of the Iterator
Garret Rieger 2f556c38 2020-03-13T12:21:10 [subset] Fix crash when serializer runs out of room during gpos subsetting.
Ebrahim Byagowi 07acd1a0 2020-03-08T23:39:24 [subset] Rename src_base args to base to match sanitize methods So it will become easier to follow that serialize methods signatures should match with their sanitize methods counterparts.
ariza 188a0a47 2020-03-07T11:02:36 removed default base; replaced w/ bias if required
Qunxin Liu eb7849a8 2020-02-05T15:29:03 [subset] GPOS6 MarkToMark subsetting support
Qunxin Liu 82afc758 2020-02-04T13:24:37 [subset] GPOS4 MarkBase subsetting support
ariza 1ab3924b 2020-01-22T11:20:56 refix PR #2087 subset PairPos1 also added oss-fuzz 20211 data fixed by this
ariza 72cbfb90 2020-01-18T16:35:52 remove empty lookup subtables Added a variant of subset_offset_array which takes an extra arg passed to serialize_subset for this impl. Added a new api test "test-subset-gpos" for this.
Michiharu Ariza c828d7bf 2020-01-15T15:32:44 [subset] fixed GPOS device table sanitize & serialize (#2087)
Qunxin Liu e565d1f9 2019-11-01T10:21:36 [subset] subset lookup/feature/script lists for GSUB/GPOS
Qunxin Liu 0b39c480 2019-10-22T16:00:43 [subset] closure lookups for GSUB/GPOS
Behdad Esfahbod a061e47f 2019-12-10T13:31:50 Change a few HB_INTERNAL static methods to static inline
Behdad Esfahbod dd3972a3 2019-12-10T13:21:26 [GSUB] Simplify Extension is_reverse() We don't allow extension lookups to chain to another extension lookup. Simplify code for that.
Behdad Esfahbod 858b6279 2019-12-10T13:18:32 [machinery] Remove CastR<>()
Behdad Esfahbod b84ceb2f 2019-12-10T13:02:48 [machinery] Remove CastP
Behdad Esfahbod 39afe608 2019-12-10T12:04:44 [algs] Fold one more custom bsearch() in One more to go.
Ebrahim Byagowi 486754a8 2019-09-23T23:48:08 [serialize] Extract iterable copy, copy_all