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
Behdad Esfahbod
c852b86841
Rename HBGlyphID to HBGlyphID16
2021-09-19 16:30:12 -04:00
Garret Rieger
74f96d9d4b
[repacker] fix heap use after free in repacker.
...
Don't store a reference to the link in overflow records as the link object may be freed if the sorted graph vector is resized.
2021-09-19 09:06:17 -06:00
ActuallyaDeviloper
7143c8333b
Make the code able to compile with MSVC++ from Visual Studio 2015 (Version 14.0.25431.01, Update 3) sucessfully again.
2021-09-19 09:05:52 -06:00
Khaled Hosny
b36f1510ec
[doc] Add missing version tags
2021-09-18 23:09:07 +02:00
Khaled Hosny
9c387e20d6
3.0.0
2021-09-17 21:32:30 +02:00
Behdad Esfahbod
e0d5fe740a
Centralize math include
...
https://github.com/harfbuzz/harfbuzz/pull/3212
2021-09-17 06:41:07 -06:00
Khaled Hosny
a59e7ec993
[meson] Add ragel_subproject option
...
Add an option to build fallback ragel subproject when no suitable ragel
version is found, and make it off by default since most builder don’t
need ragel at all.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3208 (hopefully)
2021-09-17 06:12:14 -06:00
Garret Rieger
d700646c33
[subset] In preperation for 3.0.0 release remove legacy subsetting api methods.
2021-09-16 15:31:29 -06:00
Behdad Esfahbod
ae14537854
[style] Change tag type to hb_style_tag_t
...
https://github.com/harfbuzz/harfbuzz/pull/3201#discussion_r708914354
2021-09-15 07:46:33 -04:00
David Corbett
470686e817
[USE] Send Khitan Small Script and Yezidi to USE
2021-09-14 19:42:29 -06:00
Khaled Hosny
22cbd038d3
[meson] Add ragel subproject
...
If ragel 6.10 is not found, build it from source.
Seems to work, except that ragel uses exceptions and we configure
HarfBuzz build to not use exceptions, and I can’t find away to enable
exceptions only for the ragel subproject. I had to remove cpp_eh=none
from default options and try to disable exceptions in MSVC manually
(other compilers are already handled).
2021-09-14 18:46:33 -06:00
Khaled Hosny
5898a9618c
[ragel] Regenerate state machine files with 6.10
2021-09-14 18:46:33 -06:00
Khaled Hosny
7e9ac8fea2
[meson] Require ragel 6.10
...
Ragel 7 is also not stable from upstream's point of view.
This uses “version” argument find_program(), which was introduced in
meson 0.52.0, so I raised the minimum required meson version
accordingly.
2021-09-14 18:46:33 -06:00
David Corbett
f1493357f7
[Unicode 14] Update the Arabic joining script list
2021-09-14 18:46:50 -04:00
David Corbett
2c3e4b279b
[Unicode 14] Send all the new scripts to USE
2021-09-14 18:31:42 -04:00
David Corbett
20736d9bb3
[Unicode 14] Update the USE table
2021-09-14 18:25:38 -04:00
David Corbett
35ac0de42b
[Unicode 14] Update the emoji table
2021-09-14 18:14:20 -04:00
David Corbett
ec5688f50f
[Unicode 14] Update the vowel constraint table
2021-09-14 18:09:05 -04:00
David Corbett
11d5334d8e
[Unicode 14] Update the Indic table
2021-09-14 18:07:38 -04:00
David Corbett
18a46eeafb
[Unicode 14] Update the Arabic table
2021-09-14 18:07:38 -04:00
David Corbett
7b05eec054
[Unicode 14] Update the script direction list
2021-09-14 18:07:38 -04:00
David Corbett
26e1498e76
[Unicode 14] Update the UCD table
2021-09-14 18:07:29 -04:00
David Corbett
67f1aa4d21
[Unicode 14] Add new `hb_script_t` values
2021-09-14 18:05:08 -04:00
Behdad Esfahbod
bda3238c89
Add fallback atexit implementation using template descrutors
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3197
2021-09-14 08:12:48 -04:00
Behdad Esfahbod
9c27045158
[style] Fix another float conversion warning
2021-09-14 07:50:35 -04:00
Behdad Esfahbod
5a1a6f1fe3
[ot-shape] Enabled two more features: 'Harf' and 'Buzz'
...
Considered 'required', as opposed to existing 'HARF' and 'BUZZ',
consider them discretionary.
See discussion in https://github.com/harfbuzz/harfbuzz/issues/3200
2021-09-14 07:14:56 -04:00
Behdad Esfahbod
ed1163208d
Call atexit() via hb_atexit()
...
Part of https://github.com/harfbuzz/harfbuzz/issues/3197
2021-09-14 07:11:46 -04:00
Behdad Esfahbod
ad4df20dd6
[style] Fix float conversion warning
2021-09-14 07:11:46 -04:00
Behdad Esfahbod
c5cc23a9b5
[style] Change private slant tag
...
https://github.com/harfbuzz/harfbuzz/issues/3200#issuecomment-918352162
2021-09-13 12:14:06 -04:00
Khaled Hosny
d748586a18
[style] Try harder to fix MSVC build
...
https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants?view=msvc-160
2021-09-13 10:10:10 -06:00
Khaled Hosny
e275f0d7ed
[style] Try to fix MSVC build
2021-09-13 10:10:10 -06:00
Khaled Hosny
eb4075a1ed
[style] Fix documentation
...
Message documentation a bit to get it working.
2021-09-13 10:10:10 -06:00
Khaled Hosny
4d9b7de0b6
[style] Prepare for release
2021-09-13 10:10:10 -06:00
Khaled Hosny
34ff2d3ea6
Fix build with -Dexperimental_api=true
...
../src/hb-style.cc:102:32: error: no matching function for call to 'hb_style_get_value'
return _hb_angle_to_ratio (hb_style_get_value (HB_STYLE_TAG_SLANT_ANGLE));
^~~~~~~~~~~~~~~~~~
../src/hb-style.cc:99:1: note: candidate function not viable: requires 2 arguments, but 1 was provided
hb_style_get_value (hb_font_t *font, hb_tag_t tag)
^
and
../src/hb-style.cc:80:1: error: unused function '_hb_ratio_to_angle' [-Werror,-Wunused-function]
_hb_ratio_to_angle (float r)
^
2021-09-11 00:12:03 +02:00
Behdad Esfahbod
39c20d2b9e
[style] Add HB_STYLE_TAG_SLANT_RATIO
2021-09-10 04:59:16 -06:00
Behdad Esfahbod
201cbe3c66
[style] Rename HB_STYLE_TAG_SLANT to HB_STYLE_TAG_SLANT_ANGLE
2021-09-10 04:59:16 -06:00
Behdad Esfahbod
a23ce28977
[style] Fall back to GPOS 'size' feature for optical size in style API
2021-09-10 04:59:16 -06:00
Qunxin Liu
37379f8f7d
[subset] fox for (Chain)ContextFormat3: subset lookupRecord
...
skip copying a lookupRecord if lookup referenced in the lookupRecord is
not retained after subset
2021-09-08 13:55:21 -06:00
Khaled Hosny
9b7af950b3
[docs] Fix subset documentation
...
List the missing new APIs and unlist all the to be deleted legacy APIs.
2021-09-07 15:05:42 +02:00
Khaled Hosny
505df5abf8
2.9.1
2021-09-07 13:46:43 +02:00
Khaled Hosny
195c05df99
Revert "[ot-shape-normalize] Move buffer out of hb_ot_shape_normalize_context_t"
...
This reverts commit 8cdbea5580
.
For some reason this is causing several tests to crash locally for me
(on macOS), see:
8cdbea5580 (commitcomment-55898088)
2021-09-04 03:41:19 +02:00
David Corbett
f4559d2435
Update hb-ot-tag-table.hh
2021-09-03 18:40:47 +02:00
Garret Rieger
2bd911b8b4
[subset] handle cmap4 overflows.
...
If a cmap4 subtable overflows during serialization drop it and the corresponding EncodingRecord. Don't drop the corresponding cmap12 table if it would have otherwise been removed.
2021-09-02 14:43:17 -06:00
Behdad Esfahbod
bf81bbfb35
Revert "[arabic] Do not re-compose Unicode sequences"
...
This reverts commit ff34c240b0
.
https://github.com/harfbuzz/harfbuzz/issues/3179#issuecomment-911242833
2021-09-02 00:16:22 -06:00
Behdad Esfahbod
ff34c240b0
[arabic] Do not re-compose Unicode sequences
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3179
2021-09-01 23:55:25 -06:00
Alba Mendez
5fadf4c85e
Small docs improvement
...
Mention that the returned strings are always nul terminated for convenience.
2021-09-01 10:04:04 -06:00
Behdad Esfahbod
5c4c173b06
Merge pull request #3146 from googlefonts/set_api
...
[subset] proposed update to subset set apis.
2021-08-30 16:44:28 -06:00
Garret Rieger
de85636581
[subset] s/REPLACE/REPLACEME/
2021-08-30 14:36:05 -07:00
Garret Rieger
3844e58e14
[subset] remove helper functions for accessing subset input sets.
2021-08-30 11:16:51 -07:00
Behdad Esfahbod
41b9f2abcd
[set] Add TODO item
2021-08-29 10:47:20 -06:00
Behdad Esfahbod
93ac700da6
[set] Add copy-constructor/assignment again
2021-08-29 10:47:20 -06:00
Garret Rieger
b9a176e268
[subset] speedup cmap4 subsetting for large codepoint counts. ( #3178 )
...
glyphIdArray generation implementation was O(n^2). Refactored to use a hashmap to reduce complexity. After the change subset time for a 22k codepoint subset went from 7s to 0.7s.
2021-08-29 10:33:12 -06:00
Garret Rieger
57d6bf8251
[subset] in sets union correctly size the pointer array.
2021-08-27 10:59:28 -07:00
Garret Rieger
102666dab7
[subset] add test for hb_subset_input_set (...).
2021-08-27 10:36:42 -07:00
Garret Rieger
7194c2a2a3
[subset] use anonymous union to hold the input sets instead of a map.
2021-08-27 10:36:42 -07:00
Garret Rieger
05204d7586
[subset] implement hb_subset_input_set (...).
...
Switch to storing the sets keyed by enum internally.
2021-08-27 10:36:36 -07:00
Garret Rieger
50193262f0
[subset] reorder set enums.
2021-08-27 10:34:59 -07:00
Garret Rieger
3282f540a9
[subset] restore legacy set api methods.
2021-08-27 10:34:58 -07:00
Garret Rieger
1457c1f080
[subset] set enum name changes.
2021-08-27 10:34:58 -07:00
Garret Rieger
1b5e159301
[subset] Remove HB_SUBSET_SETS_COUNT and flags comment.
2021-08-27 10:34:58 -07:00
Garret Rieger
4c389fd9e5
[subset] add unicode and glyph set enums.
2021-08-27 10:34:58 -07:00
Garret Rieger
e3e1ae8766
[subset] proposed update to subset set apis.
2021-08-27 10:34:58 -07:00
Garret Rieger
9db494f517
[subset] Update remaining subset input sets to use inversion for all. ( #3172 )
...
* [subset] Update remaining subset input sets to use inversion for all.
* [subset] Update flag help for remaining sets to mention -=.
2021-08-26 10:51:38 -06:00
Behdad Esfahbod
99356ea5f0
Merge pull request #3150 from harfbuzz/item-context-tests
...
[test] Add tests for item context
2021-08-25 17:19:06 -06:00
Behdad Esfahbod
1620698bd5
[subset-input] Minor format
2021-08-25 16:26:58 -06:00
Garret Rieger
cd07070e41
[subset] Move plan unicodes and gids population to end of _populate_unicodes...
2021-08-25 14:42:00 -07:00
Behdad Esfahbod
4b5a81f13c
[buffer] Fix hb_buffer_append() pre/post-context logic
...
Part of https://github.com/harfbuzz/harfbuzz/pull/3150
2021-08-25 15:20:54 -06:00
Garret Rieger
8f4f47df7c
[subset] use inverted set for all unicodes.
...
Modify the code that handles input->unicodes to be safe with possibly inverted sets. Also adds --unicodes-= and --unicodes+= flags.
2021-08-25 13:34:05 -07:00
Behdad Esfahbod
e9e6d66cd6
[subset] Minor internal parameter rename
2021-08-24 23:22:49 -06:00
Garret Rieger
59deb754b3
[subset] rename _collect_subset_layout to _collect_layout_indices.
...
Better describes what the function does.
2021-08-24 18:17:07 -06:00
Garret Rieger
f2441a4b65
[subset] Remove retain all layout features flag.
...
Instead use inverted sets to handle requesting all features. Modifies feature collection in subset plan to intersect the set of requested features against the features in the font. This prevents iterating a fully filled feature tag set.
2021-08-24 18:17:07 -06:00
Behdad Esfahbod
c90678cbc5
[set] One more try to fix things
...
That I don't let a "make check -j10" run finish before pushing things
out means either that we need to speed up our build / test process,
or I need a faster laptop...
2021-08-24 11:11:12 -06:00
Behdad Esfahbod
357976963e
[set] One more try at fixing clear() on empty set
2021-08-24 10:59:31 -06:00
Garret Rieger
fb07f8f876
During subset input creation check for set alloc failures and fail if encountered.
2021-08-24 10:59:14 -06:00
Behdad Esfahbod
b5177d2147
[set] Fix seam exposed by previous commit
2021-08-24 10:43:37 -06:00
Behdad Esfahbod
f0de40dd61
Whitespace
2021-08-24 10:35:33 -06:00
Behdad Esfahbod
8cdbea5580
[ot-shape-normalize] Move buffer out of hb_ot_shape_normalize_context_t
2021-08-24 10:35:33 -06:00
Behdad Esfahbod
10da9fd20d
[ot-map] Whitespace
2021-08-24 10:35:33 -06:00
Behdad Esfahbod
d3e09bf465
[set] Make all operators null-safe again
...
Changed my mind.
Also for hb_map_clear().
Part of https://github.com/harfbuzz/harfbuzz/pull/3162
2021-08-24 10:31:49 -06:00
Khaled Hosny
430224b1a0
[buffer] Handle pre/post-context in buffer_append
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1843
2021-08-24 02:11:17 +02:00
Behdad Esfahbod
33c82c7dad
[ot-shape] Fix unused-var error when building without AAT
...
Fixes https://github.com/harfbuzz/harfbuzzjs/issues/45
2021-08-22 22:31:39 -06:00
Qunxin Liu
34e0b28fae
[subset] make glyph-names option match fonttools behavior
...
Don't encode psNames that are contained in standard glyph names set
2021-08-20 01:30:23 -06:00
Behdad Esfahbod
829b0f3353
Merge pull request #3154 from harfbuzz/set-invert
...
Resurrect hb_set_invert()
2021-08-20 01:28:15 -06:00
Behdad Esfahbod
84c2a30214
[bit-set-invertible] Second try fixing previous()
2021-08-19 16:33:48 -06:00
Behdad Esfahbod
8f88747a5e
[bit-set-invertible] Fix previous() iteration
2021-08-19 16:31:01 -06:00
Behdad Esfahbod
1d832693e1
[set] Protect against immutible null set with invertible addition
2021-08-19 16:02:30 -06:00
Behdad Esfahbod
dc800ffd6c
[bit-set] Remove TODO items we don't intend to finish
2021-08-19 15:41:27 -06:00
Behdad Esfahbod
92908c122b
[bit-set-invertible] Remove extra check
...
We don't expect immutable / null set in this code.
2021-08-19 15:28:26 -06:00
Behdad Esfahbod
1babe80ed2
[bit-set-invertible] Fix last remaining corner-case
2021-08-19 15:18:32 -06:00
Behdad Esfahbod
e8911d137c
[bit-set-invertible] Implement a couple other missing corner cases
...
Also, in bit-set, don't compute population in is_equal/is_subset()
if we don't have it computed already.
2021-08-19 15:00:33 -06:00
Behdad Esfahbod
2579dc648f
[bit-set-invertible] Move code around
2021-08-19 14:48:27 -06:00
Behdad Esfahbod
2dfc104236
[bit-set-invertible] Implement is_empty() for inverted case as well
2021-08-19 14:47:33 -06:00
Behdad Esfahbod
ec4812a7d4
[bit-page] Remove unused inverted code
2021-08-19 13:32:44 -06:00
Behdad Esfahbod
87885e6f02
[bit-set-invertible] Fix next/previous() logic
2021-08-19 13:26:25 -06:00
Behdad Esfahbod
ee4e331a6e
[bit-set] Remove unused get_min(inverted)
2021-08-19 13:24:15 -06:00
Behdad Esfahbod
eec1a25e71
[bit-set-invertible] Rewrite get_min/max() in terms of next/previous()
2021-08-19 13:24:00 -06:00
Behdad Esfahbod
f09d5ed0f5
[algs] Remove hb_bitwise_non()
2021-08-19 13:06:10 -06:00
Behdad Esfahbod
f4fd7baf7e
[bit-set-invertible] Fix subtract() logic
2021-08-19 13:05:12 -06:00
Behdad Esfahbod
f317d8e426
[bit-set-invertible] Fix intersect() logic
2021-08-19 13:01:07 -06:00
Behdad Esfahbod
b21038d91d
[bit-set-invertible] Rewrite next/previous_range() in terms of s.next/previous()
2021-08-19 11:24:17 -06:00
Behdad Esfahbod
eb98bc1e32
[bit-set-invertible] Rewrite next/previous() using s.next/previous_range()
2021-08-19 11:19:24 -06:00
Behdad Esfahbod
248ad3bce5
[bit-set-invertible] Implement next/previous
...
This makes invertible set functionality complete.
2021-08-19 10:17:51 -06:00
Behdad Esfahbod
c27f5b1288
[bit-set-invertible] Plug in next_range()/previous_range()
2021-08-19 10:01:24 -06:00
Behdad Esfahbod
f6aa37159b
[bit-set-invertible] Fix process logic for inverted
...
[# On branch set-invert
2021-08-19 01:12:25 -06:00
Behdad Esfahbod
060de189ec
[bit-page] Fix sanitizer error
...
This essentially reverts 9449cfeefd
Problem was dereferencing pointer at end of array...
2021-08-19 00:58:34 -06:00
Behdad Esfahbod
b119b48079
[bit-set-invertible] Add unlikely() around inverted checks
2021-08-19 00:51:24 -06:00
Behdad Esfahbod
b94f24ec79
[bit-set-invertible] Implement set algebra
2021-08-19 00:48:00 -06:00
Behdad Esfahbod
6afefe1dc3
[algs] Remove unnecessary struct tag names
2021-08-19 00:27:03 -06:00
Behdad Esfahbod
8aa92ff8f0
[bit-set-invertible] Implement get_min/max
2021-08-18 23:01:06 -06:00
Behdad Esfahbod
18f50275ed
[bit-set] Restructure get_min/max() in prep for adding inverted
2021-08-18 22:08:06 -06:00
Behdad Esfahbod
669b97d949
[bit-set-invertible] Implement iterator
2021-08-18 21:39:04 -06:00
Behdad Esfahbod
c66894d7c9
[bit-set-invertible] Write a subset branch as dagger
2021-08-18 21:24:29 -06:00
Behdad Esfahbod
c39d2f7a76
[bit-set-invertible] Implement add_array / add_sorted_array / intersects
2021-08-18 21:20:54 -06:00
Behdad Esfahbod
0efa614c04
[bit-set] Add del_array/del_sorted_array()
2021-08-18 21:18:32 -06:00
Behdad Esfahbod
48ad9eef1e
[bit-set] Merge page_for_insert() into page_for()
2021-08-18 21:05:21 -06:00
Garret Rieger
280366ba6a
Add TODO to update NN offsets to allow nulls.
2021-08-18 16:52:45 -06:00
Garret Rieger
dc31920bbe
Don't serialize null offsets in CPAL.
...
Fixes https://oss-fuzz.com/testcase-detail/5443213648330752
2021-08-18 16:52:45 -06:00
Khaled Hosny
80ff72f39d
[doc] Misc fixes
2021-08-18 13:16:51 +02:00
Khaled Hosny
9aa6f8a93f
2.9.0
2021-08-18 09:32:04 +02:00
Behdad Esfahbod
f0c3804fa2
[set] Add hb_bit_set_invertible_t and resurrect hb_set_invert()
...
Implementation is NOT complete yet.
2021-08-17 19:53:43 -06:00
Behdad Esfahbod
b5cdbdc030
[set] Turn hb_set_t into instance of template taking implementation t
2021-08-17 10:53:08 -06:00
Behdad Esfahbod
fad452bffb
[set] Move main functionality into hb_bit_set_t
...
To add inversion on top in hb_invertible_set_t and use that as hb_set_t.
2021-08-17 10:47:18 -06:00
Behdad Esfahbod
9cc4da962f
[object] Remove hb_object_is_inert()
2021-08-16 20:17:53 -06:00
Behdad Esfahbod
2d5ef05d67
Use !g_object_is_valid() instead of g_object_is_inert()
2021-08-16 20:13:58 -06:00
Behdad Esfahbod
f6d6eff6a2
[object] Remove unused HB_REFERENCE_COUNT_INIT
2021-08-16 19:41:44 -06:00
Behdad Esfahbod
f245dc4db8
[set] Whitespace
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
9b390f8c40
[set] Move page_t into hb-bit-page.hh
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
0c3e02ee2d
[set] Add "inverted" to page_t::is_empty()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
9bd64fa077
[set] Add "inverted" to page_t::next/prev()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
c88e7ec935
[set] Add page_t::elt_maybe_invert()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
9449cfeefd
[set] Simplify page_t::next/prev()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
4394ee1f1d
[set] Add inverted to page_t::get_min/max()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
0dcd9b15d9
[set] Add page_t::set_range()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
cb273fd17c
[set] Add page_t::set()
2021-08-15 18:59:58 -06:00
Behdad Esfahbod
32bbf53d9c
[set] Minor rewrite one cmp() in term of other
2021-08-15 18:59:58 -06:00
Garret Rieger
cb05c363d7
[subset] add some basic tests for the legacy subset methods.
2021-08-14 10:37:02 -06:00
Garret Rieger
d18aad7ec5
[subset] restore old subsetting api methods.
...
These will be left in place until the 3.0.0 release.
2021-08-14 10:37:02 -06:00
Garret Rieger
c0f3af91b8
[subset] speed up add_gid_and_children and adjust op limit.
...
Fix for fuzzer timeout: https://oss-fuzz.com/testcase-detail/5001604901240832 .
- Operation limit is per glyph, so 100,000 should still be far more than needed.
- Switches from for(...) to while(...) loop for iteration. for(...) calls it.end() which in this case triggers a complete iteration.
- Cache CompositeGlyph size in the iterator to avoid needing to recalculate it.
2021-08-12 14:50:42 -06:00
Garret Rieger
c08f1b8903
[map] fix incorrect population count in hash map.
...
If the same key was set twice the population was being incorrectly incremented.
2021-08-10 14:00:55 -06:00
Garret Rieger
e39c3bde7b
[subset] fix bug in parsing glyf flags.
...
the bytes of the flag stream were being treated as signed integers instead of unsigned as specified in the spec.
2021-08-10 12:57:07 -06:00
Ben Wagner
f5ba1fabce
Fix documentation of hb_subset_flags_t defaults
...
HB_SUBSET_FLAGS_DEFAULT is 0, and hb_subset_input_create_or_fail
initializes its flags to HB_SUBSET_FLAGS_DEFAULT, so currently all flags
are set to false by default. It has been decided that future flags will
also be false by default for simplicity (using NO_ in the name if
needed). Correct and simplify the documentation for hb_subset_flags_t to
reflect this.
2021-08-09 09:05:24 -06:00
Garret Rieger
8c0c217b5a
[subset] fail reference blob in face builder if allocation for table sorting fails.
...
Fixes https://oss-fuzz.com/testcase-detail/5041767803125760
2021-08-06 15:54:41 -06:00
Garret Rieger
e5bfd49ae5
[subset] don't allow table adds for tag == -1.
2021-08-05 17:49:37 -06:00
Garret Rieger
222b74f08f
[subset] don't leak memory for duplicate tables.
2021-08-05 17:49:37 -06:00
Behdad Esfahbod
f7a9c3ea93
[open-file] Use hb_is_source_of instead of hb_is_iterator
2021-08-05 13:05:07 -06:00
Behdad Esfahbod
fa90cb8a31
Whitespace again
2021-08-05 12:31:06 -06:00
Behdad Esfahbod
a110a47eb5
Whitespace
2021-08-05 12:28:39 -06:00
Behdad Esfahbod
2cb8c928d7
[face] Let hashmap derive invalid key/value types
...
Works now with the previous two fixes.
2021-08-05 12:27:22 -06:00
Behdad Esfahbod
95c888e192
[meta] Define hb_int_min for pointer types as nullptr
2021-08-05 12:27:02 -06:00
Behdad Esfahbod
407a112e7b
[meta] Make hb_is_signed/hb_is_unsigned work on all types
...
They were failing if type was non-scalar, eg. pointer.
2021-08-05 12:23:53 -06:00
Behdad Esfahbod
baf2166a24
[meta] Use hb_true_type/hb_false_type more
2021-08-05 12:08:47 -06:00
Behdad Esfahbod
74ad5ddcd7
[face] Minor cleaning of previous commit
2021-08-05 11:51:54 -06:00
Garret Rieger
c2ee1fdd40
[subset] remove unsed table_entry struct.
2021-08-05 11:47:07 -06:00
Garret Rieger
dea0fe5717
[subset] discard extra copies of a table in face builder.
...
Fixes #2361 . Stores tables in the builder in a hashmap so you end up with at most one copy of each table. Table serialization order is now based on tag sort order instead of order of insertion into the builder.
2021-08-05 11:47:07 -06:00
Behdad Esfahbod
368e957887
[ot-shape] Add comment re `vert` feature
2021-08-05 10:41:18 -06:00
Garret Rieger
2c024dc3cb
[subset] prune redundant cmap12 subtables.
...
If the post subset cmap12 table is equivalent to another cmap subtable don't include the 12 table in the final subset. Matches change https://github.com/fonttools/fonttools/pull/2146 from fontTools.
2021-08-04 17:36:24 -06:00
Behdad Esfahbod
09c3b82f5e
[buffer] When shifting forward, leave no gap
...
Trying to see if this fixes the fuzzer issue:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36236
2021-08-04 11:55:53 -06:00
Behdad Esfahbod
a150baf32c
[ot-map] Allocate top mask bit as global bit
...
Avoids undefined-shift of 32 in the following line:
map->mask = (1u << (next_bit + bits_needed)) - (1u << next_bit)
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1219263
2021-08-04 11:53:27 -06:00
Behdad Esfahbod
e80c86ffa6
[coretext] Fix formatting
2021-08-04 10:25:06 -06:00
Simon Cozens
66aef2818e
Support passing variations to coretext shaper
2021-08-04 10:24:40 -06:00
Behdad Esfahbod
62a535f154
[khmer] Fix comment
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3104
2021-08-03 10:11:43 -06:00
Behdad Esfahbod
ee7473b8a4
[mutex] Remove unused HB_MUTEX_IMPL_INIT / HB_MUTEX_INIT
...
https://github.com/harfbuzz/harfbuzz/pull/3100#issuecomment-890089096
2021-07-30 12:55:28 -06:00
Behdad Esfahbod
0e37c07f4c
Revert "Construct user_data in hb_object"
...
This reverts commit a78eb43c79
.
See: https://github.com/harfbuzz/harfbuzz/pull/3100#issuecomment-890088227
2021-07-30 12:52:59 -06:00
Behdad Esfahbod
5dc4cd71cc
[blob] Minor change in destruction
...
No semantic change.
2021-07-30 12:37:40 -06:00
Garret Rieger
b63ac57174
[subset] bail if collection region indices is in error.
2021-07-29 18:30:37 -07:00
Garret Rieger
f9d8e4a976
[subset] switch ..._set_flags to not take a mask.
2021-07-29 18:30:27 -07:00
Garret Rieger
46d4a5e673
[subset] Convert subset plan to use a flags bit set.
2021-07-29 18:02:34 -07:00
Garret Rieger
3d534b146c
[subset] convert subset input flags into bit flags.
...
Store the flags in a bit set. Updates the public api to work with the bit set directly.
2021-07-29 18:02:34 -07:00
Ben Wagner
a78eb43c79
Construct user_data in hb_object
...
hb_object's user_data is created lazily. The previous implementation of
hb_object_set_user_data created space for the user_data but did not
actually construct it. This means that hb_user_data_array_t's lock was
not constructed. If hb_mutex_t is backed by an implementation which
requires that it be constructed (not just zero initialized) then errors
will occur when taking the lock when setting the user data.
Change hb_object_set_user_data to construct the user_data in the created
space and hb_object_fini to call the destructor.
2021-07-29 16:03:56 -06:00
Behdad Esfahbod
30579f5a37
[set] Document & use open-ended del_range()
2021-07-29 11:19:13 -06:00
Behdad Esfahbod
2d54c34680
[subset/VarStore] Fix OOM in fuzzer test
...
The test in question is the one added in c68a00b92e
.
Culprit is that it's allocating lots of memory because of region_indices that
are out-of-range anyway. So, try to filter those out first.
2021-07-29 00:49:36 -06:00
Behdad Esfahbod
ff1fe25a5d
[VarStore] Rename internal get_scalars() to get_region_scalars()
2021-07-29 00:49:36 -06:00
Khaled Hosny
9a7ff54bb7
[test] Write one sequence per-line
...
https://github.com/harfbuzz/harfbuzz/pull/3087#issuecomment-888691436
2021-07-28 18:25:51 -06:00
Khaled Hosny
ddf87ffb22
[test] Add generated tests for emoji clusters
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3017
Uses AdobeBlank2.ttf from:
https://github.com/adobe-fonts/adobe-blank-2
instead of a dummy empty font so that everything maps to GID 1 and
control code points are kept instead of being dropped because there is
not space glyph (otherwise we’d need to identify control code points
somehow when generating the expectations).
2021-07-28 18:25:51 -06:00
Behdad Esfahbod
f0a1892ff9
[serialize] Remove unnecessary pointer indirection
2021-07-28 17:36:22 -06:00
Behdad Esfahbod
1c511ed6f6
[subset] Simplify VarStore serialization
2021-07-28 17:33:26 -06:00
Behdad Esfahbod
ad4c692492
[subset] Simplify VarStore serialize
2021-07-28 17:22:14 -06:00
Behdad Esfahbod
25dee60977
[sanitize] Revert some from c68a00b92e
...
That overflow check was already happening in arrayZ.sanitize().
2021-07-28 13:58:24 -06:00
Behdad Esfahbod
6fe0d7d6e8
[GSUB] If MultipleSubst is applied to a ligature-component, preserve lig-id
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3069
2021-07-28 12:06:49 -06:00
Behdad Esfahbod
b926fb9bb0
Whitespace
2021-07-28 11:58:10 -06:00
Behdad Esfahbod
cc3a7ceea3
Fix macro-in-macro invocation
...
../src/hb-ot-color-colr-table.hh:980:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]
\#if COLRV1_ENABLE_SUBSETTING == 1
2021-07-28 11:53:06 -06:00
Behdad Esfahbod
087e2705de
Fix signed-ness error in 0ded6a70c8
2021-07-28 11:42:48 -06:00
Garret Rieger
f3e031539f
Revert "[ci] Bin FontTools version due to recent COLRv1 changes"
...
This reverts commit 163748b505
.
2021-07-28 11:36:34 -06:00
Garret Rieger
acbd8b27dc
[subset] temporarily disable COLRv1 subsetting.
...
Currently COLRv1 spec is being changed so the subsetting implementation is out of sync. Disable subsetting by failing sanitization for COLRv1 tables and disable all colrv1 tests.
2021-07-28 11:36:34 -06:00
Behdad Esfahbod
0ded6a70c8
[subset] Fix another fuzzer issue
...
Addition could overflow on 32bit arch.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36636
Fixes https://oss-fuzz.com/testcase-detail/5072358514753536
2021-07-28 11:35:27 -06:00
Garret Rieger
09474d8d7b
[subset] Fix fuzzer timeout in add_gid_and_children.
...
The composite glyph graph isn't check for max operations by sanitize so track an operations count during the graph traversal.
2021-07-27 13:30:06 -06:00
Behdad Esfahbod
c68a00b92e
[subset] Fix possible overflows in VarRegionList serialize
...
Fixes https://oss-fuzz.com/testcase-detail/5362189182566400
2021-07-27 13:28:09 -06:00
Behdad Esfahbod
7b8464b655
[serialize] Check for overflow in allocate_size()
...
If size was > INT_MAX, then the out-of-room check was failing to perform
as intended.
Part of fixing https://oss-fuzz.com/testcase-detail/5362189182566400
2021-07-27 13:26:00 -06:00
Behdad Esfahbod
bf2c87bfe6
Add hb_memcpy() that does len=0 check
2021-07-27 13:26:00 -06:00
Khaled Hosny
5f801da945
[hb-ms-features] Move code out of header file
2021-07-27 21:07:32 +02:00
Khaled Hosny
990c15dbe5
[hb-ms-features] Rename types to be less general
2021-07-27 21:07:32 +02:00
Khaled Hosny
69199211b7
[uniscribe/directwrite] Move feature setup to shared file
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3070
2021-07-27 21:07:32 +02:00
Garret Rieger
fc7f778120
[subset] add a note to hb-subset on what is and isn't supported ( #3076 )
2021-07-27 11:21:19 -07:00
Khaled Hosny
791a1bf3a4
Don’t disable getenv on Windows
...
The condition is inverted, regression from
40ec187dec
.
2021-07-27 15:22:13 +02:00
Behdad Esfahbod
4762fcb415
Merge pull request #3067 from googlefonts/glyph_names
...
[subset] support option --glyph-names
2021-07-26 11:48:55 -07:00
Behdad Esfahbod
aeec278453
Merge pull request #3068 from harfbuzz/hoi
...
[variations] Support multiple axes with same tag, aka HOI
2021-07-26 11:31:54 -07:00
Khaled Hosny
ec99fdb7e8
[sebset] Use [s|g]et_flag for retain_all_layout_features
...
Looks like this was missed when adding hb_subset_input_[s|g]et_flag()
2021-07-26 19:32:28 +02:00
Khaled Hosny
acc7100a3f
[docs] Improve subset documentation
2021-07-26 02:18:23 +02:00
Khaled Hosny
3e2734cf91
[docs] Don’t use GTK-Doc syntax for internal functions
...
We don’t generate docs for them, reduces the number of warnings.
2021-07-26 02:18:18 +02:00
Qunxin Liu
71b5509c19
[subset] support option --glyph-names
2021-07-23 13:57:39 -07:00
Behdad Esfahbod
b235511ed8
Merge pull request #3021 from googlefonts/stable_api
...
[subset] update hb_subset api with final changes before going stable.
2021-07-23 12:15:15 -07:00
Behdad Esfahbod
a9a607d360
[variations] Support multiple axes with same tag, aka HOI
...
The axes in fvar are in arbitrary order, NOT sorted. Hence have to
lsearch all entries.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1673
Fixes https://github.com/harfbuzz/harfbuzz/issues/2743
Test from https://github.com/ctrlcctrlv/FontForge-Higher-Order-Interpolation
2021-07-23 11:58:58 -07:00
Garret Rieger
1fde80ad28
[subset] update comments referencing hb_subset_input_t parameter.
2021-07-22 16:45:48 -07:00
Garret Rieger
c581d11eba
[set] in hb_set_set() avoid calling memcpy on nullptr.
2021-07-22 14:04:39 -07:00
Garret Rieger
2b9cb29923
[subset] cleanup no_subset_tables on destruction.
2021-07-22 13:26:03 -07:00
Garret Rieger
89fc399eba
[subset] Add hb-subset section documentation.
2021-07-22 13:00:34 -07:00
Garret Rieger
792e2ed61c
[subset] convert no get/set prune unicode ranges to enum.
2021-07-22 12:41:48 -07:00
Behdad Esfahbod
0a44feaeda
[fvar] Make find_axis_index() return a range, not individual value
2021-07-22 12:18:48 -07:00
Garret Rieger
1b6c1aa684
[subset] add hb-subset api to documentation generator.
...
Standardize subset_input parameter to be input.
2021-07-22 12:15:45 -07:00
Garret Rieger
8ce9683412
[subset] add documentation for all hb-subset.h methods.
2021-07-22 12:14:53 -07:00
Garret Rieger
9ab751ac9f
[subset] Remove hb_subset(). Leaving just hb_subset_or_fail().
2021-07-22 12:14:47 -07:00
Garret Rieger
e5c887fc0f
[subset] add documentation for subset input flag enums.
2021-07-22 12:14:09 -07:00
Garret Rieger
372722ceee
[subset] move notdef_outline to the subset input property enum.
2021-07-22 12:14:03 -07:00
Garret Rieger
a6c6cda486
[subset] Add no subset tables and passthrough unrecognized tables to the subset api.
...
Matches fontTools options.
2021-07-22 12:12:37 -07:00
Garret Rieger
668f2bd93e
[subset] Add hb_subset_or_fail () to public subset api.
2021-07-22 12:12:36 -07:00
Garret Rieger
aba2e13141
[subset] Remove hb_subset_input_get/set_overlaps_flag ().
2021-07-22 12:12:36 -07:00
Garret Rieger
7d82191f61
[subset] Remove hb_subset_input_get/set_name_legacy ().
2021-07-22 12:12:36 -07:00
Garret Rieger
942636ae13
[subset] Remove hb_subset_input_get/set_retain_gids.
2021-07-22 12:12:36 -07:00
Garret Rieger
77b4a1cd96
[subset] Remove hb_subset_input_get/set_desubroutinize.
2021-07-22 12:12:36 -07:00
Garret Rieger
8bf5d4d4f7
[subset] Remove hb_subset_input_get/set_drop_hints.
2021-07-22 12:12:36 -07:00
Garret Rieger
9fb3a25633
[subset] Use hb_set_copy in subset input.
2021-07-22 12:12:36 -07:00
Garret Rieger
38de3491a0
[subset] add implementation for get/set flag on subset input.
2021-07-22 12:12:36 -07:00
Garret Rieger
83727837ef
[subset] add proposed enum property get/set method.
2021-07-22 12:12:36 -07:00
Garret Rieger
b38e49dcfa
[subset] add get/set user data methods to subset input.
2021-07-22 12:12:30 -07:00
Garret Rieger
edb57a8d9a
Make subset input const in the subsetting operation. Don't modify the subset input's sets.
2021-07-22 12:11:43 -07:00
Behdad Esfahbod
233c29b302
[font] Call fvar.find_axis_index instead of find_axis_info in set_variations()
2021-07-22 12:00:24 -07:00
Behdad Esfahbod
89018068cd
[fvar] Centralize axis finding logic
...
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/1673
2021-07-22 11:59:23 -07:00
Behdad Esfahbod
0b2280af90
[font] Call fvar table directly, instead of calling public get_axis_info
...
To lighten it up in next commit.
2021-07-22 11:58:14 -07:00
Behdad Esfahbod
b86a45ca55
[fvar] Add TODO
...
Fixing https://github.com/harfbuzz/harfbuzz/issues/1673
2021-07-22 11:46:44 -07:00
Behdad Esfahbod
ba6db26b65
Tolerate unsorted OT table entries for small number of entries
...
See comment.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3065
2021-07-22 11:38:27 -07:00
Behdad Esfahbod
03cd9c5cba
Align lfind() API to match bfind()
2021-07-22 11:38:27 -07:00
Behdad Esfahbod
f54f5c1b16
Fix debug printer of bool
2021-07-22 11:38:27 -07:00
Garret Rieger
6269866bdd
[subset] Keep bimap consistent if only one of the internal maps is in error.
2021-07-19 13:42:00 -06:00