src/hb-ot-layout-common.hh


Log

Author Commit Date CI Message
Behdad Esfahbod 7989702a 2023-08-06T14:17:50 Audit and fix up serialize_subset uses Fixes https://github.com/harfbuzz/harfbuzz/issues/4362
Qunxin Liu 730f579f 2023-07-18T15:09:36 [instancer] store float value rather than F2DOT14 int value in axes_location map
Qunxin Liu 6c25c752 2023-07-17T13:47:38 [instancer] use renormalized values when instantiating Condition table
Behdad Esfahbod a5628848 2023-07-15T13:59:10 [subset] Speed up a couple of set iteration loops Need to speed up set::next_range() for the second one to have any effect.
Behdad Esfahbod 87f1b80d 2023-06-25T23:14:01 [bimap] Write with a map & vector combo Faster for getting keys. Speeds up 10% in: BM_subset/subset_glyphs/RobotoFlex-Variable.ttf/retaingids/10
Behdad Esfahbod ec0fbf8f 2023-06-23T16:13:13 [subset/ClassDef] Micro-optimize use_class_zero calc Probably never matters.
Behdad Esfahbod 67b16247 2023-06-07T16:15:48 [set] Simplify a few set iterations as range loop
Behdad Esfahbod 82741304 2023-06-04T09:41:41 [subset] start_embed never returns nullptr Remove checks.
Behdad Esfahbod ca27925d 2023-06-03T16:18:15 Use hb_codepoint_pair_t in more places
Qunxin Liu efc77dc6 2023-05-04T10:59:09 [instancer] update code for collecting FeatureVariationRecord
Behdad Esfahbod 4ad443d5 2023-05-08T10:14:43 [Coverage/ClassDef] Don't call qsort if sorted already
Behdad Esfahbod 8df5cdbc 2023-05-07T15:49:50 [Coverage/ClassDef] Handle glyphID overflow in serialize
Behdad Esfahbod 86658df5 2023-05-05T16:10:46 [ClassDef] Fix a fuzzer issue Don't qsort an array that failed to allocate! Fixes https://oss-fuzz.com/testcase-detail/6512559172485120
Behdad Esfahbod 1be39729 2023-05-04T13:18:34 [subset] Support unordered glyphlist in Coverage/ClassDef serialize
Qunxin Liu b9b85da3 2023-04-27T11:17:24 [instancer] no need to create hb_font_t object when fetching delta from varstore
Behdad Esfahbod f6803b06 2023-04-25T14:46:44 [VarRegionAxis] Micro-optimize peak==0 is common.
Behdad Esfahbod f91929d6 2023-04-25T14:42:00 Minor return floats instead of doubles from function Not that any compiler complained...
Garret Rieger 2175f5d0 2023-04-24T21:13:18 [subset] Fix inefficient ItemVariationStore subsetting w/ retain_gids. ItemVariationStore is relying on the assumption that the inner_map is populated for all output glyphs, this is not true for subsetting operations with retain gids enabled. Fixes fuzzer timeout: https://oss-fuzz.com/testcase-detail/4575222591520768.
Qunxin Liu 125450d2 2023-03-13T15:43:29 [subset] collect name_ids for FeratureParams
Behdad Esfahbod 0f33ea8c 2023-01-27T11:26:57 [subset/COLR] Copy VarStore Fixes https://github.com/harfbuzz/harfbuzz/issues/4085
Behdad Esfahbod 2fede3ef 2023-01-26T12:23:12 [layout] Fix a return_trace
Behdad Esfahbod be8a87c4 2023-01-21T15:00:41 Move TRACE_DISPATCH after may_recurse() Such that we don't get memory access issues if DEBUG_SANITIZE is on and may_recurse() returns false.
Behdad Esfahbod 65d3db37 2023-01-11T12:36:54 [subset-plan] Simplify user_axes_location allocation
Behdad Esfahbod 60418fcb 2023-01-11T12:33:25 [subset-plan] Simplify axes_index_map allocation
Behdad Esfahbod b2007abf 2023-01-11T11:27:22 [subset-plan] Simplify glyph_map_gsub allocation
Behdad Esfahbod 9e24873c 2023-01-11T11:12:07 [subset-plan] Simplify gsub/gpos_feature_substitutes_map allocation
Behdad Esfahbod 01208c7c 2023-01-11T11:10:28 [subset-plan] Simplify gsub/gpos_feature_record_cond_idx_map allocation
Behdad Esfahbod 06039db0 2023-01-11T11:07:31 [subset-plan] Simplify gsub_langsys and gpos_langsys allocation
Behdad Esfahbod 1a00ab69 2023-01-11T10:56:16 [subset-plan] Simplify gsub_lookups and gpos_lookups allocation
Behdad Esfahbod 1a716bad 2023-01-11T10:51:48 [subset-plan] Simplify gsub_features and gpos_features allocation
Behdad Esfahbod 4de66eec 2023-01-11T10:40:54 [subset-plan] Simplify layout_scripts allocation
Behdad Esfahbod c8486b63 2023-01-07T14:15:17 [open-type] Add to_int to fixed types To make sure we don't accidentally forget to_float(). As we did recently in COLRv1 code.
Behdad Esfahbod ae208963 2022-12-26T12:30:39 Add hb-limits.hh
Behdad Esfahbod 300d82ce 2022-12-13T10:48:56 Fix compiler warning
Behdad Esfahbod 9a3f0be2 2022-12-11T13:40:53 [COLR] Apply variations in get_extent
Behdad Esfahbod 22b0390e 2022-12-05T09:43:36 Revert "[VarData] Don't clear memory we are going to fill in completely" This reverts commit e28e2dad03a453c5e5c4c5a9d6fd276182c5f80b. This made fuzzer unhappy. I'm not sure how. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54044
Behdad Esfahbod e28e2dad 2022-12-03T15:56:43 [VarData] Don't clear memory we are going to fill in completely
Behdad Esfahbod 0e13b4ab 2022-12-03T15:50:24 [VarData] Optimize main loop slightly
Behdad Esfahbod ad17c0ac 2022-12-03T14:56:57 [VarData] Whitespace
Behdad Esfahbod e7eb445d 2022-12-03T14:56:00 [VarData] Optimize longWord calculation
Behdad Esfahbod f2c980be 2022-12-03T14:49:38 [VarData] Optimize wordCount calculation 6% speedup in RobotoFlex-Variable/900 benchmark.
Behdad Esfahbod 3641b0e0 2022-12-03T14:26:21 [VarData] Optimize serialize()
Behdad Esfahbod e155f123 2022-12-03T14:14:39 [VarData] Minor save a variable
Behdad Esfahbod 5596a730 2022-12-03T13:33:48 [layout] Speed up ClassDefFormat2 intersects
Behdad Esfahbod 85e7263b 2022-12-03T13:28:02 [VariationStore] Minor access array directly
Behdad Esfahbod 58e9df13 2022-12-03T13:04:00 [Device] Serialize VariationDevice zerocopy
Behdad Esfahbod 44a5de3a 2022-12-03T12:50:32 [Device] Save a snap/revert
Behdad Esfahbod 93328ced 2022-12-03T12:49:26 [Device] Save a map get()
Behdad Esfahbod 02bc4dd6 2022-12-03T10:07:16 Use hb_enumerate instead of hand-coding
Behdad Esfahbod 57808609 2022-12-01T14:03:56 [VarData] Move an unlikely
Behdad Esfahbod 8805a866 2022-11-30T17:15:00 [ClassDef2] Write a few loops as range-based for
Behdad Esfahbod 2fecf2aa 2022-11-29T21:25:01 [ClassDef] Minor rename
Behdad Esfahbod 8f632ca8 2022-11-29T21:23:35 [ClassDef] Write another loop as range for
Behdad Esfahbod 87b12aee 2022-11-29T21:18:48 [ClassDef] Write a couple loops as range for
Behdad Esfahbod ccd40c84 2022-11-29T21:14:44 [ClassDef] Optimize intersected_class_glyphs
Behdad Esfahbod 44c585a6 2022-11-29T20:51:58 [ClassDef] Fix disabled codeblock
Behdad Esfahbod 9b7617d4 2022-11-29T20:29:58 [ClassDef2] Use a faster algorithm in subset() Speedup across the board; up to 40% for MPlus1 at small sizes.
Behdad Esfahbod ae5e6d56 2022-11-29T15:48:38 [ClassDef2] Micro-optimize
Behdad Esfahbod dc823340 2022-11-29T15:26:55 Remove a couple of unneeded .iter() invocations
Behdad Esfahbod d2a2670e 2022-11-28T19:42:27 [iter] Simplify has() interface implementations
Behdad Esfahbod 06e2147a 2022-11-24T14:56:04 More call set->next() directly
Behdad Esfahbod 196c9db0 2022-11-24T14:51:52 Call ->next() directly
Behdad Esfahbod 59c45f6d 2022-11-22T12:54:50 Use hb_memcpy instead of memcpy consistently
Behdad Esfahbod a0bde1e1 2022-11-16T21:27:12 [open-type] Remove (Sorted)ArrayOf.sub_array()
Garret Rieger 83769b9c 2022-10-21T22:37:32 [subset] add comment for why we retain empty lookups.
Garret Rieger 70e2de2b 2022-10-21T22:33:17 [subset] Always output Lookup's even if they are empty. The rest of layout subsetting depends on lookup indices being consistent with those computed during planning. So if an empty lookup is discarded during the subset phase it will invalidate all subsequent lookup indices. Generally we shouldn't end up with an empty lookup as we pre-prune them during the planning phase, but it can happen in rare cases such as when a subtable is considered degenerate (eg. #3853)
Joel Auterson c813f842 2022-10-20T19:45:23 Make build work for arm-none-eabi
Qunxin Liu b706c6f7 2022-09-12T13:58:55 [instance] update FeatureList with variations
Qunxin Liu 8f3a7017 2022-09-09T15:00:37 [instance] support FeatureVariations table
Qunxin Liu f4813e3b 2022-09-09T10:34:09 [instance] update collect_lookups/prune_features()/closure_features() with variations Some features will be substituted with variations, so we do not collect lookups from the original feature tables.
Qunxin Liu 64e2f2fc 2022-09-09T09:36:19 [instance] store active featurevariation record/condition idxes in the plan
Qunxin Liu 9ab6605f 2022-08-02T09:54:29 [instance] update GDEF table
Qunxin Liu b72995ff 2022-08-01T14:48:01 [instance] GDEF table: collect both varidxes and deltas
Qunxin Liu e03043bd 2022-08-01T11:37:47 [subset] don't let VariationStore subset() produce inner_maps Make it a subset-planning object so VariationStore can subset to specified inner_maps. Also add a layout_variation_idx_delta_map in subset_plan
Qunxin Liu 7fde6ab0 2022-08-05T13:33:22 fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49790
Behdad Esfahbod c67c1b74 2022-08-04T11:42:22 VarStore: simplify again
Qunxin Liu d831e935 2022-08-04T10:15:21 bug fix in VarData get_delta () when LONG_WORDS flag is set, item row is not computed correctly lcursor should be interpreted as INT32
Behdad Esfahbod 3da50c50 2022-07-29T11:40:33 Remove unused const
Garret Rieger 3f7a74ff 2022-07-19T21:50:13 [repacker] WIP extension promotion implementation.
Behdad Esfahbod 4cb83967 2022-07-23T10:59:42 [subset/ClassDefFormat2] Fix timeout Fixes https://oss-fuzz.com/testcase-detail/5417800474165248
Behdad Esfahbod f94a3ba1 2022-07-23T10:36:08 [varStore] Better protect against HB_NO_VAR builds
Behdad Esfahbod 5a9c7930 2022-07-22T21:33:15 Add HB_NO_BEYOND_64K
Behdad Esfahbod 7cdde6a2 2022-07-21T17:17:59 [ClassDef] Write a loop as range for
Behdad Esfahbod 00dfbbce 2022-07-21T11:39:32 [Coverage] Rename and templatize intersected_coverage_glyphs
Behdad Esfahbod 8d923363 2022-07-20T12:08:18 [layout] Reduce number of closure rounds
Behdad Esfahbod f3151b65 2022-07-17T16:19:28 [ArrayOf family] Use memory barrier before accessing array Without it, the compiler was reordering and batching the read of array length and array[0] if the 0'th member was accessed constantly and function was inlined. This felt safe to the compiler because HB_VAR_ARRAY is 1, but could be unsafe actually. The memory barrier disallows that. This was found by afl/honggfuzz address sanitizers. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49187
Behdad Esfahbod 1327d8e3 2022-07-15T16:03:38 [layout-common] Reshuffle code so Feature is defined before it's used
Garret Rieger c1e280ea 2022-07-13T22:43:38 [reorg] Move Coverage, RangeRecord into new namespace layout.
Behdad Esfahbod df7eebf4 2022-07-11T14:14:55 [>64k:layout] Fix layout of RangeRecord https://github.com/be-fonts/boring-expansion-spec/issues/30
Behdad Esfahbod 9ef9fc01 2022-07-11T13:29:23 [>64k:layout] Templatize GSUBGPOSFormat1
Behdad Esfahbod 5fd0a3f0 2022-07-11T13:10:04 [>64k:layout] Templatize GSUBGPOSFormat1
Behdad Esfahbod ca5c8a64 2022-07-06T13:02:49 [>64k:layout:Coverage] Implement format 3/4 Implements rest of https://github.com/be-fonts/boring-expansion-spec/issues/30
Behdad Esfahbod 25de6fb4 2022-07-06T12:52:03 [>64k:layout:ClassDef] Implement format 3/4 This implements part of https://github.com/be-fonts/boring-expansion-spec/issues/30
Behdad Esfahbod 9286526f 2022-07-06T12:26:58 [>64k:layout] Templatize Coverage & ClassDef Have not added new formats yet.
Behdad Esfahbod e8cce9d1 2022-07-05T14:05:43 [>64k:layout] Add SmallTypes & MediumTypes
Behdad Esfahbod 8a971d01 2022-07-06T12:37:43 [layout] Use is_source_of instead of is_iterator
Behdad Esfahbod 0dc0da05 2022-07-06T12:33:37 [iter] Add hb_is_sorted_iterator(_of)
Garret Rieger 587969af 2022-06-30T21:37:42 [subset] Drop scripts that are not in the layout_scripts list.
Behdad Esfahbod b96622d1 2022-06-05T02:45:41 [layout] Use a cache for main input ClassDef of (Chain)ContextLookupFormat2 This commit adds a per-lookup caching infrastructure to GSUB/GPOS, and uses it to cache input ClassDef.get_class value for (Chain)ContextLookupFormat2. For fonts heavy on use of heave class-based2 context matching, this shows a good speedup. For NotoNastaliqUrdu for example, I observe 17% speedup. Unfortunately not many other lookups can use a cache like this :(. https://github.com/harfbuzz/harfbuzz/pull/3636
Behdad Esfahbod e6409d39 2022-06-05T06:57:37 Revert "[layout] Use a cache for main input ClassDef of (Chain)ContextLookups" This reverts commit 57d1c08739d0acd94b96da2f9d5dd6c0ff3b3722. Err. This was an accident.