src


Log

Author Commit Date CI Message
Behdad Esfahbod 1c07f48b 2025-05-06T09:46:39 Fix build with HB_NO_DRAW and HB_NO_PAINT Fixes https://github.com/harfbuzz/harfbuzz/issues/5313 Fixes https://github.com/harfbuzz/harfbuzz/issues/5316
Khaled Hosny 77c24e8a 2025-05-06T13:17:13 [check-*.py] Remove autotoolism Instead of passing source dir and build dir to as envvars, pass them directly as script arguments. The scripts also were supposed to be able to run outsize of the build scripts, but this was broken since the fallback when the envvars were not set was wrong. The HBSOURCES and HBHEADERS are still passed as envvars since they are long lists and might hit command line length limitation on some systems.
Khaled Hosny a5d4e7ba 2025-05-06T12:49:57 [check-static-inits.py] Cleanup
Khaled Hosny d4035292 2025-05-06T12:33:33 [check-*.py] Format
Khaled Hosny 63cdd745 2025-04-28T14:28:29 11.2.0
Behdad Esfahbod 47a73eab 2025-04-25T16:21:12 [coretext] Add a version check Fixes https://github.com/harfbuzz/harfbuzz/issues/5300
Behdad Esfahbod 861b20b0 2025-04-25T09:31:19 [coretext] Switch away from deprecated API
Behdad Esfahbod 441f3b68 2025-04-25T09:27:40 [directwrite] Port off of deprecated API https://github.com/harfbuzz/harfbuzz/pull/5299#issuecomment-2829435360
Behdad Esfahbod 59334682 2025-04-23T20:56:32 [shape] Only apply slant to shaping results if horizontal
Behdad Esfahbod 52f9ca11 2025-04-23T20:05:59 [check-symbols] Ignore more Rust symbols
Behdad Esfahbod ff0b1f54 2025-04-23T19:28:54 [font] Comment
Behdad Esfahbod e71a88d3 2025-04-23T19:17:31 [paint] Fix crash
Behdad Esfahbod 6688a03c 2025-04-23T19:06:52 [sbix/CBDT] Fix memory leaks in error case
Behdad Esfahbod 29d9a7a5 2025-04-23T18:55:52 [font] Fix get_glyph_extents() logic
Behdad Esfahbod 40b03fdb 2025-04-23T18:33:14 [ft] Don't request NO_BITMAP in paint()
Behdad Esfahbod 01f485fd 2025-04-23T18:21:43 [cairo] Adjust draw/paint
Behdad Esfahbod 17238eae 2025-04-23T18:15:56 [ot/ft/fontations] Port to new _or_fail of draw/paint APIs
Behdad Esfahbod 38db1fac 2025-04-23T18:02:06 [paint] Change back return type of paint_glyph() to void Add new "_or_fail" variants of draw_glyph and paint_glyph New API: +hb_font_draw_glyph_or_fail_func_t +hb_font_paint_glyph_or_fail_func_t +hb_font_funcs_set_draw_glyph_or_fail_func() +hb_font_funcs_set_paint_glyph_or_fail_func() +hb_font_draw_glyph_or_fail() +hb_font_paint_glyph_or_fail() Deprecated API: -hb_font_draw_glyph_func_t -hb_font_paint_glyph_func_t -hb_font_funcs_set_draw_glyph_func() -hb_font_funcs_set_paint_glyph_func()
Behdad Esfahbod eb226383 2025-04-23T01:20:48 [font] Synthesize glyph extents if needed See code for logic. Fixes https://github.com/harfbuzz/harfbuzz/issues/5273
Behdad Esfahbod e78310bf 2025-04-23T00:58:08 [paint] Change return type to bool, and return false for outline glyphs It was impossible to get synthetic bold/slant correctly with the previous API. This is a minor API break, but one I'm willing to take.
Behdad Esfahbod a23021e1 2025-04-23T00:43:56 [COLRv1] Simplify paint_glyph() Pass a non-synthetic font to the client, so they don't have to worry about it. The only issue left, is that now when paint_glyph() paints an outline glyph (not color glyph), it would be double-slanted. I'm leaning towards removing painting of outline glyphs from the paint API and change the paint API to return a boolean.
Behdad Esfahbod 023e2294 2025-04-22T23:09:47 [cairo] Solely use public API I actually don't know how hb-font.hh is pulled into hb-cairo.cc. I can't figure it out!
Behdad Esfahbod 6f6d6e8c 2025-04-22T23:04:31 [cairo] Remove redundant include
Behdad Esfahbod 5d9cff80 2025-04-22T23:01:28 [font] Move is_synthetic() to .hh
Behdad Esfahbod b9a1cd70 2025-04-22T22:54:34 [cairo] Use hb_font_is_synthetic() to speed up clip_glyph
Behdad Esfahbod bf28ca5f 2025-04-22T22:53:09 [paint] Mention hb_font_is_synthetic()
Behdad Esfahbod 853720ea 2025-04-22T22:51:40 [font] Add hb_font_is_synthetic() New API: +hb_font_is_synthetic()
Behdad Esfahbod 4c0a925e 2025-04-22T22:36:28 [paint] Document clip_glyph vs synthetic shapes hurdle
Behdad Esfahbod 01e9c77e 2025-04-22T21:57:02 [COLR] Fix clip-box Was slanting it. Was wrong with new code.
Behdad Esfahbod c57f49f7 2025-04-22T21:32:35 [ft] Return false from get_extents for COLR glyphs
Behdad Esfahbod fcbe7676 2025-04-22T21:22:31 [fontations] Return false from get_extents for COLR glyphs
Behdad Esfahbod e9ae6cc5 2025-04-22T21:14:50 [cairo] Draw unsynthetic glyphs during COLRv1 Fixes the double-slanting issue of COLRv1 glyphs.
Behdad Esfahbod 395bc276 2025-04-22T21:05:53 [font] Fix draw_glyph default implementation to new scheme
Behdad Esfahbod a69713b5 2025-04-22T21:01:04 [color] Move slanting to font layer COLRv1 is still being double-slanted. Investigating.
Behdad Esfahbod 9dbb84e6 2025-04-22T20:25:44 [font] Don't apply synthetic bold/slant to parent Fixes https://github.com/harfbuzz/harfbuzz/issues/5274
Behdad Esfahbod 1a9e2175 2025-04-22T19:52:21 [font/draw] Move slanting to font layer I moved it to the draw layer in 11.0.0; That was a bad design: font-funcs should NOT be responsible for synthetic bold & slant. This design reverts that and makes the font layer apply it, using a recording. This is a minor API change from 11.0.0 since hb_draw_state_t::slant_xy which was introduced in 11.0.0, is removed now. I believe no client had started using it. It was only relevant to other font-funcs draw implementations.
Behdad Esfahbod 9ef82f89 2025-04-22T19:35:34 [font] Embolden font_v_extents
Behdad Esfahbod 5ebd740e 2025-04-22T19:28:16 [font] Move font_h_extents emboldening to font layer
Behdad Esfahbod 0d871727 2025-04-22T15:40:06 [buffer] Limit the extent of set_flags range We can easily get into O(n^2) otherwise.
Behdad Esfahbod 05362548 2025-04-20T05:06:54 Merge pull request #5294 from harfbuzz/paint-bounds [COLRv1] `paint-bounds`
Behdad Esfahbod c62af2c3 2025-04-20T04:53:33 [paint-unbounded] Minor tweak I like it better this way.
Behdad Esfahbod 6e2806e4 2025-04-20T04:47:58 [paint-bounded] Reduce vector use Keep current drawing's boundedness outside of the vector (common case). Again, no speedup because of the scratch pattern.
Behdad Esfahbod 27b2e16a 2025-04-20T04:34:40 [atomic] Make cmpexch() non-const Was a mistake. Make the affected members mutable instead.
Behdad Esfahbod 7aa3ab93 2025-04-20T04:28:28 [paint-bounded] Remove one vector Doesn't make things faster though because of the scratch pattern.
Behdad Esfahbod 78822b63 2025-04-20T04:23:35 Revert "[COLRv1] Move paint boundedness check to font layer" This reverts commit c9a26fbf47f01fdd55df1a0ccc81111cb07bf108.
Behdad Esfahbod c9a26fbf 2025-04-20T04:22:32 [COLRv1] Move paint boundedness check to font layer This way it will apply to fontations and future implementations as well. But this slows down things apparently, specially if the font does use clipboxes. So I'm going to revert.
Behdad Esfahbod 8aa88aa4 2025-04-20T04:08:41 [COLRv1:ot/ft] Use paint-bounded instead of paint-extents Faster. Note that this also means that if there is no clip-box, we don't compute the bounds and emit an initial clip anymore. That was totally unnecessary and against the COLRv1 rendering algorithm. This makes painting of COLRv1 fonts without clipboxes *much* faster, as previously we were computing bounds using all subglyph outlines. Not anymore. Before: BM_Font/paint_glyph/Nupuram-Color.colrv1.ttf/ot 1.78 ms After: BM_Font/paint_glyph/Nupuram-Color.colrv1.ttf/ot 0.155 ms
Behdad Esfahbod d175e221 2025-04-20T03:29:11 [paint-bounded] Add new code to compute boundedness of paintings This is faster than using paint-extents to just compute boundedness. Unused right now.
Behdad Esfahbod 4a9ac263 2025-04-20T02:12:40 [draw] Move draw_extents form paint-extents to draw
Behdad Esfahbod 4fc84b0e 2025-04-20T00:36:28 [ot-font] Fix order of COLR vs VARC extents COLR can reference VARC, not the other way around.
Behdad Esfahbod 01793d3e 2025-04-20T00:32:44 [fontations] Pop font transform
jfkthame 4e7b178f 2025-04-17T15:05:20 Avoid unannotated-fallthrough in hb-ot-layout-base-table.hh
jfkthame 2602f729 2025-04-17T15:02:59 Avoid unannotated-fallthrough warning in COLR.hh
Khaled Hosny 416e6b69 2025-04-16T20:21:27 11.1.0
Behdad Esfahbod 32b36fa8 2025-04-15T12:14:01 [atexit] Fix extra semicolon Fixes https://github.com/harfbuzz/harfbuzz/issues/5290
Behdad Esfahbod bc15ebde 2025-04-15T12:37:11 [font] Fix abs of int value
Behdad Esfahbod 8f413a53 2025-04-15T10:03:16 [layout] Docs
Behdad Esfahbod 7bb3000a 2025-04-13T12:46:52 [font] Allow negative emboldening strength to enlighten
Khaled Hosny e192a584 2025-04-15T15:52:52 [check-symbols] Ignore another rust symbol Fixes https://github.com/harfbuzz/harfbuzz/issues/5287
robxnano cf7bffb6 2025-04-05T12:42:47 meson: Use full path in HBSOURCES Using the file object directly in a format string is broken and now deprecated.
robxnano 9def626d 2025-04-05T12:37:09 meson: Fix warnings about features in later versions By using the fs.relative_to() function inside version_compare blocks, Meson can suppress warning messages about it being used in a project with a lower minimum version.
robxnano e2a865f0 2025-04-05T12:29:28 meson: Only check for _MSC_FULL_VER once Prevents the log from filling with repeated calls to check the value of the define.
Garret Rieger efcb7d3d 2025-04-11T23:34:06 [subset] close unicodes over bidi mirror variants during subsetting. Fixes #5281. Does the closure by default, but I've introduced a new flag and option to disable this behaviour since some users may want to get the minimal set if they know they don't need the mirrored variants.
Garret Rieger 5afbd187 2025-04-09T22:48:27 [subset] Split subset plan variations function into separate file. Compile times for hb-subset-plan.cc go from 16s -> 13s.
Garret Rieger d3ccdcdd 2025-04-09T22:26:59 [subset] Move GDEF subset planning into hb-subset-plan-layout.cc
Garret Rieger b33f2e26 2025-04-09T22:11:12 [subset] Start splitting layout specific subset plan functionality. The aim is to reduce the compiled time of hb-subset-plan.cc which on my machine takes almost 30s to compile.
Behdad Esfahbod ab323515 2025-04-08T22:13:02 [common] Move hb_script_t enum to a separate file Fixes https://github.com/harfbuzz/harfbuzz/issues/5271
Behdad Esfahbod 5f80cc16 2025-04-08T02:11:11 [directwrite] Fix build
Behdad Esfahbod 6b012428 2025-04-08T01:58:10 [mutex] Delete copy constructors
Behdad Esfahbod caa9cf2e 2025-04-08T01:50:51 [atomic] Remove unnecessary macro Had typo in it as well.
Behdad Esfahbod c7f98090 2025-04-07T16:36:42 [GPOS] Short-circuit variations if no axis set
Garret Rieger b1a0a4c2 2025-04-07T18:39:21 In OT::VarData::Serialize don't attempt to serialize an empty set of rows. Protects against incorrectly accessing rows[0] when rows is empty.
Khaled Hosny 2c4bc832 2025-04-07T04:53:51 [ot-math] Fix build with HB_NO_MATH
Behdad Esfahbod a3d626b4 2025-04-06T19:16:43 [test-object] Hopefully last ubsan fix API change: - hb_face_is_immutable() now takes `hb_face_t *` instead of previous `const hb_face_t *`. This should not pose any problem for any clients in our belief.
Behdad Esfahbod cc065cf2 2025-04-06T15:33:08 [test/subset] Better report passed tests
Behdad Esfahbod 1f1cbb64 2025-04-06T14:30:07 Merge pull request #5260 from harfbuzz/tap Use TAP protocol for tests
Behdad Esfahbod 5a468728 2025-04-06T13:05:43 Add test for https://github.com/harfbuzz/harfbuzz/issues/5232
Khaled Hosny 9718681c 2025-04-06T19:45:10 [meson] Require 0.60.0 Fixes https://github.com/harfbuzz/harfbuzz/issues/5261
Behdad Esfahbod 628a9ee2 2025-04-06T02:15:51 [check-static-inits] objdump all objects together We won't see which object has the bad initializers anymore. We can later adapt to objdump each object one by one if any error was found. Changes test runtime from 1s down to 0.15s.
Behdad Esfahbod 6acb2942 2025-04-06T02:34:34 [ft] Fix compiler warnings
Behdad Esfahbod a46b9320 2025-04-05T23:11:59 [subset] Remove printf from library!
Behdad Esfahbod d9304b69 2025-04-05T20:02:30 [subset] Fix i686 oss-fuzz build hopefully
Khaled Hosny f57b43c9 2025-04-05T14:54:11 [ot-math] Workaround bad displayOperatorMinHeight in Cambria Math See https://github.com/harfbuzz/harfbuzz/issues/4653 for details
Behdad Esfahbod 0457d3d7 2025-04-04T16:17:32 [buffer-deserialize] Ignore glyph extents Fixes https://github.com/harfbuzz/harfbuzz/issues/5169
Khaled Hosny 43a77849 2025-04-04T22:41:26 11.0.1
Behdad Esfahbod 13752124 2025-04-04T14:00:25 Fix compiler warnings
Behdad Esfahbod 623a7a41 2025-04-04T13:25:06 Whitespace
Behdad Esfahbod 7ba4e879 2025-04-04T12:39:10 [VarStore] Fix storage shift Use all bits. That's what I meant.
Khaled Hosny a5530503 2025-04-04T13:11:21 [coretext] Fix -Wformat warning ../src/hb-coretext.cc:202:62: warning: format specifies type 'int' but the argument has type 'unsigned int' [-Wformat] 202 | DEBUG_MSG (CORETEXT, blob, "TTC index %d not supported", ttc_index); | ~~ ^~~~~~~~~ | %u ../src/hb-coretext.cc:417:65: warning: format specifies type 'int' but the argument has type 'unsigned int' [-Wformat] 417 | DEBUG_MSG (CORETEXT, nullptr, "TTC index %d not supported", ttc_index); | ~~ ^~~~~~~~~ | %u
Behdad Esfahbod d515630f 2025-04-03T22:31:13 [shape-font] Simplify logic
Behdad Esfahbod d30d7f6b 2025-04-03T22:25:34 [ItemVariationStore] Use atomic int for cache
Behdad Esfahbod 9cae040b 2025-04-03T22:18:14 [ItemVariationStore] Make cache atomic floats Doesn't work with intrinsic atomic implementations. Disabled that. Going through the C++11 atomics path now. Will fix in next commit.
Behdad Esfahbod 810fbedf 2025-04-03T20:59:23 [shape] Use font-data for GDEF varStore cache Last remaining alloc during shaping is gone! Fixes https://github.com/harfbuzz/harfbuzz/issues/5237
Behdad Esfahbod e10d647a 2025-04-03T22:01:37 [atomic] Re-enable intrinsics implementation
Behdad Esfahbod e404cf08 2025-04-03T21:57:15 [atomic] Fix C++11 implementation Surprised no one has been using it.
Behdad Esfahbod e480d9de 2025-04-03T21:44:23 Do our C++11 atomics build anywhere??
Behdad Esfahbod 18ab0f55 2025-04-03T04:04:40 [font] Fix serial_coords
Behdad Esfahbod 6f5b8d59 2025-04-03T01:52:03 [ot-font] Streamline advance cache management
Behdad Esfahbod 7da049ed 2025-04-02T15:18:44 [varStore] Add clear_cache()
Behdad Esfahbod da0c459d 2025-04-02T15:16:44 [ot-font] Use helpers to acquire/release varStore cache