Commit Graph

12813 Commits

Author SHA1 Message Date
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
Behdad Esfahbod b1cd0dce8e [map] Add INVALID_KEY and INVALID_VALUE 2021-11-02 17:56:11 -06: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
Garret Rieger 9643d77086 [repacker] add more detailed comment about virtual links. 2021-11-02 12:19:13 -06:00
Garret Rieger 5bfc7d1015 [repacker] remove VirtualOffset struct.
Make and add_virtual_link () specialization of add_link() instead.
2021-11-02 12:19:13 -06:00
Garret Rieger bc4c5341d6 [repacker] Add test for virtual links in the repacker. 2021-11-02 12:19:13 -06:00
Garret Rieger 7615b94ecf [repacker] add 'virtual links' to the serializer.
These aren't associated with an offset field, but instead exist solely to add an ordering constraint to the object graph.
2021-11-02 12:19:13 -06:00
Behdad Esfahbod 59d8f6c817 [map] Fix copy assignment operator 2021-11-02 10:33:53 -06:00
Behdad Esfahbod bbda020cbc
Merge pull request #3278 from harfbuzz/more-std
More standard idioms
2021-11-02 08:40:59 -07:00
Behdad Esfahbod 459e485bab [meta] Remove otherwise-empty test-meta 2021-11-02 09:36:12 -06:00
Behdad Esfahbod b8724c6023 [meta] Add in-house impl of hb_is_convertible() 2021-11-02 00:49:40 -06:00
Behdad Esfahbod 7a078c395a [meta] Use std::conditional instead of hb_conditional() 2021-11-02 00:44:51 -06:00
Behdad Esfahbod 943921cf0c [meta] Use more std type_traits 2021-11-02 00:26:46 -06:00
Behdad Esfahbod 6d555ce82e [meta] Use std::forward instead of hb_forward() 2021-11-02 00:18:22 -06:00
Behdad Esfahbod 811f80a701 [algs] Use std::move instead of hb_move() 2021-11-02 00:17:54 -06:00
Behdad Esfahbod 896e0c74a8 [meta] Remove unused traits 2021-11-02 00:06:30 -06:00
Behdad Esfahbod be42800fc6 [meta] Use std::is_trivially_... instead of internal copies 2021-11-02 00:04:18 -06:00
Behdad Esfahbod 30c05e8b55 [algs] include <new> 2021-11-01 23:57:00 -06:00
Behdad Esfahbod 4c6fd7cdb2 [map] Try moving items when resizing 2021-11-01 23:13:34 -06:00
Behdad Esfahbod a28ea8d7f3 Simplify swap() 2021-11-01 22:50:54 -06:00
Behdad Esfahbod 94158316d9 [map] Add iterable constructor 2021-11-01 22:47:26 -06:00
Behdad Esfahbod a03b9b14c9 [map] Add initializer_list and swap() 2021-11-01 22:45:11 -06:00
Behdad Esfahbod 3604f5f248 [algs] Include <initializer_list> 2021-11-01 22:37:42 -06:00
Behdad Esfahbod c30f6834d0 [map] Add 5 methods 2021-11-01 22:29:14 -06:00
Behdad Esfahbod 38debbab7e [set] Add successful check in swap() 2021-11-01 22:17:35 -06:00
Behdad Esfahbod b860b44229 [bimap] Simplify initialization 2021-11-01 22:08:03 -06:00
Behdad Esfahbod d2c364f6e7 [array] Use default methods 2021-11-01 21:55:14 -06:00
Behdad Esfahbod 6f74d80ed1 [vector] Complete sorted_vector 5-methods 2021-11-01 21:49:32 -06:00
Behdad Esfahbod a28b5d03b5 [vector] Add swap() friend to hb_sorted_vector_t 2021-11-01 21:43:44 -06:00
Behdad Esfahbod e97e79967e Verbiage 2021-11-01 21:34:46 -06:00
Behdad Esfahbod 34fa5e2901 [set] More default operators 2021-11-01 21:25:03 -06:00
Behdad Esfahbod b6c0b40fc2 [vector] Use default constructor 2021-11-01 21:15:38 -06:00
Behdad Esfahbod 1e3f57c079 [bit-set] Implement standard-5 methods plus swap 2021-11-01 21:14:12 -06:00
Behdad Esfahbod 11eadb5d28 [bit-set-invertible] Implement standard-5 methods & swap 2021-11-01 21:07:09 -06:00
Behdad Esfahbod dcd18da611 [set] Add standard the 5 standard methods & tests 2021-11-01 20:55:30 -06:00
Behdad Esfahbod 628a0f3796 [vector] Add more tests 2021-11-01 20:36:55 -06:00
Behdad Esfahbod f15858be5f [vector] Pre-allocate if iterator has random-access length 2021-11-01 20:26:07 -06:00
Behdad Esfahbod 11135150a7 [vector] Move test code into separate file 2021-11-01 20:23:12 -06:00
Behdad Esfahbod ee75e716c1 [vector] Add initializer from iterable 2021-11-01 20:19:57 -06:00
Behdad Esfahbod 18a078f968 [vector] Implement move assignment using swap 2021-11-01 20:06:58 -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
Behdad Esfahbod eeda2c549d [vector] Add initializer_list constructor & tests 2021-11-01 18:50:11 -06:00
Behdad Esfahbod c484641304 Revert "[vector] Add initializer_list constructor & tests"
This reverts commit aa6182453b.
2021-11-01 18:48:24 -06:00
Behdad Esfahbod aa6182453b [vector] Add initializer_list constructor & tests 2021-11-01 18:36:57 -06:00