Behdad Esfahbod
4afcdf675b
More hb_memcpy
2022-11-22 12:56:48 -07:00
Behdad Esfahbod
02b76393ef
[config] Re-enable BORING_EXPANSION
...
Only the non-experimental parts (currently avar2) are
enabled by default.
2022-10-29 11:19:04 -06:00
Garret Rieger
9559d3c1c1
[repacker] fix incorrect coverage table size estimation.
...
During splitting of PairPosFormat2 the code was assuming the maximum size of the generated coverage table would be equal too the current size. This is incorrect size the new coverage table may not preserve the ranges found in the original coverage table (since we are splitting based on class, not coverage) and in the worst case may convert from format2 to format1. So use the size of a format1 table as the max size.
2022-10-11 14:06:04 -06:00
Garret Rieger
99f4668e19
[repacker] use mutable copies of Coverage/ClassDef in MarkBasePos shrink operation.
...
Also make mutable copies (when needed) of the top level subtables during a split operation.
2022-09-30 10:58:50 -06:00
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