src/graph


Log

Author Commit Date CI Message
Behdad Esfahbod 4afcdf67 2022-11-22T12:56:48 More hb_memcpy
Garret Rieger dd1ba328 2022-11-21T23:20:59 [repacker] fix fuzzer timeout. For https://oss-fuzz.com/testcase-detail/5845846876356608. Only process the set of unique overflows.
Behdad Esfahbod 02b76393 2022-10-29T11:15:03 [config] Re-enable BORING_EXPANSION Only the non-experimental parts (currently avar2) are enabled by default.
Joel Auterson c813f842 2022-10-20T19:45:23 Make build work for arm-none-eabi
Garret Rieger 9559d3c1 2022-10-11T19:49:01 [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.
Garret Rieger 99f4668e 2022-09-29T19:39:59 [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.
Behdad Esfahbod 56c46709 2022-09-20T17:39:54 [subset] Fix compiler warning Fixes https://github.com/harfbuzz/harfbuzz/issues/3823
Garret Rieger a91bfeed 2022-08-18T22:01:48 [repacker] comment cleanup.
Garret Rieger bf28b84a 2022-08-18T01:51:37 [repacker] cleanup unused base_array_id.
Garret Rieger 31976bfb 2022-08-18T01:50:35 [repacker] cleanup unused base_array_links.
Garret Rieger 6f5c52b6 2022-08-18T01:48:10 [repacker] optimize AnchorMatrix::clone. Previous runtime is O(n^2) reduced to O(n).
Garret Rieger 29e3b246 2022-08-18T01:19:54 [repacker] optimzie remove_real_links as it's a hot method.
Garret Rieger 46b5dbd7 2022-08-18T01:18:16 [repacker] optimize index_for_offset.
Garret Rieger 52303638 2022-08-18T01:10:42 [repacker] correct size calculation for MarkBasePosFormat1.
Garret Rieger ac1a853a 2022-08-18T00:55:47 [repacker] implement sanitize methods for MarkBasePos.
Garret Rieger a3ed9f90 2022-08-17T23:39:11 [repacker] fix graph comparison, and mark base pos generation for the tests.
Garret Rieger b46ced95 2022-08-17T17:51:02 [repacker] correct MarkArray size calculation.
Garret Rieger 36c76c27 2022-08-17T17:30:21 [repacker] when clearing links in MarkArray, also clear parents of the children.
Garret Rieger 8c3db8bd 2022-08-17T00:36:23 [repacker] more progress on MarkBasePos tests.
Garret Rieger 1405f96b 2022-08-15T23:48:00 [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.
Garret Rieger 07fd0528 2022-08-15T23:16:51 [repacker] add graph equality check. Does not compare topological sorting, but looks for equivalence of the two graphs.
Garret Rieger 5cf2a25a 2022-08-15T22:49:24 [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.
Garret Rieger c414ef29 2022-08-15T22:10:37 [repacker] Implement MarkArray::shrink.
Garret Rieger f8b55205 2022-08-11T23:09:36 [repacker] Add AnchorMatrix::shrink.
Garret Rieger bbe14417 2022-08-11T22:53:30 [repacker] Begin implementing MarkBasePosFormat1::shrink.
Garret Rieger c9ddf081 2022-08-11T22:34:59 [repacker] Implement AnchorMatrix::clone.
Garret Rieger 5ea3c0be 2022-08-11T22:21:28 [repacker] Implement MarkArray::clone.
Garret Rieger 0083fd10 2022-08-11T22:09:46 [repacker] add as_table() helper to graph.
Garret Rieger b00eb776 2022-08-11T20:33:21 [repack] Add add_link helper to graph.
Garret Rieger 1acd2a8b 2022-08-11T20:22:31 [repacker] implement MarkBasePosFormat1::clone_range.
Garret Rieger cf817f3d 2022-08-11T19:26:59 [repacker] Hook up MarkBasePos splitting.
Garret Rieger 4418beac 2022-08-11T19:08:04 [repacker] start implmenting MarkBasePos splitting.
Garret Rieger fa46dbca 2022-08-08T17:07:14 [repacker] Make actuate_subtable_split internal.
Garret Rieger fe15f255 2022-08-08T16:57:28 [repacker] use position instead of memory address as key in device_tables map.
Garret Rieger 163fbf0b 2022-08-05T23:37:11 [repacker] Check for nullptr's before sanitizing.
Garret Rieger 13253233 2022-08-05T23:15:10 [repacker] in PairPosFormat2 splitting use the max estimated coverage/classdef size for sizing serialization buffers.
Garret Rieger dde0a2b0 2022-08-05T22:30:37 [repacker] track estimated coverage size during PairPosFormat1 split point analysis.
Garret Rieger b37e8bef 2022-08-05T22:16:20 [repacker] count size of the current class at the split point in the next segment.
Garret Rieger 0e48a65d 2022-08-05T20:19:11 [repacker] estimate size of classDef1 and coverage during PairPos2 split point analysis.
Garret Rieger 2264df6d 2022-08-05T18:33:03 [repacker] add utility that can calculate the size of Coverage+ClassDef via incremental class inclusion.
Garret Rieger 5d824c09 2022-08-05T01:37:14 [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.
Garret Rieger e1ab3550 2022-08-05T01:25:16 [repacker] correct lookup link insertion.
Garret Rieger a733a9af 2022-08-05T00:32:47 [repacker] insert new subtables immediately after the subtable they split from in the lookup.
Garret Rieger 506547c9 2022-08-04T21:36:21 [repacker] Use hb_pair_t constructor instead of hb_pair (). hb_pair was causing corrupted gid values.
Garret Rieger fdd1952c 2022-08-04T19:21:16 [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.
Garret Rieger b154b1e4 2022-08-04T01:37:21 [repacker] pull out PairPosFormat1,2::do_split() into a common helper method.
Garret Rieger 88e0dd02 2022-08-04T01:03:07 [repacker] add sanitization for PairPosFormat2.
Garret Rieger 54fab21c 2022-08-03T21:57:37 [repacker] get basic pair pos 2 split test working.
Garret Rieger 60d6ffb3 2022-08-03T21:01:23 [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.
Garret Rieger 6be15242 2022-08-03T19:02:20 [repacker] add basic test for PairPos2 splitting.
Garret Rieger 65ed82fd 2022-08-02T22:22:42 [repacker] PairPosFormat2::do_split.
Garret Rieger f43055f3 2022-08-02T22:16:29 [repacker] Implement PairPosFormat2::shrink.
Garret Rieger 9f2a4464 2022-08-02T21:47:53 [repack] implement device table transfer for PairPosFormat2.
Garret Rieger 22eae32b 2022-08-02T21:04:38 [repacker] add classDef1 clone_range to PairPosFormat2 split.
Garret Rieger 68b90153 2022-08-02T20:58:35 [repacker] Add class def sanitize and range cloning.
Garret Rieger ca0df565 2022-08-02T20:04:46 [repacker] extract coverage cloning into helper.
Garret Rieger 7f4b2037 2022-08-02T18:43:25 [repacker] include size of device tables when determining PairPos2 split points.
Garret Rieger 58fdbd8e 2022-07-30T02:05:15 [repacker] begin adding PairPosFormat2 splitting support.
Behdad Esfahbod a0111e4f 2022-07-30T12:09:45 [graph] Fix warning Fixes https://github.com/harfbuzz/harfbuzz/issues/3766
Garret Rieger 9578c44e 2022-07-29T21:58:24 [repacker] add HB_FALLTRHOUGH.
Garret Rieger 6a5e2cb2 2022-07-29T20:38:53 [repacker] add todo.
Garret Rieger 14f95ee0 2022-07-29T20:09:52 [repacker] re-count shared node sizes in split PairPos segments.
Garret Rieger 3b91fb2a 2022-07-29T20:04:42 [repacker] cleanup todo.
Garret Rieger a0b8893e 2022-07-29T19:58:51 [repacker] add Coverage sanitize.
Garret Rieger 38846f41 2022-07-29T18:30:24 [repacker] more TODO cleanup.
Garret Rieger 46c1fa7d 2022-07-29T18:29:12 [repacker] sanitize PairPos during subtable extension.
Garret Rieger fb3f6ad7 2022-07-29T00:25:19 [repacker] ensure lookup map is updated when lookup memory location changes.
Garret Rieger f1bfb658 2022-07-28T21:01:41 [repacker] cleanup debug prints.
Garret Rieger 65afed04 2022-07-28T20:54:28 [repacker] more bug fixes.
Garret Rieger 1002a3dc 2022-07-28T20:17:36 [repacker] bug fixes.
Garret Rieger a5c2c8c1 2022-07-28T01:27:55 [repack] fix incorrect shrink.
Garret Rieger d589ce68 2022-07-28T01:04:37 [repacker] add extension subtable when needed while adding new PairPos table's.
Garret Rieger 5024d4de 2022-07-28T00:55:36 [repack] more PairPos split implementation.
Garret Rieger 510b8ab1 2022-07-27T23:30:20 [repack] link new coverage in PairPosFormat1::clone_range.
Garret Rieger 29cb8818 2022-07-27T21:02:48 [repacker] new coverage serialization in PairPosFormat1.
Garret Rieger 8d63f60e 2022-07-27T20:36:20 [repack] add graph_t::move_child helper function.
Garret Rieger 8e5fffc4 2022-07-27T20:00:00 [repack] add helper to create new nodes. Switch to malloc'ing each node individually rather than trying to guess up front the total buffer space needed.
Garret Rieger bf0986c7 2022-07-27T19:33:46 [repack] sketch splitting mechanism for PairPosFormat1.
Garret Rieger f6a242b6 2022-07-27T18:58:41 [repacker] begin adding PairPos splitting support.
Garret Rieger 241ebc93 2022-07-26T00:04:20 [repacker] fix include paths.
Garret Rieger 9d0b2da5 2022-07-25T20:46:49 [repacker] count subtable size in each group of consecutive layers for extension promotion decisions. Enforce that the following groups are all <64k in size: - LookupList + Lookups - Lookups + SubTables - SubTables + Descendants
Garret Rieger 9db3beb7 2022-07-25T19:42:58 [repacker] include LookupList size when calculating size of 16bit space for ext promotion decisions.
Garret Rieger 8d611a7f 2022-07-22T22:49:40 [repacker] remove temporary visibility overrides in gsubgpos.
Garret Rieger 7de136f8 2022-07-22T21:04:34 [repacker] add ext promotion test.
Garret Rieger ad0041f5 2022-07-21T22:50:14 [repacker] Add basic version of the extension promotion selection algorithm.
Garret Rieger 0b6ca424 2022-07-21T21:57:17 [repacker] fix GSTAR sanitize.
Garret Rieger 11709f0f 2022-07-21T21:54:42 [repacker] support extension promotion in 24bit GSUB/GPOS.
Garret Rieger b37374b0 2022-07-21T21:50:23 [repacker] save buffer reference (not copy).
Garret Rieger ae290ff4 2022-07-21T21:45:04 [repacker] add sanitization for GSUB/LookupList/Lookup during extension promotion.
Garret Rieger ce03c353 2022-07-21T19:07:55 [repacker] add make_extension_context_t.
Garret Rieger ebb64b50 2022-07-21T18:36:20 [repacker] size buffer correctly.
Garret Rieger 815bb82b 2022-07-20T18:17:29 [repack] fix incorrect extension object bounds.
Garret Rieger 7e6f6c3e 2022-07-20T03:26:29 [repack] fix new node bounds.
Garret Rieger b1d38a6d 2022-07-19T23:33:16 [repack] WIP implement extension promotion mechanism.
Garret Rieger 3f7a74ff 2022-07-19T21:50:13 [repacker] WIP extension promotion implementation.
Garret Rieger b4f561db 2022-07-06T18:49:23 [subset] Add some comments to find_space_roots/find_32_bit_roots methods.
Garret Rieger 401066bf 2022-07-06T18:44:40 [subset] Prepare the repacker for handling 24bit offsets in GSUB/GPOS. The boring expansion (https://github.com/be-fonts/boring-expansion-spec) plans to introduce 24bit offsets into GSUB/GPOS. This changes the repacker to treat 24 bit offsets similar to 32 bit offsets and assign the top level 24 bit offsets into spaces to improve packing.
Garret Rieger 2674962c 2022-06-24T21:00:54 [repacker] Add comment to graph class.
Garret Rieger 7078560e 2022-06-24T19:20:20 [repacker] extract graph serialization code into a seperate file.
Garret Rieger 20b02a67 2022-06-24T18:58:17 [repacker] Begin splitting up the repacker implementation into several files.