Garret Rieger
36c76c27c6
[repacker] when clearing links in MarkArray, also clear parents of the children.
2022-08-17 17:30:21 +00:00
Garret Rieger
8c3db8bdfd
[repacker] more progress on MarkBasePos tests.
2022-08-17 00:36:23 +00:00
Behdad Esfahbod
172cc82032
[BUILD] Minor reword (and reformat)
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3784
2022-08-16 13:21:02 -06:00
Garret Rieger
1405f96b6f
[repacker] change run_resolve_overflow_test to check for graph equivalence.
...
Replaces a check for an exact match on the final serialized bytes. The previous check enforced equivalent topological sorting between result and expected, but we only really care that the graph's are equivalent and don't overflow.
2022-08-15 23:48:00 +00:00
Garret Rieger
07fd0528c0
[repacker] add graph equality check.
...
Does not compare topological sorting, but looks for equivalence of the two graphs.
2022-08-15 23:16:51 +00:00
Garret Rieger
5cf2a25a60
[repacker] Expose on internal method in the repacker that allows the caller to pass in/out a graph.
...
Will be used in testing so we can compare graphs instead of packed result.
2022-08-15 22:49:24 +00:00
Garret Rieger
c414ef292b
[repacker] Implement MarkArray::shrink.
2022-08-15 22:10:37 +00:00
Behdad Esfahbod
4ab7e579cb
Make HB_BORING_EXPANSION opt-in instead of opt-out
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3757
2022-08-12 12:23:48 -06:00
Garret Rieger
f8b5520556
[repacker] Add AnchorMatrix::shrink.
2022-08-11 23:09:36 +00:00
Garret Rieger
bbe14417ad
[repacker] Begin implementing MarkBasePosFormat1::shrink.
2022-08-11 22:53:30 +00:00
Garret Rieger
c9ddf0815a
[repacker] Implement AnchorMatrix::clone.
2022-08-11 22:34:59 +00:00
Garret Rieger
5ea3c0be8f
[repacker] Implement MarkArray::clone.
2022-08-11 22:21:28 +00:00
Garret Rieger
0083fd109c
[repacker] add as_table() helper to graph.
2022-08-11 22:09:46 +00:00
Garret Rieger
b00eb77682
[repack] Add add_link helper to graph.
2022-08-11 20:33:21 +00:00
Garret Rieger
1acd2a8bf9
[repacker] implement MarkBasePosFormat1::clone_range.
2022-08-11 20:22:31 +00:00
Garret Rieger
cf817f3d99
[repacker] Hook up MarkBasePos splitting.
2022-08-11 19:26:59 +00:00
Garret Rieger
4418beac93
[repacker] start implmenting MarkBasePos splitting.
2022-08-11 19:08:04 +00:00
Behdad Esfahbod
f4f7d691af
Merge pull request #3779 from harfbuzz/split_pair_pos_2
...
[repacker] Add PairPosFormat2 table splitting in the repacker.
2022-08-09 22:23:23 -06:00
Garret Rieger
fa46dbca9d
[repacker] Make actuate_subtable_split internal.
2022-08-08 17:07:14 +00:00
Garret Rieger
fe15f2559f
[repacker] use position instead of memory address as key in device_tables map.
2022-08-08 16:57:28 +00:00
Garret Rieger
163fbf0be1
[repacker] Check for nullptr's before sanitizing.
2022-08-05 23:37:11 +00:00
Garret Rieger
13253233f7
[repacker] in PairPosFormat2 splitting use the max estimated coverage/classdef size for sizing serialization buffers.
2022-08-05 23:15:10 +00:00
Garret Rieger
dde0a2b071
[repacker] track estimated coverage size during PairPosFormat1 split point analysis.
2022-08-05 22:30:37 +00:00
Garret Rieger
b37e8bef0e
[repacker] count size of the current class at the split point in the next segment.
2022-08-05 22:16:20 +00:00
Qunxin Liu
7fde6ab025
fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49790
2022-08-05 15:10:31 -06:00
Behdad Esfahbod
a4e0fd1685
[MultipleSubst] Rewrite serialize signature as single iterator
2022-08-05 15:05:51 -06:00
Behdad Esfahbod
65d28bc5a7
[MultipleSubst] Rewrite serialize() in terms of iterators
...
Unused still, and hence untested
2022-08-05 14:56:07 -06:00
Behdad Esfahbod
b57ea3b053
Revert "[iter] Use && in uses of is_source_of"
...
This reverts commit ccbba667a9
.
2022-08-05 14:29:27 -06:00
Garret Rieger
0e48a65d32
[repacker] estimate size of classDef1 and coverage during PairPos2 split point analysis.
2022-08-05 20:19:11 +00:00
Garret Rieger
2264df6da3
[repacker] add utility that can calculate the size of Coverage+ClassDef via incremental class inclusion.
2022-08-05 18:33:03 +00:00
Behdad Esfahbod
ccbba667a9
[iter] Use && in uses of is_source_of
2022-08-05 11:51:51 -06:00
Behdad Esfahbod
8fb7cc1c63
[iter] Use && in is_sink_of uses
2022-08-05 11:49:29 -06:00
Garret Rieger
5d824c09c0
[repacker] during table splits don't mutate shared coverage/classdef in place.
...
If other subtables are sharing coverage with a subtable being split we have to duplicate the coverage/classdef tables before they are modified during the shrink operation.
2022-08-05 01:37:14 +00:00
Garret Rieger
e1ab355056
[repacker] correct lookup link insertion.
2022-08-05 01:25:16 +00:00
Garret Rieger
a733a9afa5
[repacker] insert new subtables immediately after the subtable they split from in the lookup.
2022-08-05 00:32:47 +00:00
Garret Rieger
506547c958
[repacker] Use hb_pair_t constructor instead of hb_pair ().
...
hb_pair was causing corrupted gid values.
2022-08-04 21:36:21 +00:00
Garret Rieger
fdd1952c75
[repacker] PairPosFormat2 splitting - fix coverage and classdef splitting.
...
The old code was splitting based on coverage index, but should have been splitting on class value.
2022-08-04 19:21:16 +00:00
Behdad Esfahbod
c67c1b745b
VarStore: simplify again
2022-08-04 11:42:22 -06:00
Behdad Esfahbod
914542bd18
Whitespace
2022-08-04 11:40:54 -06:00
Behdad Esfahbod
d7adc55e18
[ot-font] Allow 24bit glyphs in advance cache
2022-08-04 11:40:54 -06:00
Behdad Esfahbod
99070a734a
[cache] Use short instead of int if fits
2022-08-04 11:40:54 -06:00
Qunxin Liu
d831e935df
bug fix in VarData get_delta ()
...
when LONG_WORDS flag is set, item row is not computed correctly
lcursor should be interpreted as INT32
2022-08-04 11:40:42 -06:00
Garret Rieger
b154b1e4c3
[repacker] pull out PairPosFormat1,2::do_split() into a common helper method.
2022-08-04 01:37:21 +00:00
Garret Rieger
88e0dd02cb
[repacker] add sanitization for PairPosFormat2.
2022-08-04 01:03:07 +00:00
Garret Rieger
51a5060273
[repacker] add test for splitting a PairPos2 w/ device tables.
2022-08-03 22:30:42 +00:00
Garret Rieger
54fab21cb1
[repacker] get basic pair pos 2 split test working.
2022-08-03 21:57:37 +00:00
Garret Rieger
60d6ffb375
[repacker] always duplicate classDef2 when splitting a PairPos2.
...
Splits are done in a way that it shouldn't be possible to share the classDef2 between split PairPos2's so pre-emptively duplicate it.
2022-08-03 21:01:23 +00:00
Garret Rieger
6be152420f
[repacker] add basic test for PairPos2 splitting.
2022-08-03 19:02:20 +00:00
Behdad Esfahbod
b78546b1d2
[cache] Residual
2022-08-03 13:02:18 -06:00
Behdad Esfahbod
ec90d1e161
[cache] Add a non-threadsafe version
...
Use in hb-ft, since already mutex'ed.
2022-08-03 13:01:04 -06:00