|
f159600c
|
2025-10-17T21:49:40
|
|
Fix a draw fuzzer uninitialized-memory issue (#5615)
Fixes https://oss-fuzz.com/testcase-detail/5714890590584832
|
|
5973479e
|
2025-10-17T16:21:51
|
|
[shape] Don't do font-funcs-based kerning for most shapers
|
|
07f0cba3
|
2025-10-17T15:23:05
|
|
[alloc-pool] Fix MSVC warning
Fixes https://github.com/harfbuzz/harfbuzz/issues/5613
|
|
63e8c13e
|
2025-10-15T12:41:50
|
|
[hangul] Enable fallback position / kern table
https://github.com/harfbuzz/harfbuzz/pull/5609#issuecomment-3400878406
|
|
3b58ce45
|
2025-10-13T13:26:23
|
|
[shape] Disable `kern` table in most shapers
Only default, Arabic, and Hebrew keep it.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5607
Needs documentation update.
|
|
2ce548a7
|
2025-10-13T15:11:15
|
|
Clean up std::forward to match spelling of argument type (#5608)
This helps readability and also avoids false positives during static analysis.
|
|
059fc205
|
2025-10-13T17:58:13
|
|
Fix documentation of offsets in text glyph serialization format (#5606)
Offsets are serialized when only one of `x` and `y` is non-zero too:
https://github.com/harfbuzz/harfbuzz/blob/7c2105a52e6b50e448064e82c760dad0b5f4bdb9/src/hb-buffer-serialize.cc#L302-L303
|
|
cb59b347
|
2025-10-01T08:24:34
|
|
12.1.0
|
|
4a26e289
|
2025-09-30T15:31:04
|
|
Add `hb_ot_layout_lookup_collect_glyph_alternates()` (#5367)
* [map] Massage operator << overloads
* [ot-layout] Add +hb_ot_layout_lookup_collect_glyph_alternates
To collect all glyph mapping from SingleSubst or AlternateSubst
lookups in one call. Needed by FreeType autohinter for performance.
New API:
+hb_ot_layout_lookup_collect_glyph_alternates()
* [layout] Change hb_ot_layout_lookup_collect_glyph_alternates() API
https://github.com/harfbuzz/harfbuzz/pull/5367#discussion_r2149019638
|
|
61b6a262
|
2025-09-30T13:18:46
|
|
[pragmas] Disable -Wuninitialized and -Wmaybe-uninitialized on gcc
Fixes https://github.com/harfbuzz/harfbuzz/issues/5589
CC https://github.com/harfbuzz/harfbuzz/pull/5367
|
|
af286b8f
|
2025-09-30T12:59:34
|
|
[Coverage] Simplify initialization
|
|
16430313
|
2025-09-29T23:00:28
|
|
[pragmas] Demote -Wuninitialized from error to warning (#5593)
I suspect a gcc false positive.
"Fixes" https://github.com/harfbuzz/harfbuzz/issues/5589
|
|
37fd8c0b
|
2025-09-29T23:00:21
|
|
[alloc-pool] Fix alignment (#5592)
We were aligning on the bytes remaining. Align on actual
pointer.
Probably fixes https://github.com/harfbuzz/harfbuzz/issues/5591
|
|
720f1a3b
|
2025-09-28T00:55:46
|
|
12.0.0
|
|
0952bc0a
|
2025-09-26T09:10:28
|
|
[subset] de-duplicate features (#5494)
|
|
6a2453bb
|
2025-09-25T21:54:20
|
|
Reapply "[VARC] Graduate out of experimental" (#5588)
This reverts commit 673934f2ce569b81a2ac094d2316033425ab6928.
|
|
9b043da7
|
2025-09-24T16:39:38
|
|
[shape] Use a buffer scratch flag for fraction slash (#5587)
* [shape] Use a buffer scratch flag for fraction slash
* Remove unused non-ascii scratch flag
|
|
88844e2e
|
2025-09-24T13:28:28
|
|
[rust] Tweak debugoptimized again
Now on par in perf with release, but nice stacktraces.
|
|
ba4f92f2
|
2025-09-24T13:12:50
|
|
[rust] Change debugoptimized build to inherit dev instead of release
I was getting useless profiler stacks with the previous setup.
This one makes the debugoptimized build 30% slower than release
in one of my benchmarks, but at least we get useful stacktraces
by default.
|
|
fc761725
|
2025-09-24T12:42:53
|
|
[ValueFormat] comment
|
|
9eb4318e
|
2025-09-24T00:04:19
|
|
Fix fuzzer issue
|
|
62ec6470
|
2025-09-24T01:49:57
|
|
[shape] Use a buffer scratch flag for continuations (#5586)
Use it in form_clusters instead of ascii flag, for speedup.
|
|
52eb9595
|
2025-09-24T00:22:56
|
|
[rust] Don't use panic_immediate_abort (#5585)
It has changed. Use optimize_for_size which seems to have the
same size reduction effect.
Fixes https://github.com/harfbuzz/harfbuzz/issues/5584
|
|
d350cb83
|
2025-09-23T19:47:01
|
|
Speed up ValueFormat len() calc
|
|
88dfa2ab
|
2025-09-23T22:34:02
|
|
On gcc <= 12 don't use num fast path (#5578)
Fixes https://github.com/harfbuzz/harfbuzz/issues/5456
|
|
3b1e9efb
|
2025-09-23T19:09:46
|
|
[bit-page] Remove leftover bits from iterator
|
|
7750fc2c
|
2025-09-23T20:56:53
|
|
[buffer] Remove HB_BUFFER_SCRATCH_FLAG_HAS_GLYPH_FLAGS (#5583)
It complicated correctness analysis. Remove it and always
propagate flags, which are much faster now anyway.
|
|
2bcee180
|
2025-09-23T20:44:44
|
|
[shape] Fix up propagate-flags after previous changes (#5582)
|
|
c4ad58e3
|
2025-09-23T18:32:42
|
|
[shape] Fix typo in propagate_flags
|
|
73afc003
|
2025-09-23T20:30:06
|
|
Propagate flags speedup (#5581)
* [shape] Micro-opt
* [shape] Speed up propagate_flags
|
|
fdb80534
|
2025-09-23T14:32:41
|
|
[subset-repacker] bug fix: copy markFilteringSet field if exists (#5579)
|
|
98d14b43
|
2025-09-23T13:32:15
|
|
[chaincontext] Micro-optimize a conditional away
|
|
e3a5152b
|
2025-09-23T11:55:26
|
|
[buffer] Micro-opt next_glyphs()
|
|
88b7a4f4
|
2025-09-23T11:23:03
|
|
[set-digest] Comments
|
|
516c35cf
|
2025-09-23T10:13:28
|
|
[buffer-message] Disable "more" messages by default (#5577)
This was not suppoosed to be turned on by default, as it has a
performance overhead. Instead, tools like Crowbar should define
HB_BUFFER_MESSAGE_MORE to 1 when building HarfBuzz.
|
|
b2a6375b
|
2025-09-22T17:31:11
|
|
[ot-shape] Update update_digest() calls
Correction to ccfd1ae2d68b920702c10b34711b72d5ac6ad39c
|
|
3ce3853a
|
2025-09-22T17:17:28
|
|
Merge pull request #5575 from harfbuzz/apply-forward-speedup
[apply-forward] Speed up glyph skipping
|
|
eeb16bd4
|
2025-09-22T16:33:52
|
|
[apply-forward] Speed up glyph skipping
6% speedup in Roboto-Regular benchmark.
|
|
ccfd1ae2
|
2025-09-22T16:48:32
|
|
[buffer] Retain digest in the buffer
We don't have to reinitialize it for GPOS now, showing some
1.5% speedup on Roboto-Regular benchmark.
Over time we can change the various gsub_pauses to update the digest
in-place instead of returning true.
|
|
19b026b3
|
2025-09-22T14:48:42
|
|
[iup] Use a member pointer
|
|
34771620
|
2025-09-22T14:45:42
|
|
[iup] Add an early exit
|
|
1c7c3e50
|
2025-09-22T14:36:02
|
|
[iup] Micro-optimize
Doesn't matter.
|
|
7497c414
|
2025-09-22T19:58:28
|
|
11.5.1
|
|
e1fd2bee
|
2025-09-18T11:18:09
|
|
[alloc-pool] Reduce memory usage by reclaiming some discards
|
|
a22add25
|
2025-09-18T11:04:06
|
|
[alloc-pool] Implement alignment
|
|
08ff7200
|
2025-09-18T10:57:43
|
|
[set] Speed up iterator
|
|
23024337
|
2025-09-17T15:32:46
|
|
[instancer/iup] Reduce mallocs again
Perhaps shrink() shouldn't default to realloc. Working on it.
|
|
2be836c1
|
2025-09-17T00:31:50
|
|
Revert "[instancer] Preallocate coordinate maps from alloc pool as well"
This reverts commit 3f71afe7605cdc7260990f8925e6ed49521fe728.
Slowed things down.
|
|
3f71afe7
|
2025-09-17T00:22:39
|
|
[instancer] Preallocate coordinate maps from alloc pool as well
|
|
c03e1e0a
|
2025-09-16T18:15:51
|
|
[iup] Use a bit-page instead of bit-set
Reject large contours instead.
|
|
d4cc4823
|
2025-09-16T17:00:38
|
|
[instancer/tuplevar] Tune allocation size
|
|
5b04b40d
|
2025-09-16T16:52:53
|
|
[instancer/tuplevars] Allocate compiled_deltas from alloc pool
|
|
ea9b7de4
|
2025-09-16T16:45:02
|
|
[instancer/tuplevars] Allocate compiled_tuple_headers from alloc pool
|
|
bdac0aec
|
2025-09-16T16:42:32
|
|
[vector] Make shrink() useful in un-owned vectors
|
|
c2f21215
|
2025-09-16T16:29:23
|
|
[vector] Simplify allocate_from_pool / set_storage
|
|
fb0ef230
|
2025-09-16T11:16:30
|
|
Revert "[tuplevars] Allocate from pool"
This reverts commit 94d78de954ab22f3717cc399920670f877616567.
Slowed things down.
|
|
94d78de9
|
2025-09-16T11:13:19
|
|
[tuplevars] Allocate from pool
|
|
f7e2d9a0
|
2025-09-16T11:10:49
|
|
[alloc-pool] Tweak
|
|
f5fdf426
|
2025-09-16T02:28:29
|
|
[tuplevar] Use pool for duplicating
|
|
f9cd59ae
|
2025-09-16T01:45:36
|
|
[tuplevar] More use of pool
|
|
12ce710f
|
2025-09-16T01:44:47
|
|
[tuplevar] Use alloc-pool instead of custom pool
|
|
43e017f8
|
2025-09-16T01:31:21
|
|
[tupledelta] Micro optimize
|
|
ebdeb2e3
|
2025-09-16T01:09:46
|
|
[tuplevalues] Speed up encoding
|
|
755ed109
|
2025-09-16T00:40:28
|
|
Add hb-alloc-pool and use in gvar instancer
|
|
d6b08019
|
2025-09-15T23:56:25
|
|
Rename hb-pool to hb-free-pool
|
|
82370913
|
2025-09-15T20:16:52
|
|
[vector] Simplify resize()
|
|
c56ef9ed
|
2025-09-15T20:10:54
|
|
[instancer] Reuse more allocations
These allocs are scratched. Don't free them, so we reuse.
|
|
8e3e8c66
|
2025-09-15T19:49:11
|
|
[iup] Reuse more allocations
|
|
bac2a67c
|
2025-09-15T19:30:46
|
|
Merge pull request #5563 from harfbuzz/instancer-gvar-consolidate-mallocs
Instancer gvar consolidate mallocs
|
|
82ca73a2
|
2025-09-15T19:12:40
|
|
[iup] Reuse more vector allocs
|
|
e42714cf
|
2025-09-15T19:05:38
|
|
[iup] Reuse bit-set allocs
|
|
54ac33cc
|
2025-09-15T19:00:34
|
|
[iup] Reuse more mallocs
|
|
045bd691
|
2025-09-15T18:56:55
|
|
[iup] Use bit-set instead of set
|
|
5e816ef7
|
2025-09-15T18:43:22
|
|
[iup] Reuse vectors
|
|
a64ab6c6
|
2025-09-15T17:47:07
|
|
[iup] Reduce hb_set_t allocs
|
|
5928a3c7
|
2025-09-15T17:17:15
|
|
[iup] Reduce vector allocs
|
|
df18518f
|
2025-09-15T17:14:31
|
|
[iup] Don't sqrt
|
|
db86e546
|
2025-09-15T16:41:31
|
|
[instancer/gvar] Combine peak_coords mallocs into one chunk
|
|
54ab8f0d
|
2025-09-15T18:20:59
|
|
[repacker] make repacker object ids stable.
Prior to this change the object id for a vertex in the repacker graph is it's position in the topological ordering. As a result after each sorting the object ids change. This decouples the topological sorting from the object id assignments. A separate ordering list is retained. This simplifies handling around object ids which no longer needs to account for them shifting, and improves performance by eliminating the step of reassigned link object ids after each sort.
|
|
26cc7355
|
2025-09-15T15:49:36
|
|
[vector] Remove a comment
|
|
9d004544
|
2025-09-16T00:16:30
|
|
Fix invalid reinterpret_cast (#5558)
* Fix invalid reinterpret_cast
reinterpret_cast from non-atomic object to atomic object is not valid.
https://eel.is/c++draft/atomics.types.generic#general-3
>[Note 2: The representation of an atomic specialization
>need not have the same size and alignment requirement as
>its corresponding argument type. — end note]
https://eel.is/c++draft/basic.compound#5
>5 Two objects a and b are pointer-interconvertible if
>(5.1) they are the same object, or
>(5.2) one is a union object and the other is a non-static
>data member of that object ([class.union]), or
>(5.3) one is a standard-layout class object and the other
>is the first non-static data member of that object or any
>base class subobject of that object ([class.mem]), or
>(5.4) there exists an object c such that a and c are
>pointer-interconvertible, and c and b are pointer-interconvertible.
>If two objects are pointer-interconvertible, then they have
>the same address, and it is possible to obtain a pointer
>to one from a pointer to the other via a reinterpret_cast
>([expr.reinterpret.cast]).
objects of types `int` and `std::atomic<int>` are not
pointer-interconvertible (an object of type `int` is not
first non-static data member of `std::atomic<int>`)
https://eel.is/c++draft/basic.lval#11
>11 An object of dynamic type T-obj is type-accessible through
>a glvalue of type T-ref if T-ref is similar ([conv.qual]) to:
>(11.1) T-obj,
>(11.2) a type that is the signed or unsigned type corresponding
>to T-obj, or
>(11.3) a char, unsigned char, or std::byte type.
>If a program attempts to access ([defns.access]) the stored
>value of an object through a glvalue through which it is not
>type-accessible, the behavior is undefined
The original code resulted in undefined behavior.
* revert code formatting
* fix const qualifier in type for atomic operation.
* implement copy and move ctors (assignment-operators) and swap functions.
* swap-functions replaced as frendly members, common header includes returned.
* add HB_ prefix to defined macro.
* some formatting.
|
|
e310f811
|
2025-09-15T00:58:07
|
|
[instancer/gvar] Speed up hash lookup-set
|
|
7a57c3c1
|
2025-09-15T00:52:50
|
|
[instancer/gvar] Simplify sorting
|
|
b51ea436
|
2025-09-15T00:44:49
|
|
[gvar] Micro-opt instancing
|
|
4d590199
|
2025-09-14T18:04:51
|
|
[instancer/tuplevar] Allocate intermediates array on demand
|
|
35212ba3
|
2025-09-14T17:46:13
|
|
[gvar] Change a storage type
No functional change.
|
|
20457df5
|
2025-09-14T16:05:29
|
|
[map] Tune for small maps
|
|
323901f8
|
2025-09-14T13:47:32
|
|
[instancer/tuplevars] Reduce work by combining two loops
|
|
eb6de664
|
2025-09-14T13:13:22
|
|
[instancer/tuplevars] Reduce work
|
|
90ea408e
|
2025-09-13T18:18:08
|
|
[map] Speed up copying of trivially-assignable types
|
|
fd282dcf
|
2025-09-13T17:56:34
|
|
[map] Speed up operator= for trivial item types
|
|
1f936e23
|
2025-09-13T16:58:45
|
|
[instancer] Try to move instead of copy some tuples
|
|
2319d763
|
2025-09-13T16:21:34
|
|
[TupleValues] Micro-optimize encoding
Also, a check for 32bit values in the word-encoding function
was missing. Ouch.
|
|
f2c4ab45
|
2025-09-13T16:14:55
|
|
[instancer/varstore] Micro-optimize
|
|
b97369bb
|
2025-09-13T14:10:20
|
|
Merge pull request #5549 from harfbuzz/instancer-varstore-optimize-compromise
[instancer/varstore] Only optimize instanced varstore incrementally
|
|
cf6c9d8a
|
2025-09-13T13:49:56
|
|
[instancer/varstore] Put back sort again
In testing with GoogleSansFlex, this produces slightly smaller
result.
|
|
c7e46ab2
|
2025-09-13T12:54:18
|
|
[instancer/varstore] Avoid copies in loops
|
|
7a430de3
|
2025-09-13T00:08:10
|
|
Add -Wpessimizing-move warning
Part of https://github.com/harfbuzz/harfbuzz/issues/5550
|
|
a4a50892
|
2025-09-12T23:41:40
|
|
[instancer/varstore] Speed up encoding merging
Don't recalculate chars from all row data.
|
|
f0a1289a
|
2025-09-12T19:25:57
|
|
[instancer/varstore] Massage optimizer a bit
|