Behdad Esfahbod
a7a3608553
[docs] Rename overflow_resolution to repacker
2021-10-12 16:11:25 -07:00
Behdad Esfahbod
9bd7ba5019
Err on -Wbitwise-instead-of-logical
...
Part of https://github.com/harfbuzz/harfbuzz/pull/3256
2021-10-12 16:10:31 -07:00
Garret Rieger
6bc64317ca
Add a writeup of the overflow resolution algorithm in harfbuzz.
2021-10-12 17:10:07 -06:00
Nico Weber
96299d70ed
Fix Wbitwise-instead-of-logical warnings
...
`a || b` only evaluates b if a is false. `a | b` always evaluates
both a and b. If a and b are of type bool, || is usually what you
want, so clang now warns on `|` where both arguments are of type bool.
This warning fires twice in harfbuzz. In both cases, `|` is used
intentionally, with a comment explaining this.
Slightly reorder the code a bit to make the compiler happy, and to
make it obvious even without a comment that both calls should be evaluated.
No intended behavior change.
2021-10-12 08:56:54 -06:00
faywong
b621c4fc29
[subset] Refine the coding style
2021-10-11 13:07:12 -06:00
faywong
f8538d3117
[subset] Export header & archive when HB_BUILD_SUBSET
...
Ease the adopt of hb-subset feature for 3rd party developers
2021-10-11 13:07:12 -06:00
Qunxin Liu
36ed56b6e8
[subset] code cleanup
...
- rename copy() method if it takes extra parameter
- get rid of same code blocks
2021-10-09 13:37:20 -06:00
David Corbett
3e635cf5e2
[USE] Categorize characters that only have AJT
2021-10-09 07:53:48 -06:00
David Corbett
ae193cd182
[USE] Insert dotted circles before lone viramas
2021-10-09 07:50:09 -06:00
David Corbett
641296b5eb
[USE] Categorize U+11046 BRAHMI VIRAMA as HALANT
2021-10-09 07:50:09 -06:00
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