Commit Graph

12228 Commits

Author SHA1 Message Date
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
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
Qunxin Liu 794b00db4b [subset] fuzzer fix: https://oss-fuzz.com/testcase-detail/6616166961905664 2021-09-29 10:29:06 -06: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
Khaled Hosny 6db4b56e05 Make the file UTF-8 again
GitHub web interface failed to show the encoding change.
2021-09-20 19:18:39 +02:00
Behdad Esfahbod 14a2df7bc2 Add stub HBUINT15 2021-09-19 23:06:09 -04:00