HarfBuzz
the Free and Open
Shaping Engine
Behdad Esfahbod
behdad@redhat.com
http://behdad.org/
http://freedesktop.org/wiki/Software/HarfBuzz
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseAgenda• Introduction• History• Old HarfBuzz• New HarfBuzz• Scope• Design• Status• Roadmap
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseIntroInternationalization & Unicode Conference 33, October 14—16, 2009, San Jose�‫�ف ﺑﺎز‬Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseFree and OpenUnicode
Shaping Engine
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseHistoryInternationalization & Unicode Conference 33, October 14—16, 2009, San JoseFreeTypeOpenTypeLayout
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseGNOMEKDEInternationalization & Unicode Conference 33, October 14—16, 2009, San Jose

PangoQt
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseOld
HarfBuzz
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

2006
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Qt
Shapers
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Problems• Ineﬃcient• Fragile• UglyInternationalization & Unicode Conference 33, October 14—16, 2009, San JoseNewHarfBuzz
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseBaking
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

ScopeInternationalization & Unicode Conference 33, October 14—16, 2009, San JoseGeneric Shaper• OpenType• ATT• Graphite• Fallback• ...
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseJust Shaper• No Itemizer• No Bidi• No Line Breaking• No Rasterization
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Goals• Beautiful• Robust• Flexible• Eﬃcient• Portable
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Consumers• GUI Toolkits• Web Browsers• Word Processors• Designer Tools• Font Design Tools• Terminal Emulators• Batch Doc Processors• TeX Engines
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseDesignInternationalization & Unicode Conference 33, October 14—16, 2009, San JoseFor Humans
hb_face_t
hb_font_t
hb_buﬀer_t
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseUnicodeCallbacks
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

FontCallbacks
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseSFNTBased
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseGarbage-In
Glyphs-Out
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Fallbacks
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

In-Place
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

ErrorHandling
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

BackendIndependent
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

BackendAPIInternationalization & Unicode Conference 33, October 14—16, 2009, San Jose

ThreadSafe
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

No
Dependencies
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Well
Some C++Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseMITLicensed
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

OpenType 1.6• Mark ﬁltering sets
• cmap type 14• Mirroring
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

StatusInternationalization & Unicode Conference 33, October 14—16, 2009, San Jose

OpenType
LayoutInternationalization & Unicode Conference 33, October 14—16, 2009, San Jose

API
Review
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

Shapers
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose

TestSuite
Internationalization & Unicode Conference 33, October 14—16, 2009, San JoseQ?
Internationalization & Unicode Conference 33, October 14—16, 2009, San Jose