Software/HarfBuzz

HarfBuzz

HarfBuzz.png

HarfBuzz is an OpenType Layout engine. The current code was originally derived from the FreeType project, developed separately in Pango and Qt, and finally merged back into a common repository as part of this project.

The code has evolved from its original form, has got various improvements and bugs fixed, and has got a glyph-buffer data structure that can be used as a highlevel interface to the layout engine.

Mailinglist

HarfBuzz discussion is currently on harfbuzz at lists freedesktop org.

Git

We are using the freedesktop.org Git repository. The Git repository is git://anongit.freedesktop.org/git/harfbuzz. You can browse it here.

Bugs & Patches

Please report bugs (and submit patches) through the Bugzilla.

History of the Project

When the FTLayout code was orphaned by FreeType, both Pango and Qt made internal copies on it. Then a couple years ago Behdad Esfahbod worked with Qt developers Lars Knoll and Simon Hausmann and merged the code back together and dumped it in a shared repository for the sake of sharing and not diverging again. For a long while, there was just a piece of code that was not really useful on its own. Then Qt added their shaper code to it and the project became what we now call HarfBuzz.

Examples

Both QT and Pango use HarfBuzz, so feel free to examine the code of these projects. Currently, a simple 100-line sample does not exist. You will need at least a couple of hundred lines of glue code to drive HarfBuzz directly with FreeType.

Our Goal

We want to make HarfBuzz the single shaping solution on Free Software systems. That's why we are rewriting it from top to bottom with sane APIs. This takes time, so please be patient and stay tuned as the project develops further.

Download

There are no releases available for download yet, and currently there are no releases scheduled, as the main audience of the code is developers of text rendering engines and currently the recommended way to use the code is to copy it into your project. Use git to check out the latest version instead, but please keep a note of your checkout date in your project, that will help with tracking bugs later.