Behdad Esfahbod
cca42cda46
Merge pull request #3249 from harfbuzz/use-merge-s-o
...
[USE] Merge the categories S and O
2021-10-08 13:10:21 -06:00
David Corbett
bb50aae9b4
[USE] Document customizations of USE categories
2021-10-08 13:25:46 -04:00
David Corbett
7287125c58
[USE] Merge the categories S and O
2021-10-08 13:14:33 -04:00
David Corbett
8eaee2f887
[USE] Only skip default ignorables within CCSes
2021-10-08 10:15:08 -06:00
David Corbett
4645c3b47c
Update comments for U+180F FVS4
2021-10-07 08:52:02 -04:00
Garret Rieger
5b882c420a
[repacker] performance optimizations for topological sorting.
...
- Presize the output sorted graph and write it once in the correct order to avoid needing to reverse.
- Swap the old/new graph vectors instead of copying.
- Use a boolean vector for tracking visited instead of a set.
2021-10-06 11:43:47 -07:00
Garret Rieger
ff7a86e9b0
[repacker] remove clone buffer, they are unnessecary.
...
When nodes are duplicated it's fine to just reuse head, tail from the node being cloned since we don't modify the contents.
2021-10-06 10:51:45 -07:00
Garret Rieger
8cae8b653d
[repacker] add missing fini for parents vector.
2021-10-05 14:03:02 -07:00
Garret Rieger
7f0ede4f04
[repacker] refactor resolve overflow tests to use a helper.
2021-10-05 13:10:01 -07:00
Garret Rieger
79937d24b7
[repacker] Add repacker test that requires space splitting.
2021-10-05 12:53:21 -07:00
Garret Rieger
7883b7ed95
[repacker] Add additional splitting spaces test.
...
Fix issues it uncovered.
2021-10-05 12:46:59 -07:00
Garret Rieger
6265663de4
[repacker] add test for splitting spaces.
2021-10-05 11:30:04 -07:00
Garret Rieger
d97bd4268a
[repacker] when assigning spaces use post isolation node indices.
...
isolate_subgraph can result in some of the roots being duplicated and moved to new indices, so do subgraph isolation before assign roots to spaces.
2021-10-05 10:53:05 -07:00
Khaled Hosny
bb57df7a4f
[test] Add test for https://github.com/harfbuzz/harfbuzz/issues/2757#issuecomment-933531978
2021-10-05 16:04:10 +02:00
Khaled Hosny
1624550377
[test] Add test for https://github.com/harfbuzz/harfbuzz/issues/3244
2021-10-05 16:04:10 +02:00
Behdad Esfahbod
ccfc048153
[indic] Apply 'calt' and 'clig' across syllable boundaries
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3244
2021-10-05 07:00:50 -06:00
Behdad Esfahbod
d58f1685ce
[ot-shape] Tweak table order some more; apply GPOS with morx
...
During 5bc05ba155
accidentally GPOS was disabled when morx was
enabled. Fix that.
Fixes https://github.com/harfbuzz/harfbuzz/issues/2757#issuecomment-933531978
2021-10-04 08:40:24 -06:00
David Corbett
f8ebb8a657
[USE] Update the data files
...
This uses the data files from
<c355d04194/USE
>.
2021-10-04 08:14:20 -06:00
David Corbett
564afc425a
[USE] Remove overrides for hieroglyphic categories
2021-10-04 08:14:20 -06:00
David Corbett
8c65442069
[Unicode 14] Handle U+180F FVS4
2021-10-04 08:14:20 -06:00
Garret Rieger
375a6c8f81
[repacker] add the ability to move subgraphs from a shared space into their own space.
...
Used to resolve overflows during manual resolution.
2021-09-29 18:14:57 -07:00
Garret Rieger
0dccbf368f
[repacker] Handle the case where a subgraph root has an incoming 32 and 16 bit edge.
...
In this case the entire subgraph from that root will be duplicated.
2021-09-29 14:28:27 -07:00
Qunxin Liu
794b00db4b
[subset] fuzzer fix: https://oss-fuzz.com/testcase-detail/6616166961905664
2021-09-29 10:29:06 -06:00
Garret Rieger
816c5302a7
[repacker] restrict 32 bit subgraph connected component search to only nodes reachable via directed links.
2021-09-28 16:04:27 -07:00
Garret Rieger
67eb222b8e
[repacker] when assigning each connected subgraph a space, also isolate it.
...
This will break any links coming from space 0 (ie. the 16 bit offset only space).
2021-09-28 13:54:54 -07:00
Garret Rieger
307acf7fb0
[repacker] add space assignment based on connected components.
...
Assign each connected component that is underneath one or more 32 bit offsets into a unique space. This ensures that 32 bit subgraphs which are connected are packed into the same space.
2021-09-28 12:08:18 -07:00
Garret Rieger
c77bdf1dcf
[repacker] begin storing each nodes parents.
...
Will be used for connected component search.
2021-09-27 14:42:54 -07:00
Garret Rieger
a52c6df38a
[subset] Fix bug in composite operation counting.
...
Adding the result of add_gid_and_children to operation count over counts the number of operations.
2021-09-27 14:18:36 -06:00
Garret Rieger
efda2f14e1
[repacker] fix bug in subgraph isolation.
...
Prior to this fix id remapping at the end of the isolation operation was fed the old subgraph instead of the new one. Which results in object indices being remapped for the nodes outside of the new subgraph. Adds a test which detects this problem.
2021-09-24 17:53:08 -06:00
Behdad Esfahbod
6f19094398
[getn-hb-version.py] Open old output in UTF-8 mode as well
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3227
2021-09-23 08:39:29 -06:00
Garret Rieger
9247d24d7f
[repacker] s/0/HB_TAG_NONE
2021-09-22 18:18:50 -06:00
Garret Rieger
fe155de989
[repacker] handle a couple of duplication edge cases.
...
- Detect cases where there are multiple links from a parent to a child. Don't duplicate that child if those are the only remaining links to the child.
- Correctly handle isolating a subgraph where the root idx has multiple incoming links.
2021-09-22 18:18:50 -06:00
Garret Rieger
c19ec97da7
[repacker] reduce the bits used by order by 2 to give more bits to distance.
2021-09-22 18:18:50 -06:00
Garret Rieger
d5beb96e06
[repacker] add repacker isolation test on real font.
2021-09-22 18:18:50 -06:00
Garret Rieger
d0daa7a59b
[repacker] add a couple more complex isolation tests.
2021-09-22 18:18:50 -06:00
Garret Rieger
62c502cd9d
[repacker] correctly update incoming_edges in duplicate.
2021-09-22 18:18:50 -06:00
Garret Rieger
a57ef8df7e
[repacker] default space to 0.
...
Since vector push() init's new objects to all zeros.
2021-09-22 18:18:50 -06:00
Garret Rieger
58facaade1
[repacker] put each 32 bit subgraph into it's own packing space.
...
Each subgraph pointed to by a 32 bit offset should be packed into it's own space. This adds a space property to vertices which affects the distance calculation. This effectively places the distances for all of the nodes of a 32 bit subgraph into a distinct range. Thus all of the nodes of the subgraph will be packed together.
2021-09-22 18:18:50 -06:00
Garret Rieger
543a3f9733
[repacker] Add repacker test for subgraph isolation.
2021-09-22 18:18:50 -06:00
Garret Rieger
7147f169d6
[repacker] recursively duplicate nodes during isolation.
...
If a node is duplicated during isolation then any children it has will have incoming links from outside the subgraph (from the duplicated node and the original node), so they must be duplicated too.
2021-09-22 18:18:50 -06:00
Garret Rieger
41bbf2812e
[repacker] do extension subtable isolation before starting resolution attempts.
2021-09-22 18:18:50 -06:00
Garret Rieger
8d8b7458a4
[repacker] extract overflows processing into its own method.
2021-09-22 18:18:50 -06:00
Garret Rieger
b14b3f13ba
[repacker] begin implementing the ability to isolate extension subtables.
...
Adds isolate_subgraph operation to the repacker. This severs any links from outside a subgraph by duplicating the affected vertices. This will be used to isolate the subgraphs of a extension subtable from the rest of object graph. Thus allowing the extension subtable to be packed far away from the rest of the objects.
2021-09-22 18:18:50 -06:00
Garret Rieger
02c4a516db
Add a debug message when offset overflow resolution fails.
2021-09-22 18:18:50 -06:00
Ben Wagner
cb2d71c648
[mutex] Add hb_mutex_t std::mutex implementation
...
Instead of failing...
2021-09-22 18:43:58 -04:00
Behdad Esfahbod
67b3962fa5
[atomic] Cannot fail anymore
2021-09-22 18:43:58 -04:00
Qunxin Liu
ca7b9daef0
[subset] subset MATH table
2021-09-22 18:08:30 -04:00
Garret Rieger
c2cc566c9d
[subset] Fix subset_offset_array adding unused space to serializer.
...
ArrayOf.serialize_append allocates space for the new item, but ArrayOf.pop() does not recover the allocated space. So in the case where the revert path was entered the extra space added by serialize_append gets left in the serialization buffer. This moves the snapshot to before ArrayOf.serialize_append is called so that revert cleans up the buffer extend.
2021-09-22 16:07:18 -06:00
Qunxin Liu
8c5c81746d
[subset] fix find_duplicate_features
...
We should check each feature against all other features with the same
tag for duplicates.
2021-09-22 15:35:38 -06:00
Qunxin Liu
1afc3874e0
[subset] add closure_glyphs () method for MATH table
2021-09-22 12:06:59 -04:00