Port pango to Harfbuzz

Status: Completed

Description

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.

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

Owner

Behdad Esfahbod

Involved Parties

Matthias Clasen, harfbuzz developers

Affected modules: pango

Current Status

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.

A harfbuzz 0.9.3 release is now available here. This release is feature-complete for 1.0, according to the release announcement.

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.