src/OT/Color


Log

Author Commit Date CI Message
Behdad Esfahbod e71a88d3 2025-04-23T19:17:31 [paint] Fix crash
Behdad Esfahbod 6688a03c 2025-04-23T19:06:52 [sbix/CBDT] Fix memory leaks in error case
Behdad Esfahbod 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.
Behdad Esfahbod 01e9c77e 2025-04-22T21:57:02 [COLR] Fix clip-box Was slanting it. Was wrong with new code.
Behdad Esfahbod a69713b5 2025-04-22T21:01:04 [color] Move slanting to font layer COLRv1 is still being double-slanted. Investigating.
Behdad Esfahbod 05362548 2025-04-20T05:06:54 Merge pull request #5294 from harfbuzz/paint-bounds [COLRv1] `paint-bounds`
Behdad Esfahbod 27b2e16a 2025-04-20T04:34:40 [atomic] Make cmpexch() non-const Was a mistake. Make the affected members mutable instead.
Behdad Esfahbod 78822b63 2025-04-20T04:23:35 Revert "[COLRv1] Move paint boundedness check to font layer" This reverts commit c9a26fbf47f01fdd55df1a0ccc81111cb07bf108.
Behdad Esfahbod 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.
Behdad Esfahbod 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
jfkthame 2602f729 2025-04-17T15:02:59 Avoid unannotated-fallthrough warning in COLR.hh
Behdad Esfahbod 14e5a046 2025-03-16T00:36:11 [font] Move synthetic glyph extents into font layer So it applies to all font-funcs.
Behdad Esfahbod 000a0ad7 2025-03-15T14:37:44 [paint] Add push_font_transform() / push_inverse_font_transform() Fixes https://github.com/harfbuzz/harfbuzz/issues/5146
Behdad Esfahbod 4807a021 2025-03-12T18:27:27 [atomic] Kill hb_atomic_ptr_t<T> Use hb_atomic_t<T *> instead.
Behdad Esfahbod 4e5358a2 2025-03-07T15:18:28 [COLRv1] Fix comments Fixes https://github.com/harfbuzz/harfbuzz/issues/5116
Behdad Esfahbod 575e70b0 2025-03-07T12:51:44 [COLR] Use palette 0 if palette index out of range Fixes https://github.com/harfbuzz/harfbuzz/issues/5112
Behdad Esfahbod 6506bd7e 2025-03-06T20:00:54 Merge pull request #4498 from harfbuzz/PaintColrLayers [COLRv1] Optimize PaintColrLayers instead of PaintComposite
Behdad Esfahbod 50fe45f4 2025-03-03T16:31:41 [COLR] Fix memory leak
Behdad Esfahbod e9134c8c 2025-03-03T02:04:34 [COLR] Reduce malloc pressure By caching paint-extents.
Behdad Esfahbod 9efd17e2 2025-03-03T01:44:01 [COLR] Switch to using (existing) accelerator
Behdad Esfahbod 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.
Behdad Esfahbod 7504c67f 2025-02-26T15:24:40 [CBDT] Return immediately if no data
Behdad Esfahbod 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.
Behdad Esfahbod 01f02f55 2025-02-18T20:28:48 [COLR] Optimize NoVariation codepath
Behdad Esfahbod 4c263ecd 2025-02-18T20:08:19 Merge pull request #5074 from harfbuzz/tortoise-hare [decycler] Implement an efficient graph cycle detector
Behdad Esfahbod f26d9514 2025-02-18T20:07:25 [COLR] Fix HB_LEAN build
Behdad Esfahbod 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.
Behdad Esfahbod ed76c855 2025-02-18T20:01:36 [COLR] Optimize palette access
Behdad Esfahbod 016e78b6 2025-02-18T19:49:48 [COLR] Micro-optimize
Behdad Esfahbod de7f97b7 2024-11-15T15:14:37 [COLR] Add comment
Khaled Hosny 6a25df24 2024-10-09T14:09:22 [COLR] Add and use get_clip_list ()
Khaled Hosny 5462978c 2024-10-09T13:43:13 [COLR] Lets see if this makes CIFUZZ any happier
Behdad Esfahbod 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.
Khaled Hosny cec95a2d 2024-10-07T21:06:56 Try to fix heap-buffer-overflow
Khaled Hosny 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.
Qunxin Liu 72502ef0 2024-08-12T14:08:06 [instancer] dont return false when variation data is empty after partial instancing
Behdad Esfahbod 0037ee28 2024-05-24T08:10:15 Merge pull request #4578 from harfbuzz/varc-table `VARC` table
Qunxin Liu 6c898572 2024-05-02T10:11:06 fix bots
Qunxin Liu 247039de 2024-04-26T13:36:52 [instancer] partial instantiating support for COLRv1 Also add subset support for COLRv1 VarStore/DeltaSetIndexMap
Qunxin Liu 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
Qunxin Liu 690893e3 2023-10-02T09:09:53 [subset] collect variation indices for COLRv1
Behdad Esfahbod c270a254 2024-04-23T14:40:06 [COLR] Remove redundant variable
Behdad Esfahbod 3d846a8d 2024-03-16T21:49:17 [limits] Centralize graph edge limits
Behdad Esfahbod 031fdb1c 2024-02-06T14:51:41 Rename VarStoreInstancer to ItemVarStoreInstancer
Behdad Esfahbod 1cb47eff 2024-02-06T14:49:31 Rename VariationStore to ItemVariationStore
Behdad Esfahbod 2f528ce4 2023-11-06T11:40:19 Tweak a couple more barriers
Behdad Esfahbod 3a9262cc 2023-11-04T12:52:46 [sanitize] More hb_barrier() annotations
Behdad Esfahbod 30672c7e 2023-11-03T18:52:03 Add hb_barrier() And annotate some more.
Behdad Esfahbod 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 :-(.
Behdad Esfahbod 06ff3bcb 2023-08-15T14:41:18 [COLR,glyf] Use map instead of set for tracking current glyphs / layers
Behdad Esfahbod 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
Behdad Esfahbod 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
Behdad Esfahbod 58effbcc 2023-08-14T16:47:01 .
Behdad Esfahbod 74527670 2023-08-14T15:57:24 [COLR/cairo] Add paint_color_glyph func Implement in cairo to use scaled-font's glyph cache.
Behdad Esfahbod 45c1ad05 2023-08-09T10:27:45 [paint] Add tracing
Behdad Esfahbod 49dbe0cd 2023-08-06T15:07:57 Another try
Behdad Esfahbod 7989702a 2023-08-06T14:17:50 Audit and fix up serialize_subset uses Fixes https://github.com/harfbuzz/harfbuzz/issues/4362
Behdad Esfahbod 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
Behdad Esfahbod 82741304 2023-06-04T09:41:41 [subset] start_embed never returns nullptr Remove checks.
Behdad Esfahbod b5792f11 2023-06-03T22:24:06 [subset] Reuse num_glyphs in various places
Behdad Esfahbod e826d94a 2023-04-30T11:11:19 Call roundf() instead of _hb_roundf() The former is defined as a macro expanding to the latter.
Behdad Esfahbod d1c00c04 2023-04-24T13:24:47 [COLR] Respect HB_NO_PAINT Fixes https://github.com/harfbuzz/harfbuzz/issues/4204
Qunxin Liu fe671a5a 2023-03-16T14:10:21 [instancer] support COLRv1 full instancing
Behdad Esfahbod 09a26623 2023-03-14T12:48:12 Merge pull request #4168 from googlefonts/subset_name_collect [subset] name_id closure
Behdad Esfahbod 75e6498d 2023-03-14T12:41:46 Don't use M_PI Fixes https://github.com/harfbuzz/harfbuzz/issues/4166 Happy Pi Day!
Qunxin Liu de6533d8 2023-03-13T13:36:00 [subset] collect name_ids from CPAL table
Qunxin Liu 7b77cd19 2023-03-13T12:45:43 [subset] fix bug in CPAL V1tail serialization We should serialize nameIDs rather than retained color index
Khaled Hosny ae96295d 2023-01-28T22:12:33 Delete commented out include
Matthias Clasen b8193357 2023-01-28T00:00:30 [OT::Color] Drop unused includes
Behdad Esfahbod 0f33ea8c 2023-01-27T11:26:57 [subset/COLR] Copy VarStore Fixes https://github.com/harfbuzz/harfbuzz/issues/4085
Behdad Esfahbod 72e13fff 2023-01-24T11:05:38 [COLRv1] Handle void extents
Behdad Esfahbod 20318fed 2023-01-24T11:04:10 [COLRv1] Don't return extents if glyph has no paint Fixes https://github.com/harfbuzz/harfbuzz/issues/4068
Behdad Esfahbod 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.
Behdad Esfahbod 638e0ed4 2023-01-20T13:01:22 [paint] Overlay custom-palette on top of chosen palette Got to agree this is more ergonomic.
Behdad Esfahbod 0b32cf90 2023-01-18T21:16:38 [COLR] Rename a variable
Behdad Esfahbod 7aca3b50 2023-01-18T20:49:06 [COLRv1] Hook up custom palette colors
Behdad Esfahbod 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
Behdad Esfahbod 9c45d98f 2023-01-11T11:16:18 [subset-plan] Simplify colr_palettes allocation
Behdad Esfahbod b74a2651 2023-01-11T11:15:15 [subset-plan] Simplify colrv1_layers allocation
Behdad Esfahbod 5fc91de2 2023-01-11T11:04:17 [shape-plan] Simplify _glyphset_colred allocation
Behdad Esfahbod 02751514 2023-01-09T12:26:39 [paint] Align deptch/edge count conditions across two backends
Behdad Esfahbod f46dcf14 2023-01-08T14:33:54 [paint/COLR] Fix clip transform Sigh. So complicated.
Behdad Esfahbod f283d4d3 2023-01-08T12:42:34 [paint] Try to adjust both renderers to use same clip order
Behdad Esfahbod 5bd6fc1a 2023-01-07T16:32:50 Comment
Behdad Esfahbod 432afa9d 2023-01-07T16:25:30 [paint] Fix paint_extents usage It was broken all this time :(. The two backends do this slightly differently...
Behdad Esfahbod 65c3cde5 2023-01-07T14:29:18 [COLRv1] Fix scale variation
Behdad Esfahbod dfd9bf8a 2023-01-07T14:05:02 [COLRv1] Fix a couple of missing to_float() calls Ouch!
Behdad Esfahbod 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.
Matthias Clasen 4adc748b 2023-01-01T09:46:11 Move Color tables to src/OT/Color/