Behdad Esfahbod
ff419789ef
[subset-plan] Sort unicode_to_new_gid_list when needed
2022-12-02 16:43:33 -07:00
Behdad Esfahbod
1a40da4ad1
[subset-plan] Use add_array instead of add_sorted_array
...
That vector is not declared as sorted.
2022-12-02 16:13:37 -07:00
Behdad Esfahbod
32e049a315
[subset-plan] Use gid-to-unicodes multimap
...
One test fails. Need investigation.
2022-12-02 16:09:10 -07:00
Behdad Esfahbod
da7961b2e8
.
2022-12-02 16:08:40 -07:00
Behdad Esfahbod
7d6893a803
[subset-accelerator] Cache gid-to-unicodes
2022-12-02 15:50:52 -07:00
Behdad Esfahbod
10c8fc5553
[multimap] Add a multimap datastructure
2022-12-02 15:50:49 -07:00
Behdad Esfahbod
a42fc8ec4a
[subset-accelerator] Adjust in_error()
2022-12-02 15:41:18 -07:00
Behdad Esfahbod
65d9630312
[subset-cff2] Whitespace
2022-12-02 14:59:26 -07:00
Behdad Esfahbod
b33297ee26
[cff2] Remove unused typedef
2022-12-02 14:43:37 -07:00
Behdad Esfahbod
3ade2ffaa5
[serialize] Adjust pop_discard for zerocopy
2022-12-02 14:26:36 -07:00
Behdad Esfahbod
043eeb29a3
[subset-cff] Optimize encode_subrs
...
Don't loop over all original subrs. Just walk over closure subrs.
2022-12-02 13:58:36 -07:00
Behdad Esfahbod
0ad5977cd6
[subset-cff] Simplify hinting processing
...
We already have drop_hints in the params.
2022-12-02 13:41:36 -07:00
Behdad Esfahbod
16cbe41bca
Merge pull request #3910 from googlefonts/repacker_fuzz
...
[repacker] Add a fuzzer for the hb-subset-repacker api.
2022-12-02 12:43:13 -07:00
Behdad Esfahbod
2a7a1d5a73
[Coverage] Avoid timeout on broken ranges
...
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53929
2022-12-02 12:33:24 -07:00
Behdad Esfahbod
c947652768
[subset-cff] Micro-optimize
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
a24d4e9261
[array] Oops. Fix memcpy copy()!
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
5e41766bb9
[array] Fix hb_bytes_t memcpy copy
...
Wasn't being used!
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
a5616227ca
[subset-cff] Fix buffer size calculation
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
015af5a8e5
[subset-cff] Write a couple loops as range-based for
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
bfbbd4af25
[subset-cff] Copy str for call ops
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
c755b3884f
[subset-cff] Pre-alloc enough for check-less copy
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
062e59ae67
[subset-cff] Optimize vector allocation for preprocessed input
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
8e9e94dba9
Revert "[vector] Optimize grow_vector() for size"
...
This reverts commit 1dd9396c7a
.
Is faster indeed.
15% on SourceHanSans/10000 benchmark.
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
2644540a74
[subset-cff] Compact parsed strings if using accelerator
...
Saves 32% on SourceHanSans/10000 benchmark!
Also, use memcmp now for writing out strings since now that our
ops are not super short, that's faster.
This makes cff-japanese test takes super long though; that needs
inspection.
2022-12-02 12:01:35 -07:00
Behdad Esfahbod
6012d3b228
[subset-cff] Write out charstrings zerocopy to serializer
2022-12-01 17:33:53 -07:00
Behdad Esfahbod
36e1a6339c
[cff] Add total_size to INDEX
2022-12-01 17:00:03 -07:00
Behdad Esfahbod
3843000660
[serialize] Add start_zerocopy()
2022-12-01 16:48:22 -07:00
Garret Rieger
de5a621322
[repacker] enforce root node having no incoming edges.
2022-12-01 23:37:16 +00:00
Behdad Esfahbod
a2681c37c1
[cff-subset] Simplify INDEX serialize() more
2022-12-01 16:15:23 -07:00
Behdad Esfahbod
c4b05878cb
[subset-cff] Remove INDEX unused serialize() methods
2022-12-01 15:56:37 -07:00
Behdad Esfahbod
b3ad4d72cc
[cff] Another no-memset in INDEX
2022-12-01 15:46:00 -07:00
Behdad Esfahbod
5fd2f255fc
[open-type] Don't memset 0 in serialize for ArrayOf family
...
Not necessary.
2022-12-01 15:18:59 -07:00
Garret Rieger
30e405e470
[repacker] ensure link obj indices are valid.
2022-12-01 22:12:59 +00:00
Behdad Esfahbod
70ac6dfb28
[subset-cff] Don't memset 0 INDEX and other serialize methods
...
Not necessary.
2022-12-01 14:58:25 -07:00
Garret Rieger
554ed06fac
[repacker] add cycle detection to the graph sort.
...
This allows us to bail early if the graph is not acyclic.
2022-12-01 21:52:37 +00:00
Behdad Esfahbod
a66de336fb
[vector] Minor use get_size() in as_bytes()
2022-12-01 14:32:13 -07:00
Behdad Esfahbod
0b826368fd
[serializer] Don't memset memory in embed
...
Not necessary.
2022-12-01 14:23:25 -07:00
Behdad Esfahbod
3b68c7146f
[array] Don't clear serializer buffer when copying out
...
Not needed.
2022-12-01 14:19:27 -07:00
Behdad Esfahbod
57808609c9
[VarData] Move an unlikely
2022-12-01 14:03:56 -07:00
Garret Rieger
9e99d08470
[repacker] validate link widths during repacker setup.
2022-12-01 20:17:41 +00:00
Garret Rieger
edf7a29595
[repacker] Validate link positions before running the repacker.
2022-12-01 20:17:41 +00:00
Garret Rieger
deca30b268
[repacker] get repacker fuzzer working.
...
Additionally add helper method that allows a graph to be saved as a fuzzer seed.
2022-12-01 20:17:40 +00:00
Garret Rieger
985b19f678
[repacker] begin implementing a fuzzer for the repacker api.
2022-12-01 20:17:39 +00:00
Matthias Clasen
c6d616cc41
Generate and install hb-features.h
...
This header has defines for all the optional
dependendencies that come with their own Harfbuzz
headers, so you can do:
#include <hb-features.h>
#ifdef HB_HAS_DIRECTWRITE
#include <hb-directwrite.h>
#endif
2022-12-01 18:16:55 +08:00
Behdad Esfahbod
8805a866b5
[ClassDef2] Write a few loops as range-based for
2022-11-30 17:18:04 -07:00
Behdad Esfahbod
ac8b232a2d
[gsub] Cache intersects_class results for closure
...
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10 +0.0246 +0.0240 0 0 0 0
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/64 -0.5541 -0.5544 4 2 4 2
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/512 -0.1120 -0.1123 43 38 43 38
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/1400 -0.1154 -0.1159 43 38 43 38
2022-11-30 17:09:04 -07:00
Behdad Esfahbod
c6a4b60116
[gsubgpos] Add an unlikely
2022-11-30 15:02:42 -07:00
Behdad Esfahbod
32dd9810cf
[subset-cff1] Cache glyph-to-sid-map in the accelerator
...
Benchmark Time CPU Time Old Time New CPU Old CPU New
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10 -0.0841 -0.0843 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/64 -0.1305 -0.1305 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/512 -0.1398 -0.1401 1 1 1 1
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/4096 +0.0382 +0.0380 9 9 9 9
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10000 +0.0213 +0.0211 11 11 11 11
2022-11-30 14:00:33 -07:00
Behdad Esfahbod
72fabef0a4
[SingleSubstFormat2] Speed up closure
2022-11-30 11:37:49 -07:00
Behdad Esfahbod
2dc2e016d4
[cff] Enable an unlikely
2022-11-30 11:25:50 -07:00
Behdad Esfahbod
582a87ef0a
[cff] Speed up FDSelect0 sanitize
2022-11-30 11:20:19 -07:00
Garret Rieger
2658370f00
[subset] make the cmap cache in accelerator const.
2022-11-29 22:04:10 -07:00
Garret Rieger
7551a668e3
[subset] Make cff_accelerator const.
...
This gives more confidence that it won't be accidentally modified by the subset operation using it.
2022-11-29 22:04:10 -07:00
Behdad Esfahbod
d8d0e06694
[array] Comment
2022-11-29 21:35:54 -07:00
Behdad Esfahbod
2fecf2aa19
[ClassDef] Minor rename
2022-11-29 21:25:01 -07:00
Behdad Esfahbod
8f632ca884
[ClassDef] Write another loop as range for
2022-11-29 21:23:35 -07:00
Behdad Esfahbod
87b12aee13
[ClassDef] Write a couple loops as range for
2022-11-29 21:18:48 -07:00
Behdad Esfahbod
ccd40c842c
[ClassDef] Optimize intersected_class_glyphs
2022-11-29 21:15:19 -07:00
Behdad Esfahbod
44c585a6df
[ClassDef] Fix disabled codeblock
2022-11-29 20:52:48 -07:00
Behdad Esfahbod
9b7617d433
[ClassDef2] Use a faster algorithm in subset()
...
Speedup across the board; up to 40% for MPlus1 at small sizes.
2022-11-29 20:29:58 -07:00
Behdad Esfahbod
ae5e6d562b
[ClassDef2] Micro-optimize
2022-11-29 15:48:38 -07:00
Behdad Esfahbod
7129b79406
[open-type] Add faster range-based loop to array types
2022-11-29 15:33:07 -07:00
Behdad Esfahbod
dc82334061
Remove a couple of unneeded .iter() invocations
2022-11-29 15:26:55 -07:00
Behdad Esfahbod
00f2657bb8
[subset] Accelerate sanitize-table-cache
...
Big wins all across small subsets
BM_subset/subset_codepoints/Roboto-Regular.ttf/nohinting/10 -0.1140 -0.1129 0 0 0 0
BM_subset/subset_codepoints/Amiri-Regular.ttf/nohinting/10 -0.4717 -0.4714 0 0 0 0
BM_subset/subset_codepoints/NotoNastaliqUrdu-Regular.ttf/nohinting/10 -0.8147 -0.8146 0 0 0 0
BM_subset/subset_codepoints/NotoSansDevanagari-Regular.ttf/nohinting/10 -0.3248 -0.3242 0 0 0 0
BM_subset/subset_codepoints/Mplus1p-Regular.ttf/nohinting/10 -0.1262 -0.1260 0 0 0 0
BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/nohinting/10 -0.0308 -0.0309 0 0 0 0
BM_subset/subset_codepoints/SourceSansPro-Regular.otf/nohinting/10 -0.1374 -0.1373 0 0 0 0
BM_subset/subset_codepoints/AdobeVFPrototype.otf/nohinting/10 -0.4555 -0.4555 0 0 0 0
BM_subset/subset_codepoints/MPLUS1-Variable.ttf/nohinting/10 -0.4175 -0.4174 0 0 0 0
BM_subset/subset_codepoints/RobotoFlex-Variable.ttf/nohinting/10 -0.4214 -0.4214 0 0 0
2022-11-29 15:20:13 -07:00
Behdad Esfahbod
33165f4848
[bit-page] Remove ELT_BITS_LOG_2
...
My compiler is smart enough to take care of it.
2022-11-29 15:15:43 -07:00
Garret Rieger
7a004a7ac2
[subset] Cache per subtable cmap unicode mappings.
2022-11-28 19:48:15 -07:00
Behdad Esfahbod
d2a2670e54
[iter] Simplify has() interface implementations
2022-11-28 19:43:09 -07:00
Behdad Esfahbod
cba82829ba
[subset-cff1] Share subrs object
...
Multiple FDs might share the same subrs...
2022-11-28 16:19:54 -07:00
Behdad Esfahbod
c7b998b355
[cff2] Don't share fd-array link
...
No point.
2022-11-28 16:18:21 -07:00
Behdad Esfahbod
3d9e3c2dc7
[subset-cff2] Don't share varstore object
2022-11-28 16:17:09 -07:00
Behdad Esfahbod
c503cf003e
[cmap] Store offset, not pointer, in cmap cache
2022-11-28 15:53:35 -07:00
Behdad Esfahbod
3e151139a8
[PairPos] Optimize get_effective_value_format
...
Speeds up BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/nohinting/512
12%.
2022-11-28 14:23:49 -07:00
Behdad Esfahbod
3131aecf9f
[array/hash] Fix asan issue
...
../src/hb-algs.hh:240:43: runtime error: reference binding to misaligned address 0x7ffe91a08b0e for type 'const unsigned int', which requires 4 byte alignment
2022-11-28 14:12:55 -07:00
Behdad Esfahbod
26ad7a6022
[gpos] Minor micro-optimize
2022-11-28 14:12:52 -07:00
Behdad Esfahbod
c769d7e181
[gpos] Whitespace
2022-11-28 14:03:58 -07:00
Behdad Esfahbod
3ea0f37c30
[subset-cff] Move an init to constructor
...
The init was not called anyway.
2022-11-28 13:58:44 -07:00
Behdad Esfahbod
6c92c3e0cf
[subset-cff] Remove unnecessary check
2022-11-28 13:54:24 -07:00
Behdad Esfahbod
7fd300dd9a
[subset-cff] Use constructor for parsed_cs_op_t
2022-11-28 13:51:16 -07:00
Garret Rieger
bd37900e0d
[subset] use a reference to cached global/loca subrs.
...
Previously they were being copied in. Copying is no longer necessary now that hint dropping doesn't mutate the arrays.
2022-11-28 13:43:52 -07:00
Behdad Esfahbod
ded9de9cd8
[cff] bsearch in fdselect
...
Saves 8% in NotoSansCJK / 10000 subset benchmark.
2022-11-28 13:32:08 -07:00
Behdad Esfahbod
0c33aba30c
[subset-cff] Rename drop flag to hinting flag
2022-11-28 12:28:13 -07:00
Behdad Esfahbod
6f5b531986
[subset-cff] Make no-hinting use accelerator as well
2022-11-28 12:24:29 -07:00
Behdad Esfahbod
f51a624e67
[subset-cff] Micro-optimize drop_hints_in_str
2022-11-27 14:54:39 -07:00
Behdad Esfahbod
3860326688
[subset-cff] Write loop more idiomatic
2022-11-27 13:23:13 -07:00
Behdad Esfahbod
3ff502d3ae
[subset-cff] Remove unnecessary initialization
2022-11-27 12:58:04 -07:00
Behdad Esfahbod
6af4985bf9
[subset-cff] No need for bitflag here anymore
2022-11-26 18:20:20 -07:00
Behdad Esfahbod
69ce606d14
[subset-cff] Immediately drop subr numbers instead of marking for skip
...
Seems to work and saves ~2% time.
2022-11-26 18:18:35 -07:00
Behdad Esfahbod
1cf4f3e083
[subset-cff] More comment
2022-11-26 18:15:28 -07:00
Behdad Esfahbod
f68221ff43
[subset-cff] Add comment
2022-11-26 18:12:14 -07:00
Behdad Esfahbod
048ab8a066
[subset-cff] Remove unused bits
2022-11-26 18:00:43 -07:00
Behdad Esfahbod
37cbfc0c7e
[subset-cff] Remove unneeded member
2022-11-26 17:57:44 -07:00
Behdad Esfahbod
46ab15137b
[subset-cff] Add has_calls to parsed charstrings
...
Optimize closure based on it.
2022-11-26 17:49:21 -07:00
Behdad Esfahbod
6d53074e63
[subset-cff] Drop another unused parameter
2022-11-26 17:23:09 -07:00
Behdad Esfahbod
42615561b5
Optimize a couple array references
2022-11-26 17:13:20 -07:00
Behdad Esfahbod
04d23b7ca8
[subset-cff] Micro-optimize collect_subr_refs_in_str
2022-11-26 17:08:00 -07:00
Behdad Esfahbod
9d18180c3c
[array] Use hb_hash instead of handrolling
2022-11-26 15:38:21 -07:00
Behdad Esfahbod
e302b9d5da
Fix build
2022-11-26 15:18:16 -07:00
Behdad Esfahbod
70d97d079b
[subset-cff] Remove unused argument
2022-11-26 15:16:11 -07:00
Behdad Esfahbod
4167e93a15
[subset-cff2] Micro-optimize blend operator
2022-11-26 15:14:52 -07:00
Behdad Esfahbod
f159bf075b
[cff2] Micro-optimize blend operator
2022-11-26 15:11:32 -07:00
Behdad Esfahbod
a331e913dc
[bit-page] Hand-code equality
...
Faster than memcmp() because of alignment.
2022-11-26 14:59:37 -07:00
Behdad Esfahbod
9df06a2695
[bit-set] Fix is_subset() short-circut criteria
...
Ouch!
2022-11-26 14:56:45 -07:00
Behdad Esfahbod
915c1a00cf
[vector] Add remove_unordered
...
Saves 5% in NotoNastaliq/1000 subset benchmark.
2022-11-26 14:48:57 -07:00
Behdad Esfahbod
4b8d8fbee4
[ot-map] Micro-optimize for size
2022-11-26 14:31:15 -07:00
Behdad Esfahbod
93f3a9dbc6
[ot-map] Micro-optimize more
...
Another 500 bytes.
2022-11-26 14:25:21 -07:00
Behdad Esfahbod
f39f049870
[ot-map] Micro-optimize
...
Weird that shrinks size by 500 bytes.
2022-11-26 14:16:15 -07:00
Behdad Esfahbod
60bb32c454
[ot-map] Minor refactor
2022-11-26 14:12:57 -07:00
Behdad Esfahbod
e3cc61838f
[PairPos] Adjust kerning buffer messages
2022-11-26 13:58:04 -07:00
Behdad Esfahbod
a81dd1053d
[layout] Adjust printing feature tags
...
For required-feature, print spaces, not nul bytes.
2022-11-26 13:43:36 -07:00
Behdad Esfahbod
56e3868b52
[layout/buffer-message] Print feature name in lookup buffer messages
2022-11-26 13:14:23 -07:00
Garret Rieger
a5d35fd80a
[subset] use charstrings directly from accelerator cache if mutability isn't needed.
2022-11-25 16:50:55 -07:00
Behdad Esfahbod
026b64ef76
[subset-cff] Avoid set mallocation in hb_plan_subset_cff_fdselect
2022-11-25 14:57:40 -07:00
Behdad Esfahbod
74acf52f33
[subset-cff] Micro-optimize copy_str more
2022-11-25 14:43:44 -07:00
Behdad Esfahbod
d2f3cde7ef
[subset-cff] Micro-optimize copy_str
2022-11-25 14:38:30 -07:00
Behdad Esfahbod
e333223f26
[array] Optimize serializing copy()
2022-11-25 14:26:02 -07:00
Behdad Esfahbod
22990fca1d
Merge pull request #3894 from googlefonts/cff_accel
...
[subset] Cache parsed char strings in CFF accelerator
2022-11-25 14:12:58 -07:00
Garret Rieger
8d5c899b0f
[subset] In cff accelerator hold reference to CFF table instead of the whole font.
2022-11-25 20:53:20 +00:00
Behdad Esfahbod
7b197446ac
[vector] Adjust for HB_OPTIMIZE_SIZE
2022-11-25 13:28:53 -07:00
Garret Rieger
75a99f28ab
[subset] destruct cff accelerator if present.
2022-11-25 20:24:05 +00:00
Behdad Esfahbod
1d474194f0
[subset-cff] Micro-optimize encode_str
2022-11-25 13:21:35 -07:00
Behdad Esfahbod
3c4a610b59
[subset-cff] Micro-optimize copy_str some more
2022-11-25 13:16:30 -07:00
Behdad Esfahbod
535aadb309
[subset-cff] Micro-optimize collect_subr_refs_in_str more
2022-11-25 13:07:42 -07:00
Behdad Esfahbod
00a9df3a43
[subset-cff] Micro-optimize collect_subr_refs_in_str
2022-11-25 13:05:05 -07:00
Behdad Esfahbod
d2a2f5bf4e
[vector] Handroll copy
2022-11-25 12:44:02 -07:00
Behdad Esfahbod
1fed366d5b
[serialize] Shut compiler warning off
2022-11-25 12:37:24 -07:00
Behdad Esfahbod
f2297e6978
[buffer] Documentation
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3889
2022-11-25 11:33:00 -07:00
Garret Rieger
71c23c1c07
[subset] don't copy the entire global/loca subr lists from the accelerator.
...
Instead run a closure on the retained charstrings and copy only the referenced subrs. This significantly speeds up cases with small character sets.
2022-11-25 18:05:39 +00:00
Garret Rieger
4ff09274a8
[subset] In CFF accelerator keep a reference to original face.
...
The charstring objects reference memory from the original face so we need to maintain a reference to prevent it from being destroyed.
2022-11-24 22:47:29 +00:00
Behdad Esfahbod
6aaa16627c
[Coverage] Comment
2022-11-24 14:58:42 -07:00
Behdad Esfahbod
06e2147a48
More call set->next() directly
2022-11-24 14:56:04 -07:00
Behdad Esfahbod
196c9db06f
Call ->next() directly
2022-11-24 14:51:52 -07:00
Behdad Esfahbod
03d64b7469
[bit-set] Remove TODO that would never happen
2022-11-24 14:33:18 -07:00
Behdad Esfahbod
690df8a369
[bit-set] Micro-optimize prev()
2022-11-24 14:32:51 -07:00
Behdad Esfahbod
fe5d9176ae
[bit-set] Micro-optimize size
...
It's silly that this saves size at all. :(
2022-11-24 14:30:18 -07:00
Behdad Esfahbod
cf9b9929df
[bit-set] Micro-optimize process()
2022-11-24 14:26:28 -07:00
Behdad Esfahbod
d77903db7b
[bit-set] Micro-optimize
2022-11-24 14:22:32 -07:00
Behdad Esfahbod
13dd4b464b
[bit-set] Micro-optimize access
2022-11-24 14:20:42 -07:00
Garret Rieger
a3afa61ce8
[subset] use cached parsed char strings if available.
2022-11-24 21:14:00 +00:00
Garret Rieger
47c125845c
[subset] Cache parsed charstrings in the cff accelerator.
2022-11-24 21:14:00 +00:00
Garret Rieger
48b6837074
[subset] add a CFF specific accelerator object.
...
This allows CFF specific accelerator structures to be isolated to the CFF code.
2022-11-24 21:13:59 +00:00
Behdad Esfahbod
d77f346d1a
[subset-cff] Minor rename
2022-11-24 14:02:46 -07:00
Behdad Esfahbod
29a0fa089a
[subset-cff] Micro-optimize
2022-11-24 14:00:59 -07:00
Behdad Esfahbod
d480ae1fac
[cff] Remove unused function
2022-11-24 13:53:43 -07:00
Behdad Esfahbod
73046d53e5
[shaper] Disable dumber shaper if no AAT
2022-11-24 13:49:29 -07:00
Behdad Esfahbod
e9f964c01a
[ot-face] Declare more tables as core
2022-11-24 13:38:53 -07:00
Behdad Esfahbod
5bc27a128d
[machinery] Comment
2022-11-24 13:30:12 -07:00
Behdad Esfahbod
d21bfb0861
[normalize] Remove an unlikely
...
Keep unlikely for truely unlikely scenarios.
2022-11-24 13:14:05 -07:00
Behdad Esfahbod
9e1239f443
[config] Define HB_NO_VERTICAL in HB_LEAN and as such in HB_TINY
2022-11-24 13:00:47 -07:00
Behdad Esfahbod
6f133ccfde
[glyf] Fix build with HB_NO_VERTICAL
2022-11-24 12:59:55 -07:00
Behdad Esfahbod
76420ef769
[machine.rl] Remove unlikely from what happens 1/16 of the time
2022-11-24 12:52:15 -07:00
Behdad Esfahbod
1248574454
[config] Disable Zawgyi shaper in HB_MINI/HB_TINY
2022-11-24 12:46:04 -07:00
Behdad Esfahbod
05aa084e67
[PairPos] Another attempt at fixing unsafe-to-break with ValueFormat2
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3888#issuecomment-1326781116
Test:
$ hb-shape XBRoya34.ttf ' الأ' --show-flags --script=arab
2022-11-24 12:14:09 -07:00
Behdad Esfahbod
54ae3345b2
[buffer] Improve documentation of hb_buffer_add_codepoints()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3889
2022-11-24 12:00:36 -07:00
Behdad Esfahbod
a4a4078632
Merge pull request #3893 from googlefonts/preprocess_test
...
[subset] Fix testing of preprocess
2022-11-24 11:56:58 -07:00
Behdad Esfahbod
0c70bc7f32
[skippy-iter] Fix two logic errors
...
First, a signed underflow.
Second, a wrong condition.
Both were introduced in 42681bdb55
2022-11-24 11:48:48 -07:00
Behdad Esfahbod
3b43096ef3
[buffer] Whitespace
2022-11-23 22:04:02 -07:00
Behdad Esfahbod
094f80738a
[buffer] Handle null buffer in set_message_func
2022-11-23 22:03:26 -07:00
Behdad Esfahbod
1fa64c0c23
[gsubgpos] Conditionalize skippy on unsafe-to-concat
2022-11-23 21:38:51 -07:00
Behdad Esfahbod
42681bdb55
[gsubgpos] No logic-change minor rewrite
2022-11-23 21:36:43 -07:00
Behdad Esfahbod
c15efdec49
[gsubgpos] Comment
2022-11-23 21:14:28 -07:00
Behdad Esfahbod
7ec1c41a55
[gsubgpos] Skippy-iter: Prefer correctness to performance
...
Prefer unsafe-to-concat correctness, over performance.
2022-11-23 21:12:41 -07:00
Behdad Esfahbod
dce3502e10
[array] Add commented-out static asserts
...
They don't work.
2022-11-23 18:34:54 -07:00
Behdad Esfahbod
a7fee43cef
[priority-queue] Minor micro-optimize
2022-11-23 17:46:32 -07:00
Garret Rieger
ff3cac0ccd
[subset] Fix unecessary trailing 0 bytes left by ContextFormat2 pruning.
...
Uneeded rules where beind removed from the count by the bytes for them was being left in the font.
2022-11-23 23:50:49 +00:00
Behdad Esfahbod
f2851e4157
[test-map] Test has() getter with unique-ptr
2022-11-23 16:50:30 -07:00
Behdad Esfahbod
5f3a780614
[font] Protect against div-by-zero
2022-11-23 16:45:46 -07:00
Behdad Esfahbod
060ecac949
[font] Respect subfont slant setting in hb-draw
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/3890
2022-11-23 16:31:37 -07:00
Garret Rieger
51028e63e6
[subset] Retain all glyphs in preprocessed face.
2022-11-23 22:51:16 +00:00
Behdad Esfahbod
404cb99d86
[buffer-diff] Fix check for glyph flag equality
...
I'm not sure if the old behavior was intentional, but it was checking
that the glyph flags were a subset of the reference buffer's glyph
flags. I don't see why that is useful. Fix that.
Then make the buffer-verify code ignore flag differences when verifying
buffers, since our unsafe-to-concat flag at least, is conservative and
not guaranteed to be produced the same in fragments. See:
https://github.com/harfbuzz/harfbuzz/issues/3888
2022-11-23 15:37:03 -07:00
Garret Rieger
4c49daf7cd
[subset] actually use the preprocessed face in hb-subset.
...
Tests weren't actually using the preprocessed face due to this typo in util/hb-subset.
2022-11-23 22:33:57 +00:00
Garret Rieger
2c0afde737
[subset] add an inprogress accelerator to plan.
...
This allows subset code to cache information into the accelerator during preprocess subset. Previously the accelerator was created at the end of subsetting.
2022-11-23 13:41:52 -07:00
Garret Rieger
81640fdffe
[subset] fix leaked font in glyf::subset(...)
2022-11-23 13:41:52 -07:00
Behdad Esfahbod
dcce53ddcb
[cff] Micro-optimize fetch_op
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
0bf7d9eb4d
[subset-cff] Micro-optimize encode_byte
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
a23f820427
[subset-cff] Micro-optimize array access
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
1e8f1ac677
[subset-glyf] Micro-optimize array access
2022-11-23 13:20:48 -07:00
Behdad Esfahbod
356d135ed6
[subset-glyf] Reduce roundf calls
...
Saves 7% on MPLUS1-Variable/6000 benchmark.
2022-11-23 13:20:48 -07:00
Garret Rieger
463ae07e99
[subset] In the preprocess subset call always use long loca.
...
Long loca is needed so that we can store the trimmed glyph bytes to allow us to safely skip trimming in the later subset.
2022-11-23 12:52:55 -07:00
Behdad Esfahbod
299ec902eb
[glyf] Move instanciation to serialize()
2022-11-22 16:03:02 -07:00
Behdad Esfahbod
d8d881f22d
[subset-glyf] Don't create a second glyf accelerator
2022-11-22 15:24:16 -07:00
Behdad Esfahbod
7560930070
[glyf] Add _create_font_for_instancing
2022-11-22 15:22:25 -07:00
Behdad Esfahbod
40634ceeb0
[glyf] Adjust data types
2022-11-22 15:07:16 -07:00
Behdad Esfahbod
ba0d28ea36
[glyf] Fix font error check
2022-11-22 15:01:48 -07:00
Behdad Esfahbod
04c525019c
[glyf] Use a malloc instead of calloc
2022-11-22 14:54:55 -07:00
Behdad Esfahbod
024aa81805
[glyf] Micro-optimize encode_coord
2022-11-22 14:51:42 -07:00
Behdad Esfahbod
b6694597f9
[glyf] Micro-optimize encode_flag()
2022-11-22 14:49:01 -07:00
Behdad Esfahbod
d47cfe7936
[glyf] Minor use operator ++
2022-11-22 14:45:04 -07:00
Behdad Esfahbod
03e6bde790
[glyf] Minor adjustment to lastflag handling
...
No logic change.
2022-11-22 14:40:50 -07:00
Behdad Esfahbod
0ca9fda889
[glyf] Remove misplaced comment
2022-11-22 14:39:10 -07:00
Behdad Esfahbod
44be8ef4ce
[gvar] Skip degenerate all-untouched delta-sets
2022-11-22 14:21:25 -07:00
Behdad Esfahbod
656bb223f1
[gvar] Micro-optimize unpack_points
2022-11-22 14:16:40 -07:00
Behdad Esfahbod
a383027262
[gvar] Cosmetic
2022-11-22 14:15:17 -07:00
Behdad Esfahbod
be89919a70
[gvar] is_valid() remove a check
...
I don't know why this check was there, but it doesn't make sense
because that function never returns 0 / false.
2022-11-22 13:56:20 -07:00
Behdad Esfahbod
e8ddf107d0
[gvar] Optimize a loop
2022-11-22 13:29:32 -07:00
Behdad Esfahbod
dd6fcec92c
[gvar] Remove a conditional
2022-11-22 13:27:40 -07:00
Behdad Esfahbod
a02317238a
[gvar] Refactor deltas array access
2022-11-22 13:24:39 -07:00
Behdad Esfahbod
c34c77698c
[gvar] Don't try IUP if all points are specified
2022-11-22 13:21:01 -07:00
Behdad Esfahbod
27c4037e59
[gvar] Micro-optimize boundary-checking
2022-11-22 13:12:22 -07:00
Behdad Esfahbod
ab8346fb6f
[gvar] Add an unlikely
2022-11-22 13:07:39 -07:00
Behdad Esfahbod
1e8a342ea2
[gvar] Micro-optimize int types
2022-11-22 13:04:32 -07:00
Behdad Esfahbod
4afcdf675b
More hb_memcpy
2022-11-22 12:56:48 -07:00
Behdad Esfahbod
58a696d80e
More hb_memset
2022-11-22 12:56:05 -07:00
Behdad Esfahbod
59c45f6deb
Use hb_memcpy instead of memcpy consistently
2022-11-22 12:54:50 -07:00
Behdad Esfahbod
ac0efaf818
Use hb_memset instead of memset consistently
2022-11-22 12:50:36 -07:00
Behdad Esfahbod
44a892a233
[shape] Use hb_memcmp instead of memcmp
2022-11-22 12:48:52 -07:00
Behdad Esfahbod
c53c648127
[subset-cff] Another handrolled memcpy
2022-11-22 12:46:25 -07:00
Behdad Esfahbod
ae578705c2
[array] Write hash as range for loop again
...
Now that our range loop is faster than our own iter.
2022-11-22 12:23:17 -07:00
Behdad Esfahbod
13e1ca9eb5
[cff] Micro-optimize memcpy
2022-11-22 12:19:28 -07:00
Behdad Esfahbod
2968dd7844
[gvar] Optimize as_array() access
2022-11-22 11:57:29 -07:00
Behdad Esfahbod
bb3bb76450
[gvar] Optimize scalar = 1.0 case
2022-11-22 11:53:35 -07:00
Behdad Esfahbod
2d098d5d7f
[gvar] Use memset
2022-11-22 11:51:04 -07:00
Behdad Esfahbod
e630a65e60
[gvar] Micro-optize vector extend
2022-11-22 11:29:13 -07:00
Behdad Esfahbod
49d4f62135
[gvar] Micro-optimize
2022-11-22 11:14:56 -07:00
Behdad Esfahbod
1758ee6646
[glyf] Minor write loop more idiomatically
2022-11-22 10:55:16 -07:00
Behdad Esfahbod
16ec9dcc1b
[gvar] Whitespace
2022-11-22 10:55:16 -07:00
Behdad Esfahbod
b567ce51d3
[subset] Don't trim glyf's again if preprocessed
...
Speeds up M1/10000 benchmark by 30%!
2022-11-22 10:55:08 -07:00
Behdad Esfahbod
72059a4789
[gvar] Optimize IUP alg
2022-11-22 10:41:37 -07:00
Behdad Esfahbod
ee9873b5ed
[gvar] Disable initializing vectors when not necessary
2022-11-22 10:23:17 -07:00
Behdad Esfahbod
b0d2641186
[vector] Add "initialize" argument to resize()
2022-11-22 10:20:11 -07:00
Behdad Esfahbod
a2059f8f55
[gvar] Optimize unpack_points
2022-11-22 10:16:21 -07:00
Behdad Esfahbod
6d7206b68b
[gvar] Optimize unpack_deltas
2022-11-22 10:13:14 -07:00
Behdad Esfahbod
bca569ae53
[array] Speed up hash() for byte arrays
2022-11-21 23:19:42 -07:00
Behdad Esfahbod
d7b492e3f5
Revert "[array] Remove hash specializations for bytes"
...
This reverts commit 213117317c
.
2022-11-21 23:08:51 -07:00
Behdad Esfahbod
1572ba281a
[subset-cff] Return in subr closure if already seen subr
...
Not sure why this was not done before.
2022-11-21 22:26:44 -07:00
Behdad Esfahbod
a29ca6efbc
[subset-cff] Comment
2022-11-21 22:02:17 -07:00
Behdad Esfahbod
28e767ddea
[subset-cff] Really optimize op_str_t / parsed_cs_op_t layout
...
Now parsed_cs_op_t and op_str_t are both 16 bytes.
Saves another 7% in SourceHanSans/10000 benchmark.
2022-11-21 21:59:51 -07:00
Behdad Esfahbod
2d5ee23731
[subset-cff] Readjust parsed_cs_op_t
...
Now it doesn't matter anymore since op_str_t is adjusted and
is 16 bytes with 8byte alignment.
2022-11-21 21:55:21 -07:00
Behdad Esfahbod
4f056b923a
[subset-cff] Optimize op_str_t layout
2022-11-21 21:37:57 -07:00
Behdad Esfahbod
a750cb0128
Simplify rvalue creation
2022-11-21 21:03:32 -07:00
Behdad Esfahbod
86a763c651
[map] Make keys moveable
2022-11-21 20:53:44 -07:00
Behdad Esfahbod
cf20d2ec5d
[map] Take const key
2022-11-21 20:47:17 -07:00
Behdad Esfahbod
3d1c76f713
[serializer] Don't hash objects twice
2022-11-21 19:40:32 -07:00
Behdad Esfahbod
35878df215
[algs] Implement swap() for pair_t
...
Helps priority_queue::pop_minimum and friends, which help subsetter
repacker. Shows a few percentage improvement on NotoNastaliq benchmark.
2022-11-21 19:14:03 -07:00
Behdad Esfahbod
a2984a2932
[cff] Remove unnecessary namespacing
2022-11-21 18:40:52 -07:00
Behdad Esfahbod
dc3bb5e0ed
[subset-cff] Pre-allocate values array for subroutines as well
2022-11-21 18:18:48 -07:00
Behdad Esfahbod
c6279224db
[cff] Adjust pre-allocation
...
This better matches actual usage, given that ops are one or two
bytes, and vector also allocates 50% extra.
2022-11-21 18:01:50 -07:00
Behdad Esfahbod
bab8ec58b0
[subset-cff] Disable sharing when packing charstring INDEXes
...
Saves another 8%ish.
2022-11-21 17:46:32 -07:00
Behdad Esfahbod
2cadacad6c
[cff] Simplify str_encoder_t error handling
2022-11-21 17:17:15 -07:00
Behdad Esfahbod
f263e3fe2e
[cff] Manually copy short strings instead of memcpy()
2022-11-21 17:04:55 -07:00
Behdad Esfahbod
38efd1862f
[cff] Add a likely()
2022-11-21 17:02:11 -07:00
Behdad Esfahbod
191025cc96
[cff] Adjust buffer pre-allocation
...
Most ops take one or two bytes, so allocate count*2, not count*3.
Shows minor speedup in subsetting benchmark (around 2%).
2022-11-21 16:58:19 -07:00
Behdad Esfahbod
4b2caafea2
[subset-cff] Optimize parsed_cs_op_t size
...
Shows 5% speedup on SourceHanSans-Regular/10000 benchmark.
2022-11-21 16:46:20 -07:00
Behdad Esfahbod
e0b06bd1b1
[subset] Cache has_seac in accelerator
...
Speeds up SourceHanSans-Regular/10000 benchmark by %25.
2022-11-21 16:30:34 -07:00
Garret Rieger
dd1ba328a8
[repacker] fix fuzzer timeout.
...
For https://oss-fuzz.com/testcase-detail/5845846876356608 . Only process the set of unique overflows.
2022-11-21 16:24:48 -07:00
Behdad Esfahbod
59451502e9
[cff] Optimize env error checking
2022-11-21 15:23:16 -07:00
Behdad Esfahbod
b238578a9c
[cff] Optimize INDEX operator[]
2022-11-21 14:36:57 -07:00
Behdad Esfahbod
d9de515a38
[cff] Optimize byte_str_ref_t array access
2022-11-21 14:23:07 -07:00
Behdad Esfahbod
a81ec9b2b6
[cff] Optimize byte_str_ref_t inc()
...
Shows a couple percent speedup.
2022-11-21 14:03:28 -07:00
Behdad Esfahbod
3ff75411bd
[algs] Fix bot fail
2022-11-21 13:08:55 -07:00
Behdad Esfahbod
b81e3989f8
Try fixing arm-eabi build after a10cfe3f32
2022-11-21 13:02:40 -07:00