Commit Graph

86 Commits

Author SHA1 Message Date
Garret Rieger ac1a853abc [repacker] implement sanitize methods for MarkBasePos. 2022-08-18 00:55:47 +00:00
Garret Rieger a3ed9f9099 [repacker] fix graph comparison, and mark base pos generation for the tests. 2022-08-17 23:39:11 +00:00
Garret Rieger b46ced9562 [repacker] correct MarkArray size calculation. 2022-08-17 17:51:29 +00:00
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
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
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
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
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
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
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 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
Garret Rieger 65ed82fde5 [repacker] PairPosFormat2::do_split. 2022-08-02 22:22:42 +00:00
Garret Rieger f43055f35a [repacker] Implement PairPosFormat2::shrink. 2022-08-02 22:16:29 +00:00
Garret Rieger 9f2a44640c [repack] implement device table transfer for PairPosFormat2. 2022-08-02 21:47:53 +00:00
Garret Rieger 22eae32b3b [repacker] add classDef1 clone_range to PairPosFormat2 split. 2022-08-02 21:04:38 +00:00
Garret Rieger 68b90153ea [repacker] Add class def sanitize and range cloning. 2022-08-02 20:58:35 +00:00
Garret Rieger ca0df565f7 [repacker] extract coverage cloning into helper. 2022-08-02 20:04:46 +00:00
Garret Rieger 7f4b2037a5 [repacker] include size of device tables when determining PairPos2 split points. 2022-08-02 18:43:25 +00:00
Garret Rieger 58fdbd8e5d [repacker] begin adding PairPosFormat2 splitting support. 2022-08-02 17:32:13 +00:00
Behdad Esfahbod a0111e4fab [graph] Fix warning
Fixes https://github.com/harfbuzz/harfbuzz/issues/3766
2022-07-30 12:09:45 -06:00
Garret Rieger 9578c44ea2 [repacker] add HB_FALLTRHOUGH. 2022-07-29 22:21:32 +00:00
Garret Rieger 6a5e2cb2f8 [repacker] add todo. 2022-07-29 22:21:32 +00:00
Garret Rieger 14f95ee0cf [repacker] re-count shared node sizes in split PairPos segments. 2022-07-29 22:21:32 +00:00
Garret Rieger 3b91fb2a9f [repacker] cleanup todo. 2022-07-29 22:21:31 +00:00
Garret Rieger a0b8893e46 [repacker] add Coverage sanitize. 2022-07-29 22:21:31 +00:00