|
87830b62
|
2025-02-25T17:59:24
|
|
[gvar] Remove unused method
|
|
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
|
|
dcb80ecb
|
2025-02-25T15:58:37
|
|
[gvar] Use a method
|
|
23937e8c
|
2025-02-25T15:48:23
|
|
[gvar] Combine two loops
|
|
9b451f20
|
2025-02-25T15:16:09
|
|
[gvar] Minor remove a variable
|
|
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
|
|
b12612f5
|
2025-02-25T13:47:06
|
|
Fix compiler warnings
|
|
8280ef7d
|
2025-02-25T12:18:43
|
|
Merge pull request #5089 from harfbuzz/vector-explicit
[vector] Disallow accidental creation of transient vectors
|
|
aaecaa4c
|
2025-02-24T22:03:00
|
|
[vector] Disallow accidental creation of transient vectors
Fix sites that were doing this under our feet.
This lowers precision of some instancing operations from double
to float, which modifies a few results by rounding error.
TODO: Update tests.
|
|
f71faf5f
|
2025-02-25T11:35:21
|
|
[VARC] Fix buffer scratch borrowing
|
|
e76b689f
|
2025-02-25T11:23:48
|
|
[VARC] Fix resource leak
|
|
827be1b2
|
2025-02-25T10:23:10
|
|
Revert "[MultiVarStore] Micro-optimize"
This reverts commit 13d98f1ded00d025b85816ceee056da6f121d555.
This broke bots. I don't fully understand why tests pass locally.
|
|
13d98f1d
|
2025-02-25T01:40:19
|
|
[MultiVarStore] Micro-optimize
|
|
51d8ef48
|
2025-02-25T00:09:28
|
|
[gvar] Cache shared_indices as well
|
|
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
|
|
a058a1f2
|
2025-02-24T21:53:17
|
|
[TupleValues] Unroll a loop
|
|
13ee8edf
|
2025-02-24T21:17:58
|
|
[vector] Speed up extend()
|
|
46485124
|
2025-02-24T21:04:34
|
|
[vector] Simplify a method
|
|
6fe55030
|
2025-02-24T20:57:30
|
|
[TupleValues] Don't overshadow end() method
|
|
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
|
|
2099db37
|
2025-02-24T15:13:08
|
|
[TupleValues] Optimize decoding
|
|
043980a6
|
2025-02-24T10:58:03
|
|
[TupleValues] Micro-optimize
|
|
1ba90720
|
2025-02-23T21:34:54
|
|
[VARC] Speed up MultiVarData::get_delta
|
|
e41dc20c
|
2025-02-21T10:20:11
|
|
[directwrite] Fix -Wcast-align warning
https://github.com/harfbuzz/harfbuzz/pull/5079#issuecomment-2673805310
|
|
694ffa87
|
2025-02-20T23:56:59
|
|
10.3.0
|
|
03cf1565
|
2025-02-20T21:56:56
|
|
[directwrite] Rename font_get_font to font_get_dw_font
https://github.com/harfbuzz/harfbuzz/pull/5079#pullrequestreview-2627407692
|
|
f012442f
|
2025-02-20T21:36:02
|
|
Annotate printf functions with gnu_printf format under MingW
Fixes https://github.com/harfbuzz/harfbuzz/issues/5080
|
|
a8fd2971
|
2025-02-13T17:16:20
|
|
[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.
|
|
7cf63429
|
2025-02-20T12:05:17
|
|
[ot-layout] Use a variable
Doesn't make a diff in the generated code I believe,
but is nice.
|
|
e28bcf58
|
2025-02-20T20:58:15
|
|
Typo [ci skip]
|
|
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
|
|
a0f83e78
|
2025-02-16T09:55:12
|
|
[decycler] Reduce stack use
48bytes -> 40bytes per node.
|
|
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=]
|
|
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.
|
|
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).
|
|
fb0e181a
|
2025-02-17T14:57:20
|
|
[decycler] Reduce stack use further
Down to three pointers. Exercise for the reader to prove this is
optimal.
|
|
646da80c
|
2025-02-17T14:49:06
|
|
[decycler] Reduce stack use
Down from 5 pointers to 4.
|
|
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
|
|
bedc8d93
|
2025-02-16T12:30:18
|
|
[decycler] Document algorithm
|
|
2bdf9850
|
2025-02-16T12:14:42
|
|
[decycler] Add alternative way of using it to tests
|
|
3cb49717
|
2025-02-16T10:54:11
|
|
[decycler] Add some documentation
|
|
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.
|
|
ed76c855
|
2025-02-18T20:01:36
|
|
[COLR] Optimize palette access
|
|
016e78b6
|
2025-02-18T19:49:48
|
|
[COLR] Micro-optimize
|
|
215c8de3
|
2025-02-15T21:07:47
|
|
[ft-colr] Fix cycle-detection accounting
Fixes https://github.com/harfbuzz/harfbuzz/issues/5073
|
|
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()
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
b13017e6
|
2025-02-09T08:00:18
|
|
Use HB_ALWAYS_INLINE instead of bare __attribute__
The former works on MSVC too.
|
|
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
|
|
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
|
|
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
|
|
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
|