Commit Graph

38 Commits

Author SHA1 Message Date
Garret Rieger 1acd2a8bf9 [repacker] implement MarkBasePosFormat1::clone_range. 2022-08-11 20:22:31 +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 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 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 a0b8893e46 [repacker] add Coverage sanitize. 2022-07-29 22:21:31 +00:00
Garret Rieger 38846f41d3 [repacker] more TODO cleanup. 2022-07-29 22:21:31 +00:00
Garret Rieger 46c1fa7d1b [repacker] sanitize PairPos during subtable extension. 2022-07-29 22:21:31 +00:00
Garret Rieger f1bfb6585f [repacker] cleanup debug prints. 2022-07-29 22:21:31 +00:00
Garret Rieger a5c2c8c131 [repack] fix incorrect shrink. 2022-07-29 22:21:31 +00:00
Garret Rieger 5024d4de67 [repack] more PairPos split implementation. 2022-07-29 22:21:31 +00:00
Garret Rieger 510b8ab101 [repack] link new coverage in PairPosFormat1::clone_range. 2022-07-29 22:21:31 +00:00
Garret Rieger 29cb8818cd [repacker] new coverage serialization in PairPosFormat1. 2022-07-29 22:21:31 +00:00
Garret Rieger 8d63f60e5b [repack] add graph_t::move_child helper function. 2022-07-29 22:21:31 +00:00
Garret Rieger bf0986c7d1 [repack] sketch splitting mechanism for PairPosFormat1. 2022-07-29 22:21:30 +00:00
Garret Rieger f6a242b605 [repacker] begin adding PairPos splitting support. 2022-07-29 22:21:30 +00:00