Log

Author Commit Date CI Message
Khaled Hosny 449c4296 2021-12-12T07:50:06 [ci] Try harder to fix this randomly failing job The default --num-processes is the number of CPUs multiplied by 5, which seems to give this VM a hard-time. Even the number of CPUs is too much, so lets use half of that (I’m adding one just in case the division gives zero).
Khaled Hosny 52a33a15 2021-12-12T07:43:58 [ci] Try to fix the randomly failing valgrind job
Khaled Hosny be91d291 2021-12-12T04:45:54 3.2.0
Garret Rieger 77507a1d 2021-12-10T14:10:04 [subset] Don't double count visit lookups in closure_lookups Each recursed lookup was getting counted once in closure_lookups() and then again in hb_closure_lookups_context_t::recurse.
Garret Rieger d6702570 2021-12-10T13:52:05 [subset] reset the visited lookup count before each closure iteration.
Behdad Esfahbod 23159084 2021-12-10T15:00:16 [morx] Reverse graphemese, not whole buffer Fixes https://github.com/harfbuzz/harfbuzz/issues/3314 Supersedes https://github.com/harfbuzz/harfbuzz/pull/3315
Behdad Esfahbod 5b995526 2021-12-10T14:59:56 [buffer] Fix reverse_group() to reverse() at the end
Behdad Esfahbod 21c4fc10 2021-12-10T13:02:43 [buffer] Add optional merge_clusters arg to reverse_groups()
Behdad Esfahbod e949e512 2021-12-10T12:58:27 [ot-layout] Port foreach_grapheme to buffer foreach_group
Behdad Esfahbod eb96e69d 2021-12-10T12:55:29 [buffer] Add foreach_group()
Behdad Esfahbod 1b78e04c 2021-12-10T12:45:43 [buffer] Add ::reverse_groups()
Behdad Esfahbod 4cd96e73 2021-12-10T12:33:21 [buffer] Inline revers_range() / reverse()
Garret Rieger 5914acb3 2021-12-10T10:05:47 [repacker] Clear distance and position cache when assigning a new space. A change in space will effect the distance assigned to the node and any of it's children so clear the distance cache.
Qunxin Liu 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
Garret Rieger be2c488e 2021-12-09T15:44:06 [repacker] Improve vertex priority packing. Previous priority implementation would move a node further back within it's layer, but at max priority was unable to move any further up than that. This updates the implementation to have 3 priority levels: 1. Distance is reduced by half of table size. 2. Distance is reduced by full table size (move to beginning of the layer). 3. Distance is set to 0. Vertex will be packed as soon as possible. Also makes the iterative resolutions aware of max priority, so it won't keep trying to raise priority beyond the maximum.
Garret Rieger 441877f5 2021-12-09T16:38:05 [repacker] add test case for using max priority to resolve an overflow.
David Corbett 2404617a 2021-12-08T21:10:22 Update language system tag registry to OT 1.9
Behdad Esfahbod 002a1f70 2021-12-08T10:45:30 [ft] Disable vertical funcs if HB_NO_VERTICAL
Behdad Esfahbod ef14cad7 2021-12-08T10:43:52 [GPOS] Disable vertical advance if HB_NO_VERTICAL
Behdad Esfahbod 6ed22de1 2021-12-08T10:40:40 [CONFIG] Fix HB_NO_VERTICAL build without HB_TINY
Behdad Esfahbod 53eebc7c 2021-12-08T08:32:41 [CONFIG] Add HB_NO_VERTICAL
Behdad Esfahbod 9bc5d290 2021-12-08T08:16:17 [TINY] Don't disable VORG table in any config profile Is needed for vertical layout of CFF fonts. Fixes https://github.com/harfbuzz/harfbuzz/discussions/3294#discussioncomment-1770313
Garret Rieger 3e4a2509 2021-12-06T16:00:15 [repacker] add a maximum number of roots that can be moved in one iteration. Set to half of the roots in a space. This prevents the repacker from moving all roots in a space to a new space if their are overflows in every root.
Garret Rieger 02b12d79 2021-12-06T15:23:35 [repacker] Move all overflowing roots to a new space simultaneously.
Garret Rieger fa966bcc 2021-12-06T12:54:19 [repacker] create repacker output buffer after final length is known. Don't rely on a buffer provided by the caller, as it may not be large enough.
Qunxin Liu 51655a07 2021-12-05T19:27:57 [subset] COLR : only include glyphs after COLR closure
Behdad Esfahbod 70f8c57e 2021-12-04T19:49:23 [buffer] Rename find_min_cluster
Behdad Esfahbod 94d43c00 2021-12-04T16:56:39 [buffer] Merge and rename clear_glyph_flags()
Behdad Esfahbod b95d252f 2021-12-03T11:49:55 [CONFIG] Add HB_CONFIG_OVERRIDE_H to simplify config overrides
Qunxin Liu 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.
Garret Rieger 1d9ef3a7 2021-12-01T10:30:27 [subset] Actually fix end_cp unitialized warning.
Garret Rieger d8635dfe 2021-12-01T10:14:10 [subset] Fix warning about uninitialized use of end_cp.
Khaled Hosny 6c81cd95 2021-12-01T19:29:34 [tests] Add tests for platform shapers Fixes https://github.com/harfbuzz/harfbuzz/issues/3115
Khaled Hosny 7608b191 2021-12-01T18:57:21 [directwrite] Set unsafe to break flag Like the rest of platform shapers. Otherwise hb-shape --verify goes crazy.
Khaled Hosny 361a4386 2021-12-01T03:16:46 Revert "Revert "[hb-directwrite] Don't load dwrit.dll dynamically"" This reverts commit ecbe224743c205c99aa459b27e7fb241cc4b1dc5. It was causing directwrite shaper to crash in MSVC builds.
Khaled Hosny 549e2b70 2021-12-01T03:16:26 Revert "Remove direct link to dwrite from meson scripts" This reverts commit 6ea6c581edb3cecf1b4b42854e37b40d6d067cd3.
Garret Rieger 071aea42 2021-11-30T16:16:06 [iter] add specialized implementation for hb_concat forward when iterators are not random access.
Garret Rieger 2e935514 2021-11-30T16:02:05 [iter] fix forward implementation in hb_concat(). Add test coverage for forward.
Garret Rieger 39e76af1 2021-11-30T15:25:40 [subset] add all_links () to object_t. Helper to provide easy access to concatenated real and virtual links iterator.
Garret Rieger 9121ed0c 2021-11-30T13:45:22 [subset] Improve sharing of Ligature subtables. Ligature subtables use virtual links to enforce an ordering constraint between the subtables and the coverage table. Unfortunately this has the sideeffect of prevent the subtables from being shared by another Ligature with a different coverage table since object equality compares all links real and virtual. This change makes virtual links stored separately from real links and updates the equality check to only check real links. If an object is de-duped any virtual links it has are merged into the object that replaces it.
Garret Rieger ca227411 2021-11-30T12:53:15 [iter] add hb_concat (a, b). Iterates over a, and then over b.
Garret Rieger 95329081 2021-11-26T16:18:42 [subset] further optimize cmap4 packing.
Garret Rieger 59914382 2021-11-26T14:19:39 [subset] Don't pad glyphs when using long loca.
Garret Rieger d9660fd5 2021-11-25T18:15:35 [subset] Make cmap4 packing more optimal. The current CMAP4 implementation uses whatever the current codepoint ranges are and then encodes them as indivudal glyph ids or as a delta if possible. However, it's often possible to save bytes by splitting up existing ranges and encoding parts of them using deltas where the cost of splitting the range is less than encoding each glyph individual.
Khaled Hosny 8aed5c21 2021-11-26T17:54:18 3.1.2
Behdad Esfahbod 720ab088 2021-11-25T11:49:16 [util] Add --single-par Use it in aots tests Fixes https://github.com/harfbuzz/harfbuzz/issues/3129 Related https://github.com/harfbuzz/harfbuzz/issues/3298
Behdad Esfahbod b58afe58 2021-11-25T11:34:24 [util] Undo treat as single-paragraph text provided on cmdline Reverts d92ee726ce3b2fc2c249407d977433f0badcc918 except that it does so even in batch mode. Am going to add a --single-par mode that will affect all input modes. Part of https://github.com/harfbuzz/harfbuzz/issues/3129 Fixes https://github.com/harfbuzz/harfbuzz/issues/3298
Qunxin Liu 903a6bae 2021-11-15T19:58:33 [subset] layout_features filtering fix we should not use get_size (), which returns length * item_size
Khaled Hosny 31607897 2021-11-22T03:31:50 [ci] windows-2016 image is going away in a bit https://github.com/actions/virtual-environments/issues/4312 windows-latest is the same as windows-2019, but we are using explicit windows-2019 image for when they become different.
Khaled Hosny ed65577e 2021-11-20T20:51:26 [ci] Split sanitizers job It was running four different builds sequentially. Each should have been its own job.
Khaled Hosny 69d8f27c 2021-11-20T17:09:15 [meson] Require 0.55.0 We implicitly require it for building ragel subproject. This new version requirement should satisfied in both Fedora 33 and Debian bullseye, and not be too cutting edge for us.
Qunxin Liu 84dc4e85 2021-11-08T09:36:31 [subset] avoid writing out duplicate extra glyph names in post table Add check for possible duplicate with other name index
Behdad Esfahbod 325f2629 2021-11-19T17:19:09 [array] Fix a couple constexpr warnings ./subprojects/harfbuzz/src/hb-array.hh:71:25: warning: 'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const] constexpr hb_array_t& operator = (const hb_array_t<U> &o) ^ const ../subprojects/harfbuzz/src/hb-array.hh:72:5: warning: use of this statement in a constexpr function is a C++14 extension [-Wc++14-extensions] { arrayZ = o.arrayZ; length = o.length; backwards_length = o.backwards_length; return *this; } ^ ../subprojects/harfbuzz/src/hb-array.hh:329:32: warning: 'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior [-Wconstexpr-not-const] constexpr hb_sorted_array_t& operator = (const hb_array_t<U> &o) ^ const ../subprojects/harfbuzz/src/hb-array.hh:330:5: warning: use of this statement in a constexpr function is a C++14 extension [-Wc++14-extensions] { hb_array_t<Type> (*this) = o; return *this; } ^ 4 warnings generated.
Behdad Esfahbod 98fefd5d 2021-11-19T13:34:53 Merge pull request #3301 from harfbuzz/hashmap-classes Hashmap classes
Qunxin Liu ca418cac 2021-11-17T16:42:08 [subset] keep features that have FeatureParams and the tag is "size"
Qunxin Liu e88fc41e 2021-11-18T16:53:36 [subset] inputSequence could be empty, change the sanity check
Behdad Esfahbod 4731b107 2021-11-19T12:33:37 [array] Mark constructors constexpr ../src/hb-map.hh:44:38: note: non-constexpr constructor 'hb_array_t' cannot be used in a constant expression static constexpr K INVALID_KEY = kINVALID; ^
Behdad Esfahbod 1da7423e 2021-11-19T12:11:41 [array] Add constructor taking std::nullptr_t Not all impls implement nullptr_t in a way that would automatically convert to what we were accepting. In file included from ../src/test-map.cc:27: ../src/hb-map.hh:44:22: error: no viable conversion from 'nullptr_t' to 'const hb_array_t<const char>' static constexpr K INVALID_KEY = kINVALID; ^ ~~~~~~~~
Behdad Esfahbod e456922a 2021-11-19T12:04:08 [test] Fix nullptr_t scope issue
Behdad Esfahbod 5157cac0 2021-11-19T12:03:10 [test] Silence unused-variable erros in test
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.
Behdad Esfahbod cba17fd1 2021-11-19T11:49:03 [array] Add default methods again, this time the full set Should add tests.
Garret Rieger a75b96f7 2021-11-16T14:34:07 [sanitize] In lookup sanitize don't try to access subtable 0 if it isn't there.
Behdad Esfahbod 82a9f544 2021-11-10T10:15:38 [colr] Simplify sanitize
Garret Rieger 64b29dbd 2021-11-09T09:13:14 [subset] reuse colrv1 max nesting depth constant for sanitize.
Garret Rieger ace98cc6 2021-11-08T15:47:56 [subset] Only sanitize recursion depth in COLR.
Garret Rieger 782a7377 2021-11-04T13:39:11 [sanitize] add a maximum recursion depth for sanitize.
Khaled Hosny cd5c6cd0 2021-11-08T06:59:55 3.1.1
Matthias Clasen 1e07d42a 2021-11-07T01:19:42 Typo fix
Matthias Clasen 1fd7fd98 2021-11-06T10:18:20 Cosmetics: Avoid confusing indentation This line had me confused for a second because the condition looked like a cast and the if just looked misplaced. Add a line break to prevent such confusion.
Matthias Clasen 3471f8f6 2021-11-06T10:17:20 docs: Clarify a doc comment Reword the docs for hb_ot_layout_script_select_language and be a bit more specific about the returned index.
Behdad Esfahbod 07dc34bd 2021-11-05T14:45:20 [mutex] Try work around GCC cast-align error/warning Shouldn't be needed because of the alignas(). Oh well... Might fix https://github.com/harfbuzz/harfbuzz/issues/3283
Khaled Hosny 77eeec53 2021-11-03T23:31:03 3.1.0
Behdad Esfahbod 54e7d626 2021-11-03T14:43:34 [array] Remove defaulted destructor
Garret Rieger f51b48c8 2021-11-02T16:16:52 [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.
Behdad Esfahbod b1cd0dce 2021-11-02T17:56:11 [map] Add INVALID_KEY and INVALID_VALUE
Qunxin Liu 540f19b6 2021-10-29T17:11:53 [subset] fix bug in (Chain)ContextFormat2 Only keep rulesets for glyphs class numbers that survived in coverage
Garret Rieger e260eeb9 2021-11-02T15:31:32 [subset] Update test goldens for gdef.glyphset.
Qunxin Liu 60e20364 2021-11-02T15:02:36 [subset] use glyphset_gsub instead of glyphset for GDEF
Garret Rieger e39647c0 2021-11-02T15:25:05 [subset] update subset goldens to fix tests.
Qunxin Liu 0a7563a5 2021-11-01T14:56:14 [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
Qunxin Liu 364b6b39 2021-10-31T14:38:20 [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.
Garret Rieger 49c93924 2021-09-24T09:28:10 [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 (https://github.com/fonttools/fonttools/blob/a3f988fbf621142d7d9b3e68a69725b88f358869/Lib/fontTools/ttLib/tables/otTables.py#L1137) to reduce overflows during packing.
Garret Rieger 9643d770 2021-09-24T11:39:59 [repacker] add more detailed comment about virtual links.
Garret Rieger 5bfc7d10 2021-09-23T14:45:20 [repacker] remove VirtualOffset struct. Make and add_virtual_link () specialization of add_link() instead.
Garret Rieger bc4c5341 2021-09-23T14:41:42 [repacker] Add test for virtual links in the repacker.
Garret Rieger 7615b94e 2021-09-23T14:14:06 [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.
Behdad Esfahbod 59d8f6c8 2021-11-02T10:33:53 [map] Fix copy assignment operator
Behdad Esfahbod bbda020c 2021-11-02T08:40:59 Merge pull request #3278 from harfbuzz/more-std More standard idioms
Behdad Esfahbod 459e485b 2021-11-02T09:36:12 [meta] Remove otherwise-empty test-meta
Behdad Esfahbod b8724c60 2021-11-02T00:49:40 [meta] Add in-house impl of hb_is_convertible()
Behdad Esfahbod 7a078c39 2021-11-02T00:44:51 [meta] Use std::conditional instead of hb_conditional()
Behdad Esfahbod 943921cf 2021-11-02T00:26:46 [meta] Use more std type_traits
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Behdad Esfahbod 811f80a7 2021-11-02T00:14:34 [algs] Use std::move instead of hb_move()
Behdad Esfahbod 896e0c74 2021-11-02T00:06:30 [meta] Remove unused traits
Behdad Esfahbod be42800f 2021-11-02T00:04:18 [meta] Use std::is_trivially_... instead of internal copies
Behdad Esfahbod 30c05e8b 2021-11-01T23:57:00 [algs] include <new>
Behdad Esfahbod 4c6fd7cd 2021-11-01T23:13:34 [map] Try moving items when resizing
Behdad Esfahbod a28ea8d7 2021-11-01T22:50:54 Simplify swap()