Garret Rieger
ace98cc65f
[subset] Only sanitize recursion depth in COLR.
2021-11-10 10:34:46 -07:00
Garret Rieger
f51b48c8e7
[subset] Fix fuzzer found memory leak.
...
Happens because an insert into a map with an invalid key reports successful, but this causes the set being inserted to be lost.
2021-11-02 17:00:07 -07:00
Qunxin Liu
540f19b6fe
[subset] fix bug in (Chain)ContextFormat2
...
Only keep rulesets for glyphs class numbers that survived in coverage
2021-11-02 16:05:55 -07:00
Garret Rieger
e260eeb9be
[subset] Update test goldens for gdef.glyphset.
2021-11-02 16:56:52 -06:00
Qunxin Liu
60e203644b
[subset] use glyphset_gsub instead of glyphset for GDEF
2021-11-02 16:56:52 -06:00
Garret Rieger
e39647c0f1
[subset] update subset goldens to fix tests.
2021-11-02 16:26:02 -06:00
Qunxin Liu
0a7563a53f
[subset] fuzzer fix: https://oss-fuzz.com/testcase?key=6254792024915968
...
Make sure input is valid, each gid has a corresponding offset value in
the map
2021-11-02 15:25:18 -07:00
Qunxin Liu
364b6b3989
[subset] Don't assume FeatureList is sorted
...
Though the spec said FeatureRecords are sorted alphabetically by feature
tag, there're font files with unsorted FeatureList. And harfbuzz is not
able to subset these files correctly because we use binary search in
finding featureRecords when collecting lookups. Also
find_duplicate_features needs to be updated to handle this.
2021-11-02 15:15:02 -07:00
Garret Rieger
49c9392412
[subset] During LigatureSubstFormat1 subsetting always place Coverage last.
...
In Windows 7 on Chrome if the coverage table comes before any of the LigatureSet or Ligature subtables the font won't load. This changes the packing order to always place the Coverage table last. Virtual links are used to ensure the repacker maintains the desired ordering.
Coincidentally fontTools also does the same thing (a3f988fbf6/Lib/fontTools/ttLib/tables/otTables.py (L1137)
) to reduce overflows during packing.
2021-11-02 12:19:13 -06:00
Matthias Clasen
8dc86d0703
Add a test font scale rounding behavior
...
This test verifies the fix for
https://github.com/harfbuzz/harfbuzz/issues/3274
2021-11-01 17:59:48 -07:00
Qunxin Liu
85deddb16e
[subset] fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40406
2021-10-27 16:16:15 -07:00
Behdad Esfahbod
4262636926
Merge pull request #3248 from googlefonts/connected_components
...
[repacker] Keep connected subgraphs in the same space.
2021-10-23 13:18:22 -07:00
Qunxin Liu
8c583db9b5
[subset] COLRv1: update subset() method for new strutc ClipList and VarIdxMap
...
Also fix issues in struct PaintTransform definition
2021-10-23 11:22:39 -07:00
David Corbett
8eaee2f887
[USE] Only skip default ignorables within CCSes
2021-10-08 10:15:08 -06:00
Garret Rieger
79937d24b7
[repacker] Add repacker test that requires space splitting.
2021-10-05 12:53:21 -07:00
Khaled Hosny
bb57df7a4f
[test] Add test for https://github.com/harfbuzz/harfbuzz/issues/2757#issuecomment-933531978
2021-10-05 16:04:10 +02:00
Khaled Hosny
1624550377
[test] Add test for https://github.com/harfbuzz/harfbuzz/issues/3244
2021-10-05 16:04:10 +02:00
Qunxin Liu
794b00db4b
[subset] fuzzer fix: https://oss-fuzz.com/testcase-detail/6616166961905664
2021-09-29 10:29:06 -06:00
Garret Rieger
d5beb96e06
[repacker] add repacker isolation test on real font.
2021-09-22 18:18:50 -06:00
Qunxin Liu
ca7b9daef0
[subset] subset MATH table
2021-09-22 18:08:30 -04:00
Garret Rieger
c2cc566c9d
[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.
2021-09-22 16:07:18 -06:00
Qunxin Liu
8c5c81746d
[subset] fix find_duplicate_features
...
We should check each feature against all other features with the same
tag for duplicates.
2021-09-22 15:35:38 -06:00
Garret Rieger
74f96d9d4b
[repacker] fix heap use after free in repacker.
...
Don't store a reference to the link in overflow records as the link object may be freed if the sorted graph vector is resized.
2021-09-19 09:06:17 -06:00
Garret Rieger
d700646c33
[subset] In preperation for 3.0.0 release remove legacy subsetting api methods.
2021-09-16 15:31:29 -06:00
David Corbett
a0101a31b5
[Unicode 14] Add tests
2021-09-14 18:38:50 -04:00
Khaled Hosny
4d9b7de0b6
[style] Prepare for release
2021-09-13 10:10:10 -06:00
Behdad Esfahbod
201cbe3c66
[style] Rename HB_STYLE_TAG_SLANT to HB_STYLE_TAG_SLANT_ANGLE
2021-09-10 04:59:16 -06:00
Qunxin Liu
37379f8f7d
[subset] fox for (Chain)ContextFormat3: subset lookupRecord
...
skip copying a lookupRecord if lookup referenced in the lookupRecord is
not retained after subset
2021-09-08 13:55:21 -06:00
Khaled Hosny
9fddbb3e24
[test] Rename test and split into smaller subtests
2021-09-03 18:24:40 +02:00
Khaled Hosny
c6bb719e65
[test] Add tests for Arabic decomposition
...
Test that both NFC and NFD input produces identical results for fonts
that used composed fonts internally (Amiri here) and fonts that
decompose internally (Noto Nastaliq Urdu here) and that for the former
composed forms are used.
See https://github.com/harfbuzz/harfbuzz/issues/3179
2021-09-03 08:58:35 -06:00
Khaled Hosny
a9dc4fbeac
[test] Make shape test names match file names
...
No idea why test names are underscorified but it it just makes calling
meson test testname harder than it should being not able to copy file
name directly.
2021-09-03 08:56:34 -06:00
Garret Rieger
102666dab7
[subset] add test for hb_subset_input_set (...).
2021-08-27 10:36:42 -07:00
Behdad Esfahbod
99356ea5f0
Merge pull request #3150 from harfbuzz/item-context-tests
...
[test] Add tests for item context
2021-08-25 17:19:06 -06:00
Behdad Esfahbod
955f86a034
[test-set] Fix compiler warnings
2021-08-24 23:16:24 -06:00
Garret Rieger
f2441a4b65
[subset] Remove retain all layout features flag.
...
Instead use inverted sets to handle requesting all features. Modifies feature collection in subset plan to intersect the set of requested features against the features in the font. This prevents iterating a fully filled feature tag set.
2021-08-24 18:17:07 -06:00
Garret Rieger
f84daccb4f
[set] include null pool sets in the permutations tested by inverted_operations.
2021-08-24 16:51:11 -06:00
Garret Rieger
fb07f8f876
During subset input creation check for set alloc failures and fail if encountered.
2021-08-24 10:59:14 -06:00
Khaled Hosny
33bfe9edd6
[test] Add tests for item context
...
Test pre-context and post-context in Arabic shaper, as well as
interaction of pre-context with BOT flag.
2021-08-24 02:12:34 +02:00
Qunxin Liu
34e0b28fae
[subset] make glyph-names option match fonttools behavior
...
Don't encode psNames that are contained in standard glyph names set
2021-08-20 01:30:23 -06:00
Behdad Esfahbod
829b0f3353
Merge pull request #3154 from harfbuzz/set-invert
...
Resurrect hb_set_invert()
2021-08-20 01:28:15 -06:00
Garret Rieger
915550ab19
[set] remove inverted test TODO.
2021-08-19 17:48:38 -07:00
Garret Rieger
c4ed582997
[set] add test for inverted set operations.
...
This test checks all possible set configurations against each operation type.
2021-08-19 17:47:41 -07:00
Garret Rieger
325fd6ddb8
[set] add tests for inverted set equality.
2021-08-19 15:54:31 -07:00
Garret Rieger
287032af6c
[set] update set test TODO list.
2021-08-19 15:45:28 -07:00
Garret Rieger
5c003d80a6
[set] add tests for inverted previous iteration.
2021-08-19 15:41:12 -07:00
Garret Rieger
3f2cc582f2
[set] add basic and iteration set inverion tests.
2021-08-19 15:05:10 -07:00
Garret Rieger
dc31920bbe
Don't serialize null offsets in CPAL.
...
Fixes https://oss-fuzz.com/testcase-detail/5443213648330752
2021-08-18 16:52:45 -06:00
Garret Rieger
cb05c363d7
[subset] add some basic tests for the legacy subset methods.
2021-08-14 10:37:02 -06:00
Garret Rieger
44802c8ec4
[subset] use layout-features=* for layout subsetting tests w/ synthetic test fonts.
2021-08-12 14:57:18 -06:00
Garret Rieger
c0f3af91b8
[subset] speed up add_gid_and_children and adjust op limit.
...
Fix for fuzzer timeout: https://oss-fuzz.com/testcase-detail/5001604901240832 .
- Operation limit is per glyph, so 100,000 should still be far more than needed.
- Switches from for(...) to while(...) loop for iteration. for(...) calls it.end() which in this case triggers a complete iteration.
- Cache CompositeGlyph size in the iterator to avoid needing to recalculate it.
2021-08-12 14:50:42 -06:00
Behdad Esfahbod
23282c9c9d
[util/hb-subset] Support ranges in --unicodes / --unicodes-file
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3109
2021-08-11 22:49:47 -06:00
Behdad Esfahbod
58bfe40794
[util] Move hb-subset away from main-font-text
2021-08-11 20:12:36 -06:00
Behdad Esfahbod
3147e081da
Merge branch 'main' into post-parse
2021-08-11 19:33:00 -06:00
Khaled Hosny
43722cc9f4
[test] Add some real reverse sub tests
2021-08-11 19:30:16 -06:00
Behdad Esfahbod
e0d7060f80
[test] Rename shaping/ to shape/
2021-08-11 18:49:59 -06:00
Khaled Hosny
f122698810
[test] Improve generate-expected-outputs.py diff output
2021-08-12 02:02:10 +02:00
Khaled Hosny
6ac6a2b27b
[test] hb_ot_layout_language_get_feature_tags()
2021-08-11 16:33:37 -06:00
Khaled Hosny
e9b743b26d
[test] hb_ot_layout_script_get_language_tags()
2021-08-11 16:33:37 -06:00
Khaled Hosny
bf438b815f
[test] hb_ot_layout_table_get_feature_tags()
2021-08-11 16:33:37 -06:00
Khaled Hosny
2f88ea5a20
[test] hb_ot_layout_table_find_script()
2021-08-11 16:33:37 -06:00
Khaled Hosny
f60caad7ff
[test] hb_ot_layout_table_get_script_tags()
2021-08-11 16:33:37 -06:00
Garret Rieger
c08f1b8903
[map] fix incorrect population count in hash map.
...
If the same key was set twice the population was being incorrectly incremented.
2021-08-10 14:00:55 -06:00
Garret Rieger
e39c3bde7b
[subset] fix bug in parsing glyf flags.
...
the bytes of the flag stream were being treated as signed integers instead of unsigned as specified in the spec.
2021-08-10 12:57:07 -06:00
Behdad Esfahbod
f3acb977ec
[test/shaping;util] Use ';' instead of ':' to separate test fields
...
Accept that in --batch mode. Also in batch mode don't send the 0th arg.
Related discussion: https://github.com/harfbuzz/harfbuzz/pull/3102
2021-08-10 11:08:36 -06:00
Behdad Esfahbod
b83fd3a564
[util] Refactor batch-processing code into batch.hh
2021-08-10 02:32:55 -06:00
Garret Rieger
8c0c217b5a
[subset] fail reference blob in face builder if allocation for table sorting fails.
...
Fixes https://oss-fuzz.com/testcase-detail/5041767803125760
2021-08-06 15:54:41 -06:00
Garret Rieger
c2ee1fdd40
[subset] remove unsed table_entry struct.
2021-08-05 11:47:07 -06:00
Garret Rieger
dea0fe5717
[subset] discard extra copies of a table in face builder.
...
Fixes #2361 . Stores tables in the builder in a hashmap so you end up with at most one copy of each table. Table serialization order is now based on tag sort order instead of order of insertion into the builder.
2021-08-05 11:47:07 -06:00
Garret Rieger
2c024dc3cb
[subset] prune redundant cmap12 subtables.
...
If the post subset cmap12 table is equivalent to another cmap subtable don't include the 12 table in the final subset. Matches change https://github.com/fonttools/fonttools/pull/2146 from fontTools.
2021-08-04 17:36:24 -06:00
Khaled Hosny
84946e4d2c
[test] Suggest updating the expectation if ttx matches
...
https://github.com/harfbuzz/harfbuzz/issues/3089#issuecomment-892208892
2021-08-04 17:35:19 -06:00
Behdad Esfahbod
5086e10538
[test] Add failing fuzzer test case
...
From https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
https://oss-fuzz.com/testcase-detail/5061207689134080
2021-08-04 11:55:53 -06:00
Khaled Hosny
f698fe5aee
[test] Always fail subset tests if hashes don’t match
...
Regardless of the pre sentience or absence of fonttools.
2021-08-04 10:26:14 -06:00
Khaled Hosny
9f544e5008
[test] Don’t skip subset tests early
...
Check for FontTools only when the checksums are mismatching.
2021-08-04 04:20:14 +02:00
Khaled Hosny
b084153317
[test] Remove subset tests from the slow suite
2021-08-04 04:12:31 +02:00
Khaled Hosny
7ccc52b075
[test] Compare sha256 hash before TTX dumps
...
Most of time the files are identical, so instead of comparing the TTX
dump we can check sha256 hashes of the files first and if they match, we
don’t have to check the TTX dumps at all, making the subset tests orders
of magnitude faster.
time meson test --suite=subset down from:
real 0m19.418s
user 0m38.171s
sys 0m3.587s
to:
real 0m3.102s
user 0m8.622s
sys 0m1.701s
The expected files have been replaced by hb-subset output so they are
bit-identical where FontTools output might not.
The generate-expected-outputs.py now compares the hb-subset output with
fontttols subset and errors of they don’t match.
2021-08-04 04:10:38 +02:00
Khaled Hosny
770fbd5aa6
Revert "[test] Speed-up subset tests by saving TTX dump"
...
This reverts commit 278f44dcee
.
2021-08-04 04:10:37 +02:00
Khaled Hosny
2cc9ed2b9e
[test] More lookup_collect_glyphs() tests
2021-08-03 10:06:27 -06:00
Khaled Hosny
0664037401
[test] More lookup_collect_glyphs() tests
2021-08-03 10:06:27 -06:00
Khaled Hosny
ecdd8e3f18
[test] More lookup_collect_glyphs() tests
2021-08-03 10:06:27 -06:00
Khaled Hosny
f998d7e1ce
[test] Add API test for lookup_collect_glyphs()
...
We don’t seem to have any tests exercising this API at all, and it is a
good check of GSUB/GPOS code.
2021-08-03 10:06:27 -06:00
Khaled Hosny
10e73d188a
[test] Add batch mode to hb-subset and use it
...
time meson test --suite=subset down from:
real 0m22.822s
user 0m44.561s
sys 0m9.255s
to:
real 0m19.418s
user 0m38.171s
sys 0m3.587s
Does not seem to help much, but it is something.
Part of https://github.com/harfbuzz/harfbuzz/issues/3089
2021-08-01 22:08:28 -06:00
Khaled Hosny
1fd3a261e5
[test] Remove unused shaping tests reference mode
2021-08-01 19:38:39 +02:00
Behdad Esfahbod
05cf81283b
[util/hb-shape] Fix use of EOF as end-of-line
...
EOF is -1, which was being treated as a valid char (255).
Use int instead.
2021-08-01 08:12:40 -06:00
Behdad Esfahbod
7cbcdaf68a
Whitespace
2021-07-30 11:26:46 -06:00
Behdad Esfahbod
5d283aa0bd
Merge pull request #3095 from harfbuzz/subset-tests-speed
...
[test] Speed-up subset tests by saving TTX dump
2021-07-30 10:15:09 -06:00
Garret Rieger
f9d8e4a976
[subset] switch ..._set_flags to not take a mask.
2021-07-29 18:30:27 -07:00
Garret Rieger
3d534b146c
[subset] convert subset input flags into bit flags.
...
Store the flags in a bit set. Updates the public api to work with the bit set directly.
2021-07-29 18:02:34 -07:00
Khaled Hosny
f6c67a5fcf
[test] Open file in UTF-8
...
It is 2021 and Python still does not default to UTF-8 on Windows!
2021-07-30 02:20:19 +02:00
Khaled Hosny
bafbade087
[test] Force FontTools to use \n on all platforms
...
On Windows in helfuly uses \r\n.
2021-07-30 01:42:45 +02:00
Khaled Hosny
278f44dcee
[test] Speed-up subset tests by saving TTX dump
...
Speed-up subset tests by saving TTX dump of expected output instead of
generating it each time the tests are run.
Cuts down meson test --suite=subset on my system from:
real 0m38.977s
user 1m12.024s
sys 0m10.547s
to:
real 0m22.291s
user 0m44.548s
sys 0m9.221s
Part of https://github.com/harfbuzz/harfbuzz/issues/3089
2021-07-30 00:00:35 +02:00
Khaled Hosny
72489f3e0e
[test] Free memory in hb-aots-tester
2021-07-29 10:42:23 -06:00
Khaled Hosny
895162d6f3
[test] Account for mark zeroing in AOTS tests
...
The AOTS are not written with the face that mark glyphs gets their
advances zeroed. Taking this into account makes 16 more tests to pass.
2021-07-29 10:42:23 -06:00
Khaled Hosny
e65bf60500
[test] make this test runner less verbose
...
Print the command being called once and in a way the can be manually
run.
2021-07-29 10:42:23 -06:00
Khaled Hosny
9a7ff54bb7
[test] Write one sequence per-line
...
https://github.com/harfbuzz/harfbuzz/pull/3087#issuecomment-888691436
2021-07-28 18:25:51 -06:00
Khaled Hosny
ddf87ffb22
[test] Add generated tests for emoji clusters
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3017
Uses AdobeBlank2.ttf from:
https://github.com/adobe-fonts/adobe-blank-2
instead of a dummy empty font so that everything maps to GID 1 and
control code points are kept instead of being dropped because there is
not space glyph (otherwise we’d need to identify control code points
somehow when generating the expectations).
2021-07-28 18:25:51 -06:00
Behdad Esfahbod
6fe0d7d6e8
[GSUB] If MultipleSubst is applied to a ligature-component, preserve lig-id
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3069
2021-07-28 12:06:49 -06:00
Garret Rieger
acbd8b27dc
[subset] temporarily disable COLRv1 subsetting.
...
Currently COLRv1 spec is being changed so the subsetting implementation is out of sync. Disable subsetting by failing sanitization for COLRv1 tables and disable all colrv1 tests.
2021-07-28 11:36:34 -06:00
Behdad Esfahbod
0ded6a70c8
[subset] Fix another fuzzer issue
...
Addition could overflow on 32bit arch.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36636
Fixes https://oss-fuzz.com/testcase-detail/5072358514753536
2021-07-28 11:35:27 -06:00
Khaled Hosny
c65e1e0842
[test] Run AOTS cmap tests with ot font functions only
...
We are not interested in testing FreeType cmap support.
Fixes most format 4 tests. The remaining test seems to be peculiar, and
I can’t find any cmap implementation that produces the expected output.
2021-07-28 11:35:09 -06:00
Khaled Hosny
8396c523b6
[test] Add AOTS cmap tests
...
Uses https://github.com/adobe-type-tools/aots/pull/3
Related to https://github.com/unicode-org/text-rendering-tests/issues/70
We don’t support format 4 or 8, so these tests are disabled. We support
format 4 but most of the tests are failing, investigating.
2021-07-28 11:35:09 -06:00