|
0952bc0a
|
2025-09-26T09:10:28
|
|
[subset] de-duplicate features (#5494)
|
|
54ab8f0d
|
2025-09-15T18:20:59
|
|
[repacker] make repacker object ids stable.
Prior to this change the object id for a vertex in the repacker graph is it's position in the topological ordering. As a result after each sorting the object ids change. This decouples the topological sorting from the object id assignments. A separate ordering list is retained. This simplifies handling around object ids which no longer needs to account for them shifting, and improves performance by eliminating the step of reassigned link object ids after each sort.
|
|
d6343fa3
|
2025-09-13T13:38:47
|
|
[instancer/varstore] Update test expectations
|
|
aa58b43d
|
2025-09-12T14:24:41
|
|
[subset] Introduce HB_SUBSET_FLAGS_RETAIN_NUM_GLYPHS. (#5547)
Used in conjunction with retain gids, when set the num glyphs from the input font will be preserved. Empty glyphs will be inserted as necessary to maintain the num glyphs value. Put under experimental for now.
|
|
c9480db9
|
2025-09-12T12:22:17
|
|
[instancer/varstore] Add a heuristic to speed up optimization
|
|
77d07304
|
2025-09-02T14:40:51
|
|
[subset] fix HVAR encoding width (#5523)
|
|
b7c55efe
|
2025-08-26T00:28:12
|
|
[subset] Fix shaping behaviour when pruning empty mark sets
See https://github.com/harfbuzz/harfbuzz/issues/5499
|
|
cd49b14b
|
2025-07-29T14:32:26
|
|
[subset] add more aggressive pruning for MarkLigPos and MarkMarkPos (#5434)
Remove lig/mark glyphs without defined anchor points after subsetting
|
|
879c4ac7
|
2025-07-24T14:13:16
|
|
[subset] MarkBasePos: remove base glyphs with empty base record
BaseRecord could become empty if all anchor offsets for retained mark
classes are null
|
|
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.
|
|
8eb2f07c
|
2025-05-26T13:21:25
|
|
Merge branch 'main' into HVF
|
|
fac64e58
|
2025-05-23T18:15:41
|
|
[instancer] add a test which checks calculation of vmtx tsb during CFF2 instancing.
|
|
a13fd9ae
|
2025-05-21T12:23:19
|
|
Merge branch 'main' into HVF
|
|
4e767271
|
2025-05-14T23:17:54
|
|
Add a test checks we can recover from cmap4 overflow.
|
|
aef3df50
|
2025-04-20T00:37:24
|
|
Merge branch 'main' into HVF
|
|
efcb7d3d
|
2025-04-11T23:34:06
|
|
[subset] close unicodes over bidi mirror variants during subsetting.
Fixes #5281. Does the closure by default, but I've introduced a new flag and option to disable this behaviour since some users may want to get the minimal set if they know they don't need the mirrored variants.
|
|
6b2563ff
|
2025-04-06T15:05:25
|
|
Merge branch 'main' into HVF
|
|
e5541a0b
|
2025-04-05T17:02:31
|
|
[subset/test/cmap14] Reduce tested combinations
Fixes https://github.com/harfbuzz/harfbuzz/issues/5254
|
|
d65fa934
|
2025-04-05T16:58:06
|
|
[subset/test/basics.tests] Reduce tested combinations
|
|
19b4c6e5
|
2025-02-25T13:39:59
|
|
[subset] "Fix" subset tests after recent fvar/avar precision changes
|
|
ea1434b8
|
2025-02-25T19:00:29
|
|
Split iup glyf partial instance tests into a separate set which ignores due to IUP rounding differences fonttools.
|
|
9a0cf8d6
|
2025-02-25T00:19:25
|
|
[test/subset/cff-japanese] Shrink test
Was taking too long.
|
|
084fb3ab
|
2025-02-25T00:16:27
|
|
[test/subset/cmap] Shrink test
Was taking more than the rest of the test suite combined.
|
|
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
|
|
622e9c33
|
2024-11-06T10:59:17
|
|
[instancer] fix for incorrect offset calculation when we have gvar padding
|
|
6fd76e1f
|
2024-09-17T13:50:10
|
|
[subset] offset format fix in gvar table
|
|
634778ef
|
2024-08-20T14:34:09
|
|
[subset] bug fix in post table
insert retain-gid holes when retain-gids is enabled
|
|
72502ef0
|
2024-08-12T14:08:06
|
|
[instancer] dont return false when variation data is empty after partial instancing
|
|
0db136b1
|
2024-05-09T11:49:48
|
|
[subset-cff] Shorten output of `encode_num_tp`
|
|
7975c9ca
|
2024-05-08T10:11:03
|
|
[instancer] bug fix for COLRv1, add missing mapping to VarIdx::NO_VARIATION
|
|
a5c9c826
|
2024-05-06T13:22:49
|
|
rename expected files from *.retain-all-codepoint.* to *.all.*
This is to fix file name too long error
tar: harfbuzz-8.4.0/test/subset/data/expected/sync_vmetrics/playwrite_mm.subset.default.retain-all-codepoint.SPED=25,YEXT=520,wght=100-400,slnt=18.iup_optimize.ttf: file name is too long (cannot be split); not dumped
tar: Exiting with failure status due to previous errors
|
|
f614a7d3
|
2024-05-02T10:05:18
|
|
[instancer] add/update tests for COLRv1 instancing
|
|
ebcdadbf
|
2024-05-03T14:24:56
|
|
[instancer] add tests for instantiating BASE table
|
|
2cfa5505
|
2024-03-27T23:21:57
|
|
[instancer] Switch to doubles for delta calculations.
FontTools uses double's internally so match FontTool's precision so we get the same results more often for floating point calculations.
|
|
6e874817
|
2024-03-27T17:47:57
|
|
[subset] add virtual links to keep the gdef varstore last.
|
|
71456071
|
2024-03-25T21:41:16
|
|
[subset] place the gdef var store at the end of the GDEF table.
It appears that some font processors assume it is the last sub table.
|
|
990fb14d
|
2024-03-28T22:32:55
|
|
[subset] Disable fonttools comparison in a few tests where rounding diffs show up.
Context: https://github.com/harfbuzz/harfbuzz/issues/4642
|
|
11f5dec7
|
2024-03-27T19:34:51
|
|
[subset] Move post apply mvar test intance position to avoid rounding diff.
|
|
975bd39b
|
2024-03-27T19:28:53
|
|
[subset] Match hb rounding to fonttools for avg char width.
Update Muli and Roboto input test fonts to recalc class values. FontTools recalcs class values during instancing while harfbuzz does not (like the ft subsetter).
|
|
ec46c4c2
|
2024-03-27T18:11:26
|
|
[subset] Update subset test suite to match some changes made to fonttools.
FontTools has added pruning functionality for code pages which we don't yet have in harfbuzz. Update our test runner to disable that for now. Also match fonttools and always recalc usFirst/LastCharIndex even if no prune unicode ranges is set.
|
|
cfbb6a68
|
2024-03-14T17:33:34
|
|
[subset] support BASE table subsetting (#4618)
* [subset] support BASE table
* [subset] add tests for BASE table subsetting
|
|
84771374
|
2024-01-26T15:45:32
|
|
[instancer] add tests for iup delta optimization
|
|
df735213
|
2023-12-06T09:50:29
|
|
[instancer-solver] port solver fix (#4519)
* [instancer-solver] port solver fix
from https://github.com/fonttools/fonttools/pull/3374
|
|
f1ac36ba
|
2023-11-15T11:38:41
|
|
[instancer] update hhea vertical metrics with OS/2 ones
|
|
2d001a0a
|
2023-11-08T11:11:51
|
|
[subset] OTS doesn't allow ligature attachment offset to be 0
|
|
9701b002
|
2023-11-06T22:14:31
|
|
[subset] Always place CFF1/2 char strings at the end of the packed table.
Makes the behaviour from HB_SUBSET_FLAGS_IFTB_REQUIREMENTS the default.
|
|
c6884377
|
2023-11-06T20:21:46
|
|
[subset] Add HB_SUBSET_FLAGS_IFTB_REQUIREMENTS flag.
When enabled the output subset conforms to the requirements for a base font to be patched by IFTB patches. IFTB is a proposed incremental font transfer patch. This new flag is set as experimental. Currently, setting this flag causes the output subset to also use long offsets for outline data in loca/glyf, gvar, CFF, and CFF2.
This change is a version of https://github.com/skef/harfbuzz/commit/3ae2fe2084d96f61d8ad1bbe42a6ef4e62ec830a rebased onto head w/ tests added.
|
|
d550e16a
|
2023-11-06T10:31:05
|
|
[instancer] Recalc avgcharwidth after instancing
|
|
6baf791e
|
2023-11-03T11:06:07
|
|
[instancer] add tests
|
|
31b5b2b1
|
2023-11-02T09:08:36
|
|
[instancer] add tests for valueformat
|
|
413af0a9
|
2023-11-02T11:14:48
|
|
[instancer] When partial instancing, subset LigCaretList after VarStore instantiation
|
|
f6f35f73
|
2023-10-27T09:31:07
|
|
[instancer] add tests for feature variations partial instancing
|
|
ce466989
|
2023-10-18T15:49:57
|
|
[subset] update tests
to reflect changes in GDEF.MarkGlyphSetsDef and Lookup.MarkFilteringSet
|
|
57dac23d
|
2023-10-17T17:11:13
|
|
[instancer] add tests
Also update tests to gei rid of no-tables-with-item-variations profile
|
|
bbd53fcf
|
2023-10-10T21:41:42
|
|
Remove glyph_map test that uses retain gids.
We no longer allow the use of glyph map + retain gids (see: https://github.com/harfbuzz/harfbuzz/blob/main/src/hb-subset-plan.cc#L817). Also add the test to the meson file so it will be run by default.
|
|
2415d5f2
|
2023-09-27T13:33:09
|
|
[instancer] update tests to include GDEF/GPOS tables
|
|
ef4ff1d6
|
2023-09-20T11:35:33
|
|
[instancer] make varstore items sorting method match fonttool's
Also update expected tests
|
|
2d2818c0
|
2023-09-20T10:30:47
|
|
[instancer] update expected tests to include HVAR/VVAR tables
|
|
6e49128a
|
2023-09-01T10:27:40
|
|
[instancer] always check and update default wght/width/slnt if necessary
Sometimes default values in original file are incorrect, and if default value for an axis is not changed, then these values won't be updated
|
|
7b5daff5
|
2023-08-31T17:50:34
|
|
[instancer] add tests for mvar partial instancing
|
|
bea26446
|
2023-08-15T14:20:54
|
|
[instancer] reference all points for gvar
If a point is not referenced and delta is not inferred, set delta to 0
|
|
77b158c7
|
2023-08-07T16:02:02
|
|
[instancer] add tests for gvar partial instancing
|
|
77a81554
|
2023-05-04T23:01:56
|
|
[subset] Add some basic tests for a provided glyph map.
|
|
1d31da91
|
2023-04-25T15:34:06
|
|
Merge pull request #4205 from harfbuzz/gvar-optimize
Gvar optimize
|
|
e41f3171
|
2023-04-25T20:54:27
|
|
[subset] Update expectation files for full_instance tests.
|
|
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.
|
|
3db6baa2
|
2023-04-17T20:01:17
|
|
[subset] add test for lig glyph fix.
|
|
14b9d8d5
|
2023-04-14T20:44:15
|
|
[subset] add --no-layout-closure flag.
Disables layout glyph closure. Fixes #4192.
|
|
96ed2072
|
2023-04-04T10:33:58
|
|
[instancer] update bound metrics for CFF2 instancing
|
|
c1acfe99
|
2023-03-22T19:06:58
|
|
[instancer] bug fix in TupleVariationData get_size ()
We need to iterate TupleVariationHeader when calculating the total size
|
|
ab87d7d2
|
2023-03-20T12:24:22
|
|
[instance] add tests for colrv1 full instancing
|
|
a84cae42
|
2023-03-15T02:39:57
|
|
[subset] Don't add invalid gids (-1) to the glyphset when loading glyph map from the accelerator.
|
|
204e155a
|
2023-03-14T10:25:31
|
|
[subset] Add tests for collecting name_ids from STAT and FeatureParams
|
|
a975ec48
|
2023-02-14T13:26:59
|
|
[instancer] apply cvar deltas
|
|
605aed05
|
2023-02-24T10:17:32
|
|
[instancer] bug fix in post table applying mvar deltas
|
|
ddd0f7f4
|
2023-02-22T20:23:34
|
|
[subset] Add a test for CFF2 instancing.
Adds option to disable the fonttools comparison check in the test. This is needed since CFF2 instancing is not yet supported in fonttools.
|
|
af1e605b
|
2023-02-10T11:08:05
|
|
[instancer] bug fix
It's possible that length of all_points equals to 4 for non-empty
glyphs: a composite glyph which contains only one child glyph that is
empty.
|
|
61559568
|
2023-01-27T11:05:13
|
|
[subset/COLR] add tests for copying varStore
|
|
5e868703
|
2023-01-25T12:27:16
|
|
[instancer] compute head/maxp values using only non-empty glyphs
|
|
27f72f0d
|
2023-01-24T16:08:32
|
|
[instancer] avoid double free for compiled glyph bytes
also increase the HB_GLYF_MAX_POINTS limit to 20000 cause the test file has a
.notdef glyph which is a composite glyph and has 10176 points after
get_points() call
|
|
89d33255
|
2023-01-20T14:15:19
|
|
[instancer] add tests
|
|
ea1ee0d4
|
2023-01-14T00:23:53
|
|
[instance] drop and don't collect lookups from feature variations when fully instancing.
This previously incorrectly collected lookups that could be reached via feature variations that are dropped and not activated by the current instance position.
|
|
c324d999
|
2023-01-12T18:15:07
|
|
[instancing] Add tests for MVAR instancing.
|
|
64e8707e
|
2022-11-24T18:24:50
|
|
[subset] don't use hb repacker when generating test files from fonttools.
|
|
ff3cac0c
|
2022-11-23T23:50:49
|
|
[subset] Fix unecessary trailing 0 bytes left by ContextFormat2 pruning.
Uneeded rules where beind removed from the count by the bytes for them was being left in the font.
|
|
8a552483
|
2022-10-27T09:43:07
|
|
[instance] update OS2/.usWeightClass and .usWidthClass when
no-prune-unicode-ranges option is enabled
|
|
db22bfb3
|
2022-10-17T18:37:07
|
|
[subset] Remove Franklin from the tests which is not an open source font.
|
|
d5fc4a73
|
2022-09-14T14:43:20
|
|
[instance] add tests for featureVariations
Also updated the script that is used to generate tests.With fonttools,
we now do instancing first and then subsetting.
With different order of subsetting and instancing operations on the same
VF file, fonttools seems to generate 2 different font files with different
glyph set.
1. do subsetting and then instancing: this seems result in a larger glyph
set in the font file. Lookups are collected from both retained features
and all possible alternate featurevariations, this leads to a larger
glyph set after glyph closurei. And instancer doesn't redo glyph
closure, it does lookups pruning only.
2. do instancing and then subsetting: lookups are collected from
features that are replaced already and possible alternate feature
variations
|
|
88c02e00
|
2022-08-26T08:34:12
|
|
[instance] add tests for full instancing
Also update previous tests with GDEF/GPOS tables
|
|
f887ee0c
|
2022-07-27T13:18:21
|
|
[instance] update post.italicAngle
Add tests for instancing glyf/hmtx
|
|
f1a69ff1
|
2022-06-30T16:22:15
|
|
[instance] update scripts for testing instancing
|
|
d6f579e9
|
2022-06-30T22:22:03
|
|
[subset] add tests that exercise script filtering.
|
|
858570b1
|
2022-06-01T18:08:09
|
|
[subset] add some additional 32bit var store cases.
Test the path where the 32 bit delta is not included.
|
|
9c41bfe1
|
2022-06-01T17:53:14
|
|
[subset] Add subset test of font with 32 bit delta in a var store.
|
|
b051f3fa
|
2022-05-05T23:27:34
|
|
[subset] Fix cpal subsetting when there are partial palette overlaps.
The existing code doesn't correctly handle the case where palettes partially overlap in the color record array. This changes the subsetting to only share entries in the color record array when palettes have the same first color index. Partially overlapping palettes will be converted to disjoint segments in the color record array.
Updates one of the color tests to use multiple palettes.
Also fixes fuzzer: https://oss-fuzz.com/testcase-detail/5568200165687296.
|
|
7cb002cb
|
2022-03-14T11:40:35
|
|
[subset] bug fix in prune_langsys
we should not cache visited langsys cause 2 different Record<Langsys>
could have different Tag while pointing to the same Langsys, a langsys
is redundant in Record<Langsys> A does not mean it's redundant in Record
B. Same thing for visited_script.
Also adding the number of features in the LangSys's feature list to the
visited langsys count so it's more accurate.
Plus some improvement in langsys compare()
|
|
bc899650
|
2022-01-28T13:54:10
|
|
[subset] Fix for issue #3397.
cur_intersected_glyphs gets modified during recursion leading to incorrect filtering of sub tables in some cases. So don't use cur_intersected_glyphs. Instead just add an additional entry onto the parent_active_glyphs () stack.
Additionaly expands NotoNastaliqUrdu tests to include coverage of the issue from #3397.
|
|
706014f6
|
2021-12-01T20:20:12
|
|
[subset] (Chain)ContextSubst glyph_closure fix
- When pos_glyphs is empty, use current full glyphs set as input for
subsequent recursive closure process
- Also increase max_lookup_visit_count to 35000 cause a real font file hit
previous limit 20000 and some lookups are dropped unexpectedly
|
|
51655a07
|
2021-12-05T19:27:57
|
|
[subset] COLR : only include glyphs after COLR closure
|
|
74b46b29
|
2021-12-02T19:50:16
|
|
[subset] MATH: don't serialize coverage table when iterator is empty
when iterator is empty, just set coverage offset to 0.
serialize() in coverage will at lease write out a 16-bit format header.
|