Commit Graph

12280 Commits

Author SHA1 Message Date
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
Behdad Esfahbod 3b2929e8a9 [set-digest] Use using instead of typedef 2021-09-21 12:21:17 -06:00
Simon Cozens 5694561f75 Add support for Pwo Karen / Ason Chin medial la
https://github.com/harfbuzz/harfbuzz/pull/3217
2021-09-20 17:01:40 -04:00
Behdad Esfahbod bff5685432 [khmer] Towards separating Khmer from Indic table 2021-09-20 13:25:58 -06:00
Behdad Esfahbod 5d957ffe74 [myanmar] Towards separating Myanmar from Indic table 2021-09-20 11:33:01 -06:00