HarfBuzz

HarfBuzz is an OpenType text shaping engine.

The current HarfBuzz codebase, formerly known as harfbuzz-ng, is versioned 1.x.x and is stable and under active maintenance. This is what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome, LibreOffice, XeTeX, Android, and KDE, among other places. The canonical source tree is available here. Also available on github. See Download for release tarballs.

The old HarfBuzz codebase, these days known as harfbuzz-old, was derived from FreeType, Pango, and Qt and is available here. It is not actively developed or maintained, and is extremely buggy. All users are encouraged to switch over to the new HarfBuzz as soon as possible. There are no release tarballs of old HarfBuzz whatsoever.


I. User's manual
What is HarfBuzz?
Why do I need it?
Why is it called HarfBuzz?
Install HarfBuzz
Download
Building
Hello, HarfBuzz
What HarfBuzz doesn't do
Buffers, language, script and direction
Creating and destroying buffers
Adding text to the buffer
Setting buffer properties
What about the other scripts?
Customizing Unicode functions
Fonts and faces
Using FreeType
Using HarfBuzz's native OpenType implementation
Using your own font functions
Clusters
A clustering example for levels 0 and 1
Reordering in levels 0 and 1
The distinction between levels 0 and 1
Level 2
Ligatures with combining marks
Reordering
Shaping and shape plans
OpenType features
Plans and caching
II. Reference manual
Core API
hb-blob — Binary data containers
hb-buffer — Input and output buffers
hb-common — Common data types
hb-deprecated — Deprecated API
hb-face — Font face objects
hb-font — Font objects
hb-map — Object representing integer to integer mapping
hb-set — Object representing a set of integers
hb-shape-plan — Object representing a shaping plan
hb-shape — Conversion of text strings into positioned glyphs
hb-unicode — Unicode character property access
hb-version — Information about the version of HarfBuzz in use
OpenType API
hb-ot-color — OpenType Color Fonts
hb-ot-font — OpenType font implementation
hb-ot-layout — OpenType Layout
hb-ot-math — OpenType Math information
hb-ot-name — OpenType font name information
hb-ot-shape — OpenType shaping support
hb-ot-var — OpenType Font Variations
Integration API
hb-coretext — CoreText integration
hb-ft — FreeType integration
hb-glib — GLib integration
hb-gobject — GObject integration
hb-graphite2 — Graphite2 integration
hb-icu — ICU integration
hb-uniscribe — Windows integration
API Index
Index of deprecated API
Index of new symbols in 2.0.0
Index of new symbols in 1.9.0
Index of new symbols in 1.8.6
Index of new symbols in 1.8.5
Index of new symbols in 1.8.1
Index of new symbols in 1.8.0
Index of new symbols in 1.7.7
Index of new symbols in 1.7.5
Index of new symbols in 1.6.0
Index of new symbols in 1.5.0
Index of new symbols in 1.4.3
Index of new symbols in 1.4.2
Index of new symbols in 1.4.0
Index of new symbols in 1.3.3
Index of new symbols in 1.2.3
Index of new symbols in 1.1.3
Index of new symbols in 1.1.2
Index of new symbols in 1.0.5
Index of new symbols in 0.9.42
Index of new symbols in 0.9.41
Index of new symbols in 0.9.39
Index of new symbols in 0.9.38
Index of new symbols in 0.9.31
Index of new symbols in 0.9.30
Index of new symbols in 0.9.28
Index of new symbols in 0.9.22
Index of new symbols in 0.9.20
Index of new symbols in 0.9.11
Index of new symbols in 0.9.10
Index of new symbols in 0.9.8
Index of new symbols in 0.9.7
Index of new symbols in 0.9.5
Index of new symbols in 0.9.2
Annotation Glossary