|
6695bf05
|
2022-04-22T13:48:41
|
|
[gsubgpos] Remove wrong condition in Context application
Fixes https://github.com/harfbuzz/harfbuzz/issues/3545
|
|
a85461b9
|
2022-04-20T12:13:16
|
|
Add link to Context LookupFlag discussion
https://github.com/harfbuzz/harfbuzz/discussions/3538
|
|
044d7a06
|
2022-03-28T12:38:56
|
|
[indic-like] Add per-lookup per-syllable flag
This allows mix-and-matching per-syllable and other lookups.
In fact, removes the clear-syllables call completely.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3513
|
|
e8f3397f
|
2022-03-28T12:07:05
|
|
[matcher] Simplify syllable initialization
|
|
ccd9161b
|
2022-03-24T13:10:48
|
|
[apply-lookup] Try to fix the logic for contextual lookups
Fixes https://github.com/harfbuzz/harfbuzz/issues/1611
Notably, this fixes Myles's AdditionFont:
https://litherum.blogspot.com/2019/03/addition-font.html
Test with AdditionFont, eg.:
$ util/hb-view AdditionFont.otf =1112112+1113134=
|
|
bf2a845a
|
2022-03-24T13:09:53
|
|
[ot-layout] Comment
|
|
4e2f409b
|
2022-01-31T12:20:32
|
|
[subset] Don't hold references to members of the active_glyph_stack.
These references may get invalidated after the vector for the stack is resized. Fixes: https://oss-fuzz.com/testcase-detail/5422577634377728
|
|
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.
|
|
f3c1f4f0
|
2022-01-28T11:50:22
|
|
[subset] convert active_glyphs_stack to be a vector of hb_set_t instead of hb_set_t*.
|
|
60006d36
|
2022-01-20T15:29:28
|
|
[gsubgpos] Adjust chaining unsafe-to-concat application
Fixes three tests.
|
|
78481b32
|
2021-11-21T16:50:34
|
|
[gsubgpos] Combine input/backtrack/lookahead unsafe-to-concat
I feel like this is correct logic. Still have to prove.
Errors unchanged at 10.
|
|
3122c2cd
|
2021-12-04T19:50:33
|
|
[buffer] Add HB_GLYPH_FLAG_UNSAFE_TO_CONCAT
Fixes https://github.com/harfbuzz/harfbuzz/issues/1463
|
|
ac1bb3e3
|
2022-01-20T11:47:17
|
|
[machinery] Move accelerators to constructor/destructor
|
|
e062376e
|
2022-01-19T17:09:34
|
|
[machinery] Make accelerator lazy-loader call Xinit/Xfini
Instead of init/fini. To isolate those functions. To be turned into
constructor/destructors, ideally one per commit (after some SFINAE
foo.)
|
|
c8195dbc
|
2022-01-19T06:56:05
|
|
Merge pull request #3365 from harfbuzz/gdef-fix
GDEF fix
|
|
5a91db11
|
2022-01-13T12:44:48
|
|
[map] Remove constexpr invalid items
These were non-workable in the general case, eg std::string.
|
|
fa12f1ae
|
2022-01-12T15:08:34
|
|
Rename method
|
|
9408e0d6
|
2022-01-12T15:07:34
|
|
Rename variable
|
|
96c969c8
|
2022-01-12T15:06:40
|
|
Preserve glyph props
|
|
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.
|
|
d6702570
|
2021-12-10T13:52:05
|
|
[subset] reset the visited lookup count before each closure iteration.
|
|
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
|
|
98fefd5d
|
2021-11-19T13:34:53
|
|
Merge pull request #3301 from harfbuzz/hashmap-classes
Hashmap classes
|
|
ca418cac
|
2021-11-17T16:42:08
|
|
[subset] keep features that have FeatureParams and the tag is "size"
|
|
e88fc41e
|
2021-11-18T16:53:36
|
|
[subset] inputSequence could be empty, change the sanity check
|
|
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.
|
|
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.
|
|
540f19b6
|
2021-10-29T17:11:53
|
|
[subset] fix bug in (Chain)ContextFormat2
Only keep rulesets for glyphs class numbers that survived in coverage
|
|
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.
|
|
6d555ce8
|
2021-11-02T00:18:22
|
|
[meta] Use std::forward instead of hb_forward()
|
|
36ed56b6
|
2021-09-23T10:51:21
|
|
[subset] code cleanup
- rename copy() method if it takes extra parameter
- get rid of same code blocks
|
|
c2cc566c
|
2021-09-22T14:15:55
|
|
[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.
|
|
8c5c8174
|
2021-09-12T20:16:30
|
|
[subset] fix find_duplicate_features
We should check each feature against all other features with the same
tag for duplicates.
|
|
37379f8f
|
2021-09-02T11:54:37
|
|
[subset] fox for (Chain)ContextFormat3: subset lookupRecord
skip copying a lookupRecord if lookup referenced in the lookupRecord is
not retained after subset
|
|
fad452bf
|
2021-08-16T20:48:24
|
|
[set] Move main functionality into hb_bit_set_t
To add inversion on top in hb_invertible_set_t and use that as hb_set_t.
|
|
30579f5a
|
2021-07-29T11:19:13
|
|
[set] Document & use open-ended del_range()
|
|
2337f0d0
|
2021-07-08T10:58:50
|
|
Internally use hb_malloc/.../hb_free instead of malloc/.../free
Redefining those stock names as macros was conflicting with gcc 10
headers.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
|
|
085aa65e
|
2021-06-14T16:47:45
|
|
[subset] Convert offset serialization in gsubgpos and gdef to serialize_serialize().
|
|
bc33b87f
|
2021-06-09T11:51:32
|
|
[set] Use references, not pointers, in internal C++ API
|
|
8b686afe
|
2021-04-06T11:33:38
|
|
[subset] add unlikely().
|
|
64122b5a
|
2021-04-05T12:53:08
|
|
[subset] don't visit lookup if covered glyph set has failed.
If covered glyph set is in error then the same lookup can be recursed into repeatedly potentially causing a fuzzer timeout. Fixes: https://oss-fuzz.com/testcase-detail/5416421032067072.
|
|
c35d7863
|
2021-04-01T14:32:38
|
|
[subset] never drop the 'pref' feature.
Never ever drop feature 'pref', even if it's empty. Harfbuzz uses it to choose the shaper for Khmer.
|
|
b10741ca
|
2021-03-25T19:14:48
|
|
[subset] when closing glyphs in context lookups don't use a current glyph set if a lookup is already applied.
|
|
5639e253
|
2021-03-31T16:04:43
|
|
Add Array16Of<>
|
|
5efe3609
|
2021-03-31T15:33:22
|
|
Rename (Unsized)OffsetListOf
|
|
6c4e0491
|
2021-03-31T15:31:32
|
|
s/OffsetArrayOf/Array16OfOffset16To/g
|
|
9b4b5849
|
2021-03-31T13:27:21
|
|
Fixup for recent OffsetTo<> changes
|
|
ad28f973
|
2021-03-31T12:49:14
|
|
Rename offset types to be explicit about their size
Add Offset16To<>, Offset24To<>, and Offset32To<> for most use-cases.
|
|
adca4ce0
|
2021-03-30T13:20:50
|
|
[subset] fixes https://oss-fuzz.com/testcase-detail/6173520787800064.
Caused by incorrect bounds check in glyph closure for context lookups.
|
|
9f77a0c1
|
2021-03-30T14:10:45
|
|
[subset] use hb_set_clear to avoid calling clear() on null pool set.
|
|
752e393a
|
2021-03-29T17:23:33
|
|
[subset] avoid calling clear on null pool set.
|
|
9ed5f04a
|
2021-03-29T18:14:30
|
|
[subset] Simplify recent out-of-memory fixes
By checking return status of map->set().
|
|
52df6b9f
|
2021-03-29T16:17:27
|
|
[subset] check for set insertion success.
|
|
c6adb90a
|
2021-03-29T16:08:44
|
|
[subset] fix nullptr deref.
|
|
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.
|
|
0e1c0fa4
|
2021-01-12T10:17:14
|
|
[subset] optimize glyph closure method: step 5
add testcase and some fixes
|
|
b8a58a0c
|
2021-01-10T15:50:04
|
|
[subset] optimize glyph closure method: step 4
optimize recurse_lookups in Context/ChainContext
glyph closure, only the glyphs that the parent lookup
can apply the recursion to can participate in recursing
the lookup.
|
|
b4fc593c
|
2020-12-09T10:44:18
|
|
[subset] optimize glyph closure method: step1
Previous GSUB glyph closure is done by recursively visiting
all reachable lookup tables that apply to any glyphs in the
current/input glyph set, but actually only the glyphs that
the parent lookup can apply the recursion to can participate
in recursing the lookup. This is step 1 for glyph closure
optimization:
1. Add stack of currently active glyph set pointers into hb_closure_context_t
2. Update closure() method in simple GSUB tables to use
this stack in order not to change current glyph set at different stages
of recursion
3. Add function may_have_non_1to1() to GSUB tables
|
|
8450f43a
|
2021-03-15T15:18:06
|
|
[buffer] HB_NODISCARD next_glyph()
|
|
34a1204f
|
2021-03-15T14:39:06
|
|
[buffer] HB_NODISCARD output_glyph()
Also, generalize and use replace_glyphs() in morx where output_glyph() was used
in a loop.
|
|
cac6c86d
|
2021-03-15T13:46:54
|
|
[buffer] HB_NODISCARD move_to()
|
|
3f1998a0
|
2021-03-15T13:33:44
|
|
[buffer] HB_NODISCARD replace_glyph()
|
|
2902529b
|
2021-03-02T15:05:22
|
|
[subset] Fix HB_TINY build
Fixes https://github.com/harfbuzz/harfbuzzjs/issues/34#issuecomment-789247723
|
|
83b66bfb
|
2021-02-23T13:04:25
|
|
Another try to fix narrowing error
../src/hb-ot-layout-gsubgpos.hh: In instantiation of ‘void OT::ChainRule::serialize_array(hb_serialize_context_t*, OT::HBUINT16, Iterator) const [with Iterator = hb_map_iter_t<hb_array_t<const OT::IntType<short unsigned int> >, const hb_map_t*&, (hb_function_sortedness_t)0, 0>; typename hb_enable_if<hb_is_iterator_of<Lhs, typename Lhs::item_t>::value>::type* <anonymous> = 0; OT::HBUINT16 = OT::IntType<short unsigned int>]’:
../src/hb-ot-layout-gsubgpos.hh:2341:30: required from here
../src/hb-ot-layout-gsubgpos.hh:2326:15: error: narrowing conversion of ‘(unsigned int)g’ from ‘unsigned int’ to ‘short unsigned int’ inside { } [-Werror=narrowing]
c->copy (HBUINT16 {g});
~~~~~~~~^~~~~~~~~~~~~~
https://github.com/harfbuzz/harfbuzz/pull/2875
|
|
f4f35a4d
|
2021-02-22T22:28:32
|
|
[constexpr] Use initializer instead of assignment
|
|
6d941944
|
2021-02-19T17:08:10
|
|
Use auto in range-for-loop more
|
|
08a4997f
|
2020-10-06T13:02:12
|
|
[subset] Add subset support for Extension lookups (GPOS 9, GSUB 7).
|
|
dfa9d7ac
|
2021-02-11T11:08:52
|
|
[minor] Use serializer->propagate_error() to simplify code
|
|
d7e2a51d
|
2021-02-11T10:55:03
|
|
[minor] Add unlikely() when checking for error
|
|
1da75afb
|
2021-02-10T00:03:30
|
|
[minor] Add unlikely()
|
|
6a3fd94f
|
2021-02-09T20:49:04
|
|
Merge pull request #2699 from googlefonts/gpos_8
[subset] Add a more complex layout subsetting test case and fix the issues it exposed.
|
|
6e1afac6
|
2021-02-09T18:48:46
|
|
[minor] Rename internal variable
To address review comment:
https://github.com/harfbuzz/harfbuzz/pull/2699#discussion_r573370781
|
|
8f47dd57
|
2020-11-04T11:05:22
|
|
[subset] don't set lookup visited in closure_lookups_context_t::recurse.
- Lookup::closure_lookups also checks if the lookups visited and sets the lookup to visited. If we set visited in 'recurse' then Lookup::closure_lookups will fail to recurse into the children of the lookup.
- Also when copying ChainRule's skip LookupRecord's that point to lookups which aren't retained. This matches FontTool's behaviour.
|
|
53806e5b
|
2020-11-25T11:51:37
|
|
Tiny improvement on previous commit
Functionally the same.
|
|
a5f6f869
|
2020-10-23T14:25:05
|
|
Drop layout table if layout lookup accelerator allocation failed
If the table is kept, when the table is present but only the accelerator
allocation failed, then we run into nullptr dereferences downstream in
hb_ot_map_t::apply when trying to access proxy.accels[i].
To fix this, instead of only setting lookup_count of accelerator_t
itself, drop the whole table to avoid hb-ot-map construction assuming
that the lookups will work correctly despite accelerator allocation
having failed.
Fixes:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24490
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24490
|
|
718bf5aa
|
2020-09-29T13:16:01
|
|
[subset] only keep features reachable from script in the final subset.
Matches fontTools behaviour.
|
|
e5835053
|
2020-09-29T11:05:08
|
|
[subset] Use plan->glyphset_gsub instead of plan->glyphset for GSUB/GPOS
This matches fontTools behaviour. glyphset_gsub does not contain gids added from closing over composite glyphs in glyf, since these cannot particpate in GSUB/GPOS processing.
|
|
940e1c6f
|
2020-09-28T17:22:01
|
|
[subset] ChainContextFormat3 - don't subset glyph sequences.
The backtrack, input, and lookahead sequence must be matched in their entirety so these sequences should not be subset. If any of the coverage tables in a sequence subsets to empty then the whole subtable should be dropped since it's not possible for this lookup to be activated.
|
|
e31c2690
|
2020-09-28T16:51:25
|
|
[subset] remove unnecessary returns.
|
|
ad241f99
|
2020-09-28T15:26:13
|
|
[subset] check that sub rules in ChainContextFormat 1 and 2 intersect the glyphs set before recursing during closure lookups.
|
|
9fad5402
|
2020-09-28T13:24:25
|
|
[subset] check that sub rules in ContextFormat 1 and 2 intersect the glyphs set before recursing during closure lookups.
|
|
a5c0ec75
|
2020-09-25T14:57:20
|
|
[subset] For [Chain]ContextFormat3 make sure the sub table intersects the retained glyphset before recursing to its lookups.
Otherwise the lookup closure will potentially pull in lookups which cannot be accessed via the retained glyph set.
|
|
dc375559
|
2020-09-25T13:08:46
|
|
[subset] shrink the serialize buffer when pruning empty offsets in ChainContextFormat2.
Currently the code reduces the array length, but does not trim back the space allocated in the serializer for those empty offsets.
|
|
90eb1a40
|
2020-09-25T12:36:32
|
|
[subset] In ChainContextFormat3 don't skip subsetting if backtrack or lookahead are empty.
It's valid to have a ChainContextFormat3 with either an empty backtrack or lookahead. Only drop the lookup if the input sequence is empty.
|
|
8c3d4de7
|
2020-09-09T12:38:34
|
|
[subset] Fix integer underflow in ContextFormat2.
|
|
1e4fe10b
|
2020-08-12T13:06:37
|
|
[ENOMEM] check for error in visited map during closure features.
|
|
9562239f
|
2020-08-12T13:01:22
|
|
[ENOMEM] check for error in lookup visited set.
|
|
9748ae72
|
2020-08-11T17:52:48
|
|
Revert "Reordering fails when GDEF table is absent #2140"
This reverts commit f4cd99f28eefe695b86876736166fd119e22e04e.
As requested in https://github.com/harfbuzz/harfbuzz/issues/2516#issuecomment-670969185
|
|
06dbb6ac
|
2020-07-31T15:56:14
|
|
[ENOMEM] in GSUB ChainContext subsetting check maps for allocation errors.
|
|
5a7cc7fd
|
2020-07-29T08:33:32
|
|
minor spacing tweak
|
|
d0e2addd
|
2020-07-18T22:14:52
|
|
minor
|
|
26111a11
|
2020-06-28T02:59:47
|
|
[dagger] Minor cleanup using hb_enumerate
|
|
1535440b
|
2020-06-19T08:30:59
|
|
[dispatch] Fix debug builds
|
|
70d6696c
|
2020-06-18T17:09:39
|
|
[dispatch] Don't require debug_depth for untraced objects
|
|
dc492d7c
|
2020-06-18T17:03:05
|
|
[dispatch] Comment
|
|
25aec026
|
2020-06-18T16:58:01
|
|
[dispatch] Default return type to hb_empty_t
|
|
8d0a90ac
|
2020-06-18T16:53:54
|
|
[dispatch] Default debug level to 0
|
|
d7d8604e
|
2020-06-18T16:51:01
|
|
Remove excessive trace routes
|
|
e47a2ab8
|
2020-06-18T16:48:07
|
|
Remove unused dispatcher names
|
|
b2a1accc
|
2020-06-18T16:41:31
|
|
Simplify get_glyph_alternates() dispatcher
Trying to make it **very simple** to add a specialized dispatcher for
one API to be routed to just a few objects (one in this case).
|