src


Log

Author Commit Date CI Message
Behdad Esfahbod 41c8b99b 2025-10-22T18:47:07 Remove unused var
Khaled Hosny 46e3882f 2025-10-23T02:11:13 [subset] Don’t collect name IDs from STAT table if it is dropped (#5623)
Garret Rieger 07ee609f 2025-10-20T20:06:43 Fix invalid pointer conversions in graph Coverage. (#5622) For #5604.
Behdad Esfahbod 73f98256 2025-10-19T22:16:35 Revert "[match-backtrack] Fix syllable-setting logic (#5617)" (#5620) This reverts commit 2c934a6b396171df50bd867295b4c644316869f5. Revert until implications are sorted out: https://github.com/harfbuzz/harfbuzz/issues/5618
Behdad Esfahbod 2c934a6b 2025-10-19T00:31:31 [match-backtrack] Fix syllable-setting logic (#5617) If accidentally backtrack_len() was equal idx, we were setting syllable, even though we want to match backtrack, which shouldn't match syllable. I'm surprised how this was not exposed before. Fixes https://github.com/harfbuzz/harfbuzz/issues/5597
Behdad Esfahbod b98ec960 2025-10-18T15:00:45 [cache] Fix get() check for item_t=int16_t Fixes https://github.com/harfbuzz/harfbuzz/issues/5616
Behdad Esfahbod f159600c 2025-10-17T21:49:40 Fix a draw fuzzer uninitialized-memory issue (#5615) Fixes https://oss-fuzz.com/testcase-detail/5714890590584832
Behdad Esfahbod 5973479e 2025-10-17T16:21:51 [shape] Don't do font-funcs-based kerning for most shapers
Behdad Esfahbod 07f0cba3 2025-10-17T15:23:05 [alloc-pool] Fix MSVC warning Fixes https://github.com/harfbuzz/harfbuzz/issues/5613
Behdad Esfahbod 63e8c13e 2025-10-15T12:41:50 [hangul] Enable fallback position / kern table https://github.com/harfbuzz/harfbuzz/pull/5609#issuecomment-3400878406
Behdad Esfahbod 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.
higher-performance 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.
Harry Dalton 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
Khaled Hosny cb59b347 2025-10-01T08:24:34 12.1.0
Behdad Esfahbod 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
Behdad Esfahbod 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
Behdad Esfahbod af286b8f 2025-09-30T12:59:34 [Coverage] Simplify initialization
Behdad Esfahbod 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
Behdad Esfahbod 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
Khaled Hosny 720f1a3b 2025-09-28T00:55:46 12.0.0
Qunxin Liu 0952bc0a 2025-09-26T09:10:28 [subset] de-duplicate features (#5494)
Behdad Esfahbod 6a2453bb 2025-09-25T21:54:20 Reapply "[VARC] Graduate out of experimental" (#5588) This reverts commit 673934f2ce569b81a2ac094d2316033425ab6928.
Behdad Esfahbod 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
Behdad Esfahbod 88844e2e 2025-09-24T13:28:28 [rust] Tweak debugoptimized again Now on par in perf with release, but nice stacktraces.
Behdad Esfahbod 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.
Behdad Esfahbod fc761725 2025-09-24T12:42:53 [ValueFormat] comment
Behdad Esfahbod 9eb4318e 2025-09-24T00:04:19 Fix fuzzer issue
Behdad Esfahbod 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.
Behdad Esfahbod 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
Behdad Esfahbod d350cb83 2025-09-23T19:47:01 Speed up ValueFormat len() calc
Behdad Esfahbod 88dfa2ab 2025-09-23T22:34:02 On gcc <= 12 don't use num fast path (#5578) Fixes https://github.com/harfbuzz/harfbuzz/issues/5456
Behdad Esfahbod 3b1e9efb 2025-09-23T19:09:46 [bit-page] Remove leftover bits from iterator
Behdad Esfahbod 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.
Behdad Esfahbod 2bcee180 2025-09-23T20:44:44 [shape] Fix up propagate-flags after previous changes (#5582)
Behdad Esfahbod c4ad58e3 2025-09-23T18:32:42 [shape] Fix typo in propagate_flags
Behdad Esfahbod 73afc003 2025-09-23T20:30:06 Propagate flags speedup (#5581) * [shape] Micro-opt * [shape] Speed up propagate_flags
Qunxin Liu fdb80534 2025-09-23T14:32:41 [subset-repacker] bug fix: copy markFilteringSet field if exists (#5579)
Behdad Esfahbod 98d14b43 2025-09-23T13:32:15 [chaincontext] Micro-optimize a conditional away
Behdad Esfahbod e3a5152b 2025-09-23T11:55:26 [buffer] Micro-opt next_glyphs()
Behdad Esfahbod 88b7a4f4 2025-09-23T11:23:03 [set-digest] Comments
Behdad Esfahbod 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.
Behdad Esfahbod b2a6375b 2025-09-22T17:31:11 [ot-shape] Update update_digest() calls Correction to ccfd1ae2d68b920702c10b34711b72d5ac6ad39c
Behdad Esfahbod 3ce3853a 2025-09-22T17:17:28 Merge pull request #5575 from harfbuzz/apply-forward-speedup [apply-forward] Speed up glyph skipping
Behdad Esfahbod eeb16bd4 2025-09-22T16:33:52 [apply-forward] Speed up glyph skipping 6% speedup in Roboto-Regular benchmark.
Behdad Esfahbod 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.
Behdad Esfahbod 19b026b3 2025-09-22T14:48:42 [iup] Use a member pointer
Behdad Esfahbod 34771620 2025-09-22T14:45:42 [iup] Add an early exit
Behdad Esfahbod 1c7c3e50 2025-09-22T14:36:02 [iup] Micro-optimize Doesn't matter.
Khaled Hosny 7497c414 2025-09-22T19:58:28 11.5.1
Behdad Esfahbod e1fd2bee 2025-09-18T11:18:09 [alloc-pool] Reduce memory usage by reclaiming some discards
Behdad Esfahbod a22add25 2025-09-18T11:04:06 [alloc-pool] Implement alignment
Behdad Esfahbod 08ff7200 2025-09-18T10:57:43 [set] Speed up iterator
Behdad Esfahbod 23024337 2025-09-17T15:32:46 [instancer/iup] Reduce mallocs again Perhaps shrink() shouldn't default to realloc. Working on it.
Behdad Esfahbod 2be836c1 2025-09-17T00:31:50 Revert "[instancer] Preallocate coordinate maps from alloc pool as well" This reverts commit 3f71afe7605cdc7260990f8925e6ed49521fe728. Slowed things down.
Behdad Esfahbod 3f71afe7 2025-09-17T00:22:39 [instancer] Preallocate coordinate maps from alloc pool as well
Behdad Esfahbod c03e1e0a 2025-09-16T18:15:51 [iup] Use a bit-page instead of bit-set Reject large contours instead.
Behdad Esfahbod d4cc4823 2025-09-16T17:00:38 [instancer/tuplevar] Tune allocation size
Behdad Esfahbod 5b04b40d 2025-09-16T16:52:53 [instancer/tuplevars] Allocate compiled_deltas from alloc pool
Behdad Esfahbod ea9b7de4 2025-09-16T16:45:02 [instancer/tuplevars] Allocate compiled_tuple_headers from alloc pool
Behdad Esfahbod bdac0aec 2025-09-16T16:42:32 [vector] Make shrink() useful in un-owned vectors
Behdad Esfahbod c2f21215 2025-09-16T16:29:23 [vector] Simplify allocate_from_pool / set_storage
Behdad Esfahbod fb0ef230 2025-09-16T11:16:30 Revert "[tuplevars] Allocate from pool" This reverts commit 94d78de954ab22f3717cc399920670f877616567. Slowed things down.
Behdad Esfahbod 94d78de9 2025-09-16T11:13:19 [tuplevars] Allocate from pool
Behdad Esfahbod f7e2d9a0 2025-09-16T11:10:49 [alloc-pool] Tweak
Behdad Esfahbod f5fdf426 2025-09-16T02:28:29 [tuplevar] Use pool for duplicating
Behdad Esfahbod f9cd59ae 2025-09-16T01:45:36 [tuplevar] More use of pool
Behdad Esfahbod 12ce710f 2025-09-16T01:44:47 [tuplevar] Use alloc-pool instead of custom pool
Behdad Esfahbod 43e017f8 2025-09-16T01:31:21 [tupledelta] Micro optimize
Behdad Esfahbod ebdeb2e3 2025-09-16T01:09:46 [tuplevalues] Speed up encoding
Behdad Esfahbod 755ed109 2025-09-16T00:40:28 Add hb-alloc-pool and use in gvar instancer
Behdad Esfahbod d6b08019 2025-09-15T23:56:25 Rename hb-pool to hb-free-pool
Behdad Esfahbod 82370913 2025-09-15T20:16:52 [vector] Simplify resize()
Behdad Esfahbod c56ef9ed 2025-09-15T20:10:54 [instancer] Reuse more allocations These allocs are scratched. Don't free them, so we reuse.
Behdad Esfahbod 8e3e8c66 2025-09-15T19:49:11 [iup] Reuse more allocations
Behdad Esfahbod bac2a67c 2025-09-15T19:30:46 Merge pull request #5563 from harfbuzz/instancer-gvar-consolidate-mallocs Instancer gvar consolidate mallocs
Behdad Esfahbod 82ca73a2 2025-09-15T19:12:40 [iup] Reuse more vector allocs
Behdad Esfahbod e42714cf 2025-09-15T19:05:38 [iup] Reuse bit-set allocs
Behdad Esfahbod 54ac33cc 2025-09-15T19:00:34 [iup] Reuse more mallocs
Behdad Esfahbod 045bd691 2025-09-15T18:56:55 [iup] Use bit-set instead of set
Behdad Esfahbod 5e816ef7 2025-09-15T18:43:22 [iup] Reuse vectors
Behdad Esfahbod a64ab6c6 2025-09-15T17:47:07 [iup] Reduce hb_set_t allocs
Behdad Esfahbod 5928a3c7 2025-09-15T17:17:15 [iup] Reduce vector allocs
Behdad Esfahbod df18518f 2025-09-15T17:14:31 [iup] Don't sqrt
Behdad Esfahbod db86e546 2025-09-15T16:41:31 [instancer/gvar] Combine peak_coords mallocs into one chunk
Garret Rieger 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.
Behdad Esfahbod 26cc7355 2025-09-15T15:49:36 [vector] Remove a comment
safocl 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.
Behdad Esfahbod e310f811 2025-09-15T00:58:07 [instancer/gvar] Speed up hash lookup-set
Behdad Esfahbod 7a57c3c1 2025-09-15T00:52:50 [instancer/gvar] Simplify sorting
Behdad Esfahbod b51ea436 2025-09-15T00:44:49 [gvar] Micro-opt instancing
Behdad Esfahbod 4d590199 2025-09-14T18:04:51 [instancer/tuplevar] Allocate intermediates array on demand
Behdad Esfahbod 35212ba3 2025-09-14T17:46:13 [gvar] Change a storage type No functional change.
Behdad Esfahbod 20457df5 2025-09-14T16:05:29 [map] Tune for small maps
Behdad Esfahbod 323901f8 2025-09-14T13:47:32 [instancer/tuplevars] Reduce work by combining two loops
Behdad Esfahbod eb6de664 2025-09-14T13:13:22 [instancer/tuplevars] Reduce work
Behdad Esfahbod 90ea408e 2025-09-13T18:18:08 [map] Speed up copying of trivially-assignable types
Behdad Esfahbod fd282dcf 2025-09-13T17:56:34 [map] Speed up operator= for trivial item types
Behdad Esfahbod 1f936e23 2025-09-13T16:58:45 [instancer] Try to move instead of copy some tuples
Behdad Esfahbod 2319d763 2025-09-13T16:21:34 [TupleValues] Micro-optimize encoding Also, a check for 32bit values in the word-encoding function was missing. Ouch.
Behdad Esfahbod f2c4ab45 2025-09-13T16:14:55 [instancer/varstore] Micro-optimize