|
07ee609f
|
2025-10-20T20:06:43
|
|
Fix invalid pointer conversions in graph Coverage. (#5622)
For #5604.
|
|
4a26e289
|
2025-09-30T15:31:04
|
|
Add `hb_ot_layout_lookup_collect_glyph_alternates()` (#5367)
* [map] Massage operator << overloads
* [ot-layout] Add +hb_ot_layout_lookup_collect_glyph_alternates
To collect all glyph mapping from SingleSubst or AlternateSubst
lookups in one call. Needed by FreeType autohinter for performance.
New API:
+hb_ot_layout_lookup_collect_glyph_alternates()
* [layout] Change hb_ot_layout_lookup_collect_glyph_alternates() API
https://github.com/harfbuzz/harfbuzz/pull/5367#discussion_r2149019638
|
|
af286b8f
|
2025-09-30T12:59:34
|
|
[Coverage] Simplify initialization
|
|
fc761725
|
2025-09-24T12:42:53
|
|
[ValueFormat] comment
|
|
d350cb83
|
2025-09-23T19:47:01
|
|
Speed up ValueFormat len() calc
|
|
82370913
|
2025-09-15T20:16:52
|
|
[vector] Simplify resize()
|
|
a89c36e0
|
2025-09-02T13:05:11
|
|
[GPOS/kerx] Support attaching marks to bases after them (#5520)
See comments. Fuzzer found. I'm surprised this was not discovered
before though. I hope I have not missed anything.
Fixes https://oss-fuzz.com/testcase-detail/6399443634290688
|
|
c61a4f26
|
2025-08-29T02:11:52
|
|
[GPOS] Micro-optimize offset propagation
|
|
bc6eba94
|
2025-08-27T13:29:15
|
|
Fix kerx attachment shaping issues (#5515)
* [ot-shape] Don't zero offsets of default-ignorables
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/5514
* [ot-shape] Propagate chain offsets in opposite direction if RTL
Part of fixing https://github.com/harfbuzz/harfbuzz/issues/5514
|
|
6b62d367
|
2025-08-25T14:02:59
|
|
[ligature-cache] Handle case of ligature with no components (#5500)
In the cache with "seconds" set-digest.
|
|
8bdedb3b
|
2025-08-20T00:27:41
|
|
Limit external caches (#5483)
* Revert "[external_cache] Remove a conditional (#5471)"
This reverts commit 9794ad9e00ff66741c36ec9511e3e968663b74a7.
* Limit external_cache to 8 subtables per lookup
|
|
22545743
|
2025-08-20T00:06:00
|
|
Match positions no malloc (#5481)
* Reduce allocation of match_positions by caching one in ctx
* Use a stack-array for small match-positions
This surgically enables stack-backed storage in vector.
* Handle match-positions alloc failure
And make allocations unchecked.
* Clean up CFF hack to use static storage in vector
* Fixup for match_positions allocations
* Fix vector handling of foreign arrays memory management
|
|
9794ad9e
|
2025-08-16T15:51:05
|
|
[external_cache] Remove a conditional (#5471)
|
|
368598b5
|
2025-08-16T00:38:42
|
|
Increase match_positions stack allocation from 4 to 8 (#5468)
Slight speedup on NotoNastaliq.
|
|
dae2c8bb
|
2025-08-14T22:26:40
|
|
[ligature] Add a set-digest on the second component (#5464)
|
|
8268473a
|
2025-08-14T21:57:19
|
|
Add external_cache_create separate from cache_func (#5463)
* Add external_cache_create separate from cache_func
* Simplify cache_func_t signature
* Rename a cache type
* Rename another cache type
|
|
cf614fc8
|
2025-08-14T16:23:45
|
|
[LigatureSet] Use slow path only if <= 1 ligatures (#5462)
|
|
4aa7dcba
|
2025-08-12T03:18:38
|
|
[Coverage cache] Micro-optimize
|
|
a4dbb7d4
|
2025-08-12T02:34:49
|
|
[Coverage] Cache NOT_COVERED effectively (#5453)
Before, our cache.set was always failing for NOT_COVERED,
making the cache ineffective for uncovered glyphs. Fix that.
Some nice speedups in Latin fonts.
|
|
6ec1b279
|
2025-08-11T01:14:19
|
|
[lookup] Give each subtable an external-cache opportunity (#5449)
* [lookup] Give each subtable an external-cache opportunity
* [subtable-cache] Fixups
|
|
cd49b14b
|
2025-07-29T14:32:26
|
|
[subset] add more aggressive pruning for MarkLigPos and MarkMarkPos (#5434)
Remove lig/mark glyphs without defined anchor points after subsetting
|
|
7af1df67
|
2025-07-28T10:24:45
|
|
Revert "Merge branch 'main' into HVF"
This reverts commit 3a64fce9b73bc601e257d13d1ea8ac7f32ce60b6, reversing
changes made to f63d960c4eda79514c060ddce796df9e607b5bae.
|
|
11daf566
|
2025-07-26T06:31:48
|
|
[GDEF] Rename a var
|
|
7b56d3a1
|
2025-07-26T05:35:57
|
|
[ot-layout] s/hb_ot_lookup_cache_t/hb_ot_layout_mapping_cache_t/g
|
|
09978fc5
|
2025-07-26T04:20:59
|
|
[ot] Rename hb_ot_lookup_cache_op_t, and cache to subtable_cache
|
|
a220479f
|
2025-07-26T06:10:31
|
|
Remove std::forward inside loops (#5424)
* [iter,cff] Remove std::forward from inside loops
Was moving multiple times, if args were movable.
* [CPAL] Handle an error
* [serialize] Remove another std::forward in a loop
* [bit-page] Fix a static-analysis out-of-range warning
Code was safe. Just rewrite.
* [ot-layout] Remove another std::forward from inside a loop
|
|
786f8381
|
2025-07-25T04:00:37
|
|
[GDEF] Use bit-set instead of set-digest for mark glyph classes
Most fonts don't even have these. Some, like NotoSansDuployan
have huge ones. This speeds it up by 25%.
|
|
879c4ac7
|
2025-07-24T14:13:16
|
|
[subset] MarkBasePos: remove base glyphs with empty base record
BaseRecord could become empty if all anchor offsets for retained mark
classes are null
|
|
f5acbb5c
|
2025-07-23T17:48:13
|
|
[VARC] Fix HB_NO_DRAW build
|
|
dd347eb4
|
2025-07-23T19:22:19
|
|
[VARC] fix potential unitialized value use in get_extents_without_var_scaled.
Callers of get_extents_without_var_scaled assume it will set extents if it has returned true.
|
|
4b00cec0
|
2025-07-15T11:25:49
|
|
[subset] bug fix for COLRv1 layer index closure
|
|
3a64fce9
|
2025-07-23T00:29:55
|
|
Merge branch 'main' into HVF
|
|
de2efbf3
|
2025-07-21T22:40:57
|
|
[glyf] Another OOM fix
|
|
c0052d17
|
2025-07-21T19:19:05
|
|
[ot-font] Handle scratch alloc failures
Might fix https://issues.oss-fuzz.com/issues/433311403
|
|
307a19f2
|
2025-07-20T00:32:45
|
|
[glyf] Minor micro-optimize
|
|
4fd6345a
|
2025-07-19T14:42:40
|
|
[ot-font] Clean up cache invalidation
Also, cache is_synthetic on font.
|
|
abcefb69
|
2025-07-19T06:57:03
|
|
[glyf] Remove dead code
|
|
7a41150f
|
2025-07-19T06:36:13
|
|
[ot-font] Use glyf scratch in v-advances
|
|
a40f85af
|
2025-07-19T06:18:06
|
|
[font] Acquire a scratch for v-origins
Still too slow.
|
|
76357479
|
2025-07-19T06:15:29
|
|
[glyf] Non-var-optimize a method
|
|
0dc5f8a2
|
2025-07-19T06:07:37
|
|
[ot-font] Finish caching of v-origins
On to benchmarking...
|
|
e697e4d3
|
2025-07-19T05:48:08
|
|
[ot-font] More baby steps towards caching v-origins
|
|
fdf4c759
|
2025-07-17T23:40:41
|
|
[hmtx] Simplify get-leading code
Can't return false. The false was being used before to mean
"table not present". Handle that instead.
|
|
b359c83c
|
2025-07-17T23:27:27
|
|
[ot-font] Rewrite h/v-advance code
Faster, better cached...
24% faster across the benchmarks for hmtx-only path.
Comparing before to after
Benchmark Time CPU Time Old Time New CPU Old CPU New
------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_Font/glyph_h_advances/Roboto-Regular.ttf/ot -0.2410 -0.2411 2 1 2 1
BM_Font/glyph_h_advances/RobotoFlex-Variable.ttf/ot -0.2482 -0.2484 1 1 1 1
BM_Font/glyph_h_advances/RobotoFlex-Variable.ttf/var/ot -0.0296 -0.0296 48 47 48 47
BM_Font/glyph_h_advances/SourceSansPro-Regular.otf/ot -0.2412 -0.2416 2 2 2 2
BM_Font/glyph_h_advances/SourceSansPro-Regular.otf/var/ot -0.2381 -0.2384 2 2 2 2
BM_Font/glyph_h_advances/AdobeVFPrototype.otf/ot -0.2347 -0.2349 0 0 0 0
BM_Font/glyph_h_advances/AdobeVFPrototype.otf/var/ot -0.0343 -0.0346 2 2 2 2
BM_Font/glyph_h_advances/SourceSerifVariable-Roman.ttf/ot -0.2623 -0.2621 2 1 2 1
BM_Font/glyph_h_advances/SourceSerifVariable-Roman.ttf/var/ot -0.0388 -0.0401 24 23 24 23
BM_Font/glyph_h_advances/Comfortaa-Regular-new.ttf/ot -0.2396 -0.2394 1 1 1 1
BM_Font/glyph_h_advances/NotoNastaliqUrdu-Regular.ttf/ot -0.2344 -0.2346 2 1 2 1
BM_Font/glyph_h_advances/NotoSerifMyanmar-Regular.otf/ot -0.2366 -0.2367 1 1 1 1
OVERALL_GEOMEAN -0.1945 -0.1948 0 0 0 0
|
|
3d154bc6
|
2025-07-14T13:53:27
|
|
[buffer-message] Fix potential buffer overflow...
...when buffer messaging is enabled and with malicious font.
Fixes https://github.com/harfbuzz/harfbuzz/security/advisories/GHSA-p965-5rr7-9mhq
|
|
5dbb8141
|
2025-07-11T08:58:01
|
|
[subset] AnchorFormat3: better check for when should downgrade to format1
|
|
e81efe3a
|
2025-07-11T01:40:23
|
|
[glyf] Add TODO
|
|
0855d33a
|
2025-07-11T01:00:43
|
|
Merge branch 'main' into HVF
|
|
6ed598e1
|
2025-07-10T13:03:44
|
|
Merge pull request #5382 from harfbuzz/lig_split
[repacker] Implement table splitting for LigatureSubst
|
|
95dc1109
|
2025-07-10T09:52:07
|
|
[subset] bug fix
Don't downgrade to format1 when subsetting
|
|
38ab13c6
|
2025-07-04T22:31:04
|
|
[repacker] add support for splitting GSUB Ligature lookups.
|
|
47089fe7
|
2025-05-28T17:10:22
|
|
Big misc changes
- Make geometry types into templates taking float or double.
- Changes to paint() transform elimination.
- Add font->has_nonzero_coords and use it across.
- Extensions to avar processing for otherwise invalid mappings.
|
|
c124252d
|
2025-05-31T16:32:58
|
|
[algs] Add support for little-endian int types
As well as 64bit-int, and float types.
Add Align type.
|
|
8eb2f07c
|
2025-05-26T13:21:25
|
|
Merge branch 'main' into HVF
|
|
e1dcc454
|
2025-05-21T16:00:08
|
|
[gvar] Use cached scratch in get_extents
Makes it alloc-free.
15% faster on benchmark-font glyph_extents RobotoFlex var benchmark.
|
|
a13fd9ae
|
2025-05-21T12:23:19
|
|
Merge branch 'main' into HVF
|
|
c6097698
|
2025-05-16T01:10:43
|
|
[ot-font/draw] Use a gvar shared-tuple scalar cache for calculate_scalar
Massive saving on massively variable fonts. Over 30% on a tested font.
|
|
f50490d6
|
2025-05-15T18:28:44
|
|
Add hb_scalar_cache_t
|
|
89e28a23
|
2025-05-10T16:30:35
|
|
[skippy-iter] Use auto for type deduction
|
|
d92106df
|
2025-04-24T21:42:20
|
|
Merge branch 'main' into HVF
|
|
59334682
|
2025-04-23T20:56:32
|
|
[shape] Only apply slant to shaping results if horizontal
|
|
e71a88d3
|
2025-04-23T19:17:31
|
|
[paint] Fix crash
|
|
6688a03c
|
2025-04-23T19:06:52
|
|
[sbix/CBDT] Fix memory leaks in error case
|
|
17238eae
|
2025-04-23T18:15:56
|
|
[ot/ft/fontations] Port to new _or_fail of draw/paint APIs
|
|
a23021e1
|
2025-04-23T00:43:56
|
|
[COLRv1] Simplify paint_glyph()
Pass a non-synthetic font to the client, so they don't have
to worry about it.
The only issue left, is that now when paint_glyph() paints
an outline glyph (not color glyph), it would be double-slanted.
I'm leaning towards removing painting of outline glyphs from
the paint API and change the paint API to return a boolean.
|
|
01e9c77e
|
2025-04-22T21:57:02
|
|
[COLR] Fix clip-box
Was slanting it. Was wrong with new code.
|
|
a69713b5
|
2025-04-22T21:01:04
|
|
[color] Move slanting to font layer
COLRv1 is still being double-slanted. Investigating.
|
|
66b357b9
|
2025-04-20T05:11:17
|
|
Merge branch 'main' into HVF
|
|
05362548
|
2025-04-20T05:06:54
|
|
Merge pull request #5294 from harfbuzz/paint-bounds
[COLRv1] `paint-bounds`
|
|
a9ed7515
|
2025-04-20T04:35:44
|
|
Merge branch 'main' into HVF
|
|
27b2e16a
|
2025-04-20T04:34:40
|
|
[atomic] Make cmpexch() non-const
Was a mistake. Make the affected members mutable instead.
|
|
78822b63
|
2025-04-20T04:23:35
|
|
Revert "[COLRv1] Move paint boundedness check to font layer"
This reverts commit c9a26fbf47f01fdd55df1a0ccc81111cb07bf108.
|
|
c9a26fbf
|
2025-04-20T04:22:32
|
|
[COLRv1] Move paint boundedness check to font layer
This way it will apply to fontations and future implementations
as well.
But this slows down things apparently, specially if the font
does use clipboxes. So I'm going to revert.
|
|
8aa88aa4
|
2025-04-20T04:08:41
|
|
[COLRv1:ot/ft] Use paint-bounded instead of paint-extents
Faster. Note that this also means that if there is no clip-box,
we don't compute the bounds and emit an initial clip anymore.
That was totally unnecessary and against the COLRv1 rendering
algorithm.
This makes painting of COLRv1 fonts without clipboxes *much*
faster, as previously we were computing bounds using all subglyph
outlines. Not anymore.
Before:
BM_Font/paint_glyph/Nupuram-Color.colrv1.ttf/ot 1.78 ms
After:
BM_Font/paint_glyph/Nupuram-Color.colrv1.ttf/ot 0.155 ms
|
|
aef3df50
|
2025-04-20T00:37:24
|
|
Merge branch 'main' into HVF
|
|
2602f729
|
2025-04-17T15:02:59
|
|
Avoid unannotated-fallthrough warning in COLR.hh
|
|
fd9a2f23
|
2025-04-07T17:44:45
|
|
[GPOS] Regain speed
|
|
178364ce
|
2025-04-03T22:51:11
|
|
Merge branch 'main' into HVF
|
|
9cae040b
|
2025-04-03T22:18:14
|
|
[ItemVariationStore] Make cache atomic floats
Doesn't work with intrinsic atomic implementations. Disabled that.
Going through the C++11 atomics path now.
Will fix in next commit.
|
|
e3c2910f
|
2025-04-02T01:48:12
|
|
Merge branch 'main' into HVF
|
|
7f5fafec
|
2025-04-01T21:35:28
|
|
[GDEF] Simplify cache declaration
|
|
14ecea57
|
2025-03-27T15:44:49
|
|
Merge branch 'main' into HVF
|
|
5ebe36e1
|
2025-03-27T13:09:18
|
|
[subset] bug fix for CaretValueFormat3
Don't return false in case of a Hinting Device table
|
|
192d264a
|
2025-03-25T13:32:01
|
|
[subset] remove divisions when computing the cost of binary search
|
|
b1258cdd
|
2025-03-16T16:22:52
|
|
Merge branch 'main' into HVF
|
|
14e5a046
|
2025-03-16T00:36:11
|
|
[font] Move synthetic glyph extents into font layer
So it applies to all font-funcs.
|
|
000a0ad7
|
2025-03-15T14:37:44
|
|
[paint] Add push_font_transform() / push_inverse_font_transform()
Fixes https://github.com/harfbuzz/harfbuzz/issues/5146
|
|
5402fe24
|
2025-03-12T23:06:11
|
|
Merge branch 'main' into HVF
|
|
4807a021
|
2025-03-12T18:27:27
|
|
[atomic] Kill hb_atomic_ptr_t<T>
Use hb_atomic_t<T *> instead.
|
|
a0419a89
|
2025-03-09T05:36:00
|
|
Merge branch 'main' into HVF
|
|
4e5358a2
|
2025-03-07T15:18:28
|
|
[COLRv1] Fix comments
Fixes https://github.com/harfbuzz/harfbuzz/issues/5116
|
|
575e70b0
|
2025-03-07T12:51:44
|
|
[COLR] Use palette 0 if palette index out of range
Fixes https://github.com/harfbuzz/harfbuzz/issues/5112
|
|
6506bd7e
|
2025-03-06T20:00:54
|
|
Merge pull request #4498 from harfbuzz/PaintColrLayers
[COLRv1] Optimize PaintColrLayers instead of PaintComposite
|
|
6afcd7f6
|
2025-03-03T16:33:21
|
|
Merge branch 'main' into HVF
|
|
50fe45f4
|
2025-03-03T16:31:41
|
|
[COLR] Fix memory leak
|
|
9c6b6998
|
2025-03-03T11:46:22
|
|
[VARC] Fix sign of returned extents
|
|
2591fb98
|
2025-03-03T11:47:54
|
|
Merge branch 'main' into HVF
|
|
302302d9
|
2025-03-03T11:46:22
|
|
[VARC] Fix sign of returned extents
|
|
004d0799
|
2025-03-03T02:21:05
|
|
Merge branch 'main' into HVF
|
|
e9134c8c
|
2025-03-03T02:04:34
|
|
[COLR] Reduce malloc pressure
By caching paint-extents.
|