|
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.
|
|
7f5fafec
|
2025-04-01T21:35:28
|
|
[GDEF] Simplify cache declaration
|
|
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
|
|
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
|
|
4807a021
|
2025-03-12T18:27:27
|
|
[atomic] Kill hb_atomic_ptr_t<T>
Use hb_atomic_t<T *> instead.
|
|
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
|
|
50fe45f4
|
2025-03-03T16:31:41
|
|
[COLR] Fix memory leak
|
|
9c6b6998
|
2025-03-03T11:46:22
|
|
[VARC] Fix sign of returned extents
|
|
e9134c8c
|
2025-03-03T02:04:34
|
|
[COLR] Reduce malloc pressure
By caching paint-extents.
|
|
9efd17e2
|
2025-03-03T01:44:01
|
|
[COLR] Switch to using (existing) accelerator
|
|
17ddc844
|
2025-03-03T01:27:32
|
|
[VARC] Fix scratch caching
|
|
a62058ee
|
2025-03-03T01:19:52
|
|
[VARC] Separate varc scratch from glyf scratch
|
|
3199d1c1
|
2025-03-02T18:35:46
|
|
[VARC] Use a context object to pass arguments around
|
|
e0c6c980
|
2025-03-02T13:32:54
|
|
[VARC] Implement get_extents()
Fixes https://github.com/harfbuzz/harfbuzz/issues/5007
|
|
7e3c9658
|
2025-03-01T15:08:41
|
|
[VARC] Reuse parent MultiVarStore cache if coords didn't change
Minor optimization; applicable to the test hangul font mostly.
|
|
64dbeaf0
|
2025-02-28T00:54:39
|
|
[glyf] Mover decycler to the scratch pad
|
|
00541f19
|
2025-02-26T16:22:48
|
|
Merge pull request #4970 from harfbuzz/GVAR
Add `GVAR` table
|
|
a0543453
|
2025-02-26T15:36:03
|
|
[CBDT] Change has_data() to be more accurate
get_length() was returning the Null table length if table
was not present.
|
|
7504c67f
|
2025-02-26T15:24:40
|
|
[CBDT] Return immediately if no data
|
|
17a83b74
|
2025-02-26T14:40:02
|
|
[COLRv1] Optimize PaintColrLayers instead of PaintComposite
See https://github.com/googlefonts/colr-gradients-spec/issues/369#issuecomment-1816913943
and onwards.
|
|
44b7ba51
|
2025-02-26T13:47:45
|
|
[GVAR] Hide behind HB_NO_BEYOND_64K
|
|
13900ce4
|
2025-02-26T13:41:52
|
|
[GVAR] Hook up to face and glyf table
|
|
6a7b4dca
|
2025-02-26T13:25:50
|
|
[VARC] Reduce stack usage on 32bit systems
|
|
84ffb7e4
|
2025-02-26T12:51:04
|
|
[SimpleGlyph] Minor use an intermediate variable
|
|
54db2b2e
|
2025-02-26T12:48:55
|
|
[SimpleGlyph] Remove a conditional from hot path
5% speedup in Roboto-Regular draw benchmark
|
|
bb4d37b0
|
2025-02-26T12:17:27
|
|
[VARC/coord-setter] Reduce stack allocation on 32bit systems
|
|
51d3489c
|
2025-02-26T12:09:31
|
|
[Composite] Fix memory-free rendering
|
|
59e6a1c4
|
2025-02-26T11:16:04
|
|
[glyf/Composite] Malloc-free
|
|
3c4cb472
|
2025-02-26T10:48:36
|
|
[VARC] Fix uninitialized value
Fixes https://oss-fuzz.com/testcase-detail/6089638800588800
|
|
fcbf14a0
|
2025-02-25T20:16:18
|
|
[CompositeGlyph] Adjust pre-allocation
|
|
6ca8852e
|
2025-02-25T19:57:43
|
|
[glyf] Return earlier if table is empty
|
|
7614320a
|
2025-02-25T16:59:37
|
|
[glyf] Reduce malloc pressure
Benchmark 15% faster for draw.
|
|
882d3288
|
2025-02-25T16:34:55
|
|
[glyf] Port to decycler for composite glyphs
5% speed up drawing Roboto-Regular.ttf.
|
|
ffee85d6
|
2025-02-25T16:20:42
|
|
[VARC] Minor simplify pointer math
|
|
7222c1e5
|
2025-02-25T15:13:20
|
|
[path-builder] Add a constexpr
|
|
e450552d
|
2025-02-25T14:54:37
|
|
[coord-setter] Fix memory access in case of malloc failure
Fixes https://oss-fuzz.com/testcase-detail/5383702943432704
|
|
f71faf5f
|
2025-02-25T11:35:21
|
|
[VARC] Fix buffer scratch borrowing
|
|
e76b689f
|
2025-02-25T11:23:48
|
|
[VARC] Fix resource leak
|
|
47124e63
|
2025-02-24T23:25:02
|
|
[VARC] Avoid creating cache if there's no VARC table
|
|
d5d199fb
|
2025-02-24T23:20:12
|
|
[VARC] Reduce malloc pressure
By caching one hb_glyf_scratch_t on the VARC accelerator.
|
|
2c5ab14a
|
2025-02-24T22:50:42
|
|
[coord-setter] Increase static array size
|
|
97a5c52a
|
2025-02-24T20:53:19
|
|
[VARC/MultiVarStore] Reduce malloc pressure more
|
|
6938ee03
|
2025-02-24T20:40:26
|
|
[VARC] More nuanced caching
|
|
081fcbdf
|
2025-02-24T20:15:24
|
|
[VARC] Minor move variable closer to use
|
|
0a1b26b8
|
2025-02-24T20:07:59
|
|
[coord-setter] Reduce malloc pressure
~15% speedup benchmark-font draw of varc-hanzi.ttf
|
|
76c3beaf
|
2025-02-24T19:50:51
|
|
[VARC] Reduce malloc overhead
|
|
2032da01
|
2025-02-18T20:54:56
|
|
[ot-font] Centralize painting an outline glyph
|
|
01f02f55
|
2025-02-18T20:28:48
|
|
[COLR] Optimize NoVariation codepath
|
|
4c263ecd
|
2025-02-18T20:08:19
|
|
Merge pull request #5074 from harfbuzz/tortoise-hare
[decycler] Implement an efficient graph cycle detector
|
|
f26d9514
|
2025-02-18T20:07:25
|
|
[COLR] Fix HB_LEAN build
|
|
0667ceae
|
2025-02-16T10:37:21
|
|
[VARC] Reduce stack use
|
|
4335e49a
|
2025-02-16T10:33:49
|
|
[VARC] Port to hb-decycler-t
5% faster on varc-hanzi test case.
|
|
0aa400b1
|
2025-02-15T23:19:44
|
|
[decycler] Implement an efficient graph cycle detector
This is an algorithm I came up with, based on the Floyd's
Tortoise-Hare constant-memory linear-time linked-list cycle-detection
algorithm.
https://en.wikipedia.org/wiki/Cycle_detection#Floyd's_tortoise_and_hare
It is linear-time and malloc-free. It *eventually* detects cycles,
not immediately.
The main different with Floyd's algorithm is that this algorithm
detects cycles when one is traversing down a graph, not just a
linked list.
Our existing cycle-detection algorithms use a set-of-integers,
either hb_set_t, or more efficient in this case, hb_map_t. Those
include at least one malloc, and as such show up on profiles.
Port hb-ot-font COLRv1 to use the decycler instead of previous
hb_map_t usage for cycle detection.
benchmark-font paint_glyph on NotoColorEmoji-Regular.ttf:
Before: 8ms; After: 5.5ms. No cycle detection: 5.5ms.
FT COLRv1 API is so slow (174ms) it's not worth porting to this.
Other graphs (VARC, etc) to be ported.
Test and documentation to be added.
|
|
ed76c855
|
2025-02-18T20:01:36
|
|
[COLR] Optimize palette access
|
|
016e78b6
|
2025-02-18T19:49:48
|
|
[COLR] Micro-optimize
|
|
d2a88fbd
|
2025-02-12T21:48:22
|
|
[vector] Add alloc_exact()
|
|
4b54ee11
|
2025-02-09T12:38:58
|
|
[glyf] Change drawing algorithm to match FreeType / CoreText
|
|
f68193a0
|
2025-02-09T11:43:07
|
|
[glyf] Use direct access to points array
Not necessary faster. Prep'ing for next change.
|
|
b8327fe6
|
2025-02-06T20:01:12
|
|
Fix compiler errors
|
|
c7378294
|
2025-02-06T01:42:25
|
|
[OT] Remove likely() from coverage check
Not that it matters, but because of the set-digest, this path
is not very likely() anymore.
|
|
cad264b2
|
2025-02-06T00:56:16
|
|
Indent
|
|
69057e6e
|
2025-02-05T19:50:38
|
|
[Ligature] Cache coverage the same way as PairPos1
Another 7% down on Roboto-Regular.
|
|
7a746c32
|
2025-02-05T19:38:25
|
|
[Coverage] Fix cache cost reporting
|
|
5be62a9f
|
2025-02-05T19:30:01
|
|
[PairPosFormat1] Use a coverage cache as well
Speeds up Arial shaping by 3%.
|
|
f22943a2
|
2025-02-05T18:51:11
|
|
[PairPos] Cache coverage as well
Another 3% down in Roboto-Regular.
|
|
726af2e4
|
2025-02-05T18:10:40
|
|
[PairPos] Use a class cache
10% speedup on Roboto-Regular. 5% on SF Pro.
|
|
4df11621
|
2025-01-24T05:00:05
|
|
[VARC] Fix variable binding
Ouch.
|
|
2fa9ccee
|
2025-01-23T23:13:49
|
|
[VARC] Simplify
|
|
2d2418eb
|
2025-01-23T23:13:11
|
|
[VARC] Avoid float div-by-zero
|
|
fe9398e9
|
2025-01-23T22:59:12
|
|
[VARC] Chain transforms
Previous code was actually wrong even, for non-uniform x/y font scale.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5017
|
|
de7f97b7
|
2024-11-15T15:14:37
|
|
[COLR] Add comment
|
|
6a25df24
|
2024-10-09T14:09:22
|
|
[COLR] Add and use get_clip_list ()
|
|
5462978c
|
2024-10-09T13:43:13
|
|
[COLR] Lets see if this makes CIFUZZ any happier
|
|
008505e1
|
2024-10-08T09:27:09
|
|
[COLR] Pepper some hb_barrier()'s around
The version is a minor version (because uint16), as such
version > 1 should be considered as supporting version 1
data.
|
|
cec95a2d
|
2024-10-07T21:06:56
|
|
Try to fix heap-buffer-overflow
|
|
4d1f6e04
|
2024-10-06T18:25:24
|
|
[COLR] Enable COLRv0 support in get_extents()
paint_glyph() supports COLRv0 but this code is never reached because of
the early return if version is not 1. This early return seems to be from
before COLRv0 extents were supported.
|
|
48774052
|
2024-09-22T13:00:09
|
|
[GDEF] Sprinkle some hb_barrier()s
|
|
0dace9f3
|
2024-09-21T12:38:16
|
|
[PairPos] Forgo an optimization for the sake of compatibility
Fixes https://github.com/harfbuzz/harfbuzz/issues/4797
|
|
72502ef0
|
2024-08-12T14:08:06
|
|
[instancer] dont return false when variation data is empty after partial instancing
|
|
2266d258
|
2024-06-14T18:19:34
|
|
Try fix fuzzer build on 32bit
|
|
de2a2f27
|
2024-06-08T15:46:31
|
|
Another try at fixing 32bit fuzzer build
|
|
4ec3cb0f
|
2024-06-06T11:47:18
|
|
[Glyph] Don't round to int when shifting glyphs
Fixes a fuzzer issue and seems harmless.
|
|
2db636c6
|
2024-06-06T11:17:35
|
|
[VARC] Try fixing build failure on i386
|
|
42bf7ce7
|
2024-06-02T10:34:34
|
|
Try to fix warning on 32bit system
Hopefully fixes
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=69281
|
|
e8049ae9
|
2024-05-30T14:38:05
|
|
[VARC] Sanitize ConditionList
Oops!
Fixes https://oss-fuzz.com/testcase-detail/6610112583106560
|
|
88e9cd3f
|
2024-05-30T14:31:32
|
|
[VARC] Check for an OOM
Otherwise we can infinitely recurse.
Fixes https://oss-fuzz.com/testcase-detail/6221534946459648
|
|
ec437ccd
|
2024-05-29T17:50:29
|
|
[VARC] Adapt to change of meaning of RESET_UNSPECIFIED_AXES
Implements:
https://github.com/harfbuzz/boring-expansion-spec/commit/3f5cdc45d2373d274290ab34cf4fc7d48bcf01ca
|
|
0037ee28
|
2024-05-24T08:10:15
|
|
Merge pull request #4578 from harfbuzz/varc-table
`VARC` table
|
|
6c898572
|
2024-05-02T10:11:06
|
|
fix bots
|
|
247039de
|
2024-04-26T13:36:52
|
|
[instancer] partial instantiating support for COLRv1
Also add subset support for COLRv1 VarStore/DeltaSetIndexMap
|
|
ba1f194a
|
2024-05-02T12:18:11
|
|
[gsubgpos] Reduce stack use in recursion
|
|
c04d0a29
|
2024-04-25T14:57:36
|
|
[subset] generate colrv1 varsotre inner_maps in the plan
Also merge remap_variation_indices APIs used by GDEF and BASE into 1
|
|
690893e3
|
2023-10-02T09:09:53
|
|
[subset] collect variation indices for COLRv1
|
|
13609790
|
2024-04-23T14:40:21
|
|
[VarStoreInstancer] Add cache argument
Not used by any clients currently (which are COLR and VARC).
|
|
c270a254
|
2024-04-23T14:40:06
|
|
[COLR] Remove redundant variable
|
|
cd1d8b8b
|
2024-04-23T14:18:06
|
|
[varc] Use multiVarStore instead of GDEF varStore
That's what we agreed upon.
|