What’s Changed

  • Unicode 16.0.0 support.
  • Various documentation fixes.
  • Various build fixes.
  • Add API to allow HarfBuzz client to set what glyph to use when a Unicode Variation Selector is not supported by the font, which would allow the client to customize what happens in this case, by using a different font for example.
  • Add a callback to for “hb_face_t” for getting the list of table tags. This is now used to make calling “hb_face_get_table_tags()” work on a faces created by “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”).
  • CGJ and Mongolian Variation Selectors are now ignored during glyph positioning, previously they would block both glyph substitution and positioning across them.
  • Support cairo script as an output format for “hb-view” command line tool.
  • Drop an optimization that would cause HarfBuzz not apply pair positioning lookup subtables under certain circumstances, for compatibility with other implementations that do apply these subtables.
  • Subsetting will now fail if source font has no glyphs, so feeding the subsetter invalid data will not silently return an empty face.
  • If after partially instancing a font no variation data is left (the instance is fully static), don’t consider this a failure.
  • Workaround a Firefox bug in displaying SVGs generated be “hb-view” command line tool under certain circumstances.
  • Fix bug in macroman mapping for “cmap” table.
  • Fix difference shaping output when HarfBuzz is built with with “HB_NO_OT_RULESETS_FAST_PATH” enabled.
  • Various subsetting and instancing fixes.
  • Various fuzzing fixes.
  • Add “with_libstdcxx” meson build option.
  • Joël de Bruijn
    link
    fedilink
    English
    arrow-up
    2
    ·
    7 days ago

    HarfBuzz is a text-shaping engine. If you give HarfBuzz a font and a string containing a sequence of Unicode codepoints, HarfBuzz selects and positions the corresponding glyphs from the font, applying all of the necessary layout rules and font features. HarfBuzz then returns the string to you in the form that is correctly arranged for the language and writing system.

    HarfBuzz can properly shape all of the world’s major writing systems. It runs on all major operating systems and software platforms and it supports the major font formats in use today. What is text shaping?

    Text shaping is the process of translating a string of character codes (such as Unicode codepoints) into a properly arranged sequence of glyphs that can be rendered onto a screen or into final output form for inclusion in a document.

    The shaping process is dependent on the input string, the active font, the script (or writing system) that the string is in, and the language that the string is in.

    Modern software systems generally only deal with strings in the Unicode encoding scheme (although legacy systems and documents may involve other encodings).

    There are several font formats that a program might encounter, each of which has a set of standard text-shaping rules.