|
e71a88d3
|
2025-04-23T19:17:31
|
|
[paint] Fix crash
|
|
6688a03c
|
2025-04-23T19:06:52
|
|
[sbix/CBDT] Fix memory leaks in error case
|
|
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.
|
|
05362548
|
2025-04-20T05:06:54
|
|
Merge pull request #5294 from harfbuzz/paint-bounds
[COLRv1] `paint-bounds`
|
|
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
|
|
2602f729
|
2025-04-17T15:02:59
|
|
Avoid unannotated-fallthrough warning in COLR.hh
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
72502ef0
|
2024-08-12T14:08:06
|
|
[instancer] dont return false when variation data is empty after partial instancing
|
|
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
|
|
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
|
|
c270a254
|
2024-04-23T14:40:06
|
|
[COLR] Remove redundant variable
|
|
3d846a8d
|
2024-03-16T21:49:17
|
|
[limits] Centralize graph edge limits
|
|
031fdb1c
|
2024-02-06T14:51:41
|
|
Rename VarStoreInstancer to ItemVarStoreInstancer
|
|
1cb47eff
|
2024-02-06T14:49:31
|
|
Rename VariationStore to ItemVariationStore
|
|
2f528ce4
|
2023-11-06T11:40:19
|
|
Tweak a couple more barriers
|
|
3a9262cc
|
2023-11-04T12:52:46
|
|
[sanitize] More hb_barrier() annotations
|
|
30672c7e
|
2023-11-03T18:52:03
|
|
Add hb_barrier()
And annotate some more.
|
|
56e8a290
|
2023-08-22T15:49:00
|
|
Fix static_size declaration
I have a vague memory that it was intentionally written
that way, but I can't recall :-(.
|
|
06ff3bcb
|
2023-08-15T14:41:18
|
|
[COLR,glyf] Use map instead of set for tracking current glyphs / layers
|
|
8f039ab4
|
2023-08-15T11:27:19
|
|
[COLR] Avoid infinite-loop through PaintColrLayers
Fixes https://github.com/harfbuzz/harfbuzz/issues/4376
Fixes https://oss-fuzz.com/testcase-detail/5717524023738368
|
|
0c80aec1
|
2023-08-15T10:30:38
|
|
[COLR] Move cycle-detection to the renderer instead of cairo
Alternative fix for https://github.com/harfbuzz/harfbuzz/issues/4375
|
|
58effbcc
|
2023-08-14T16:47:01
|
|
.
|
|
74527670
|
2023-08-14T15:57:24
|
|
[COLR/cairo] Add paint_color_glyph func
Implement in cairo to use scaled-font's glyph cache.
|
|
45c1ad05
|
2023-08-09T10:27:45
|
|
[paint] Add tracing
|
|
49dbe0cd
|
2023-08-06T15:07:57
|
|
Another try
|
|
7989702a
|
2023-08-06T14:17:50
|
|
Audit and fix up serialize_subset uses
Fixes https://github.com/harfbuzz/harfbuzz/issues/4362
|
|
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
|
|
82741304
|
2023-06-04T09:41:41
|
|
[subset] start_embed never returns nullptr
Remove checks.
|
|
b5792f11
|
2023-06-03T22:24:06
|
|
[subset] Reuse num_glyphs in various places
|
|
e826d94a
|
2023-04-30T11:11:19
|
|
Call roundf() instead of _hb_roundf()
The former is defined as a macro expanding to the latter.
|
|
d1c00c04
|
2023-04-24T13:24:47
|
|
[COLR] Respect HB_NO_PAINT
Fixes https://github.com/harfbuzz/harfbuzz/issues/4204
|
|
fe671a5a
|
2023-03-16T14:10:21
|
|
[instancer] support COLRv1 full instancing
|
|
09a26623
|
2023-03-14T12:48:12
|
|
Merge pull request #4168 from googlefonts/subset_name_collect
[subset] name_id closure
|
|
75e6498d
|
2023-03-14T12:41:46
|
|
Don't use M_PI
Fixes https://github.com/harfbuzz/harfbuzz/issues/4166
Happy Pi Day!
|
|
de6533d8
|
2023-03-13T13:36:00
|
|
[subset] collect name_ids from CPAL table
|
|
7b77cd19
|
2023-03-13T12:45:43
|
|
[subset] fix bug in CPAL V1tail serialization
We should serialize nameIDs rather than retained color index
|
|
ae96295d
|
2023-01-28T22:12:33
|
|
Delete commented out include
|
|
b8193357
|
2023-01-28T00:00:30
|
|
[OT::Color] Drop unused includes
|
|
0f33ea8c
|
2023-01-27T11:26:57
|
|
[subset/COLR] Copy VarStore
Fixes https://github.com/harfbuzz/harfbuzz/issues/4085
|
|
72e13fff
|
2023-01-24T11:05:38
|
|
[COLRv1] Handle void extents
|
|
20318fed
|
2023-01-24T11:04:10
|
|
[COLRv1] Don't return extents if glyph has no paint
Fixes https://github.com/harfbuzz/harfbuzz/issues/4068
|
|
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.
|
|
638e0ed4
|
2023-01-20T13:01:22
|
|
[paint] Overlay custom-palette on top of chosen palette
Got to agree this is more ergonomic.
|
|
0b32cf90
|
2023-01-18T21:16:38
|
|
[COLR] Rename a variable
|
|
7aca3b50
|
2023-01-18T20:49:06
|
|
[COLRv1] Hook up custom palette colors
|
|
e4a41f5e
|
2023-01-16T16:27:04
|
|
[COLRv1] Implement recursive clip boxes
Tests need update.
hb-view test_glyphs-glyf_colr_1_variable.ttf -u f0c00
|
|
9c45d98f
|
2023-01-11T11:16:18
|
|
[subset-plan] Simplify colr_palettes allocation
|
|
b74a2651
|
2023-01-11T11:15:15
|
|
[subset-plan] Simplify colrv1_layers allocation
|
|
5fc91de2
|
2023-01-11T11:04:17
|
|
[shape-plan] Simplify _glyphset_colred allocation
|
|
02751514
|
2023-01-09T12:26:39
|
|
[paint] Align deptch/edge count conditions across two backends
|
|
f46dcf14
|
2023-01-08T14:33:54
|
|
[paint/COLR] Fix clip transform
Sigh. So complicated.
|
|
f283d4d3
|
2023-01-08T12:42:34
|
|
[paint] Try to adjust both renderers to use same clip order
|
|
5bd6fc1a
|
2023-01-07T16:32:50
|
|
Comment
|
|
432afa9d
|
2023-01-07T16:25:30
|
|
[paint] Fix paint_extents usage
It was broken all this time :(.
The two backends do this slightly differently...
|
|
65c3cde5
|
2023-01-07T14:29:18
|
|
[COLRv1] Fix scale variation
|
|
dfd9bf8a
|
2023-01-07T14:05:02
|
|
[COLRv1] Fix a couple of missing to_float() calls
Ouch!
|
|
d045de78
|
2023-01-07T13:55:17
|
|
[paint] Optimize PAINT_COMPOSITE
At the start of each paint call the current group is clear.
So we don't need to start a new group for the backdrop paint.
A paint composite really needs one group push, not two.
|
|
4adc748b
|
2023-01-01T09:46:11
|
|
Move Color tables to src/OT/Color/
|