Qunxin Liu
e88fc41ef3
[subset] inputSequence could be empty, change the sanity check
2021-11-19 12:57:43 -07:00
Behdad Esfahbod
4731b10736
[array] Mark constructors constexpr
...
../src/hb-map.hh:44:38: note: non-constexpr constructor 'hb_array_t' cannot be used in a constant expression
static constexpr K INVALID_KEY = kINVALID;
^
2021-11-19 12:33:37 -07:00
Behdad Esfahbod
1da7423ed9
[array] Add constructor taking std::nullptr_t
...
Not all impls implement nullptr_t in a way that would automatically
convert to what we were accepting.
In file included from ../src/test-map.cc:27:
../src/hb-map.hh:44:22: error: no viable conversion from 'nullptr_t' to 'const hb_array_t<const char>'
static constexpr K INVALID_KEY = kINVALID;
^ ~~~~~~~~
2021-11-19 12:11:41 -07:00
Behdad Esfahbod
e456922a76
[test] Fix nullptr_t scope issue
2021-11-19 12:04:08 -07:00
Behdad Esfahbod
5157cac0e2
[test] Silence unused-variable erros in test
2021-11-19 12:03:10 -07:00
Behdad Esfahbod
394f772937
[map] Allow storing classes in the hashmap
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3293
The trick was to change the type of the invalid key/value to be non-class.
2021-11-19 11:49:23 -07:00
Behdad Esfahbod
cba17fd101
[array] Add default methods again, this time the full set
...
Should add tests.
2021-11-19 11:49:03 -07:00
Garret Rieger
a75b96f7e5
[sanitize] In lookup sanitize don't try to access subtable 0 if it isn't there.
2021-11-16 15:00:50 -08:00
Behdad Esfahbod
82a9f54410
[colr] Simplify sanitize
2021-11-10 10:50:38 -08:00
Garret Rieger
64b29dbd59
[subset] reuse colrv1 max nesting depth constant for sanitize.
2021-11-10 10:34:46 -07:00
Garret Rieger
ace98cc65f
[subset] Only sanitize recursion depth in COLR.
2021-11-10 10:34:46 -07:00
Garret Rieger
782a7377ad
[sanitize] add a maximum recursion depth for sanitize.
2021-11-10 10:34:46 -07:00
Khaled Hosny
cd5c6cd041
3.1.1
2021-11-08 06:59:55 +02:00
Matthias Clasen
1e07d42aa6
Typo fix
2021-11-07 07:58:28 +02:00
Matthias Clasen
1fd7fd9823
Cosmetics: Avoid confusing indentation
...
This line had me confused for a second because
the condition looked like a cast and the if just
looked misplaced. Add a line break to prevent
such confusion.
2021-11-06 09:19:55 -07:00
Matthias Clasen
3471f8f69e
docs: Clarify a doc comment
...
Reword the docs for hb_ot_layout_script_select_language and
be a bit more specific about the returned index.
2021-11-06 09:19:55 -07:00
Behdad Esfahbod
07dc34bdaf
[mutex] Try work around GCC cast-align error/warning
...
Shouldn't be needed because of the alignas(). Oh well...
Might fix https://github.com/harfbuzz/harfbuzz/issues/3283
2021-11-05 14:45:20 -07:00
Khaled Hosny
77eeec53a9
3.1.0
2021-11-03 23:31:03 +02:00
Behdad Esfahbod
54e7d6267b
[array] Remove defaulted destructor
2021-11-03 14:43:34 -06:00
Garret Rieger
f51b48c8e7
[subset] Fix fuzzer found memory leak.
...
Happens because an insert into a map with an invalid key reports successful, but this causes the set being inserted to be lost.
2021-11-02 17:00:07 -07:00
Behdad Esfahbod
b1cd0dce8e
[map] Add INVALID_KEY and INVALID_VALUE
2021-11-02 17:56:11 -06:00
Qunxin Liu
540f19b6fe
[subset] fix bug in (Chain)ContextFormat2
...
Only keep rulesets for glyphs class numbers that survived in coverage
2021-11-02 16:05:55 -07:00
Qunxin Liu
60e203644b
[subset] use glyphset_gsub instead of glyphset for GDEF
2021-11-02 16:56:52 -06:00
Qunxin Liu
0a7563a53f
[subset] fuzzer fix: https://oss-fuzz.com/testcase?key=6254792024915968
...
Make sure input is valid, each gid has a corresponding offset value in
the map
2021-11-02 15:25:18 -07:00
Qunxin Liu
364b6b3989
[subset] Don't assume FeatureList is sorted
...
Though the spec said FeatureRecords are sorted alphabetically by feature
tag, there're font files with unsorted FeatureList. And harfbuzz is not
able to subset these files correctly because we use binary search in
finding featureRecords when collecting lookups. Also
find_duplicate_features needs to be updated to handle this.
2021-11-02 15:15:02 -07:00
Garret Rieger
49c9392412
[subset] During LigatureSubstFormat1 subsetting always place Coverage last.
...
In Windows 7 on Chrome if the coverage table comes before any of the LigatureSet or Ligature subtables the font won't load. This changes the packing order to always place the Coverage table last. Virtual links are used to ensure the repacker maintains the desired ordering.
Coincidentally fontTools also does the same thing (a3f988fbf6/Lib/fontTools/ttLib/tables/otTables.py (L1137)
) to reduce overflows during packing.
2021-11-02 12:19:13 -06:00
Garret Rieger
9643d77086
[repacker] add more detailed comment about virtual links.
2021-11-02 12:19:13 -06:00
Garret Rieger
5bfc7d1015
[repacker] remove VirtualOffset struct.
...
Make and add_virtual_link () specialization of add_link() instead.
2021-11-02 12:19:13 -06:00
Garret Rieger
bc4c5341d6
[repacker] Add test for virtual links in the repacker.
2021-11-02 12:19:13 -06:00
Garret Rieger
7615b94ecf
[repacker] add 'virtual links' to the serializer.
...
These aren't associated with an offset field, but instead exist solely to add an ordering constraint to the object graph.
2021-11-02 12:19:13 -06:00
Behdad Esfahbod
59d8f6c817
[map] Fix copy assignment operator
2021-11-02 10:33:53 -06:00
Behdad Esfahbod
459e485bab
[meta] Remove otherwise-empty test-meta
2021-11-02 09:36:12 -06:00
Behdad Esfahbod
b8724c6023
[meta] Add in-house impl of hb_is_convertible()
2021-11-02 00:49:40 -06:00
Behdad Esfahbod
7a078c395a
[meta] Use std::conditional instead of hb_conditional()
2021-11-02 00:44:51 -06:00
Behdad Esfahbod
943921cf0c
[meta] Use more std type_traits
2021-11-02 00:26:46 -06:00
Behdad Esfahbod
6d555ce82e
[meta] Use std::forward instead of hb_forward()
2021-11-02 00:18:22 -06:00
Behdad Esfahbod
811f80a701
[algs] Use std::move instead of hb_move()
2021-11-02 00:17:54 -06:00
Behdad Esfahbod
896e0c74a8
[meta] Remove unused traits
2021-11-02 00:06:30 -06:00
Behdad Esfahbod
be42800fc6
[meta] Use std::is_trivially_... instead of internal copies
2021-11-02 00:04:18 -06:00
Behdad Esfahbod
30c05e8b55
[algs] include <new>
2021-11-01 23:57:00 -06:00
Behdad Esfahbod
4c6fd7cdb2
[map] Try moving items when resizing
2021-11-01 23:13:34 -06:00
Behdad Esfahbod
a28ea8d7f3
Simplify swap()
2021-11-01 22:50:54 -06:00
Behdad Esfahbod
94158316d9
[map] Add iterable constructor
2021-11-01 22:47:26 -06:00
Behdad Esfahbod
a03b9b14c9
[map] Add initializer_list and swap()
2021-11-01 22:45:11 -06:00
Behdad Esfahbod
3604f5f248
[algs] Include <initializer_list>
2021-11-01 22:37:42 -06:00
Behdad Esfahbod
c30f6834d0
[map] Add 5 methods
2021-11-01 22:29:14 -06:00
Behdad Esfahbod
38debbab7e
[set] Add successful check in swap()
2021-11-01 22:17:35 -06:00
Behdad Esfahbod
b860b44229
[bimap] Simplify initialization
2021-11-01 22:08:03 -06:00
Behdad Esfahbod
d2c364f6e7
[array] Use default methods
2021-11-01 21:55:14 -06:00
Behdad Esfahbod
6f74d80ed1
[vector] Complete sorted_vector 5-methods
2021-11-01 21:49:32 -06:00
Behdad Esfahbod
a28b5d03b5
[vector] Add swap() friend to hb_sorted_vector_t
2021-11-01 21:43:44 -06:00
Behdad Esfahbod
e97e79967e
Verbiage
2021-11-01 21:34:46 -06:00
Behdad Esfahbod
34fa5e2901
[set] More default operators
2021-11-01 21:25:03 -06:00
Behdad Esfahbod
b6c0b40fc2
[vector] Use default constructor
2021-11-01 21:15:38 -06:00
Behdad Esfahbod
1e3f57c079
[bit-set] Implement standard-5 methods plus swap
2021-11-01 21:14:12 -06:00
Behdad Esfahbod
11eadb5d28
[bit-set-invertible] Implement standard-5 methods & swap
2021-11-01 21:07:09 -06:00
Behdad Esfahbod
dcd18da611
[set] Add standard the 5 standard methods & tests
2021-11-01 20:55:30 -06:00
Behdad Esfahbod
628a0f3796
[vector] Add more tests
2021-11-01 20:36:55 -06:00
Behdad Esfahbod
f15858be5f
[vector] Pre-allocate if iterator has random-access length
2021-11-01 20:26:07 -06:00
Behdad Esfahbod
11135150a7
[vector] Move test code into separate file
2021-11-01 20:23:12 -06:00
Behdad Esfahbod
ee75e716c1
[vector] Add initializer from iterable
2021-11-01 20:19:57 -06:00
Behdad Esfahbod
18a078f968
[vector] Implement move assignment using swap
2021-11-01 20:06:58 -06:00
Behdad Esfahbod
eeda2c549d
[vector] Add initializer_list constructor & tests
2021-11-01 18:50:11 -06:00
Behdad Esfahbod
c484641304
Revert "[vector] Add initializer_list constructor & tests"
...
This reverts commit aa6182453b
.
2021-11-01 18:48:24 -06:00
Behdad Esfahbod
aa6182453b
[vector] Add initializer_list constructor & tests
2021-11-01 18:36:57 -06:00
Behdad Esfahbod
8c05569930
[algs] Add hb_swap() ala, and using, std::swap()
...
Use it in vector.
Use ADL idiom.
2021-11-01 17:59:17 -06:00
Behdad Esfahbod
bbaccf23d9
Better round positions during scaling
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3274
2021-11-01 16:45:36 -06:00
Matthias Clasen
52ccdc78e6
docs: Add a link to the OpenType spec
...
Link to the name table specification in the
hb_ot_name_id_t docs.
2021-10-28 11:58:38 -07:00
Matthias Clasen
8cb2f969d9
Document hb_ot_name_t values
...
Add a short blurb for each value and refer
to the OpenType spec for more information.
Fixes : #3181
2021-10-28 11:58:38 -07:00
Qunxin Liu
85deddb16e
[subset] fuzzer fix: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40406
2021-10-27 16:16:15 -07:00
Behdad Esfahbod
da500568de
[API] Add hb_buffer_[sg]et_not_found_glyph() and --not-found-glyph
...
Instead of using gid=0 when a character is not found in the font,
client can now set a custom value. This is useful for shaper-driven
font fallback and to differentiate that from .notdef glyph.
Fixes https://github.com/harfbuzz/harfbuzz/issues/1360
2021-10-26 08:02:29 -06:00
Cameron Cawley
6ea6c581ed
Remove direct link to dwrite from meson scripts
2021-10-23 13:19:39 -07:00
Cameron Cawley
ecbe224743
Revert "[hb-directwrite] Don't load dwrit.dll dynamically"
...
This reverts commit 6119ff9d80
.
2021-10-23 13:19:39 -07:00
Behdad Esfahbod
4262636926
Merge pull request #3248 from googlefonts/connected_components
...
[repacker] Keep connected subgraphs in the same space.
2021-10-23 13:18:22 -07:00
Qunxin Liu
f55d834736
[subset] Move struct DeltaSetIndexMap into hb-ot-var-common.hh
...
Also fix naming issues in review comments
2021-10-23 11:22:39 -07:00
Qunxin Liu
8c583db9b5
[subset] COLRv1: update subset() method for new strutc ClipList and VarIdxMap
...
Also fix issues in struct PaintTransform definition
2021-10-23 11:22:39 -07:00
Qunxin Liu
e51c7f8e79
[subset] COLRv1: add ClipList/ClipRecord/ClipBox struct definition
2021-10-23 11:22:39 -07:00
Qunxin Liu
2e5636eeaf
[subset] add DeltasetIndexMap struct definition
2021-10-23 11:22:39 -07:00
Qunxin Liu
d2e986fead
[subset] update COLRv1 table struct definitions
2021-10-23 11:22:39 -07:00
Khaled Hosny
792ca307b0
[meson] Add graphite2 option and deprecate graphite
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3241
Should be better handled when we can use https://github.com/mesonbuild/meson/pull/9184
2021-10-23 10:59:02 -07:00
Behdad Esfahbod
c6557747ef
[style] Use head->macStyle.isExtended in style fallback
...
https://github.com/harfbuzz/harfbuzz/issues/3263
2021-10-21 09:56:47 -06:00
Behdad Esfahbod
f3f848b506
[head] Add is_expanded() internally
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3263
2021-10-21 09:54:02 -06:00
Garret Rieger
d17155f5d2
[repacker] use possibly updated root idx after isolate_subgraph.
...
isolate_subgraph can change the root indices in some cases. So operations after the isolation need to use the roots from the output of isolate_subgraph.
2021-10-13 14:40:00 -07:00
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
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
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
7883b7ed95
[repacker] Add additional splitting spaces test.
...
Fix issues it uncovered.
2021-10-05 12:46:59 -07:00