Behdad Esfahbod
c7493efeaf
[subset/loca] Micro-optimize
1 year ago
Behdad Esfahbod
13a4c7b3d3
[subset/hmtx] Comment
1 year ago
Behdad Esfahbod
4da2996fe2
[doc] Fix
1 year ago
Behdad Esfahbod
c3e7f45166
Add HB_CODEPOINT_INVALID
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/4262
1 year ago
Behdad Esfahbod
efefec13cc
[subset/glyf] Remove unneeded codepath
1 year ago
Behdad Esfahbod
ac1f5ca0d9
[subset/loca] Micro-optimize
1 year ago
Behdad Esfahbod
6eae932566
[subset/loca] Reduce a vector allocation
1 year ago
Behdad Esfahbod
cd249d2364
[subset/hmtx] Micro-optimize
1 year ago
Behdad Esfahbod
ec8965e432
[subset/glyf] Don't clear loca allocation
1 year ago
Behdad Esfahbod
916629d182
[subset/hmtx] Don't clear allocation
1 year ago
Behdad Esfahbod
24b069cd53
[subset] Pre-alloc a few maps
1 year ago
Behdad Esfahbod
7319d0d712
[subset-plan] Add a couple of map pre-allocations
...
Approximate...
1 year ago
Behdad Esfahbod
76904b0423
[subset-plan] Simplify / speedup planning glyphset
1 year ago
Behdad Esfahbod
965ce7bba4
[subset-plan] Speed up planning new_to_old_gid_list
1 year ago
Behdad Esfahbod
b67e464b1c
[subset/retaingid] Regain perf lost
...
In 0f12fd5a66
1 year ago
Behdad Esfahbod
0f12fd5a66
[subset/glyf] Fix for non-monotonic glyphmap
...
Slows things down again, but is correct. Still a good win
combined with the previous changes.
1 year ago
Behdad Esfahbod
66ce902c3a
[glyf] Reduce allocation again
1 year ago
Behdad Esfahbod
0e0110e7f2
[glyf] Avoid a SubsetGlyph copy
...
Unfortunately hb_second() always does a copy...
1 year ago
Behdad Esfahbod
33ea8b5e5d
[subset/glyf] Don't allocate empty SubsetGlyf's
...
Shows 33% speedup on Mplus/retaingid/10 benchmark:
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10 -0.3296 -0.3294 0 0 0 0
1 year ago
Garret Rieger
ad872e2313
[subset] Optimize hmtx/vmtx serialization.
...
Make serializer allocation up front to avoid bounds checking overhead for each metric.
Benchmarks:
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10_median -0.1005 -0.1005 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/64_median -0.0693 -0.0692 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/512_median -0.0294 -0.0293 1 1 1 1
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/4096_median -0.0033 -0.0032 3 3 3 3
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10000_median +0.0170 +0.0171 7 7 7 7
1 year ago
Behdad Esfahbod
c6368e014d
[map] Return const reference from operator()
...
Like we do in operator[].
1 year ago
Behdad Esfahbod
b04ca1c188
Revert "[subset/glyf] Exact allocation"
...
This reverts commit a830f085c8
.
Weirdly enough in a benchmark I'm running I see this show
some slowdown. Makes zero sense.
1 year ago
Behdad Esfahbod
a830f085c8
[subset/glyf] Exact allocation
1 year ago
Behdad Esfahbod
ff0b85cf57
[subset/glyf] Empty .notdef only if old-gid was also 0
...
Otherwise it wasn't a .notdef, even if new-gid is 0.
1 year ago
Behdad Esfahbod
65a7d8c6f0
[glyf] Empty glyphs need no padding
1 year ago
Behdad Esfahbod
73c18d1d42
[glyf] Micro-optimize padded_offsets
1 year ago
Behdad Esfahbod
88d8a6d69f
[BEInt] Use packed-int trick for writing as well
1 year ago
Behdad Esfahbod
4d853b8ba6
[subset/regaingid/glyf] Add a fastpath for empty glyphs
...
Mplus benchmark:
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10 -0.1764 -0.1771 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/64 -0.1394 -0.1394 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/512 -0.0644 -0.0645 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/4096 +0.0132 +0.0131 1 1 1 1
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/retaingids/10000 -0.0029 -0.0034 3 3 3 3
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/10 +0.0364 +0.0362 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/64 +0.0346 +0.0343 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/512 +0.0271 +0.0268 0 0 0 0
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/4096 +0.0193 +0.0193 1 1 1 1
BM_subset/subset_glyphs/Mplus1p-Regular.ttf/10000 -0.0240 -0.0243 2 2 2 2
OVERALL_GEOMEAN -0.0305 -0.0307 0 0 0 0
1 year ago
Behdad Esfahbod
6ec7629fba
[subset/glyf] Add a const
1 year ago
Behdad Esfahbod
9f54ab922f
[subset-plan] Keep a reverse-gid vector
...
To speed up iteration.
1 year ago
Garret Rieger
6b0d386797
[subset] in subset benchmarks switch nohinting with retaingids.
...
retain gids is a more interesting case than no hinting for performance.
1 year ago
Qunxin Liu
1ae99d1a10
bug fix
1 year ago
Behdad Esfahbod
aa7dd70a86
[hmtx] Reduce map usage slightly
1 year ago
Garret Rieger
f41c5ec961
[map] update map benchmark to also test lookups that hit.
1 year ago
Qunxin Liu
4acf6a82bf
[instancer-solver] port solver fix from fonttools
...
See https://github.com/fonttools/fonttools/issues/3139
1 year ago
Garret Rieger
f3b4d35f36
[subset] Fix fuzzer crash.
...
https://oss-fuzz.com/testcase-detail/6608005089853440
1 year ago
Garret Rieger
ff326fbe8f
[repacker] check the result of add_buffer() in other places where it's called.
1 year ago
Behdad Esfahbod
66a84355ab
[hash] Use unsigned types
...
Hopefully ubsan wouldn't complain about overflows now.
1 year ago
Behdad Esfahbod
4a93576bca
Revert "[map] Speedup for int types"
...
This reverts commit c1b75f5ff0
.
I was seeing very long chains (140) and a 17% slowdown in
BM_subset/subset_codepoints/RobotoFlex-Variable.ttf/512
Bummer.
1 year ago
Behdad Esfahbod
c1b75f5ff0
[map] Speedup for int types
...
Since our int hash is now good, we don't need the modulo prime
here, so forgo it. Major speedup:
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------
BM_MapInsert/16 -0.4136 -0.4137 6 4 6 4
BM_MapInsert/64 -0.4442 -0.4441 6 3 6 3
BM_MapInsert/512 -0.5382 -0.5383 8 4 8 4
BM_MapInsert/4096 -0.4160 -0.4162 8 5 8 5
BM_MapInsert/32768 -0.3256 -0.3258 12 8 12 8
BM_MapInsert/262144 -0.1723 -0.1727 11 10 11 9
BM_MapInsert/1048576 -0.2310 -0.2309 28 22 28 22
BM_MapLookup/16 -0.0247 -0.0247 3 3 3 3
BM_MapLookup/64 -0.1039 -0.1038 3 3 3 3
BM_MapLookup/512 -0.1076 -0.1079 4 3 4 3
BM_MapLookup/4096 -0.3729 -0.3732 9 6 9 6
BM_MapLookup/32768 +0.2467 +0.2468 9 12 9 12
BM_MapLookup/262144 -0.1862 -0.1868 14 11 14 11
BM_MapLookup/1048576 +0.1159 +0.1160 15 17 15 17
OVERALL_GEOMEAN -0.2414 -0.2416 0 0 0 0
1 year ago
Behdad Esfahbod
7f111787e4
[benchmark-map] Remove overhead
1 year ago
Behdad Esfahbod
5666807328
[benchmark-map] Improve Insert benchmark
...
Previously it was enlarging the map depending on whatever
number of runs the benchmark-runner decided to run the loop.
That wasn't very useful...
1 year ago
Behdad Esfahbod
00900f761f
[hash] Enable better hash for integers
...
https://github.com/harfbuzz/harfbuzz/pull/4228#issuecomment-1565079537
1 year ago
Garret Rieger
20c564bc76
[repacker] Fix fuzzer memory leak.
...
https://oss-fuzz.com/testcase-detail/6419865171525632
1 year ago
Behdad Esfahbod
5abe713203
[map] Resize map on long chain probes
1 year ago
Garret Rieger
a652281ed6
[subset] Fix fuzzer timeout.
...
Fixes https://oss-fuzz.com/testcase-detail/5979721620652032 . Timeout was caused by degenerate map insert behaviour due to poor integer hash function. Presize the map to avoid it. Also fixes collect_mapping() for cmap format 13.
1 year ago
Behdad Esfahbod
208c9490cb
[VarComposite] Limit number of axes that are copied
...
Bandaid for https://oss-fuzz.com/testcase-detail/4591122882887680
1 year ago
Behdad Esfahbod
5872bdf64d
[vector] Add copy-constructor for array_t's
1 year ago
Chun-wei Fan
42aba5ff30
harfbuzz-config.cmake.in: Support Windows usage
...
Apply the appropriate library prefix/suffix by whether we are building
as a statib build in Meson, or by using
${CMAKE_[SHARED|IMPORT]_LIBRARY_PREFIX} and
${CMAKE_[SHARED|IMPORT]_LIRBARY_SUFFIX} as appropriate according to
the target platform for shared builds.
1 year ago
Behdad Esfahbod
84354d3f23
[cff] When max-ops is reached return false
...
Slight speedup too.
2 years ago