|
ad0a5c93
|
2025-03-01T16:02:10
|
|
[vector] Add fast path in extend() for length-known iterators
|
|
7e3c9658
|
2025-03-01T15:08:41
|
|
[VARC] Reuse parent MultiVarStore cache if coords didn't change
Minor optimization; applicable to the test hangul font mostly.
|
|
3ef87098
|
2025-03-01T00:58:14
|
|
10.4.0
|
|
75ce774b
|
2025-02-28T15:25:23
|
|
[gvar] Use a method for add_delta
|
|
69e1c3c3
|
2025-02-28T00:25:17
|
|
[ft] Add hb_ft_font_get_ft_face()
A new name for hb_ft_font_get_face(), which is now deprecated.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5084
|
|
484e8d49
|
2025-02-28T00:14:25
|
|
[directwrite] Add hb_directwrite_face_get_dw_font_face()
A new name for hb_directwrite_face_get_font_face(), which is now
deprecated.
Part of https://github.com/harfbuzz/harfbuzz/issues/5084
|
|
8226f597
|
2025-02-28T13:49:44
|
|
[decycler] Add a couple more tests
|
|
64dbeaf0
|
2025-02-28T00:54:39
|
|
[glyf] Mover decycler to the scratch pad
|
|
d59d435e
|
2025-02-27T22:41:03
|
|
[decycler] Comments
|
|
cb781f53
|
2025-02-27T10:15:22
|
|
[BASE] Fix a TODO item
|
|
4be765c0
|
2025-02-27T02:26:08
|
|
Fix config build
|
|
4a43373a
|
2025-02-26T17:24:28
|
|
[MultiVarData] Unroll another loop
|
|
00541f19
|
2025-02-26T16:22:48
|
|
Merge pull request #4970 from harfbuzz/GVAR
Add `GVAR` table
|
|
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
|
|
44b7ba51
|
2025-02-26T13:47:45
|
|
[GVAR] Hide behind HB_NO_BEYOND_64K
|
|
13900ce4
|
2025-02-26T13:41:52
|
|
[GVAR] Hook up to face and glyf table
|
|
ffe955b9
|
2025-02-26T13:40:18
|
|
[GVAR] Change offsetToData size to 24bit
As per https://github.com/harfbuzz/boring-expansion-spec/issues/162
|
|
894fee6d
|
2024-12-09T21:52:39
|
|
[GVAR] Implement table
Unused. It's just like `gvar` but with 24bit glyphCount.
|
|
4d3642c1
|
2025-02-26T14:20:45
|
|
[face] Fix a malloc fail infinite-loop error
|
|
6fbd6bb3
|
2025-02-26T14:06:35
|
|
[face] Avoid infinite-loop in building a face blob
|
|
6a7b4dca
|
2025-02-26T13:25:50
|
|
[VARC] Reduce stack usage on 32bit systems
|
|
84ffb7e4
|
2025-02-26T12:51:04
|
|
[SimpleGlyph] Minor use an intermediate variable
|
|
54db2b2e
|
2025-02-26T12:48:55
|
|
[SimpleGlyph] Remove a conditional from hot path
5% speedup in Roboto-Regular draw benchmark
|
|
bb4d37b0
|
2025-02-26T12:17:27
|
|
[VARC/coord-setter] Reduce stack allocation on 32bit systems
|
|
51d3489c
|
2025-02-26T12:09:31
|
|
[Composite] Fix memory-free rendering
|
|
a037d381
|
2025-02-26T12:05:12
|
|
[vector] Fix operator =
|
|
59e6a1c4
|
2025-02-26T11:16:04
|
|
[glyf/Composite] Malloc-free
|
|
3c4cb472
|
2025-02-26T10:48:36
|
|
[VARC] Fix uninitialized value
Fixes https://oss-fuzz.com/testcase-detail/6089638800588800
|
|
fcbf14a0
|
2025-02-25T20:16:18
|
|
[CompositeGlyph] Adjust pre-allocation
|
|
6ca8852e
|
2025-02-25T19:57:43
|
|
[glyf] Return earlier if table is empty
|
|
0cd98ebb
|
2025-02-25T18:53:04
|
|
[vector] Add a missing fast-path
|
|
41626401
|
2025-02-25T18:48:34
|
|
[vector] Add faster extend() for array types
|
|
aaf5c06d
|
2025-02-25T18:45:38
|
|
[vector] Rewrite copy_array() to extend vector
|
|
40c77a1c
|
2025-02-25T18:37:20
|
|
Remove a redundant method
|
|
81339256
|
2025-02-25T17:59:58
|
|
[gvar] Rename two variables
|
|
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
|
|
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.
|
|
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.
|
|
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.
|