|
aeb50b89
|
2022-05-10T18:06:53
|
|
[subset] Retain buffer across table subset operations
|
|
bff78e65
|
2022-05-10T16:33:37
|
|
[cff] Convert interpretation environment to use constructor
|
|
de053e2e
|
2022-05-10T15:38:37
|
|
[cff] Convert subr_subset_param_t to use constructor
|
|
8fd70362
|
2022-05-10T15:15:49
|
|
[cff] Use hb_ubytes_t() instead of Null(hb_ubytes_t)
|
|
96140db4
|
2022-05-10T15:34:33
|
|
[cff] Convert cff2_extents_param_t to use constructor
|
|
54544f2a
|
2022-05-10T15:31:49
|
|
[cff] Convert cff1_extents_param_t to use constructor
|
|
377befd0
|
2022-05-10T15:29:12
|
|
[cff] Convert get_seac_param_t to use constructor
|
|
9033c7f9
|
2022-05-10T14:58:53
|
|
[cff-common] Optimize INDEX::operator[]
Previous try showed slowdown in benchmarks, suprisingly.
Rewrite it keeping the function, hopefully allowing better optimization.
|
|
3aace243
|
2022-05-10T14:54:04
|
|
Revert "[cff-common] Optimize INDEX::operator[]"
This reverts commit 9edb03ac7ac4b4d0814f3fd1f20cc8d2be99e971.
|
|
b31ef081
|
2022-05-10T14:52:40
|
|
Revert "[cff] Add an unlikely()"
This reverts commit 9ba9adb7ed6d48504e97a2af117b7da1fdb28450.
This shows slowdown in benchmarks.
|
|
9ba9adb7
|
2022-05-10T14:42:50
|
|
[cff] Add an unlikely()
|
|
9edb03ac
|
2022-05-10T14:25:08
|
|
[cff-common] Optimize INDEX::operator[]
|
|
0a42410d
|
2022-05-10T12:05:19
|
|
[cff2] Change extents/shape stack to be just a number
Do the blending immediately.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3559
Benchmark on AdobeVFPrototype shows 35% speedup. Now we're faster
than FreeType:
Benchmark Time CPU Time Old Time New CPU Old CPU New
------------------------------------------------------------------------------------------------------------------------------------------------
BM_Font/glyph_extents/AdobeVFPrototype.otf/hb -0.3792 -0.3792 1584 983 1581 982
BM_Font/glyph_extents/AdobeVFPrototype.otf/ft +0.0228 +0.0224 1220 1248 1218 1245
BM_Font/glyph_extents/AdobeVFPrototype.otf/var/hb -0.3513 -0.3518 1616 1048 1613 1046
BM_Font/glyph_extents/AdobeVFPrototype.otf/var/ft +0.0172 +0.0169 1232 1254 1230 1251
|
|
8f9f0c49
|
2022-05-10T17:47:08
|
|
[subset] Enforce cmap12 group ordering constraints in collect_mapping.
Fixes fuzzer issue: https://oss-fuzz.com/testcase-detail/6365271012540416
|
|
1b14d2ff
|
2022-05-09T18:15:31
|
|
[cff] Fix arg-stack peek() impl
|
|
6106ef8c
|
2022-05-09T18:12:09
|
|
[cff] Tighten up arg-stack access
|
|
8c616a6e
|
2022-05-09T17:49:54
|
|
[cff] Allocate stack inline instead of using hb_vector_t
Speeds up glyph_extents and glyph_shape benchmarks for CFF by 10
to 16 percent!
|
|
2ccfe84e
|
2022-05-09T15:35:04
|
|
[cff-common] Add assert to INDEX::set_offset_at()
|
|
4bcab9e9
|
2022-05-09T15:30:42
|
|
[cff-common] Use byte_str_t() instead of Null(byte_str_t)
|
|
94f7a263
|
2022-05-09T15:29:14
|
|
[cff-common] Fix get_size() for Null object
The special-casing didn't make sense.
|
|
c9cc7d5d
|
2022-05-09T15:27:27
|
|
[cff-common] Inline once-used method in INDEX
|
|
11482a3a
|
2022-05-09T15:25:21
|
|
[cff-common] Remove unused method from INDEX
|
|
d1bb3b08
|
2022-05-09T15:23:59
|
|
[cff-common] Hide more INDEX internals
|
|
d3b21387
|
2022-05-09T15:22:55
|
|
[cff-common] Remove redundant operator implementation
|
|
a96b408d
|
2022-05-09T15:20:16
|
|
[cff-common] Hide INDEX internals
|
|
335b1d83
|
2022-05-06T13:37:11
|
|
[cff-common] No need to check max-offset in INDEX
The length_at() function makes sure out-of-range offsets
are discarded. We just need to check the last offset.
|
|
c941ece6
|
2022-05-09T16:20:22
|
|
[cff] Use using instead of typedef
|
|
64d63ceb
|
2022-05-09T16:16:07
|
|
[cff-common] Use existing types for str_buff_vec_t
|
|
e1838ec1
|
2022-05-09T16:14:13
|
|
[cff-common] Remove unused method
|
|
8aa54aac
|
2022-05-09T16:09:56
|
|
[cff] Replace byte_str_t with hb_bytes_t use
|
|
fe1d85a5
|
2022-05-09T16:04:52
|
|
[cff] Remove custom byte_str_t impl
|
|
c8a5f1e3
|
2022-05-09T15:49:47
|
|
[cff-common] Indent
|
|
be7b2905
|
2022-05-09T15:48:18
|
|
[cff-common] Remove unused INDEX::serialize() method
|
|
60390169
|
2022-05-09T15:44:09
|
|
[cff-common] Write str_buf_t::total_size() as dagger
|
|
258afb45
|
2022-05-09T15:40:55
|
|
[cff-common] Use range-based loop in str_buff_vec_t
|
|
8bb1a3ce
|
2022-05-09T15:38:40
|
|
[cff-common] Write INDEX offset-size calc using hb_bit_storage()
|
|
b051f3fa
|
2022-05-05T23:27:34
|
|
[subset] Fix cpal subsetting when there are partial palette overlaps.
The existing code doesn't correctly handle the case where palettes partially overlap in the color record array. This changes the subsetting to only share entries in the color record array when palettes have the same first color index. Partially overlapping palettes will be converted to disjoint segments in the color record array.
Updates one of the color tests to use multiple palettes.
Also fixes fuzzer: https://oss-fuzz.com/testcase-detail/5568200165687296.
|
|
2884eb97
|
2022-05-06T12:54:02
|
|
[cff-common] Remove special-casing of count=0 in INDEX serialize
The generic code-path now can handle count=0.
|
|
fc7f51ae
|
2022-05-06T12:53:19
|
|
[cff-common] Reduce iterator calls
|
|
c857b8e3
|
2022-05-06T12:50:37
|
|
[cff-common] Set INDEX min_size to 2
That is what it is, for an empty INDEX.
|
|
dd71d2c1
|
2022-05-06T13:02:26
|
|
[gvar] Protect against offset underflow
|
|
9a6dabd6
|
2022-05-06T12:01:37
|
|
[gvar] Remove sanitize check for data array
We are not checking in sanitize that offset array is ascending,
so this check was bogus.
|
|
38478d10
|
2022-05-06T12:00:01
|
|
[gvar] DEFINE_SIZE_ARRAY instead of DEFINE_SIZE_MIN
|
|
90d278c9
|
2022-05-06T11:58:53
|
|
[gvar] Remove requirement that num_glyphs matches the font's
|
|
ca8a0f3e
|
2022-05-06T11:54:38
|
|
[gvar] Protect against out-of-range access
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47281
Fixes https://oss-fuzz.com/testcase-detail/5508865908670464
|
|
f10ddb8d
|
2022-05-05T11:21:24
|
|
[cmap] Use -1 as Unicode sentinel, not U+FFFF in Format12 serialize
|
|
8a19968c
|
2022-05-05T11:17:23
|
|
[cmap] Use iterator bool operator
|
|
8bfeea48
|
2022-05-05T10:48:24
|
|
[subset] Compute set max using previous()
|
|
00cb8c62
|
2022-05-05T10:33:50
|
|
[subset] Don't go into glyf table if it's empty
|
|
4fe69bc4
|
2022-05-05T10:19:16
|
|
[subset] Use del_range in _remove_invalid_gids
|
|
2a42edcc
|
2022-05-04T17:06:18
|
|
[subset] Cosmetic; use set bulk array population instead of for loop
|
|
43938ecd
|
2022-05-04T16:59:28
|
|
[subset] Remove outdated comment
I tried something like that. It was slower because of the allocations.
|
|
50db78ba
|
2022-05-04T15:48:18
|
|
[subset] In cmap planning, remove a qsort()
|
|
052812b6
|
2022-05-04T15:38:30
|
|
Merge pull request #3561 from googlefonts/cmap_opt
[subset] Further cmap subsetting speed optimizations
|
|
7cb36e42
|
2022-05-04T21:22:26
|
|
[subset] Re-introduce size threshold in choosing unicode collection method.
Threshold is needed since the unicodes set might be an inverted set.
|
|
42c54eba
|
2022-05-04T20:21:43
|
|
[subset] Presize unicode to gid list to unicodes + glyphs size.
|
|
7c7c01d2
|
2022-05-03T22:40:56
|
|
[subset] Remove switch to alternate unicode collection at large subset sizes.
Benchmarks show that the first path is always faster even at large subset sizes:
BM_subset_codepoints/subset_roboto/10_median +0.0324 +0.0325 0 0 0 0
BM_subset_codepoints/subset_roboto/64_median +0.0253 +0.0255 0 1 0 1
BM_subset_codepoints/subset_roboto/512_median +0.0126 +0.0128 1 1 1 1
BM_subset_codepoints/subset_roboto/4000_median +0.0500 +0.0491 6 7 6 7
BM_subset_codepoints/subset_amiri/10_median +0.0338 +0.0332 1 1 1 1
BM_subset_codepoints/subset_amiri/64_median +0.0238 +0.0234 1 1 1 1
BM_subset_codepoints/subset_amiri/512_median +0.0066 +0.0063 8 8 8 8
BM_subset_codepoints/subset_amiri/4000_median -0.0011 -0.0012 13 13 13 13
BM_subset_codepoints/subset_noto_nastaliq_urdu/10_median +0.0226 +0.0226 0 0 0 0
BM_subset_codepoints/subset_noto_nastaliq_urdu/64_median +0.0047 +0.0044 20 20 20 20
BM_subset_codepoints/subset_noto_nastaliq_urdu/512_median +0.0022 +0.0021 165 166 165 166
BM_subset_codepoints/subset_noto_nastaliq_urdu/1000_median -0.0021 -0.0023 166 166 166 165
BM_subset_codepoints/subset_noto_devangari/10_median +0.0054 +0.0054 0 0 0 0
BM_subset_codepoints/subset_noto_devangari/64_median +0.0024 +0.0019 0 0 0 0
BM_subset_codepoints/subset_noto_devangari/512_median +0.0089 +0.0090 5 5 5 5
BM_subset_codepoints/subset_noto_devangari/1000_median -0.0028 -0.0019 5 5 5 5
BM_subset_codepoints/subset_mplus1p/10_median +0.0001 +0.0002 0 0 0 0
BM_subset_codepoints/subset_mplus1p/64_median +0.0073 +0.0075 1 1 1 1
BM_subset_codepoints/subset_mplus1p/512_median +0.0034 +0.0034 1 1 1 1
BM_subset_codepoints/subset_mplus1p/4096_median -0.1248 -0.1248 7 6 7 6
BM_subset_codepoints/subset_mplus1p/10000_median -0.0885 -0.0885 13 12 13 12
BM_subset_codepoints/subset_notocjk/10_median +0.0031 +0.0032 2 2 2 2
BM_subset_codepoints/subset_notocjk/64_median -0.0010 -0.0010 2 2 2 2
BM_subset_codepoints/subset_notocjk/512_median -0.0023 -0.0023 9 9 9 9
BM_subset_codepoints/subset_notocjk/4096_median -0.1725 -0.1726 28 23 28 23
BM_subset_codepoints/subset_notocjk/32768_median -0.0277 -0.0287 140 137 140 136
BM_subset_codepoints/subset_notocjk/100000_median -0.0929 -0.0926 162 147 162 147
|
|
f0c04114
|
2022-05-03T22:02:59
|
|
[subset] Embed unicode to gid list vector in subset plan.
|
|
15fa8afb
|
2022-05-02T16:46:41
|
|
Add fast-path for big-endian 32-bit byteswap
Speeds up cmap format-12 decoding by some 40% as measured by
the newly added test in perf/benchmark-font!
|
|
3fff2e91
|
2022-05-02T16:31:59
|
|
[perf/benchmark-font] Cosmetic
|
|
307d2d8b
|
2022-05-02T16:30:22
|
|
[cmap] Sprinkle some 'unlikely's
|
|
85ec5cbc
|
2022-05-02T22:29:43
|
|
[subset] In _populate_unicodes_to_retain populate unicodes in order.
Allows the set insert to take advantage of page lookup cache.
|
|
088133d9
|
2022-05-02T21:29:16
|
|
[subset] cache cp to new gid list in subset plan.
This avoids having to recompute the ordered list multiple times during cmap generation.
|
|
6922a256
|
2022-04-29T23:30:32
|
|
[subset] Change serialize_rangeoffset_glyid back to using iterator.
|
|
c66fd50c
|
2022-04-29T23:18:53
|
|
[subset] in cmap4 serialization save cp to gid iter to memory.
Iterator accesses are slow and it's iterated multiple times.
|
|
17b98563
|
2022-04-29T22:49:02
|
|
[subset] In cmap4 serialization reduce unnessecary calls into the iterator.
Gives ~20% speedup for large subsets.
|
|
5e241094
|
2022-04-29T22:44:43
|
|
[subset] In unicodes cache cleanup if set insert fails.
|
|
a424a92c
|
2022-04-29T22:14:03
|
|
[subset] s/void */intptr_t.
|
|
aad67f56
|
2022-04-29T22:01:06
|
|
[subset] cache results of collect_unicodes.
|
|
b4236b7d
|
2022-04-29T19:21:13
|
|
[subset] Optimize Cmap4 collect_unicodes.
Use set add_range() instead of individual add() calls.
|
|
067225a8
|
2022-04-29T13:04:36
|
|
[set] Optimize const page_for() using last_page_lookup caching
Similar to previous commit.
This speeds up SetLookup benchmark by 50%, but that's because that
lookup always hits the same page...
|
|
c283e41c
|
2022-04-29T12:45:48
|
|
[set] Optimize non-const page_for() using last_page_lookup caching
This speeds up SetOrderedInsert tests by 15 to 40 percent, and the
subset_mplus1p benchmarks by 9 to 27 percent.
|
|
d8292b84
|
2022-04-27T12:38:35
|
|
[CFF] Fix parsing of empty Index
https://github.com/harfbuzz/harfbuzz/issues/3545#issuecomment-1111047941
|
|
6454cec0
|
2022-04-24T11:10:17
|
|
[USE] Classify U+10A38 as CONS_MOD_BELOW
|
|
f7aee78e
|
2022-04-24T05:47:57
|
|
4.2.1
|
|
6695bf05
|
2022-04-22T13:48:41
|
|
[gsubgpos] Remove wrong condition in Context application
Fixes https://github.com/harfbuzz/harfbuzz/issues/3545
|
|
8575a8f5
|
2022-04-21T11:14:09
|
|
Add _hb_codepoint_is_regional_indicator()
|
|
c1ee7d28
|
2022-04-20T13:38:05
|
|
Typo
Co-authored-by: Khaled Hosny <khaled@aliftype.com>
|
|
4d48fae4
|
2022-04-20T11:35:19
|
|
Enforce Regional_Indicators native direction to LTR
And undo the morx direction reversal change introduced in
https://github.com/harfbuzz/harfbuzz/pull/3315
23159084b43c1ce429d9e98035bf845919fd8a89
This fixes original bug https://github.com/harfbuzz/harfbuzz/issues/3314
And the reversion in morx code fixes regressions:
https://github.com/harfbuzz/harfbuzz/issues/3528
https://github.com/harfbuzz/harfbuzz/issues/3535
Supersedes:
https://github.com/harfbuzz/harfbuzz/pull/3529
|
|
a85461b9
|
2022-04-20T12:13:16
|
|
Add link to Context LookupFlag discussion
https://github.com/harfbuzz/harfbuzz/discussions/3538
|
|
9e59c401
|
2022-04-20T16:56:34
|
|
[myanmar] Reword confusing comment about masks
|
|
903cf8cf
|
2022-04-13T15:31:51
|
|
[check-static-inits] Unbreak test
|
|
ec925ece
|
2022-04-13T11:51:48
|
|
[khmer] Reinstate a pause after basic features
This was removed as part of 044d7a06db552e1564b8575f4d23798f009d9dde,
which caused the regression. Just adding a pause fixes the shaping.
Debugged by just tracing the good/bad shaping and observing the
lookup orders intermingling in the bad shaping.
Test:
hb-shape LeelawUI.ttf --unicodes U+1780,U+17D2,U+179A,U+17BB
Fixes https://github.com/harfbuzz/harfbuzz/issues/3531
|
|
88bb746b
|
2022-04-01T02:18:37
|
|
[blob] Return nullptr from create_from_file_or_fail
Fix a couple of cases where it would return empty blob, possibly
missed in bdfed8f113431a2156e13d59a4b21e19feb7efd9.
|
|
b179d357
|
2022-03-30T12:59:52
|
|
[main] Fix unused-variable warnings
|
|
9d5730b9
|
2022-03-30T15:08:34
|
|
4.2.0
|
|
044d7a06
|
2022-03-28T12:38:56
|
|
[indic-like] Add per-lookup per-syllable flag
This allows mix-and-matching per-syllable and other lookups.
In fact, removes the clear-syllables call completely.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3513
|
|
61486746
|
2022-03-28T15:57:07
|
|
Revert "[indic] Clear syllables before presentation features"
This reverts commit 90f09b1e877dc6edf63fc4ac2b397ef4e5c92083.
This regressed Indic shaping. See:
https://github.com/harfbuzz/harfbuzz/issues/3513
|
|
e8f3397f
|
2022-03-28T12:07:05
|
|
[matcher] Simplify syllable initialization
|
|
94f5c630
|
2022-03-28T11:25:44
|
|
[aat] Remove morx deleted-glyphs before GPOS processing
Fixes new Apple Color Emoji glyphs sequences rendering.
Fixes https://github.com/harfbuzz/harfbuzz/issues/3512
|
|
0dcbdbde
|
2022-03-26T20:56:50
|
|
[indic] Categorize U+0D04 as Consonant_Placeholder
|
|
a665e29e
|
2022-03-23T17:30:25
|
|
[use] Avoid O(n^2) in the machine
Fixes https://github.com/harfbuzz/harfbuzz/issues/3502
|
|
ccd9161b
|
2022-03-24T13:10:48
|
|
[apply-lookup] Try to fix the logic for contextual lookups
Fixes https://github.com/harfbuzz/harfbuzz/issues/1611
Notably, this fixes Myles's AdditionFont:
https://litherum.blogspot.com/2019/03/addition-font.html
Test with AdditionFont, eg.:
$ util/hb-view AdditionFont.otf =1112112+1113134=
|
|
fa15fc44
|
2022-03-25T15:00:11
|
|
[subset] Require exact harfbuzz version in .pc file
Fixes https://github.com/harfbuzz/harfbuzz/issues/1446
|
|
b619b05f
|
2022-03-25T14:56:55
|
|
[subset] Adjust name in .pc file
|
|
12290786
|
2022-03-25T22:41:25
|
|
[set] Fix annotation
|
|
3a78cf92
|
2022-03-25T12:56:44
|
|
[gvar] Fix decoding of private vs shared points
Fixes https://github.com/harfbuzz/harfbuzz/issues/3506
|
|
a02fb4a0
|
2022-03-25T12:56:19
|
|
[glyf] Don't bail rendering glyf even if gvar failed
Part of https://github.com/harfbuzz/harfbuzz/issues/3506
|
|
0a388785
|
2022-03-25T09:42:36
|
|
[set] Minor touch-up on the previous commit
|
|
01829882
|
2022-03-25T08:36:44
|
|
[set] Add call to export set contents to an array. (#3500)
[set] Add hb_set_next_many.
|