|
f380a328
|
2023-08-25T14:01:01
|
|
Fix some typos.
|
|
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
|
|
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
|
|
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
|
|
10b9ca54
|
2023-06-28T07:46:33
|
|
Fix typo: subtitution -> substitution
|
|
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
|
|
82741304
|
2023-06-04T09:41:41
|
|
[subset] start_embed never returns nullptr
Remove checks.
|
|
ca27925d
|
2023-06-03T16:18:15
|
|
Use hb_codepoint_pair_t in more places
|
|
2f05c32c
|
2023-05-08T14:29:07
|
|
[Coverage] Minor access arrayZ directly in a couple places
|
|
4ad443d5
|
2023-05-08T10:14:43
|
|
[Coverage/ClassDef] Don't call qsort if sorted already
|
|
8df5cdbc
|
2023-05-07T15:49:50
|
|
[Coverage/ClassDef] Handle glyphID overflow in serialize
|
|
71910fdf
|
2023-05-05T15:37:07
|
|
[Coverage] Remove unnecessary check
|
|
ee9b631d
|
2023-05-05T10:26:57
|
|
[SingleSubst] Fix condition to upgrade to beyond-64k
|
|
0e9ebf10
|
2023-05-05T06:57:51
|
|
[config] Add HB_OPTIMIZE_SIZE_MORE and enable in HB_TINY
Part of https://github.com/harfbuzz/harfbuzz/issues/4220
|
|
31949636
|
2023-05-04T16:29:48
|
|
Revert "[layout] Cache subtable coverages in hb_map_t"
This reverts commit 7a715d74e06720c17d28ba7b4c3da0b583f8d1d3.
|
|
7a715d74
|
2023-05-04T16:28:11
|
|
[layout] Cache subtable coverages in hb_map_t
Proof-of-concept. Going to revert. Memory consumption is more
than I like. It does speed up Roboto shaping another 15% though.
Perhaps if we could add logic to choose which subtables to
cache, this might be a useful approach.
|
|
1be39729
|
2023-05-04T13:18:34
|
|
[subset] Support unordered glyphlist in Coverage/ClassDef serialize
|
|
a10fad7c
|
2023-05-04T11:32:07
|
|
[config] Add HB_NO_GDEF_CACHE
|
|
319a488b
|
2023-05-04T10:36:48
|
|
[GDEF] Fix null check
Fixes https://oss-fuzz.com/testcase-detail/5920994267889664
|
|
fb795dc3
|
2023-05-03T15:17:20
|
|
[GPOS] Optimize iterator reset
Speeds up Gulzar shaping 5%.
|
|
8a8fc37c
|
2023-05-03T14:57:00
|
|
[GDEF] Use a cache for glyph classes
Shows 5% speedup for Roboto shaping.
|
|
323a1fe4
|
2023-05-03T13:52:43
|
|
[PairPos] Fix what I broke
|
|
a6f5f0dc
|
2023-05-03T13:45:39
|
|
[PairSet] Micro-optimize
|
|
4e495eb0
|
2023-05-03T13:40:46
|
|
[PairPos] Add an unlikely
|
|
5528bdd4
|
2023-05-03T13:35:10
|
|
[PairPos] Remove a likely
|
|
ae0fe02d
|
2023-05-03T13:24:08
|
|
[Ligature] Use slow path if 2 or fewer ligatures
|
|
ddd6c2e7
|
2023-05-03T13:16:39
|
|
[Ligature] Micro-optimize more
|
|
045ae4b0
|
2023-05-03T13:08:43
|
|
[GPOS] Micro-optimize
|
|
0fe90ebc
|
2023-05-03T12:49:31
|
|
[Ligature] Micro-optimize
|
|
51061d28
|
2023-05-03T12:46:04
|
|
[Ligature] Minor tweak to recent code
|
|
7881eadf
|
2023-05-02T14:56:18
|
|
[Ligature] Speed up
Match the first component of the ligature in the LigatureSet loop.
Speeds up Roboto shaping by 25%. I don't think it breaks anything.
The test suite seems happy.
|
|
95f15557
|
2023-05-02T16:37:31
|
|
[PairPosFormat2] Micro-optimize and don't kern if class2=0
If class2=0 we expect no kerning to happen. Just bail out.
|
|
59967154
|
2023-05-02T15:52:43
|
|
[PairPos2] Micro-optimize
|
|
a8b8eb53
|
2023-05-01T16:56:29
|
|
[Coverage] Micro-optimize
|
|
af21ea35
|
2023-05-01T16:34:50
|
|
[Coverage/serialize] Micro-optimize
|
|
e826d94a
|
2023-04-30T11:11:19
|
|
Call roundf() instead of _hb_roundf()
The former is defined as a macro expanding to the latter.
|
|
06504cb0
|
2023-04-28T13:13:18
|
|
[PairPosFormat2] Minor use false instead of 0
|
|
9ed43dc5
|
2023-04-28T12:38:26
|
|
[PairPosFormat2] Reuse a value
|
|
8658c257
|
2023-04-17T19:46:46
|
|
[subset] In LigatureSubst subsetting, check if the ligature glyph is in glyphset.
Otherwise coverage will not match the retained ligature sets.
|
|
a84cae42
|
2023-03-15T02:39:57
|
|
[subset] Don't add invalid gids (-1) to the glyphset when loading glyph map from the accelerator.
|
|
7327006d
|
2023-03-07T21:06:01
|
|
[GSUB] Support SingleSubst in get_glyph_alternates
Fixes https://github.com/harfbuzz/harfbuzz/discussions/4146
|
|
08784baf
|
2023-03-02T10:48:30
|
|
[GSUB/GPOS] Fix sanitization in Format1
Fixes https://oss-fuzz.com/testcase-detail/5120727025319936
|
|
c67c0086
|
2023-03-01T13:32:44
|
|
[GPOS] Fix indexing in MarkLigPos
This was broken in 8708b9e081.
Fixes https://github.com/harfbuzz/harfbuzz/issues/4142
|
|
918193eb
|
2023-02-22T23:11:29
|
|
[subset] fix a class of fuzzer timeouts caused by large shared coverage tables.
More acurately estimates the op count for CoverageFormat2 tables as the population size instead of the size in bytes.
|
|
adccc535
|
2023-02-17T12:29:42
|
|
[MarkBase] Adjust base-finding logic
Fixes https://github.com/harfbuzz/harfbuzz/issues/4124
|
|
64fa5cd4
|
2023-02-07T15:50:36
|
|
[GPOS] Fix assert fail introduced recently
Was introduced in 8708b9e081192786c027bb7f5f23d76dbe5c19e8.
If these lookups are recursed to from (Chain)Context out-of-order,
it was possible that last_base > buffer->idx, in which case we
were attaching marks to a base after them... and an assertion
was failing fortunately.
Fixes https://oss-fuzz.com/testcase-detail/6377756666757120
|
|
8708b9e0
|
2023-02-06T14:51:25
|
|
[GPOS] Avoid O(n^2) behavior in mark-attachment
Better implementation; avoids arbitrary limit on look-back.
|
|
09b7fce8
|
2023-01-28T13:21:27
|
|
Make includes relative
|
|
e25e4c9a
|
2023-01-28T00:10:47
|
|
Move GDEF table to src/OT/Layout/GDEF
|
|
749df4ee
|
2023-01-21T16:00:54
|
|
[PairPosFormat1] One more
|
|
b648ceb7
|
2023-01-21T15:58:59
|
|
[PairSet] Optimize last commit
|
|
89162324
|
2023-01-21T15:57:18
|
|
[PairSet] Unify get_size()
|
|
b63159e8
|
2023-01-21T15:50:48
|
|
[PairPosFormat1] Fix stride
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55287
and generally the lookup with MediumTypes.
|
|
be8a87c4
|
2023-01-21T15:00:41
|
|
Move TRACE_DISPATCH after may_recurse()
Such that we don't get memory access issues if DEBUG_SANITIZE is
on and may_recurse() returns false.
|
|
ed023f66
|
2023-01-12T17:04:24
|
|
Enable -Wformat-signedness
And fix the codebase.
|
|
b33eb9ec
|
2023-01-11T11:20:04
|
|
[subset-plan] Simplify layout_variation_idx_delta_map allocation
|
|
0728098e
|
2023-01-10T10:18:29
|
|
[Coverage] Speed up subset for too-large Coverage tables
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54980
|
|
301f6e4b
|
2022-12-04T11:46:10
|
|
[Coverage] Remove TODO
|
|
dbbb8e80
|
2022-12-04T11:13:39
|
|
Revert "[map] Add hb_map_filter_invalid"
This reverts commit 8d7e92111786b21906157127c24b72b1e444e6e7.
Surprisingly this slowed NotoNastaliqUrdu benchmark down by a couple
percent instead of speeding it up.
|
|
8d7e9211
|
2022-12-04T11:01:45
|
|
[map] Add hb_map_filter_invalid
Use it in one place.
|
|
41a8597f
|
2022-12-03T13:23:26
|
|
[layout] Simplify CoverageFormat2 intersects_coverage()
|
|
1f4d8cca
|
2022-12-03T13:17:15
|
|
[CoverageFormat2] Optimize intersects()
|
|
c482b061
|
2022-12-03T13:14:31
|
|
[gpos] Optimize PairPosFormat1::intersects
|
|
4d19c724
|
2022-12-03T09:57:29
|
|
[CoverageFormat1] Speed up intersects()
Speeds up SourceHanSerif/10000 benchmark (not in test suite) by
32%!
|
|
2a7a1d5a
|
2022-12-02T12:33:24
|
|
[Coverage] Avoid timeout on broken ranges
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53929
|
|
72fabef0
|
2022-11-30T11:37:49
|
|
[SingleSubstFormat2] Speed up closure
|