Port pango to Harfbuzz
HarfBuzz is an OpenType text shaping engine that has been under development since 2006. Pango is currently using an internal copy of an early version of harfbuzz. Harfbuzz 1.0 will be released sometime before GNOME 3.6. Starting with 1.0, harfbuzz will provide a stable api, and pango can use it as an external library.
Initially, the port to harfbuzz will bring us higher quality rendering and memory savings (an analysis by Behdad shows ~99% savings of per-font memory and ~33% savings of per-character memory). Later on, it promises much better support for OpenType font features, such as small caps, ligatures, etc.
For more information about harfbuzz, and text rendering in general, see Behdad's State of text rendering
As part of the move to harfbuzz, a number of long-overdue changes to Pango are happening as well:
- the pangox backend is being removed (the core X font support has been deprecated for a long time)
the module cache (the pango.modules file) can now be placed in libdir, which helps for situations in which /etc needs to be read-only or empty.
- Pango is being made thread-safe
Matthias Clasen, harfbuzz developers
Affected modules: pango
Harfbuzz is currently under heavy testing to ensure that its rendering is up to par in quality with UniScribe. The harfbuzz-ng-external branch of pango contains the necessary changes to make pango use harfbuzz as an external library.
Harfbuzz has been added to the jhbuild moduleset for 3.6.
The harfbuzz port of pango has been included in pango 1.31.0, and the pango support for Hangul, Hebrew, Khmer, Tibetan, Thai and Indic has been removed. All this is provided by harfbuzz now. Also removed are the obsolete X and atsui backends.
A one-off tarball of a standalone pangox has been made available here to help transition the few remaining users of the deprecated pangox APIs.
How to Help
Test pango with your favourite complex-text languages and fonts and report problems.