Harfbuzz Versions Save

HarfBuzz text shaping engine

8.4.0

3 weeks ago

What's Changed

  • Add /bigobj to MSVC compiler flags in meson build, to fix building hb-subset.cc
  • Specify minimum versions of various dependencies in meson and autotools build.
  • When subsetting, place variation store at the end of “GDEF” table to fix shaping issues with some versions of Adobe InDesign.
  • Various build fixes.
  • New API: +hb_buffer_set_random_state() +hb_buffer_get_random_state()

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.3.1...8.4.0

8.3.1

1 month ago

What's Changed

  • hb_blob_create_from_file_or_fail() on Windows will now try to interpret the file name as UTF-8 first, and as system code page if it is not valid UTF-8.
  • Fix hb_style_get_value() in fonts with “STAT” table.
  • Properly handle negative offsets in CFF table.
  • Update IANA Language Subtag Registry to 2024-03-07.
  • Subsetter now supports subsetting “BASE” table.
  • Subsetter will update “hhea” font metrics in sync with “OS/2” ones.
  • “--variations” option of “hb-subset” now supports leaving out values that should be unchanged, e.g. “wght=:500:” will change the default and keep max and min unchanged. It also supports “*=drop” to to pin all axes to default location.
  • Fix hb_ot_math_get_glyph_kerning() to match updated “MATH” table spec.
  • Support legacy MacRoman encoding in “cmap” table.
  • Various build fixes.
  • Various subsetting and instancing fixes.

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.3.0...8.3.1

8.3.0

5 months ago

What's Changed

  • Improve memory barrier to fix potential segfaults.

  • Various build fixes.

  • Various subsetting and instancing fixes.

  • Rename “hb-subset” option “--instance” to “--variations” to match the other tools. Old option is kept as an alias.

  • New API: HB_AAT_LAYOUT_FEATURE_TYPE_CURSIVE_CONNECTION

  • Deprecated API: HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.2.2...8.3.0

8.2.2

6 months ago

What's Changed

  • Fix regression from 8.1.0 in shaping fonts with duplicate feature tags.
  • Fix regression from 8.2.0 in parsing CSS-style feature strings.
  • Variable fonts instanciation now handles more tables.
  • Various CMake build improvements.
  • various fixes to build without errors with gcc 4.9.2.

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.2.1...8.2.2

8.2.1

7 months ago

What's Changed

Unicode 15.1 support.

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.2.0...8.2.1

8.2.0

7 months ago

What's Changed

  • Various build and fuzzing fixes

  • Improvements to COLRv1 painting.

  • New API: +hb_paint_color_glyph_func_t +hb_paint_funcs_set_color_glyph_func +hb_paint_color_glyph

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.1.1...8.2.0

8.1.1

8 months ago
  • Fix shaping of contextual rules at the end of string, introduced in 8.1.0
  • Fix stack-overflow in repacker with malicious fonts.
  • 30% speed up loading Noto Duployan font.

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.1.0...8.1.1

8.1.0

8 months ago

What's Changed

  • Fix long-standing build issue with the AIX compiler and older Apple clang.

  • Revert optimization that could cause timeout during subsetting with malicious fonts.

  • More optimization work:

    • 45% speed up in shaping Noto Duployan font.
    • 10% speed up in subsetting Noto Duployan font.
    • Another 8% speed up in shaping Gulzar.
    • 5% speed up in loading Roboto.
  • New API: +hb_ot_layout_collect_features_map()

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.0.1...8.1.0

8.0.1

9 months ago

What's Changed

  • Build fix on 32-bit ARM.

  • More speed optimizations:

    • 60% speed up in retain-gid (used for IFT) subsetting of SourceHanSans-VF.
    • 16% speed up in retain-gid (used for IFT) subsetting of NotoSansCJKkr.
    • 38% speed up in subsetting (beyond-64k) mega-merged Noto.

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/8.0.0...8.0.1

8.0.0

9 months ago

What's Changed

  • New, experimental, WebAssembly (WASM) shaper, that provides greater flexibility over OpenType/AAT/Graphite shaping, using WebAssembly embedded inside the font file. Currently WASM shaper is disabled by default and needs to be enabled at build time. For details, see:

    https://github.com/harfbuzz/harfbuzz/blob/main/docs/wasm-shaper.md

    For example fonts making use of the WASM shaper, see:

    https://github.com/harfbuzz/harfbuzz-wasm-examples

  • Improvements to Experimental features introduced in earlier releases:

  • Many big speed optimizations:

    • Up to 89% speedup loading variable fonts for shaping.
    • Up to 88% speedup in small subsets of large (eg. CJK) fonts (both TTF and OTF), essential for Incremental Font Transfer (IFT).
    • Over 50% speedup in loading Roboto font for shaping.
    • Up to 40% speed up in loading (sanitizing) complex fonts.
    • 30% speed up in shaping Gulzar font.
    • Over 25% speedup in glyph loading Roboto font.
    • 10% speed up loading glyph shapes in VarComposite Hangul font.
    • hb-hashmap optimizations & hashing improvements.
  • New macro HB_ALWAYS_INLINE. HarfBuzz now inlines functions more aggressively, which results in some speedup at the expense of bigger code size. To disable this feature define the macro to just inline.

  • New API: +HB_CODEPOINT_INVALID +hb_ot_layout_get_baseline2() +hb_ot_layout_get_baseline_with_fallback2() +hb_ot_layout_get_font_extents() +hb_ot_layout_get_font_extents2() +hb_subset_input_set_axis_range()

New Contributors

Full Changelog: https://github.com/harfbuzz/harfbuzz/compare/7.3.0...8.0.0