src


Log

Author Commit Date CI Message
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
Behdad Esfahbod b97369bb 2025-09-13T14:10:20 Merge pull request #5549 from harfbuzz/instancer-varstore-optimize-compromise [instancer/varstore] Only optimize instanced varstore incrementally
Behdad Esfahbod cf6c9d8a 2025-09-13T13:49:56 [instancer/varstore] Put back sort again In testing with GoogleSansFlex, this produces slightly smaller result.
Behdad Esfahbod c7e46ab2 2025-09-13T12:54:18 [instancer/varstore] Avoid copies in loops
Behdad Esfahbod 7a430de3 2025-09-13T00:08:10 Add -Wpessimizing-move warning Part of https://github.com/harfbuzz/harfbuzz/issues/5550
Behdad Esfahbod a4a50892 2025-09-12T23:41:40 [instancer/varstore] Speed up encoding merging Don't recalculate chars from all row data.
Behdad Esfahbod f0a1289a 2025-09-12T19:25:57 [instancer/varstore] Massage optimizer a bit
Behdad Esfahbod a878dca0 2025-09-12T19:19:07 [instancer/varstore] Remove sorting from the optimizer Just work with incoming order.
Behdad Esfahbod e16be515 2025-09-12T17:42:57 [instancer/varstore] Only optimize instanced varstore incrementally See comments. This basically wipes of the varstore optimization costs out of the profiles, which saves eg. 25% total time in GoogleSansFlex instantiation, with practically no file size downside.
Behdad Esfahbod a4087e7f 2025-09-12T15:48:26 [instancer/varlib] Minor non-functional change
Behdad Esfahbod d8c1bce2 2025-09-12T14:39:38 [instancer/varstore] Mark a function HOT
Garret Rieger aa58b43d 2025-09-12T14:24:41 [subset] Introduce HB_SUBSET_FLAGS_RETAIN_NUM_GLYPHS. (#5547) Used in conjunction with retain gids, when set the num glyphs from the input font will be preserved. Empty glyphs will be inserted as necessary to maintain the num glyphs value. Put under experimental for now.
Behdad Esfahbod bf8929fb 2025-09-12T13:32:38 11.5.0
Behdad Esfahbod 74c31861 2025-09-12T13:31:29 [rust] Update to HarfRust 0.3.0 (#5548)
Behdad Esfahbod 3965e9a6 2025-09-12T13:12:05 [instancer/varstore] Change sort key (#5540) See https://github.com/harfbuzz/harfbuzz/pull/5540
Behdad Esfahbod c9480db9 2025-09-12T12:22:17 [instancer/varstore] Add a heuristic to speed up optimization
David Corbett dce73766 2025-09-12T13:56:01 [Unicode 17] Update the script direction list
Behdad Esfahbod 0f1dab0f 2025-09-12T11:43:21 [instancer/varstore] More gain_from_merging optimization (#5543) * [instancer/varstore] More gain_from_merging optimization * [tests] Re-enable a test that was disabled until an issue fixed See comment.
Behdad Esfahbod e4957b0c 2025-09-12T10:57:49 [varLib/instancer] Simplify gain encoding
Behdad Esfahbod 20d7ef5f 2025-09-12T10:45:08 [instancer/varstore] Change gain encoding gain can be high in theory.
Behdad Esfahbod ca9a8aba 2025-09-12T03:50:46 Revert "[instancer/varstore] Micro-optimize" This reverts commit 7484eb5807d6127bea6b888a7d8fdad1b73a8c0b.
Behdad Esfahbod f12be45c 2025-09-12T03:42:49 [instancer/varstore] Optimize gain comparisons
Behdad Esfahbod 7484eb58 2025-09-12T03:16:59 [instancer/varstore] Micro-optimize
Behdad Esfahbod 92ec75f8 2025-09-12T03:13:25 [instancer/varstore] Micro-optimize
Behdad Esfahbod 14e7d5b2 2025-09-12T03:04:59 [instancer/varstore] Speed up gain_from_merging 10% speedup instancing GoogleSansFlex.
Behdad Esfahbod 006ec160 2025-09-12T02:52:29 [instancer/varstore] Minor refactor in anticipation of next change
Behdad Esfahbod aba798dd 2025-09-12T00:52:40 [instancer/varstore] Use heapify() instead of inserts()