src/hb-subset-plan.hh


Log

Author Commit Date CI Message
Behdad Esfahbod bdbcd8f6 2025-07-24T22:01:26 [subset] Comment
Garret Rieger 5afbd187 2025-04-09T22:48:27 [subset] Split subset plan variations function into separate file. Compile times for hb-subset-plan.cc go from 16s -> 13s.
Garret Rieger d3ccdcdd 2025-04-09T22:26:59 [subset] Move GDEF subset planning into hb-subset-plan-layout.cc
Garret Rieger b33f2e26 2025-04-09T22:11:12 [subset] Start splitting layout specific subset plan functionality. The aim is to reduce the compiled time of hb-subset-plan.cc which on my machine takes almost 30s to compile.
Behdad Esfahbod 40c77a1c 2025-02-25T18:37:20 Remove a redundant method
Behdad Esfahbod aaecaa4c 2025-02-24T22:03:00 [vector] Disallow accidental creation of transient vectors Fix sites that were doing this under our feet. This lowers precision of some instancing operations from double to float, which modifies a few results by rounding error. TODO: Update tests.
Garret Rieger b0d52abe 2024-10-23T20:49:44 [subset] consider variation selectors subsetting cmap14 cmap14 subsetting code was not considering variation selectors in the input unicode set when deciding which variant glyphs to keep. This updates subsetting to only keeps variant glyphs if their variation selector code point is in the input unicodes set. For https://github.com/harfbuzz/harfbuzz/issues/4911
Behdad Esfahbod 031fdb1c 2024-02-06T14:51:41 Rename VarStoreInstancer to ItemVarStoreInstancer
Qunxin Liu a3e3473c 2024-01-26T10:34:58 [instancer] when iup delta opt is enabled, add default deltas to coords
Qunxin Liu 6c017a11 2023-11-01T09:54:46 [instancer] SinglePos/PairPos: do not strip_hints for partial instancing
Qunxin Liu eb116e16 2023-07-28T15:27:07 [instancer] Add new_gid->contour_points vector map in subset plan - Add an API in Glyph to export original contour_points vector, which is needed by infer_deltas when merging tuple variations with the same tent
Behdad Esfahbod 7344411c 2023-06-23T10:27:44 [subset] Sprinkle some HB_NO_SUBSET_CFF
Behdad Esfahbod 43ec78f9 2023-06-23T10:22:30 [subset/cff] Cache CFF accelerator in hb_subset_plan_t This shows 7% speedup in: BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/retaingids/10
Behdad Esfahbod cb5f4d0c 2023-06-22T18:46:33 [subset-plan] Avoid a copy in freeing name-table-overrides
Behdad Esfahbod e263c3cc 2023-06-03T20:20:57 [subset/hdmx] Speed up
Qunxin Liu 22cca43d 2023-04-20T14:37:29 [instancer ]update internal hashmap to use Triple instead of single value -Added hb-subset-instancer-solver.hh file and moved Triple struct to the head file
Behdad Esfahbod 5468b08c 2023-05-05T15:49:38 [subset-plan] Move all object members to a new file To automatically check for their errors.
Garret Rieger 79233a14 2023-03-17T00:58:58 [subset] fix incorrectly specified lock. Lock variable must have a name or it will immediately destruct.
Qunxin Liu d15551c6 2023-01-25T11:01:08 [instancer] update head table flagbit: allXMinIsLsb
Qunxin Liu 1f948e7f 2023-01-17T15:16:17 [instancer] store recalculated head/maxp info in subset plan
Qunxin Liu 92122421 2023-01-13T11:42:58 [instancer] update vhea/hhea tables
Behdad Esfahbod ed023f66 2023-01-12T17:04:24 Enable -Wformat-signedness And fix the codebase.
Behdad Esfahbod c5281052 2023-01-12T12:53:46 [subset-plan] Move construction to constructor
Behdad Esfahbod ef005bc8 2023-01-12T12:09:14 [subset-input] Fix destruction Ouch! Object was already destroyed at that point before.
Behdad Esfahbod 4e7c8039 2023-01-11T12:38:26 [subset-plan] Simplify name_table_overrides allocation
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 8265277c 2023-01-11T12:32:04 [subset-plan] Simplify axes_location allocation
Behdad Esfahbod d54902c6 2023-01-11T12:29:25 [subset-plan] Simplify axes_old_index_tag_map allocation
Behdad Esfahbod 9f4c8fb7 2023-01-11T12:28:18 [subset-plan] Minor move code around
Behdad Esfahbod a34a204b 2023-01-11T12:27:19 [subset-plan] Simplify unicodes allocation
Behdad Esfahbod 75b33cb0 2023-01-11T12:24:35 [subset-plan] Simplify hmtx_map / vmtx_map allocation
Behdad Esfahbod 33ce3a0d 2023-01-11T12:21:26 [subset] Minor adjust a couple types
Behdad Esfahbod 67eefebf 2023-01-11T11:44:09 [subset-plan] Simplify user_axes_location destruction
Behdad Esfahbod b2007abf 2023-01-11T11:27:22 [subset-plan] Simplify glyph_map_gsub allocation
Behdad Esfahbod bd4b040e 2023-01-11T11:23:48 [shape-plan] Simplify glyphs_requested allocation
Behdad Esfahbod c51d3368 2023-01-11T11:22:22 [subset-plan] Simplify no_subset_tables allocation
Behdad Esfahbod 999be721 2023-01-11T11:21:17 [subset-plan] Simplify drop_tables allocation
Behdad Esfahbod b33eb9ec 2023-01-11T11:20:04 [subset-plan] Simplify layout_variation_idx_delta_map allocation
Behdad Esfahbod 9c45d98f 2023-01-11T11:16:18 [subset-plan] Simplify colr_palettes allocation
Behdad Esfahbod b74a2651 2023-01-11T11:15:15 [subset-plan] Simplify colrv1_layers allocation
Behdad Esfahbod 89905368 2023-01-11T11:13:49 [subset-plan] Simplify sanitized_table_cache 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 5fc91de2 2023-01-11T11:04:17 [shape-plan] Simplify _glyphset_colred allocation
Behdad Esfahbod efafe7aa 2023-01-11T11:03:19 [subset-plan] Simplify _glyphset_mathed allocation
Behdad Esfahbod 113a1700 2023-01-11T11:01:11 [subset-plan] Simplify _glyphset_gsub allocation
Behdad Esfahbod 4a9268f2 2023-01-11T11:00:02 [subset-plan] Simplify _glyphset 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 78aa9f1e 2023-01-11T10:47:40 [subset-plan] Simplify name_ids allocation
Behdad Esfahbod cfb48f91 2023-01-11T10:45:02 [subset-plan] Simplify name_languages allocation
Behdad Esfahbod e4ca0fe4 2023-01-11T10:43:01 [subset-plan] Simplify layout_features allocation
Behdad Esfahbod 4de66eec 2023-01-11T10:40:54 [subset-plan] Simplify layout_scripts allocation
Behdad Esfahbod c632a164 2023-01-06T11:01:25 [subset/cff] Support instancing
Qunxin Liu 8eadb836 2022-11-10T10:33:26 [subset] Update hb_subset_input_override_name_table API Override the name string for the NameRecord identified by name_id, platform_id, encoding_id and language_ids specified by the user. If a record with specified name_id does not exist, this API will create a new NameRecord with provided info and insert it to the name table.
Behdad Esfahbod ff419789 2022-12-02T16:25:26 [subset-plan] Sort unicode_to_new_gid_list when needed
Behdad Esfahbod 00f2657b 2022-11-29T13:49:15 [subset] Accelerate sanitize-table-cache Big wins all across small subsets BM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/10                              -0.1140         -0.1129             0             0             0             0 BM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/10                               -0.4717         -0.4714             0             0             0             0 BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10                    -0.8147         -0.8146             0             0             0             0 BM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/10                  -0.3248         -0.3242             0             0             0             0 BM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/10                             -0.1262         -0.1260             0             0             0             0 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10                -0.0308         -0.0309             0             0             0             0 BM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/10                       -0.1374         -0.1373             0             0             0             0 BM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/10                            -0.4555         -0.4555             0             0             0             0 BM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/10                             -0.4175         -0.4174             0             0             0             0 BM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/10                         -0.4214         -0.4214             0             0             0
Garret Rieger 2c0afde7 2022-11-23T20:24:40 [subset] add an inprogress accelerator to plan. This allows subset code to cache information into the accelerator during preprocess subset. Previously the accelerator was created at the end of subsetting.
Garret Rieger 463ae07e 2022-11-23T18:41:23 [subset] In the preprocess subset call always use long loca. Long loca is needed so that we can store the trimmed glyph bytes to allow us to safely skip trimming in the later subset.
Behdad Esfahbod a750cb01 2022-11-21T21:03:32 Simplify rvalue creation
Behdad Esfahbod cf20d2ec 2022-11-21T20:46:01 [map] Take const key
Behdad Esfahbod e0b06bd1 2022-11-21T16:09:39 [subset] Cache has_seac in accelerator Speeds up SourceHanSans-Regular/10000 benchmark by %25.
Behdad Esfahbod f6076890 2022-11-14T16:06:39 Hide all mentions of name_table_overrides behind EXPERIMENTAL_API Fixes https://github.com/harfbuzz/harfbuzz/issues/3872
Behdad Esfahbod ebc382a8 2022-11-14T15:59:46 Revert "Avoid use values () in hb-hashmap if value_t has an overriden operator &" This reverts commit b92e4cc0091e093f6941019e1a53cc04a137017a.
Qunxin Liu b92e4cc0 2022-11-14T08:54:24 Avoid use values () in hb-hashmap if value_t has an overriden operator &
Qunxin Liu 6314aa7d 2022-10-28T10:44:48 [subset] add an experimental API that can override name strings for specified name_id
Garret Rieger 515863e5 2022-10-13T23:42:00 [subset] Remove add accelerator flag, replace with new api method. Adds hb_subset_preprocess() which preprocesses the face and attaches accelerator data.
Garret Rieger 01481db5 2022-10-13T21:12:22 [subset] use accelerator unicode to gid map if available.
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 0a6c16a3 2022-08-08T13:47:39 [instance] instantiate fvar table Added an old->new axes_indices mapping in the subset plan
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 ac0e22fa 2022-07-22T09:37:09 [instance] update glyf/hmtx/vmtx tables
Garret Rieger 37d61afd 2022-08-18T21:05:48 [subset] add destructor to subset plan. This ensures that it's members get destructed before the plan itself is destructed, as hb_object_destroy calls the destructor for plan.
Qunxin Liu df55f840 2022-06-30T09:36:19 [instance] instantiate STAT table when axes are pinned at fixed locations restricting ranges is not supported yet.
Qunxin Liu 2a4773e4 2022-06-21T19:29:52 add option "--instance", store axes_location in subset_plan and drop all variation tables when all axes are pinned at default
Garret Rieger 29f149c1 2022-07-07T20:16:16 [subset] cache sanitized tables in subset plan to avoid sanitizing tables multiple times.
Garret Rieger 1bf051ef 2022-06-30T20:03:33 [subset] refactor feature tag filtering so it can be used for scripts as well.
Behdad Esfahbod f13a7954 2022-06-03T01:17:20 [subset] Convert another use of hashmap to unique_ptr
Garret Rieger adae2f22 2022-05-18T21:42:28 [subset-perf] Cache a glyph map for gsub. This allows us in some cases to avoid using glyph_set_gsub as a filter.
Garret Rieger f0c04114 2022-05-03T22:02:59 [subset] Embed unicode to gid list vector in subset plan.
Garret Rieger 088133d9 2022-05-02T21:29:16 [subset] cache cp to new gid list in subset plan. This avoids having to recompute the ordered list multiple times during cmap generation.
Garret Rieger b65e48a7 2022-02-11T12:44:58 [subset] Add subset plan to public API. Add the ability to create a subset plan which an be used to gather info on things like glyph mappings in the final subset. The plan can then be passed on to perform the subsetting operation.
Qunxin Liu 51655a07 2021-12-05T19:27:57 [subset] COLR : only include glyphs after COLR closure
Behdad Esfahbod 394f7729 2021-11-19T11:49:23 [map] Allow storing classes in the hashmap Fixes https://github.com/harfbuzz/harfbuzz/issues/3293 The trick was to change the type of the invalid key/value to be non-class.
Qunxin Liu ca7b9dae 2021-09-20T14:42:51 [subset] subset MATH table
Garret Rieger f9d8e4a9 2021-07-29T15:25:41 [subset] switch ..._set_flags to not take a mask.
Garret Rieger 46d4a5e6 2021-07-29T15:07:13 [subset] Convert subset plan to use a flags bit set.
Qunxin Liu 71b5509c 2021-07-20T20:05:35 [subset] support option --glyph-names
Garret Rieger a6c6cda4 2021-06-09T17:46:47 [subset] Add no subset tables and passthrough unrecognized tables to the subset api. Matches fontTools options.
Garret Rieger edb57a8d 2021-06-09T10:42:48 Make subset input const in the subsetting operation. Don't modify the subset input's sets.
Qunxin Liu eee7b459 2021-06-24T10:17:46 [subset] add option --no-prune-unicode-ranges
Qunxin Liu d07f789a 2021-06-09T15:36:40 [subset] support option "--notdef-outline"
Qunxin Liu cb5a6b5a 2021-05-19T17:33:46 [subset] support option --layout-features
Garret Rieger 73ff04a3 2021-05-18T16:54:01 [subset] add option to have the subsetter set the mac overlaps flag on each glyph.
Qunxin Liu f739e1dc 2021-05-11T11:44:32 [subset] subset both CPAL and COLRv1
Qunxin Liu e59ffe54 2021-04-01T12:01:19 [subset] COLRv1 layer/palette indices closure
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.