|
eb116e16
|
2023-07-28T15:27:07
|
|
[instancer] Add new_gid->contour_points vector map in subset plan
- Add an API in Glyph to export original contour_points vector, which is
needed by infer_deltas when merging tuple variations with the same
tent
|
|
49dbe0cd
|
2023-08-06T15:07:57
|
|
Another try
|
|
483d4a87
|
2023-08-06T14:40:45
|
|
Fix bot
|
|
7989702a
|
2023-08-06T14:17:50
|
|
Audit and fix up serialize_subset uses
Fixes https://github.com/harfbuzz/harfbuzz/issues/4362
|
|
dcd3afca
|
2023-08-01T20:09:34
|
|
[skippy-iter] Remove unused num_items
|
|
9cdc043c
|
2023-07-31T18:53:29
|
|
[Cursive] Only sanitize what we use
|
|
44026aa8
|
2023-07-31T16:47:06
|
|
[Cursive] Minor, adjust unsafe-to-concat if prev didn't sanitize
|
|
b382e616
|
2023-07-31T16:29:28
|
|
[GPOS] Sanitize Cursive positioning anchors lazily
Speeds up Duployan-Regular.otf load time by 30%.
Doesn't seem to slow down shaping in a measurable way.
|
|
62e6f783
|
2023-07-25T08:32:21
|
|
[Cursive] round
|
|
60db1427
|
2023-07-24T20:49:32
|
|
[layout] Remove unused "max-size" cruft
|
|
c91899be
|
2023-07-21T11:43:47
|
|
[gdef] Use set-digest for mark-filterint-sets
Speeds up Noto Duployan-Regular.otf by 45% percent!
|
|
837885f0
|
2023-07-20T12:58:16
|
|
Revert "[sanitize/Coverage] Keep a map of sane coverages"
This reverts commit a689114898cc3e8f1c6ba7cc49cd6c3639d91250.
|
|
0ab90671
|
2023-07-20T12:57:16
|
|
[sanitize/Coverage] Keep a map of sane coverages
Fonts like Gulzar reuse the same coverage over a thousand times
sometimes.
However, this doesn't speed up sanitize unfortunately. Looks
like calling Coverage::sanitize() is already very fast. We're
just doing A LOT of it.
The map slowed it down in fact. A set was even slower.
Going to revert.
|
|
aa381ae9
|
2023-07-18T10:42:13
|
|
[ReverseChain] Remove SIZE_MAX
Oops. Can't set it since the struct has offsets.
|
|
e583c9e9
|
2023-07-18T10:34:26
|
|
[ReverseChain] Add max-size
|
|
49730531
|
2023-07-16T13:09:49
|
|
Config
|
|
645fabd1
|
2023-07-16T11:36:59
|
|
[gsubgpos] Vastly speed up ChainRuleSet / RuleSet matching
Match the first component in a fast loop.
Idea replicated from LigatureSet.
Speeds up Gulzar shaping by 22%!
37% in NotoNastaliqUrdu!
|
|
77080f86
|
2023-07-16T11:26:32
|
|
.
|
|
62e10c9f
|
2023-07-16T08:43:18
|
|
Revert "[gsubgpos] Allocate iterators further up"
This reverts commit b9f364b8fcacf8ab32d0272190d8509f214e55f2.
|
|
b9f364b8
|
2023-07-16T08:42:36
|
|
[gsubgpos] Allocate iterators further up
To avoid calling set_match_func repeatedly.
Doesn't show speedup. Going to revert.
|
|
f94508ed
|
2023-07-15T15:28:19
|
|
[Ligature] Micro-optimize
|
|
c41b0d7b
|
2023-07-10T17:23:58
|
|
[sanitize/PairValueRecord] Add a max_size for faster sanitize
|
|
d84c5f29
|
2023-07-08T15:22:51
|
|
Revert "[gsubgpos] Make (Chain)Context funcs templatized"
This reverts commit 03ac08d267eb7ad2f1ac039115fc0030ea475fae.
|
|
e73223b9
|
2023-07-08T15:22:18
|
|
[gsubgpos] Make (Chain)Context funcs templatized
Unfortunately they still won't be inlined because the matcher_t
needs function pointers. So, no speed up. Going to revert.
|
|
0b879afb
|
2023-07-07T22:35:43
|
|
[sanitize] Inline Coverage::sanitize
|
|
2006d321
|
2023-07-07T17:07:11
|
|
[sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size
Unfortunately this doesn't speed up NotoNastaliq or Gulzar as I was
hoping for. Their GSUB tables are not large enough for this to kick
in...
|
|
7a85663c
|
2023-07-07T19:21:18
|
|
Revert "[sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size"
This reverts commit 10f8556c73f3cf231c6b5a900a6a1903f9516f90.
This was, unfortunately, wrong :(.
|
|
10f8556c
|
2023-07-07T17:07:11
|
|
[sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size
|
|
68b78914
|
2023-07-07T17:07:11
|
|
[sanitize] Add "fastpath" for ArrayOfOffset16To<> objects with max size
Unfortunately this doesn't speed up NotoNastaliq or Gulzar as I was
hoping for. Their GSUB tables are not large enough for this to kick
in...
|
|
90752cd5
|
2023-07-07T15:47:28
|
|
[type] Add HeadlessArray16Of
|
|
25297408
|
2023-07-03T10:34:26
|
|
[COLR] Fix PaintComposite sanitize timeout
Was timing out after recent sanitize() change.
Fixes https://oss-fuzz.com/testcase-detail/5692635449524224
|
|
eae82788
|
2023-07-02T13:07:26
|
|
[GPOS] Micro-optimize lazy_some_gpos check
Speeds up 11% in:
BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb
|
|
46e54a23
|
2023-07-02T13:03:16
|
|
[GPOS] Remove extra check
|
|
7f5380fe
|
2023-07-02T12:19:22
|
|
[Composite] Don't apply transformation if phantom_only
|
|
0cf759b0
|
2023-07-02T12:15:43
|
|
[Glyph] Don't shift anchored Composite if phantom_only
Fixes https://oss-fuzz.com/testcase-detail/5114131137822720
|
|
645bde47
|
2023-07-02T12:07:22
|
|
[Glyph] Pass phantom-only to gvar only for SIMPLE glyphs
For Composites we need to get the translation offset deltas.
|
|
2d6091fc
|
2023-06-30T11:48:56
|
|
[GPOS] Make AnchorMatrix sanitize lazy again
Was reverted in the previous commit, because it was incomplete.
|
|
0887382c
|
2023-06-30T11:39:46
|
|
[GPOS] Fix sanitize
|
|
690af7aa
|
2023-06-30T10:36:01
|
|
[GPOS] Sanitize Device tables lazily
This speeds up face loading for variable fonts by 80%!
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
---------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_Font/load_face_and_shape/Roboto-Regular.ttf/hb -0.0368 -0.0366 20 20 20 19
BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/hb -0.7149 -0.7162 77 22 77 22
BM_Font/load_face_and_shape/RobotoFlex-Variable.ttf/var/hb -0.7241 -0.7255 80 22 79 22
BM_Font/load_face_and_shape/SourceSansPro-Regular.otf/hb -0.1441 -0.1445 28 24 28 24
BM_Font/load_face_and_shape/AdobeVFPrototype.otf/hb -0.7893 -0.7910 66 14 66 14
BM_Font/load_face_and_shape/AdobeVFPrototype.otf/var/hb -0.7865 -0.7882 67 14 66 14
BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/hb -0.8895 -0.8900 227 25 226 25
BM_Font/load_face_and_shape/SourceSerifVariable-Roman.ttf/var/hb -0.8895 -0.8900 226 25 225 25
BM_Font/load_face_and_shape/Comfortaa-Regular-new.ttf/hb -0.5512 -0.5531 42 19 42 19
BM_Font/load_face_and_shape/NotoNastaliqUrdu-Regular.ttf/hb -0.1511 -0.1510 227 192 225 191
BM_Font/load_face_and_shape/NotoSerifMyanmar-Regular.otf/hb -0.1494 -0.1498 41 35 40 34
OVERALL_GEOMEAN -0.6443 -0.6456 0 0 0 0
|
|
d338506c
|
2023-06-30T10:13:05
|
|
[GPOS] Reuse sanitize_values_stride_unsafe in another function
|
|
794fac32
|
2023-06-29T20:55:52
|
|
[glyf] Minor another range for loop
|
|
0ae16766
|
2023-06-29T20:38:42
|
|
[CompositeGlyph] Minor use a range for loop
|
|
05c01ad5
|
2023-06-29T16:49:20
|
|
[SimpleGlyph] Minor use a range for loop
|
|
4123e0c7
|
2023-06-29T16:27:35
|
|
[path-builder] Speed up mid-point calculation
|
|
ca44c38c
|
2023-06-29T14:41:21
|
|
Add HB_ALWAYS_INLINE
With MSVC implementation as well.
|
|
c49ca371
|
2023-06-29T12:38:45
|
|
[Glyph] Minor micro-optimize away a function call
For when coords are not set.
|
|
5fb7b02a
|
2023-06-29T12:28:43
|
|
[CompositeGlyph] Minor use range loop
|
|
20b32b04
|
2023-06-29T12:08:11
|
|
[SimpleGlyph] Micro-optimize phantom_only
|
|
04809ede
|
2023-06-29T11:58:53
|
|
[CompositeGlyph] Micro-optimize translate()
|
|
229db973
|
2023-06-29T11:54:10
|
|
[CompositeGlyph] Minor use vector::push()
|
|
75101802
|
2023-06-29T10:54:49
|
|
[CompositeGlyph] Micro-optimize
|
|
e9d74d6b
|
2023-06-29T10:53:52
|
|
[SimpleGlyph] Minor add an unlikely to error condition
|
|
6abca413
|
2023-06-29T10:39:49
|
|
[path-builder] Micro-optimize
No need to initialize these when has_data=false.
|
|
5703c1c4
|
2023-06-29T10:35:23
|
|
[path-builder] Add a couple of unlikely's
|
|
f5eead04
|
2023-06-28T15:07:15
|
|
[glyf/gvar] Optimize getting variable phantom points
Used when there's no HVAR table and get_h_advance().
I see some 10% speedup with a SourceSerifVariable-Roman with
the HVAR table removed.
|
|
e42d6df5
|
2023-06-28T14:25:11
|
|
[glyf] Minor refactor a couple of lines and micro-optimize
|
|
c31471d1
|
2023-06-28T13:51:54
|
|
[glyf] Micro-optimize
|
|
83d75d5e
|
2023-06-28T13:35:24
|
|
[glyf] always_inline consume_point
7% speedup in:
BM_Font/draw_glyph/Roboto-Regular.ttf/hb
|
|
8795cced
|
2023-06-28T13:29:29
|
|
Revert "[SimpleGlyph] Avoid branches in read_points"
This reverts commit ba062c713e469f91f57f3c85990f721789ec7c2a.
|
|
ba062c71
|
2023-06-28T13:24:37
|
|
[SimpleGlyph] Avoid branches in read_points
Calculate total bytes in read_flags and bounds-check once.
This slows things down apparently, so going to revert.
|
|
10b9ca54
|
2023-06-28T07:46:33
|
|
Fix typo: subtitution -> substitution
|
|
452557cd
|
2023-06-26T18:40:54
|
|
Replace a free with hb_free
Ouch.
|
|
1fc128f6
|
2023-06-26T18:34:27
|
|
Replace a few memset/memcpy's with hb_ equivalents
|
|
67b16247
|
2023-06-07T16:15:48
|
|
[set] Simplify a few set iterations as range loop
|
|
dcecb4d1
|
2023-06-05T16:03:36
|
|
[subset/ValueFormat] Micro-optimize
|
|
469e82a2
|
2023-06-05T15:23:22
|
|
[subset/PairPos] Micro-optimize
|
|
6593d2aa
|
2023-06-05T15:11:43
|
|
[subset/PairPos] Speed up
|
|
15048e50
|
2023-06-04T10:07:04
|
|
[serialize] Add more function attributes
|
|
4e076da9
|
2023-06-04T09:48:42
|
|
Another try at fixing build
|
|
b08866af
|
2023-06-04T09:44:37
|
|
Fix build
|
|
82741304
|
2023-06-04T09:41:41
|
|
[subset] start_embed never returns nullptr
Remove checks.
|
|
af3fdf1f
|
2023-06-04T09:22:42
|
|
[subset/glyf] Simplify error handling
|
|
3dd1de46
|
2023-06-04T09:15:14
|
|
[subset/glyf] Fix a few return_trace's
|
|
73f2f935
|
2023-06-04T09:12:18
|
|
[subset/glyf] Fix another leak
|
|
3d08a2f1
|
2023-06-03T23:38:38
|
|
[subset/glyf] Fix leak
|
|
fc33200d
|
2023-06-03T23:29:39
|
|
[subset/glyf] Avoid a vector copy
Oops!
|
|
3bfcbd61
|
2023-06-03T23:17:56
|
|
[subset/glyf] Minor use range lopp
|
|
917c8d0a
|
2023-06-03T23:15:56
|
|
[subset/glyf] Minor change of value
|
|
b5792f11
|
2023-06-03T22:24:06
|
|
[subset] Reuse num_glyphs in various places
|
|
87cf09bd
|
2023-06-03T21:00:56
|
|
[subset/loca] Fix up for retaingid null glyphs at the end
We currently don't have those, but in case we add.
|
|
38fa0323
|
2023-06-03T18:51:09
|
|
Revert "[subset/loca] Build in the serializer memory"
This reverts commit 546b51818666ca1ddb01824f752eccbd6a751b4b.
|
|
546b5181
|
2023-06-03T18:50:35
|
|
[subset/loca] Build in the serializer memory
Because it's hot. Doesn't seem to speed up though. Slight
slowdown. Going to revert.
|
|
3cb2b49e
|
2023-06-03T18:44:56
|
|
[subset/loca] Shuffle code around
|
|
b0d0babb
|
2023-06-03T17:14:55
|
|
[subset/loca] Rewrite loop faster
|
|
ca27925d
|
2023-06-03T16:18:15
|
|
Use hb_codepoint_pair_t in more places
|
|
c7493efe
|
2023-06-03T15:39:27
|
|
[subset/loca] Micro-optimize
|
|
efefec13
|
2023-06-02T20:33:52
|
|
[subset/glyf] Remove unneeded codepath
|
|
ac1f5ca0
|
2023-06-02T17:07:44
|
|
[subset/loca] Micro-optimize
|
|
6eae9325
|
2023-06-02T17:05:27
|
|
[subset/loca] Reduce a vector allocation
|
|
ec8965e4
|
2023-06-02T16:10:25
|
|
[subset/glyf] Don't clear loca allocation
|
|
b67e464b
|
2023-06-02T15:11:06
|
|
[subset/retaingid] Regain perf lost
In 0f12fd5a66a5dd1c3c9ac5ea8a52341bafcfe567
|
|
0f12fd5a
|
2023-06-02T13:58:55
|
|
[subset/glyf] Fix for non-monotonic glyphmap
Slows things down again, but is correct. Still a good win
combined with the previous changes.
|
|
66ce902c
|
2023-06-02T13:53:21
|
|
[glyf] Reduce allocation again
|
|
0e0110e7
|
2023-06-02T13:34:58
|
|
[glyf] Avoid a SubsetGlyph copy
Unfortunately hb_second() always does a copy...
|
|
33ea8b5e
|
2023-06-02T13:10:52
|
|
[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
|
|
b04ca1c1
|
2023-06-01T20:43:07
|
|
Revert "[subset/glyf] Exact allocation"
This reverts commit a830f085c849846f8441f5d92d4db36130ef71f8.
Weirdly enough in a benchmark I'm running I see this show
some slowdown. Makes zero sense.
|
|
a830f085
|
2023-06-01T20:37:29
|
|
[subset/glyf] Exact allocation
|
|
ff0b85cf
|
2023-06-01T20:30:56
|
|
[subset/glyf] Empty .notdef only if old-gid was also 0
Otherwise it wasn't a .notdef, even if new-gid is 0.
|
|
65a7d8c6
|
2023-06-01T20:20:00
|
|
[glyf] Empty glyphs need no padding
|
|
73c18d1d
|
2023-06-01T20:06:42
|
|
[glyf] Micro-optimize padded_offsets
|