|
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
|
|
fb0e181a
|
2025-02-17T14:57:20
|
|
[decycler] Reduce stack use further
Down to three pointers. Exercise for the reader to prove this is
optimal.
|
|
4335e49a
|
2025-02-16T10:33:49
|
|
[VARC] Port to hb-decycler-t
5% faster on varc-hanzi test case.
|
|
a0f83e78
|
2025-02-16T09:55:12
|
|
[decycler] Reduce stack use
48bytes -> 40bytes per node.
|
|
646da80c
|
2025-02-17T14:49:06
|
|
[decycler] Reduce stack use
Down from 5 pointers to 4.
|
|
d5faabe7
|
2025-02-16T09:47:58
|
|
[decycler] Add test
|
|
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.
|
|
0bb72eee
|
2025-02-18T00:44:29
|
|
[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=]
|
|
5aea89b5
|
2025-02-17T14:32:23
|
|
[decycler] Don't leave a dangling pointer around
Even if it was never accessed.
|
|
c7fc03a3
|
2025-02-16T14:43:09
|
|
[ft-colr] Use hb_decycler_t
|
|
c84e9b95
|
2025-02-17T15:08:03
|
|
[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.
|
|
bedc8d93
|
2025-02-16T12:30:18
|
|
[decycler] Document algorithm
|
|
2bdf9850
|
2025-02-16T12:14:42
|
|
[decycler] Add alternative way of using it to tests
|
|
1c18646d
|
2025-02-17T15:06:27
|
|
[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).
|
|
3cb49717
|
2025-02-16T10:54:11
|
|
[decycler] Add some documentation
|
|
0667ceae
|
2025-02-16T10:37:21
|
|
[VARC] Reduce stack use
|
|
ed76c855
|
2025-02-18T20:01:36
|
|
[COLR] Optimize palette access
|
|
016e78b6
|
2025-02-18T19:49:48
|
|
[COLR] Micro-optimize
|
|
e6eec3cc
|
2025-02-18T00:48:37
|
|
[test] Silence compiler warning
|
|
b97ef6c7
|
2025-02-13T07:19:04
|
|
add dep
|
|
215c8de3
|
2025-02-15T21:07:47
|
|
[ft-colr] Fix cycle-detection accounting
Fixes https://github.com/harfbuzz/harfbuzz/issues/5073
|
|
ff3aaece
|
2025-02-10T14:25:58
|
|
[test/shape-plan] Add another test and some comments
|
|
cf336f17
|
2025-02-10T14:15:25
|
|
[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.
|
|
a7d7715f
|
2025-02-02T23:06:11
|
|
[shape-plan] Add hb_ot_shape_plan_get_features
This should get the features on a shape plan after executing it.
Initially I wanted to return an array of tags, but then there can be
user features that are not enabled globally, so I thought returning
hb_feature_t with value and range would be better. There is a TODO since
I couldn’t figure out how to get the value and range from the feature
mask. But also it may be overkill and a simple boolean indicating wither
it is a global feature or not would be enough.
I wounder also what should happen to non-user features that are applied
selectively, like init or medi, does ot make sense to indicate whether
they are global or not?
This is inspired by the discussion in:
https://github.com/fontforge/fontforge/pull/5522#pullrequestreview-2574321449,
but it might be useful to other HarfBuzz users.
|
|
bcd5aa36
|
2025-02-13T14:00:31
|
|
[docs/coretext] Fix hb_coretext_font_set_funcs() documentation
Remove the note that fonts created with hb_coretext_font_create() have
these font functions configured for them, which is not true.
hb_coretext_font_create() documents this correctly.
|
|
d2a88fbd
|
2025-02-12T21:48:22
|
|
[vector] Add alloc_exact()
|
|
8c561733
|
2025-02-12T12:37:10
|
|
[test/coretext] Add a test for copying variations
|
|
c07b2233
|
2025-02-12T12:36:21
|
|
[coretext] Fix copying of variations when creating hb-font
|
|
778acfc6
|
2025-02-11T23:12:23
|
|
[coretext] Don't assume that a normalized-coord 0 mins design-coords at default
|
|
27a25f2d
|
2025-02-11T23:10:43
|
|
[coretext] Copy variations when creating hb-font
https://github.com/harfbuzz/harfbuzz/issues/3159#issuecomment-2652262262
|
|
94584d14
|
2025-02-12T13:33:57
|
|
[coretext] Use vector instead of malloc/free a C-array
|
|
1bc87dfe
|
2025-02-12T13:09:02
|
|
[coretext] Handle allocation failures
|
|
33b31771
|
2025-02-12T00:18:48
|
|
[ci] Stop generating test coverage data
It is failing on Linux CI after upgrading to Ubuntu 24.04, and macOS
upload to codecov was also silently failing for a while now. We don’t do
much with the coverage data anyway.
|
|
d46c0ca2
|
2025-02-11T23:55:11
|
|
[ci] Don’t use system Python on Linux
We are already installing one using actions/setup-python.
|
|
467b08ba
|
2025-02-11T23:41:34
|
|
[ci] Update Ubuntu 20.04 images to 24.04
GitHub actions will start failing jobs using Ubuntu 20.04 images, so
switch to 24.04. Switch also on CircleCI while at it.
|
|
a69842a8
|
2025-02-12T11:23:28
|
|
[shape-plan] Minor check for invalid direction
|
|
e9c2d78d
|
2025-02-12T10:44:34
|
|
[buffer] Clean up some small mess
|
|
6d95c128
|
2025-02-12T10:36:49
|
|
[buffer] Remove unused includes
|
|
34464657
|
2025-02-06T12:03:18
|
|
[set] Tweak allocation
Allocation 2-page sets as exact count as well.
Don't do the same for the page_map.
|
|
8f1c31c0
|
2025-02-10T11:00:28
|
|
Bump hendrikmuhs/ccache-action from 1.2.16 to 1.2.17
Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.16 to 1.2.17.
- [Release notes](https://github.com/hendrikmuhs/ccache-action/releases)
- [Commits](https://github.com/hendrikmuhs/ccache-action/compare/53911442209d5c18de8a31615e0923161e435875...a1209f81afb8c005c13b4296c32e363431bffea5)
---
updated-dependencies:
- dependency-name: hendrikmuhs/ccache-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
11b71418
|
2025-02-10T11:00:25
|
|
Bump github/codeql-action from 3.28.8 to 3.28.9
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.8 to 3.28.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/dd746615b3b9d728a6a37ca2045b68ca76d4841a...9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0)
---
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>
|
|
63cee529
|
2025-02-10T10:16:27
|
|
Bump fonttools from 4.55.8 to 4.56.0 in /.ci
Bumps [fonttools](https://github.com/fonttools/fonttools) from 4.55.8 to 4.56.0.
- [Release notes](https://github.com/fonttools/fonttools/releases)
- [Changelog](https://github.com/fonttools/fonttools/blob/main/NEWS.rst)
- [Commits](https://github.com/fonttools/fonttools/compare/4.55.8...4.56.0)
---
updated-dependencies:
- dependency-name: fonttools
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
|
|
39fec7b1
|
2025-02-09T17:54:46
|
|
Merge pull request #5062 from harfbuzz/test-fuzzer-one-go
[test/fuzzing] Run each fuzzer on all fonts in one process
|
|
abdd60ac
|
2025-02-09T17:54:07
|
|
Merge pull request #5063 from harfbuzz/disable-google-benchmark-tests
[test] Exclude google-benchmark tests by default if meson "recent" an…
|
|
b540c37c
|
2025-02-09T09:47:18
|
|
Update meson.build
Co-authored-by: خالد حسني (Khaled Hosny) <khaled@aliftype.com>
|
|
7ba3efa5
|
2025-02-09T18:42:45
|
|
[tests/fuzzing] Use the correct dirs for subset and repacker fuzzers
|
|
57c9bdd0
|
2025-02-09T16:27:16
|
|
[test] Exclude google-benchmark tests by default if meson "recent" and...
...glib not built internally.
Second try.
See https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646347531
|
|
c404d8fc
|
2025-02-09T18:08:50
|
|
[test/fuzzing] Merge hb_fuzzer_tools.py back and simplify
|
|
4c43fdcd
|
2025-02-09T17:52:13
|
|
[test/fuzzing] Simplify Python scripts further
We always path the fuzzer path in meson, so we don’t need to search for
fuzzer path in the scripts, and then we can use one script for all the
fuzzers.
|
|
c29b1de3
|
2025-02-09T15:38:18
|
|
[test/fuzzing] Remove old cruft
|
|
1e3f59a7
|
2025-02-09T15:21:18
|
|
[ci] Give sanitizers more time
|
|
86329643
|
2025-02-09T15:12:03
|
|
[test/fuzzing] Call binaries with 64 fonts at a time
Second try... Previous attempt caused a too-many-command-line-args
on Windows.
https://github.com/harfbuzz/harfbuzz/issues/5061
|
|
be22e43d
|
2025-02-09T14:55:44
|
|
[test/fuzzing] Run each fuzzer on all fonts in one process
Much much faster, specially under valgrind, than spawning one process per font.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5061
|
|
b5e07e75
|
2025-02-09T14:04:20
|
|
Merge pull request #5060 from harfbuzz/glyf-contour-start-match-ft-ct
[glyf] Change drawing algorithm to match FreeType / CoreText
|
|
6738ee3d
|
2025-02-09T13:30:19
|
|
[ci/fedora-valgrind] Add time multiplier of 10 and run slow tests
|
|
fc4d5077
|
2025-02-09T13:28:45
|
|
[hb-draw-fuzzer] Increase test time
I'm getting timeouts. Might be an infinite loop. But let's see.
|
|
4b54ee11
|
2025-02-09T12:38:58
|
|
[glyf] Change drawing algorithm to match FreeType / CoreText
|
|
f858def1
|
2025-02-09T13:07:20
|
|
Revert "[test] Exclude google-benchmark tests by default if meson "recent""
This reverts commit 3c975a857f76c421793d62aaed1ba3382d06994d.
See https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646149763
|
|
f68193a0
|
2025-02-09T11:43:07
|
|
[glyf] Use direct access to points array
Not necessary faster. Prep'ing for next change.
|
|
19a152b4
|
2025-02-09T12:37:03
|
|
[perf] Don't depend on libharfbuzz-subset for most benchmarks
|
|
3c975a85
|
2025-02-09T08:58:55
|
|
[test] Exclude google-benchmark tests by default if meson "recent"
https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646131694
|
|
cb6779f9
|
2025-02-09T08:39:03
|
|
[test] Try running slow tests early
Probably already happens, but this wouldn't hurt.
https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646125367
|
|
134eef55
|
2025-02-09T08:22:38
|
|
[test] Reorder test suites
Makes it a bit faster.
https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646120679
|
|
c55738fa
|
2025-02-09T08:08:52
|
|
[test] Set MALLOC_CHECK_ to 1 instead of 2; kill G_SLICE=always-malloc
MALLOC_CHECK_=2 makes running tests twice slower on macOS. Value 1
is as fast as not checking at all. It's not like this ever caught
a bug for us or anything. We have so many sanitizers and fuzzers
funning on CI, which catch all kinds of memory problems.
G_SLICE is long gone in glib.
The slowest part of running the test suite now is the google-benchmark
tests, that get run by us... I'll see if I can disable. I had reported
it before at https://github.com/harfbuzz/harfbuzz/issues/4153
|
|
b13017e6
|
2025-02-09T08:00:18
|
|
Use HB_ALWAYS_INLINE instead of bare __attribute__
The former works on MSVC too.
|
|
ee19666c
|
2025-02-09T05:14:36
|
|
[hb-shape/view] Allow --unicodes and --text if at least one is empty
Useful for scripting.
|
|
5cab7419
|
2025-02-09T04:56:12
|
|
Merge pull request #5058 from harfbuzz/ot-font-trak
[ot-font/trak] Move trak application to ot-font instead of ot-shape
|
|
922a56f4
|
2025-02-09T04:50:17
|
|
[trak] Fix configs build
|
|
17c11ec5
|
2025-02-09T04:46:29
|
|
[ft/trak] Apply trak in ft-font-funcs as well
Part of https://github.com/harfbuzz/harfbuzz/issues/5049
|
|
ffae5b04
|
2025-02-09T04:39:32
|
|
[ot-font/trak] Move trak application to ot-font instead of ot-shape
This is what CoreText does.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5049
|
|
f840480f
|
2025-02-09T04:27:20
|
|
[trak] Remove leftover
|
|
be287eab
|
2025-02-09T04:18:31
|
|
[trak] Don't shift glyphs
That's what CoreText does and fonts are designed for. Who are we to improve on...
|
|
1150d4bf
|
2025-02-09T04:16:57
|
|
[trak] Remove support for disabling using pseudo-font-feature
Fixes https://github.com/harfbuzz/harfbuzz/issues/5052
|
|
4c06c3d6
|
2025-02-09T04:01:59
|
|
Merge pull request #5057 from harfbuzz/coretext-font-nonbmp
[coretext-font] Support non-BMP characters
|
|
fb222953
|
2025-02-09T03:56:46
|
|
[coretext-font] Support non-BMP in variation-selector callback
Fixes https://github.com/harfbuzz/harfbuzz/issues/5056
|
|
f6bf9f69
|
2025-02-09T03:52:13
|
|
[coretext-font] Do early-return in get_nominal_glyphs()
Related to https://github.com/harfbuzz/harfbuzz/issues/5056
|
|
c5e6c885
|
2025-02-09T03:49:01
|
|
[coretext-font] Support non-BMP chars in get_nominal_glyph(s)
Part of https://github.com/harfbuzz/harfbuzz/issues/5056
|
|
b9675d6d
|
2025-02-09T03:01:21
|
|
Merge pull request #5055 from harfbuzz/trak-interpolate
[trak] Interpolate between tracks
|
|
a70a30dd
|
2025-02-09T02:55:48
|
|
[trak] Interpolate between tracks
Fixes https://github.com/harfbuzz/harfbuzz/issues/5054
According to Ned, this is what CoreText does.
Should add tests some time...
|
|
1bf0a5bc
|
2025-02-09T02:43:09
|
|
[trak] Streamline a bit
Also use float math.
|
|
b1677e76
|
2025-02-09T01:56:03
|
|
[trak] Handle "out-of-range" values better
If requested size < min-size, use the value for min-size.
If requested size > max-size, use the value for max-size.
This is the only way that makes sense. Extrapolating as we were
doing, is just wrong...
This also seems to match what CoreText does.
Adjacent to fixing https://github.com/harfbuzz/harfbuzz/issues/5054
|
|
691cc939
|
2025-02-06T20:08:16
|
|
[trak] Fix build without STAT
|
|
b8327fe6
|
2025-02-06T20:01:12
|
|
Fix compiler errors
|
|
f394206b
|
2025-02-06T19:48:56
|
|
[ot-shape] Only apply trak'ing if STAT table present
|
|
6e0dd811
|
2025-02-06T17:26:27
|
|
[trak] Default ptem to 12
That's what CoreText does.
https://developer.apple.com/documentation/coretext/ctfontcreatewithgraphicsfont(_:_:_:_:)
Fixes https://github.com/harfbuzz/harfbuzz/issues/5048
|
|
ef00ac8c
|
2025-02-06T17:44:55
|
|
Merge pull request #5051 from harfbuzz/trak-choose
[trak] Choose closest trak track to 0.0
|
|
6a37a652
|
2025-02-06T17:40:10
|
|
[trak] Choose closest trak track to 0.0
Seems to be what CT does. Needs more testing to adjust better, but
for now it's better than before.
|
|
8efd2d85
|
2025-02-06T14:38:09
|
|
[coretext] Fix CGFont leak
|
|
b5327faf
|
2025-02-06T14:26:37
|
|
Fix leak
From recent work.
|
|
24fe2be9
|
2025-02-06T11:55:23
|
|
[subset] Fix undefined-behavior
|
|
97db7bb2
|
2025-02-06T11:01:59
|
|
[set-digest] Cosmetic
|
|
f0d6a366
|
2025-02-06T02:51:50
|
|
[face] Use a macro
|
|
7bdc6c9a
|
2025-02-06T02:47:13
|
|
Whitespace
|
|
6091abcc
|
2025-02-06T02:40:24
|
|
[buffer] Avoid a copy in collect_codepoints()
|
|
e5e3bc40
|
2025-02-06T02:36:26
|
|
[buffer] Merge two functions into a template
|
|
403f12f7
|
2025-02-06T02:33:41
|
|
[buffer] A few always-inline's
|
|
4818ba9e
|
2025-02-06T01:50:12
|
|
[set-digest] Yet another tuning
Saves 5% on SF Pro while regressing 2% on Roboto.
|