Behdad Esfahbod
a058a1f223
[TupleValues] Unroll a loop
2025-02-24 21:53:17 -07:00
Behdad Esfahbod
13ee8edf06
[vector] Speed up extend()
2025-02-24 21:17:58 -07:00
Behdad Esfahbod
46485124ea
[vector] Simplify a method
2025-02-24 21:04:34 -07:00
Behdad Esfahbod
6fe550306c
[TupleValues] Don't overshadow end() method
2025-02-24 20:57:30 -07:00
Behdad Esfahbod
97a5c52af4
[VARC/MultiVarStore] Reduce malloc pressure more
2025-02-24 20:53:19 -07:00
Behdad Esfahbod
6938ee0342
[VARC] More nuanced caching
2025-02-24 20:44:15 -07:00
Behdad Esfahbod
74bb7c52f3
Fix a compiler warning
2025-02-24 20:21:38 -07:00
Behdad Esfahbod
081fcbdf5a
[VARC] Minor move variable closer to use
2025-02-24 20:15:24 -07:00
Behdad Esfahbod
0a1b26b862
[coord-setter] Reduce malloc pressure
...
~15% speedup benchmark-font draw of varc-hanzi.ttf
2025-02-24 20:07:59 -07:00
Behdad Esfahbod
76c3beaf36
[VARC] Reduce malloc overhead
2025-02-24 19:50:51 -07:00
Behdad Esfahbod
2099db378a
[TupleValues] Optimize decoding
2025-02-24 15:13:08 -07:00
Behdad Esfahbod
043980a60e
[TupleValues] Micro-optimize
2025-02-24 11:23:11 -07:00
dependabot[bot]
474c6e43a6
Bump github/codeql-action from 3.28.9 to 3.28.10
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 3.28.9 to 3.28.10.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](9e8d0789d4...b56ba49b26
)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 13:23:08 +02:00
dependabot[bot]
22e5469cec
Bump ossf/scorecard-action from 2.4.0 to 2.4.1
...
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action ) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/ossf/scorecard-action/releases )
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md )
- [Commits](62b2cac7ed...f49aabe0b5
)
---
updated-dependencies:
- dependency-name: ossf/scorecard-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 13:22:54 +02:00
dependabot[bot]
5f23b9767a
Bump actions/upload-artifact from 4.6.0 to 4.6.1
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](65c4c4a1dd...4cec3d8aa0
)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 13:22:43 +02:00
Behdad Esfahbod
1ba907209f
[VARC] Speed up MultiVarData::get_delta
2025-02-23 21:52:30 -07:00
Khaled Hosny
e41dc20c1c
[directwrite] Fix -Wcast-align warning
...
https://github.com/harfbuzz/harfbuzz/pull/5079#issuecomment-2673805310
2025-02-21 10:38:52 +02:00
Khaled Hosny
694ffa8747
10.3.0
2025-02-20 23:56:59 +02:00
Khaled Hosny
03cf1565f5
[directwrite] Rename font_get_font to font_get_dw_font
...
https://github.com/harfbuzz/harfbuzz/pull/5079#pullrequestreview-2627407692
2025-02-20 22:16:22 +02:00
Khaled Hosny
f012442f98
Annotate printf functions with gnu_printf format under MingW
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/5080
2025-02-20 21:53:14 +02:00
Khaled Hosny
a8fd29718a
[directwrite] Add hb_directwrite_font_create()/font_get_font()
...
Uses hb_directwrite_face_create() under the hood, but copies variations
from directwrite to hb-font.
2025-02-20 21:40:27 +02:00
Behdad Esfahbod
7cf634290f
[ot-layout] Use a variable
...
Doesn't make a diff in the generated code I believe,
but is nice.
2025-02-20 12:23:57 -07:00
Khaled Hosny
e28bcf58b1
Typo [ci skip]
2025-02-20 20:58:50 +02:00
Behdad Esfahbod
a2ea5d28cb
[benchmark-font] Report draw times in ms, not us
2025-02-18 21:43:39 -07:00
Behdad Esfahbod
2032da0117
[ot-font] Centralize painting an outline glyph
2025-02-18 20:54:56 -07:00
Behdad Esfahbod
01f02f55a1
[COLR] Optimize NoVariation codepath
2025-02-18 20:28:48 -07:00
Behdad Esfahbod
4c263ecd00
Merge pull request #5074 from harfbuzz/tortoise-hare
...
[decycler] Implement an efficient graph cycle detector
2025-02-18 20:08:19 -07:00
Behdad Esfahbod
f26d9514b1
[COLR] Fix HB_LEAN build
2025-02-18 20:07:25 -07:00
Behdad Esfahbod
0bb72eeed0
[decycler] Turn off compiler warning
...
../src/OT/Var/VARC/../../../hb-decycler.hh:108:25: warning: storing the address of local variable ‘node’ in ‘*&c_15(D)->layers_decycler.hb_decycler_t::tortoise’ [-Wdangling-pointer=]
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
c84e9b95be
[decycler] Change value type from unsigned to uintptr_t
...
Since the node struct is gonna be 3*sizeof(void*) bytes anyway,
change value type to use the full space available.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
1c18646dd6
[decycler] Reduce stack use, kinda
...
Move the bool to the decycler from the node. The value can now become
a full pointer size (next commit).
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
fb0e181a3e
[decycler] Reduce stack use further
...
Down to three pointers. Exercise for the reader to prove this is
optimal.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
646da80c41
[decycler] Reduce stack use
...
Down from 5 pointers to 4.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
5aea89b5c4
[decycler] Don't leave a dangling pointer around
...
Even if it was never accessed.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
c7fc03a33a
[ft-colr] Use hb_decycler_t
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
bedc8d9373
[decycler] Document algorithm
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
2bdf985022
[decycler] Add alternative way of using it to tests
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
3cb4971729
[decycler] Add some documentation
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
0667ceae87
[VARC] Reduce stack use
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
4335e49a02
[VARC] Port to hb-decycler-t
...
5% faster on varc-hanzi test case.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
a0f83e783f
[decycler] Reduce stack use
...
48bytes -> 40bytes per node.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
d5faabe7ea
[decycler] Add test
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
0aa400b1d8
[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.
2025-02-18 20:02:56 -07:00
Behdad Esfahbod
ed76c8559e
[COLR] Optimize palette access
2025-02-18 20:01:36 -07:00
Behdad Esfahbod
016e78b683
[COLR] Micro-optimize
2025-02-18 19:49:48 -07:00
Behdad Esfahbod
e6eec3cc14
[test] Silence compiler warning
2025-02-18 00:48:49 -07:00
Jim-Wang
b97ef6c702
add dep
2025-02-16 09:29:28 +02:00
Behdad Esfahbod
215c8de3cd
[ft-colr] Fix cycle-detection accounting
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/5073
2025-02-15 21:08:14 -07:00
Khaled Hosny
ff3aaece6d
[test/shape-plan] Add another test and some comments
2025-02-14 21:54:30 +02:00
Khaled Hosny
cf336f17b2
[shape-plan] Rename hb_ot_shape_plan_get_features to get_feature_tags
...
Simplify the API by returning only feature tags. The users of this API
would be interested only in feature enabled by default and whether the
feature is globally or partially enabled wouldn’t be of much interest in
that case. For user features, the user of the API already have full
access to them.
2025-02-14 21:54:30 +02:00