Log

Author Commit Date CI Message
Behdad Esfahbod be22e43d 2025-02-09T14:55:44 [test/fuzzing] Run each fuzzer on all fonts in one process Much much faster, specially under valgrind, than spawning one process per font. Fixes https://github.com/harfbuzz/harfbuzz/issues/5061
Behdad Esfahbod b5e07e75 2025-02-09T14:04:20 Merge pull request #5060 from harfbuzz/glyf-contour-start-match-ft-ct [glyf] Change drawing algorithm to match FreeType / CoreText
Behdad Esfahbod 6738ee3d 2025-02-09T13:30:19 [ci/fedora-valgrind] Add time multiplier of 10 and run slow tests
Behdad Esfahbod fc4d5077 2025-02-09T13:28:45 [hb-draw-fuzzer] Increase test time I'm getting timeouts. Might be an infinite loop. But let's see.
Behdad Esfahbod 4b54ee11 2025-02-09T12:38:58 [glyf] Change drawing algorithm to match FreeType / CoreText
Behdad Esfahbod f858def1 2025-02-09T13:07:20 Revert "[test] Exclude google-benchmark tests by default if meson "recent"" This reverts commit 3c975a857f76c421793d62aaed1ba3382d06994d. See https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646149763
Behdad Esfahbod f68193a0 2025-02-09T11:43:07 [glyf] Use direct access to points array Not necessary faster. Prep'ing for next change.
Behdad Esfahbod 19a152b4 2025-02-09T12:37:03 [perf] Don't depend on libharfbuzz-subset for most benchmarks
Behdad Esfahbod 3c975a85 2025-02-09T08:58:55 [test] Exclude google-benchmark tests by default if meson "recent" https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646131694
Behdad Esfahbod cb6779f9 2025-02-09T08:39:03 [test] Try running slow tests early Probably already happens, but this wouldn't hurt. https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646125367
Behdad Esfahbod 134eef55 2025-02-09T08:22:38 [test] Reorder test suites Makes it a bit faster. https://github.com/harfbuzz/harfbuzz/issues/4153#issuecomment-2646120679
Behdad Esfahbod c55738fa 2025-02-09T08:08:52 [test] Set MALLOC_CHECK_ to 1 instead of 2; kill G_SLICE=always-malloc MALLOC_CHECK_=2 makes running tests twice slower on macOS. Value 1 is as fast as not checking at all. It's not like this ever caught a bug for us or anything. We have so many sanitizers and fuzzers funning on CI, which catch all kinds of memory problems. G_SLICE is long gone in glib. The slowest part of running the test suite now is the google-benchmark tests, that get run by us... I'll see if I can disable. I had reported it before at https://github.com/harfbuzz/harfbuzz/issues/4153
Behdad Esfahbod b13017e6 2025-02-09T08:00:18 Use HB_ALWAYS_INLINE instead of bare __attribute__ The former works on MSVC too.
Behdad Esfahbod ee19666c 2025-02-09T05:14:36 [hb-shape/view] Allow --unicodes and --text if at least one is empty Useful for scripting.
Behdad Esfahbod 5cab7419 2025-02-09T04:56:12 Merge pull request #5058 from harfbuzz/ot-font-trak [ot-font/trak] Move trak application to ot-font instead of ot-shape
Behdad Esfahbod 922a56f4 2025-02-09T04:50:17 [trak] Fix configs build
Behdad Esfahbod 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
Behdad Esfahbod 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
Behdad Esfahbod f840480f 2025-02-09T04:27:20 [trak] Remove leftover
Behdad Esfahbod 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...
Behdad Esfahbod 1150d4bf 2025-02-09T04:16:57 [trak] Remove support for disabling using pseudo-font-feature Fixes https://github.com/harfbuzz/harfbuzz/issues/5052
Behdad Esfahbod 4c06c3d6 2025-02-09T04:01:59 Merge pull request #5057 from harfbuzz/coretext-font-nonbmp [coretext-font] Support non-BMP characters
Behdad Esfahbod fb222953 2025-02-09T03:56:46 [coretext-font] Support non-BMP in variation-selector callback Fixes https://github.com/harfbuzz/harfbuzz/issues/5056
Behdad Esfahbod f6bf9f69 2025-02-09T03:52:13 [coretext-font] Do early-return in get_nominal_glyphs() Related to https://github.com/harfbuzz/harfbuzz/issues/5056
Behdad Esfahbod 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
Behdad Esfahbod b9675d6d 2025-02-09T03:01:21 Merge pull request #5055 from harfbuzz/trak-interpolate [trak] Interpolate between tracks
Behdad Esfahbod 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...
Behdad Esfahbod 1bf0a5bc 2025-02-09T02:43:09 [trak] Streamline a bit Also use float math.
Behdad Esfahbod 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
Behdad Esfahbod 691cc939 2025-02-06T20:08:16 [trak] Fix build without STAT
Behdad Esfahbod b8327fe6 2025-02-06T20:01:12 Fix compiler errors
Behdad Esfahbod f394206b 2025-02-06T19:48:56 [ot-shape] Only apply trak'ing if STAT table present
Behdad Esfahbod 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
Behdad Esfahbod ef00ac8c 2025-02-06T17:44:55 Merge pull request #5051 from harfbuzz/trak-choose [trak] Choose closest trak track to 0.0
Behdad Esfahbod 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.
Behdad Esfahbod 8efd2d85 2025-02-06T14:38:09 [coretext] Fix CGFont leak
Behdad Esfahbod b5327faf 2025-02-06T14:26:37 Fix leak From recent work.
Behdad Esfahbod 24fe2be9 2025-02-06T11:55:23 [subset] Fix undefined-behavior
Behdad Esfahbod 97db7bb2 2025-02-06T11:01:59 [set-digest] Cosmetic
Behdad Esfahbod f0d6a366 2025-02-06T02:51:50 [face] Use a macro
Behdad Esfahbod 7bdc6c9a 2025-02-06T02:47:13 Whitespace
Behdad Esfahbod 6091abcc 2025-02-06T02:40:24 [buffer] Avoid a copy in collect_codepoints()
Behdad Esfahbod e5e3bc40 2025-02-06T02:36:26 [buffer] Merge two functions into a template
Behdad Esfahbod 403f12f7 2025-02-06T02:33:41 [buffer] A few always-inline's
Behdad Esfahbod 4818ba9e 2025-02-06T01:50:12 [set-digest] Yet another tuning Saves 5% on SF Pro while regressing 2% on Roboto.
Behdad Esfahbod c7378294 2025-02-06T01:42:25 [OT] Remove likely() from coverage check Not that it matters, but because of the set-digest, this path is not very likely() anymore.
Behdad Esfahbod 3577992a 2025-02-06T01:30:59 [gsubgpos] Simplify a destruction
Behdad Esfahbod d0d256bb 2025-02-06T01:26:33 [bit-page] Move a couple methods around
Behdad Esfahbod a4cd11de 2025-02-06T01:10:40 [bit-page] Micro-optimize
Behdad Esfahbod 0a678a92 2025-02-06T01:02:44 Fix leak
Behdad Esfahbod cad264b2 2025-02-06T00:56:16 Indent
Behdad Esfahbod 63c92d5a 2025-02-06T00:52:41 [set-digest] always-inline
Behdad Esfahbod d712a028 2025-02-06T00:43:10 [set-digest] Back to a 3-entry, with different parameters now We used to use 4,0,9 for years. Now 3,0,6. It is slightly faster and shouldn't regress common fonts. The rationale is that OT GSUB/GPOS are split by script, so any particular script is not likely to use more than a few thousands of (consecutive mostly) glyphs. The exception is CJK of course, but those have less GSUB/GPOS work.
Behdad Esfahbod f5fe66cf 2025-02-06T00:36:58 [set-digest] Minor sanity
Behdad Esfahbod 4e75dfae 2025-02-05T23:57:37 Hide unused member
Behdad Esfahbod 99043f20 2025-02-05T20:11:27 [gsubgpos] Tweak cache again
Behdad Esfahbod 69057e6e 2025-02-05T19:50:38 [Ligature] Cache coverage the same way as PairPos1 Another 7% down on Roboto-Regular.
Behdad Esfahbod 3975e220 2025-02-05T19:44:08 Merge branch 'pairpos-cache'
Behdad Esfahbod e535c683 2025-02-05T19:41:03 [Context] Simplify cache costing
Behdad Esfahbod 7a746c32 2025-02-05T19:38:25 [Coverage] Fix cache cost reporting
Behdad Esfahbod 9a15e0e6 2025-02-05T19:37:27 Merge pull request #5043 from harfbuzz/pairpos-cache [OT] PairPos cache
Behdad Esfahbod 5be62a9f 2025-02-05T19:30:01 [PairPosFormat1] Use a coverage cache as well Speeds up Arial shaping by 3%.
Behdad Esfahbod 726af2e4 2025-02-05T18:10:40 [PairPos] Use a class cache 10% speedup on Roboto-Regular. 5% on SF Pro.
Behdad Esfahbod acd122d0 2025-02-05T17:38:39 [gsubgpos] Prepare for per-lookup allocated caches
Behdad Esfahbod 3f40edbf 2025-02-05T17:25:27 [ClassDef] Add ability to use a cache
Behdad Esfahbod f22943a2 2025-02-05T18:51:11 [PairPos] Cache coverage as well Another 3% down in Roboto-Regular.
Behdad Esfahbod 7392f32e 2025-02-05T19:16:08 [face] Tweak stack again Let's go with one loop iteration. It's cheap.
Behdad Esfahbod 515b6a58 2025-02-05T19:13:19 [face] Minor stack var size change
Behdad Esfahbod 601dd1a7 2025-02-05T19:10:41 [face-builder] Fix an OOM issue Fixes https://oss-fuzz.com/testcase-detail/5721476158521344
Behdad Esfahbod c05002af 2025-02-05T16:46:13 [set] Add may_have() as alias for get()
Behdad Esfahbod ad7f428b 2025-02-05T16:44:04 [set-digest] Comment
Behdad Esfahbod 900db7b1 2025-02-05T16:41:49 [bit-set] Add a couple of alias methods
Behdad Esfahbod 942a30b7 2025-02-05T14:21:49 [aat] Remove now-unused code
Behdad Esfahbod 44281b28 2025-02-05T14:19:01 [aat] Back to simplified heuristic Performs overall better.
Behdad Esfahbod dc8da612 2025-02-05T14:12:55 Merge pull request #5042 from harfbuzz/aat-regression [aat] Fix performance regression
Behdad Esfahbod b857b21a 2025-02-05T13:15:15 [morx] Try using buffer-glyph-set adaptive to number of chains
Behdad Esfahbod 491c8c4e 2025-02-05T13:00:09 Revert "[aat] Change threshold from 4 to 16" This reverts commit 624d6edfe4a4b854cf5e66c3fdeb6fc2e1916e14. Some other benchmarks see better results for 4. Let's leave at that.
Behdad Esfahbod 624d6edf 2025-02-05T12:45:57 [aat] Change threshold from 4 to 16 Still worth it it seems.
Behdad Esfahbod a26cf0f4 2025-02-05T12:41:40 [aat] Fix regression in performance of shaping tiny strings
Behdad Esfahbod cec5c571 2025-02-05T12:37:50 [aat] Refactor a method
Behdad Esfahbod cd5dfc6d 2025-02-05T12:32:02 [kerx] Use hb_bit_set_t instead of hb_set_t
Behdad Esfahbod d40c079f 2025-02-05T12:30:56 [morx] Use hb_bit_set_t instead of hb_set_t directly
Behdad Esfahbod 7b927748 2025-02-05T12:25:54 [bit-set] Rename a method
Behdad Esfahbod b44f6ff5 2025-02-05T12:19:48 [perf/texts] Add a list of just 2letter strings
Behdad Esfahbod f7385340 2025-02-05T12:19:30 Merge pull request #5041 from harfbuzz/aat-machine-initial [morx] Only collect glyphs that can initiate action in the machine
Behdad Esfahbod fc825168 2025-02-05T11:17:18 [aat] Remove idempotent check Not necessary after the recent filtering. Another 10% speedup with LucidaGrande.
Behdad Esfahbod 849b1735 2025-02-05T11:05:29 [aat] Divide the logic of is_actionable() into two The two different uses require different logic. I had combined the two logic into one in 37bfdf79c66ffbe4a5f02dbbc13756865ca11c1e
Behdad Esfahbod b4787838 2025-02-05T10:52:26 [aat] Speed up per-machine initial-glyph-set calculation Use a bit-page instead of a full hb-set.
Behdad Esfahbod 7d14eb5e 2025-02-05T10:46:28 [aat] Minor rename
Behdad Esfahbod 6215d68b 2025-02-05T10:43:24 [aat] Minor tweak to logic DELETED_GLYPH can also initiate action.
Behdad Esfahbod dc4ff701 2025-02-05T10:42:33 [bit-page] Add a couple of operators
Behdad Esfahbod 37bfdf79 2025-02-05T02:08:19 [morx] Only collect glyphs that can initiate action in the machine And match them against the buffer glyph_set. 4% speedup in LucidaGrande.
Behdad Esfahbod d9e99baa 2025-02-05T02:06:59 [aat] Move is_actionable outside of the driver_context
Behdad Esfahbod 5ade5bab 2025-02-05T01:53:09 [aat] Move Flags out of driver_context_t
Behdad Esfahbod 9f38690e 2025-02-05T01:39:28 [aat] Remove another unused parameter One logic change, but should be fine.
Behdad Esfahbod d9058c64 2025-02-05T01:38:06 [aat] Remove an unused parameter
Behdad Esfahbod 1a278073 2025-02-05T00:35:40 [array] Micro-optimize
Behdad Esfahbod c87bfe41 2025-02-05T00:22:27 [morx] Reuse a variable
Behdad Esfahbod e99e6538 2025-02-05T00:08:29 [aat-map] Micro-optimize a malloc
Behdad Esfahbod 3e27038f 2025-02-04T23:39:42 [aat-map] Micro-optimize