src/hb-ot-layout-common.hh

Branch


Log

Author Commit Date CI Message
Qunxin Liu 0952bc0a 2025-09-26T09:10:28 [subset] de-duplicate features (#5494)
Behdad Esfahbod cf6c9d8a 2025-09-13T13:49:56 [instancer/varstore] Put back sort again In testing with GoogleSansFlex, this produces slightly smaller result.
Behdad Esfahbod c7e46ab2 2025-09-13T12:54:18 [instancer/varstore] Avoid copies in loops
Behdad Esfahbod a4a50892 2025-09-12T23:41:40 [instancer/varstore] Speed up encoding merging Don't recalculate chars from all row data.
Behdad Esfahbod f0a1289a 2025-09-12T19:25:57 [instancer/varstore] Massage optimizer a bit
Behdad Esfahbod a878dca0 2025-09-12T19:19:07 [instancer/varstore] Remove sorting from the optimizer Just work with incoming order.
Behdad Esfahbod e16be515 2025-09-12T17:42:57 [instancer/varstore] Only optimize instanced varstore incrementally See comments. This basically wipes of the varstore optimization costs out of the profiles, which saves eg. 25% total time in GoogleSansFlex instantiation, with practically no file size downside.
Behdad Esfahbod d8c1bce2 2025-09-12T14:39:38 [instancer/varstore] Mark a function HOT
Behdad Esfahbod 3965e9a6 2025-09-12T13:12:05 [instancer/varstore] Change sort key (#5540) See https://github.com/harfbuzz/harfbuzz/pull/5540
Behdad Esfahbod c9480db9 2025-09-12T12:22:17 [instancer/varstore] Add a heuristic to speed up optimization
Behdad Esfahbod 0f1dab0f 2025-09-12T11:43:21 [instancer/varstore] More gain_from_merging optimization (#5543) * [instancer/varstore] More gain_from_merging optimization * [tests] Re-enable a test that was disabled until an issue fixed See comment.
Behdad Esfahbod ca9a8aba 2025-09-12T03:50:46 Revert "[instancer/varstore] Micro-optimize" This reverts commit 7484eb5807d6127bea6b888a7d8fdad1b73a8c0b.
Behdad Esfahbod 7484eb58 2025-09-12T03:16:59 [instancer/varstore] Micro-optimize
Behdad Esfahbod 14e7d5b2 2025-09-12T03:04:59 [instancer/varstore] Speed up gain_from_merging 10% speedup instancing GoogleSansFlex.
Behdad Esfahbod 006ec160 2025-09-12T02:52:29 [instancer/varstore] Minor refactor in anticipation of next change
Behdad Esfahbod 12c46237 2025-09-12T00:05:37 Revert "[instancer/varstore] Change chars_t storage scheme" This reverts commit aaeea5729b97813eb71b1d809212534a77436ca2.
Behdad Esfahbod aaeea572 2025-09-11T23:52:44 [instancer/varstore] Change chars_t storage scheme Slows down. Gonna revert. Apparently builtin popcount is not fast unless built for archs that support it.
Behdad Esfahbod 3dc5e3d6 2025-09-11T23:27:51 [instancer/varstore] Consolidate chars_t logic
Behdad Esfahbod 9d971169 2025-09-11T23:10:50 [instancer/varstore] Add a chars_t type
Behdad Esfahbod 266e1c24 2025-09-11T20:12:39 [instancer] Short-circuit some work in gain_from_merging
Behdad Esfahbod a34f8b31 2025-09-11T19:10:05 [instancer] Use bitset instead of vector for VarStore optimizer columns ~30% faster on GoogleSansFlex.
Behdad Esfahbod 23e40cd7 2025-09-11T16:53:44 [instancer] Reduce mallocs in gain_from_merging
Khaled Hosny b7c55efe 2025-08-26T00:28:12 [subset] Fix shaping behaviour when pruning empty mark sets See https://github.com/harfbuzz/harfbuzz/issues/5499
Behdad Esfahbod 7b56d3a1 2025-07-26T05:35:57 [ot-layout] s/hb_ot_lookup_cache_t/hb_ot_layout_mapping_cache_t/g
Behdad Esfahbod a220479f 2025-07-26T06:10:31 Remove std::forward inside loops (#5424) * [iter,cff] Remove std::forward from inside loops Was moving multiple times, if args were movable. * [CPAL] Handle an error * [serialize] Remove another std::forward in a loop * [bit-page] Fix a static-analysis out-of-range warning Code was safe. Just rewrite. * [ot-layout] Remove another std::forward from inside a loop
Behdad Esfahbod 675f8ee6 2025-07-24T21:46:11 [scalar-cache] Fix sanitizer whining Fixes https://github.com/harfbuzz/harfbuzz/issues/5410
Behdad Esfahbod fc86cd92 2025-07-20T10:39:29 [DeltaIndexMap] Add a HB_HOT
Behdad Esfahbod bc51ad67 2025-07-20T02:58:47 [DeltaIndexMap] Micro-optimize
Behdad Esfahbod a6f20aa4 2025-07-20T02:43:54 [VarData] Optimize get_delta if column-count is zero This is common in certain workloads.
Qunxin Liu 5dbb8141 2025-07-11T08:58:01 [subset] AnchorFormat3: better check for when should downgrade to format1
Behdad Esfahbod 47089fe7 2025-05-28T17:10:22 Big misc changes - Make geometry types into templates taking float or double. - Changes to paint() transform elimination. - Add font->has_nonzero_coords and use it across. - Extensions to avar processing for otherwise invalid mappings.
Behdad Esfahbod 8eb2f07c 2025-05-26T13:21:25 Merge branch 'main' into HVF
Behdad Esfahbod 31653e6b 2025-05-24T16:51:41 Revert "[ItemVariationStore] Rewrite the main loop" This reverts commit 57b636fb13c7ef55d6f435b8f560df653f02612e.
Behdad Esfahbod 8e0243c4 2025-05-24T16:50:40 [ItemVariationStore] Rewrite the main loop Slows down slightly. Going to revert.
Behdad Esfahbod e69b3c41 2025-05-22T20:41:36 [ItemVariationStore] Speed up get_delta Another 15% in the same benchmark.
Behdad Esfahbod 227a5e11 2025-05-22T20:11:08 [VarRegionList] Inline evaluate() cache lookup Seeing 45% speedup in benchmark-font glyph_h_advances benchmark on a mega variable font!
Behdad Esfahbod a13fd9ae 2025-05-21T12:23:19 Merge branch 'main' into HVF
Behdad Esfahbod 35db5c09 2025-05-17T10:55:29 [TupleVariation] Micro-optimize more
Behdad Esfahbod 1e0b04bd 2025-05-17T10:46:46 [TupleVariation] Micro-optimize gvar-cache
Behdad Esfahbod f50490d6 2025-05-15T18:28:44 Add hb_scalar_cache_t
Behdad Esfahbod bf3dd7b9 2025-04-07T16:37:08 Merge branch 'main' into HVF
Behdad Esfahbod c7f98090 2025-04-07T16:36:42 [GPOS] Short-circuit variations if no axis set
Garret Rieger b1a0a4c2 2025-04-07T18:39:21 In OT::VarData::Serialize don't attempt to serialize an empty set of rows. Protects against incorrectly accessing rows[0] when rows is empty.
Behdad Esfahbod 13752124 2025-04-04T14:00:25 Fix compiler warnings
Behdad Esfahbod 7ba4e879 2025-04-04T12:39:10 [VarStore] Fix storage shift Use all bits. That's what I meant.
Behdad Esfahbod d30d7f6b 2025-04-03T22:25:34 [ItemVariationStore] Use atomic int for cache
Behdad Esfahbod 9cae040b 2025-04-03T22:18:14 [ItemVariationStore] Make cache atomic floats Doesn't work with intrinsic atomic implementations. Disabled that. Going through the C++11 atomics path now. Will fix in next commit.
Behdad Esfahbod 6f5b8d59 2025-04-03T01:52:03 [ot-font] Streamline advance cache management
Behdad Esfahbod 7da049ed 2025-04-02T15:18:44 [varStore] Add clear_cache()
Qunxin Liu 192d264a 2025-03-25T13:32:01 [subset] remove divisions when computing the cost of binary search
Behdad Esfahbod c81b1c43 2025-03-02T12:42:36 [MultiVarData] Remove a likely
Behdad Esfahbod 827be1b2 2025-02-25T10:23:10 Revert "[MultiVarStore] Micro-optimize" This reverts commit 13d98f1ded00d025b85816ceee056da6f121d555. This broke bots. I don't fully understand why tests pass locally.
Behdad Esfahbod 13d98f1d 2025-02-25T01:40:19 [MultiVarStore] Micro-optimize
Behdad Esfahbod 97a5c52a 2025-02-24T20:53:19 [VARC/MultiVarStore] Reduce malloc pressure more
Behdad Esfahbod 1ba90720 2025-02-23T21:34:54 [VARC] Speed up MultiVarData::get_delta
Behdad Esfahbod 01f02f55 2025-02-18T20:28:48 [COLR] Optimize NoVariation codepath
Behdad Esfahbod 24fe2be9 2025-02-06T11:55:23 [subset] Fix undefined-behavior
Behdad Esfahbod f22943a2 2025-02-05T18:51:11 [PairPos] Cache coverage as well Another 3% down in Roboto-Regular.
Behdad Esfahbod 3f40edbf 2025-02-05T17:25:27 [ClassDef] Add ability to use a cache
Behdad Esfahbod 4587e08a 2024-10-07T08:41:23 [VarStoreInstancer] Fix null deref Should fix this hopefully: https://github.com/harfbuzz/harfbuzz/actions/runs/11203732283/job/31141330056?pr=4885
Behdad Esfahbod 7a890c2e 2024-09-22T13:19:02 Add hb_barrier() to switches of unions https://github.com/harfbuzz/harfbuzz/pull/4864#issuecomment-2366923736
Qunxin Liu a141e25c 2024-08-30T10:09:00 [subset] remove unnecessary check on name IDs See: https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae The spec says they are expected to be in the font-specific name ID range (256–32767), though that is not a requirement in this Feature Parameters specification.
Dirk Lemstra 1c01944e 2024-07-20T11:21:49 Added forward declaration to fix build with Visual Studio 2017.
Behdad Esfahbod e8049ae9 2024-05-30T14:38:05 [VARC] Sanitize ConditionList Oops! Fixes https://oss-fuzz.com/testcase-detail/6610112583106560
Behdad Esfahbod 0037ee28 2024-05-24T08:10:15 Merge pull request #4578 from harfbuzz/varc-table `VARC` table
Garret Rieger 3f38ffd6 2024-05-13T18:50:43 [subset] Fix remaining double conversion warnings.
Behdad Esfahbod 13609790 2024-04-23T14:40:21 [VarStoreInstancer] Add cache argument Not used by any clients currently (which are COLR and VARC).
Behdad Esfahbod b32e0a70 2024-04-23T14:28:38 Comment
Behdad Esfahbod fff48b45 2024-04-23T14:20:31 Remove unnecessary comment Resolves https://github.com/harfbuzz/harfbuzz/issues/4677
Behdad Esfahbod cd1d8b8b 2024-04-23T14:18:06 [varc] Use multiVarStore instead of GDEF varStore That's what we agreed upon.
Behdad Esfahbod ac411f26 2024-04-23T13:26:53 [Condition] Finish evaluation of ConditionValue https://github.com/adobe-type-tools/opentype-spec-drafts/blob/main/condvalue_spec.md
Behdad Esfahbod 66cd7c04 2024-04-23T13:09:22 [Condition] Shuffle code around
Behdad Esfahbod d2ca8a59 2024-04-23T13:06:29 [Condition] Implement ConditionValue Doesn't fully work yet. Need to shuffle some code around first. Shift other Condition format numbers. Implements https://github.com/adobe-type-tools/opentype-spec-drafts/blob/main/condvalue_spec.md
Behdad Esfahbod 6129c726 2024-04-22T14:52:58 [varc] Use Condition instead of ConditionSet With more Condition formats. https://github.com/harfbuzz/boring-expansion-spec/commit/df7dcc4618b9dc003740d25c53afe30a8fc03fe2 https://github.com/harfbuzz/boring-expansion-spec/issues/147
Behdad Esfahbod fa6f123e 2024-03-27T11:06:28 [var] Add a fast path for coord == 0
Behdad Esfahbod 6af0c519 2024-03-23T15:22:40 [varc] Remove unused method
Behdad Esfahbod eaa1fb14 2024-03-23T11:39:58 [varc] Use an iterator to unpack TupleValues
Behdad Esfahbod 70990ac7 2024-03-23T09:59:08 [varc] Micro-optimize "* scalar"
Behdad Esfahbod 9c7d871b 2024-03-23T09:55:30 [varc] Fix return type
Behdad Esfahbod c13fc557 2024-03-23T09:49:03 [varc] Micro-optimize
Behdad Esfahbod 88eab447 2024-03-23T08:28:09 [varc] Remove unnecessary check As usual, our operator[] takes care of it.
Behdad Esfahbod 4e0845ab 2024-03-22T17:10:58 [varc] Micro-optimize
Behdad Esfahbod 7c874354 2024-03-20T15:34:24 [varc] Implement conditionSets
Behdad Esfahbod 72c9deb5 2024-03-16T13:50:31 [varc] Fixups Seems to work now!
Behdad Esfahbod edd1a444 2024-03-16T08:49:01 [varc] Flesh out VarComponent a bit
Behdad Esfahbod a94a5c63 2024-04-16T17:10:43 [varc] Add get_point_at to glyf/CFF2
Behdad Esfahbod 0f2fe755 2024-03-15T12:51:14 [varc] Add MultiItemVariationStore
Behdad Esfahbod 2ddd1a27 2024-03-15T12:27:44 [varc] Add MultiVarData
Behdad Esfahbod 0ee6164a 2024-03-14T19:30:18 [varc] Simplify a bit
Behdad Esfahbod 7b57a8a4 2024-03-04T14:54:29 [varc] Implement SparseVariationRegion
Behdad Esfahbod ae35e30b 2024-02-06T15:22:13 [VARC] Add SparseVarRegionAxis
Garret Rieger c84acc8e 2024-04-08T23:46:14 [subset] Fix fuzzer found memory leak. Fixes https://oss-fuzz.com/testcase-detail/6159925345583104.
Behdad Esfahbod 1cb47eff 2024-02-06T14:49:31 Rename VariationStore to ItemVariationStore
Behdad Esfahbod 7ee7e2e3 2023-11-04T15:02:28 [sanitize] Add remaining hb_barrier() annotations I'm sure I've forgot some. But this is a good start.
Behdad Esfahbod 30672c7e 2023-11-03T18:52:03 Add hb_barrier() And annotate some more.
Behdad Esfahbod cf49f3f2 2023-11-03T18:20:14 [sanitize] Add barrier()
Qunxin Liu aca55dbe 2023-11-03T10:51:37 [instancer] fix feature variations collect lookups We already know which record to keep, so just collect lookups and no need to check the substitutes_map
Qunxin Liu 091e538d 2023-10-26T12:52:08 [instancer] support partial instancing for FeatureVariations
Qunxin Liu e595fe75 2023-10-18T16:00:06 fix bots partial instancing tests are wrapped by experimenal_api, do not enable them in Makefile
Qunxin Liu 8ceed6ee 2023-10-18T15:43:40 [subset] fix Lookup.MarkFilteringSet to use the new indices