|
677d6646
|
2024-07-08T15:33:39
|
|
[subset] Make sure the clamp is done in a int64_t space
Otherwise nags about things like this,
In member function ‘int64_t graph::graph_t::vertex_t::modified_distance(unsigned int) const’,
inlined from ‘void graph::graph_t::sort_shortest_distance()’ at ../src/graph/graph.hh:626:24:
../src/graph/graph.hh:371:20: warning: dangling pointer to an unnamed temporary may be used [-Wdangling-pointer=]
371 | hb_clamp (distance + distance_modifier (), (uint64_t) 0, (uint64_t) 0x7FFFFFFFFFF);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
And some of the CI bots fail also like this https://github.com/harfbuzz/harfbuzz/actions/runs/9838686960/job/27159310858?pr=4793
But it probably something else also can be improved which maybe is out of scope for this particular change.
|
|
495937f9
|
2024-07-08T14:46:48
|
|
[subset] Use hb_clamp instead of consequent hb_min and hb_max calls
As just a minor code tweak to clarify the intention better.
|
|
7160c5b9
|
2023-12-05T20:58:00
|
|
[repacker] add tests for multi-duplication.
Further improve the resolution attempt by pre-emptively raising priority of a duplicated shared node.
|
|
6f64fa75
|
2023-12-05T19:45:16
|
|
[repacker] improve resolution of overflows to shared nodes.
Prior to this change overflows to shared nodes were handled by duplicating the link from only a single parent on each iteration. However, I've encountered fonts where there is a large number of parents sharing a single child. Using the prior strategy requires large number of overflow resolution iterations to resolve overflows. This changes shared overflow resolution to duplicate the shared child and re-assign multiple overflowing parents in a single iteration. This reduces total packing size in these cases and allows resolution to complete in far fewer iterations.
|
|
330c32f9
|
2023-11-10T12:27:48
|
|
[graph] Another preallocation
|
|
9c4d3c3c
|
2023-11-10T12:24:26
|
|
[graph] Pre-alloc priority-heap array
|
|
1f395cba
|
2023-10-12T10:06:00
|
|
[instancer] templatize the priority queue, use custom type for varstore
when instantiating varstore, we need to pop a tuple like
(combined_gain, i, j), if combined gain is the same then we compare the
value of i, and then j. So we'd like to use custom type as the key when
popping from the queue. This would match fonttool's algorithm cause it
uses heappop().
|
|
17ee3cd7
|
2023-09-10T07:29:08
|
|
fix warning with unsigned long
|
|
5587247d
|
2023-08-23T21:54:15
|
|
[repacker] create only one extension subtable per physical subtable.
During extension promotion when multiple lookups refer to a shared subtable node create and reuse a single extension subtable for it. Fixes: https://github.com/fonttools/fonttools/issues/3260.
|
|
ca906e87
|
2023-08-16T23:37:03
|
|
[repacker] fix fuzzer timeout.
Corrects some mistakes in the handling of incoming_edges_ when memory allocation failures happen.
|
|
91c449a6
|
2023-08-02T14:40:55
|
|
[graph] Make space_for non-recursive
It was tail-recursive so perhaps the compiler did the same.
Anyway, make it explicit now.
|
|
70b3fbed
|
2023-08-01T15:16:16
|
|
[graph] Fix invalid read when map gets resized
I don't fully understand how the old code was wrong, since
*v should be evaluated before the set() method call.
Yet this seems to fix a bug that could be reproduced
with HB_DEBUG_SUBSET_REPACK enabled and the following:
$ hb-repacker-fuzzer test/fuzzing/graphs/clusterfuzz-testcase-minimized-hb-repacker-fuzzer-6419865171525632
|
|
94d4283b
|
2023-08-01T15:05:17
|
|
[graph] Handle a malloc fail
Fixes https://oss-fuzz.com/testcase-detail/4579249263345664
|
|
603920e9
|
2023-08-01T14:58:33
|
|
[graph] Minor asserts
|
|
8d00476f
|
2023-08-01T14:27:37
|
|
[graph] Minor restructure a condition
|
|
7946984b
|
2023-08-01T14:18:03
|
|
[graph] More assert
|
|
3b386c37
|
2023-08-01T14:12:43
|
|
[graph] Minor assert
|
|
07e70330
|
2023-08-01T12:25:45
|
|
[graph] Error check
|
|
7a9aac1a
|
2023-08-01T12:05:22
|
|
[graph] Fixes to parent handling
|
|
23838e5a
|
2023-07-29T13:20:14
|
|
[graph] Error handling
|
|
04f49092
|
2023-07-28T14:37:52
|
|
[graph] Use a move instead of swap
|
|
3bedb0ee
|
2023-07-27T16:04:01
|
|
[graph] Minor rename
|
|
bb1f53c2
|
2023-07-27T13:29:56
|
|
[graph] Try fixing infinite loop found by CIFuzz under malloc fail
|
|
db3314c1
|
2023-07-27T13:20:32
|
|
[graph] Minor space type change
|
|
6bb61708
|
2023-07-27T13:02:55
|
|
[graph] Try fixing bots
|
|
1b5abb17
|
2023-07-27T12:41:43
|
|
[graph] Speed-up vertices having only one parent
|
|
f3d0b11d
|
2023-07-27T12:20:39
|
|
[graph] Make parents private
|
|
d3b997ee
|
2023-07-26T15:39:14
|
|
[graph] Use a hb_map_t to keep parents, instead of hb_vector_t
In some fonts, for example Noto Duployan-Regular, nodes can
have over a thousand parents... Speeds up 10% subsetting.
|
|
326d319f
|
2023-07-15T13:14:34
|
|
[graph] Micro-optimize
|
|
548230e4
|
2023-07-15T13:13:16
|
|
[graph] Early return from a function
|
|
09706b04
|
2023-07-15T13:11:04
|
|
[graph] Add a pre-alloc to map
|
|
d1ddfc4d
|
2023-07-14T14:52:43
|
|
[graph] Use move instead of swap
|
|
07cb6bf8
|
2023-07-14T13:38:33
|
|
[graph] Minor, type
|
|
867640af
|
2023-07-14T13:09:16
|
|
Revert "[set] Add test_and_add / test_and_del"
This reverts commit de1237fbf2660b5952dde4db171a62d9b1a77c92.
This seems to be a net loss.
|
|
10b776b0
|
2023-07-14T13:08:19
|
|
[graph] Micro-optimize
|
|
de1237fb
|
2023-07-14T12:38:56
|
|
[set] Add test_and_add / test_and_del
Use in graph.
|
|
7f1ff9c8
|
2023-07-14T12:22:24
|
|
[graph] Micro-optimize array access
|
|
11308c4d
|
2023-06-08T14:51:18
|
|
[graph] Remove manual destruction
Happens automatically by destructor.
|
|
67b16247
|
2023-06-07T16:15:48
|
|
[set] Simplify a few set iterations as range loop
|
|
20c564bc
|
2023-05-26T23:04:25
|
|
[repacker] Fix fuzzer memory leak.
https://oss-fuzz.com/testcase-detail/6419865171525632
|
|
3f9eb03b
|
2023-05-01T12:49:40
|
|
[graph] Micro-optimize
|
|
e4fff64c
|
2023-01-24T00:52:26
|
|
[repacker] check duplicate() for success.
Fixes fuzzer testcase https://oss-fuzz.com/testcase-detail/5475787333828608.
|
|
ed023f66
|
2023-01-12T17:04:24
|
|
Enable -Wformat-signedness
And fix the codebase.
|
|
35233d25
|
2022-12-07T00:47:28
|
|
[repacker] fix fuzzer reported stack overflow.
Fixes https://oss-fuzz.com/testcase-detail/6014493291577344.
|
|
f1d34893
|
2022-12-05T19:33:15
|
|
[repacker] bail on failure to alloc assigned_bytes set.
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/5390364397928448.
|
|
239a5aca
|
2022-12-05T19:15:36
|
|
[repacker] don't allow references to the null object in graph.
Fixes fuzzer issue https://oss-fuzz.com/testcase-detail/6714085985353728
|
|
de5a6213
|
2022-12-01T23:37:16
|
|
[repacker] enforce root node having no incoming edges.
|
|
30e405e4
|
2022-12-01T22:12:59
|
|
[repacker] ensure link obj indices are valid.
|
|
554ed06f
|
2022-12-01T21:51:17
|
|
[repacker] add cycle detection to the graph sort.
This allows us to bail early if the graph is not acyclic.
|
|
9e99d084
|
2022-09-08T23:19:02
|
|
[repacker] validate link widths during repacker setup.
|
|
edf7a295
|
2022-09-08T22:59:34
|
|
[repacker] Validate link positions before running the repacker.
|
|
deca30b2
|
2022-09-08T21:10:06
|
|
[repacker] get repacker fuzzer working.
Additionally add helper method that allows a graph to be saved as a fuzzer seed.
|
|
985b19f6
|
2022-09-07T22:21:16
|
|
[repacker] begin implementing a fuzzer for the repacker api.
|
|
915c1a00
|
2022-11-26T14:48:57
|
|
[vector] Add remove_unordered
Saves 5% in NotoNastaliq/1000 subset benchmark.
|
|
c813f842
|
2022-10-20T19:45:23
|
|
Make build work for arm-none-eabi
|
|
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.
|
|
56c46709
|
2022-09-20T17:39:54
|
|
[subset] Fix compiler warning
Fixes https://github.com/harfbuzz/harfbuzz/issues/3823
|
|
29e3b246
|
2022-08-18T01:19:54
|
|
[repacker] optimzie remove_real_links as it's a hot method.
|
|
46b5dbd7
|
2022-08-18T01:18:16
|
|
[repacker] optimize index_for_offset.
|
|
ac1a853a
|
2022-08-18T00:55:47
|
|
[repacker] implement sanitize methods for MarkBasePos.
|
|
a3ed9f90
|
2022-08-17T23:39:11
|
|
[repacker] fix graph comparison, and mark base pos generation for the tests.
|
|
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.
|
|
07fd0528
|
2022-08-15T23:16:51
|
|
[repacker] add graph equality check.
Does not compare topological sorting, but looks for equivalence of the two graphs.
|
|
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.
|
|
0083fd10
|
2022-08-11T22:09:46
|
|
[repacker] add as_table() helper to graph.
|
|
b00eb776
|
2022-08-11T20:33:21
|
|
[repack] Add add_link helper to graph.
|
|
1acd2a8b
|
2022-08-11T20:22:31
|
|
[repacker] implement MarkBasePosFormat1::clone_range.
|
|
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.
|
|
3b91fb2a
|
2022-07-29T20:04:42
|
|
[repacker] cleanup todo.
|
|
fb3f6ad7
|
2022-07-29T00:25:19
|
|
[repacker] ensure lookup map is updated when lookup memory location changes.
|
|
65afed04
|
2022-07-28T20:54:28
|
|
[repacker] more bug fixes.
|
|
1002a3dc
|
2022-07-28T20:17:36
|
|
[repacker] bug fixes.
|
|
29cb8818
|
2022-07-27T21:02:48
|
|
[repacker] new coverage serialization in PairPosFormat1.
|
|
8d63f60e
|
2022-07-27T20:36:20
|
|
[repack] add graph_t::move_child helper function.
|
|
241ebc93
|
2022-07-26T00:04:20
|
|
[repacker] fix include paths.
|
|
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
|
|
9db3beb7
|
2022-07-25T19:42:58
|
|
[repacker] include LookupList size when calculating size of 16bit space for ext promotion decisions.
|
|
ad0041f5
|
2022-07-21T22:50:14
|
|
[repacker] Add basic version of the extension promotion selection algorithm.
|
|
ae290ff4
|
2022-07-21T21:45:04
|
|
[repacker] add sanitization for GSUB/LookupList/Lookup during extension promotion.
|
|
ce03c353
|
2022-07-21T19:07:55
|
|
[repacker] add make_extension_context_t.
|
|
815bb82b
|
2022-07-20T18:17:29
|
|
[repack] fix incorrect extension object bounds.
|
|
7e6f6c3e
|
2022-07-20T03:26:29
|
|
[repack] fix new node bounds.
|
|
b1d38a6d
|
2022-07-19T23:33:16
|
|
[repack] WIP implement extension promotion mechanism.
|
|
3f7a74ff
|
2022-07-19T21:50:13
|
|
[repacker] WIP extension promotion implementation.
|
|
b4f561db
|
2022-07-06T18:49:23
|
|
[subset] Add some comments to find_space_roots/find_32_bit_roots methods.
|
|
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.
|
|
2674962c
|
2022-06-24T21:00:54
|
|
[repacker] Add comment to graph class.
|
|
7078560e
|
2022-06-24T19:20:20
|
|
[repacker] extract graph serialization code into a seperate file.
|
|
20b02a67
|
2022-06-24T18:58:17
|
|
[repacker] Begin splitting up the repacker implementation into several files.
|