HarfBuzz

{{short description|Open source text shaping library}}

{{Use dmy dates|date=September 2014}}

{{Infobox software

| name = HarfBuzz

| logo = HarfBuzz.svg

| logo_size = x64px

| author = The FreeType Project

| developer = Behdad Esfahbod, Khaled Hosny{{Cite web |title=State of Text Rendering 2024 |url=https://behdad.org/text2024/#:~:text=the%20current%20maintainer%20of%20HarfBuzz |access-date=2025-05-01 |website=behdad.org}}

| programming language = C++

| operating system = Unix-like, Windows

| genre = Software development library

| license = MIT

}}

HarfBuzz (loose transliteration of Persian calque {{lang|fa|حرف‌باز}} harf-bāz, literally "open type"){{cite web

| url = https://lwn.net/Articles/741722/

| title = HarfBuzz brings professional typography to the desktop

| last = Byfield

| first = Bruce

| date = 19 December 2017

| website = LWN.net}}{{cite web

| url = https://www.freedesktop.org/wiki/HarfBuzz/

| title = HarfBuzz

| work = freedesktop.org}} is a software library for supporting text shaping, which is the process of converting Unicode text to glyph indices and positions. The newer version, New HarfBuzz (2012–), targets various font technologies while the first version, Old HarfBuzz (2006–2012), targeted only OpenType fonts.{{cite web

| url = https://freedesktop.org/wiki/Software/HarfBuzz/

| title = HarfBuzz Official website

| access-date = 10 November 2012}}

History

File:Behdad esfahbod in Zconf6 by Mardetanha.jpg

HarfBuzz evolved from code that was originally part of the FreeType project. It was then developed separately in Qt and Pango. Then it was merged back into a common repository with an MIT license. This was Old HarfBuzz, which is no longer being developed, as the path going forward is New HarfBuzz. In 2013, Behdad Esfahbod won the O’Reilly Open Source Award for his work on HarfBuzz.{{cite web|url=http://www.oscon.com/oscon2013/public/schedule/detail/29956|title=O'Reilly Open Source Awards: OSCON 2013|date=26 July 2013|access-date=25 September 2014|archive-date=18 June 2015|archive-url=https://web.archive.org/web/20150618102153/http://www.oscon.com/oscon2013/public/schedule/detail/29956|url-status=dead}}

Important milestones for New HarfBuzz include:

  • 0.9.2, SIL Graphite support
  • 1.0 includes Universal Shaping Engine concepts from Microsoft
  • 1.4 with OpenType font variation support
  • 1.6 with Unicode 10 support
  • 1.8 with Unicode 11 support
  • 2.0 with Apple Advanced Typography (AAT) shaping support.[https://www.phoronix.com/scan.php?page=news_item&px=harfbuzz-1.0-released HarfBuzz 1.0 Implements Microsoft's Universal Shaping Engine Released][https://www.phoronix.com/scan.php?page=news_item&px=HarfBuzz-1.4-Released HarfBuzz 1.4 Brings OpenType GX / Font Variations][https://www.phoronix.com/scan.php?page=news_item&px=HarfBuzz-1.8-Unicode-11 HarfBuzz 1.8 Released With Unicode 11 Support][https://www.phoronix.com/scan.php?page=news_item&px=HarfBuzz-2.0-Released HarfBuzz 2.0 Released For Advancing Open-Source Text Shaping][https://www.phoronix.com/scan.php?page=search&q=HarfBuzz HarfBuz articles on Phoronix]
  • 2.1 with color fonts support and improved major AAT Shaping features.
  • 2.4 Unicode 12 support
  • 2.6.7 Unicode 13 support
  • 3.0 stable font subsetter API, Unicode 14 support{{Cite web |title=Release 3.0.0 · harfbuzz/harfbuzz |url=https://github.com/harfbuzz/harfbuzz/releases/tag/3.0.0 |access-date=2023-05-26 |website=GitHub |language=en}}
  • 4.0 more than 65536 Glyphs and metrics supported{{cite web | url=https://www.phoronix.com/news/HarfBuzz-4.0 | title=HarfBuzz 4.0 Released for This Open-Source Text Shaping Library }}
  • 4.3 major speed up{{cite web | url=https://www.phoronix.com/news/HarfBuzz-4.3 | title=HarfBuzz 4.3 Released with Big Performance Improvements }}
  • 5.0 BE Fonts support{{cite web | url=https://www.phoronix.com/news/HarfBuzz-5.0-Released | title=HarfBuzz 5.0 Released with Progress on Supporting the "Boring Expansion" Font Spec }}
  • 5.2 Unicode 15 support{{cite web | url=https://www.phoronix.com/news/HarfBuzz-5.2-Released | title=HarfBuzz 5.2 Released with Unicode 15 Support }}
  • 7.0 introduced new APIs, new command-line utility, font emboldening support and reduced memory usage{{cite web | url=https://www.phoronix.com/news/HarfBuzz-7.0-Released | title=HarfBuzz 7.0 Text Shaping Engine Released }}
  • 8.0 introduced support for using WebAssembly-based shaper embedded in fonts{{cite web | url=https://www.phoronix.com/news/HarfBuzz-8.0 | title=HarfBuzz 8.0 Released - Introduces Shaper for WebAssembly within Font Files }}

Users

Most applications don't use HarfBuzz directly, but use a UI toolkit library that integrates with it.

HarfBuzz is used by the UI libraries of:

  • GNOME (GTK)
  • KDE (Qt)
  • ChromeOS (Skia)
  • PlayStation 4{{Cite web|url=https://doc.dl.playstation.net/doc/ps4-oss/harfbuzz.html|title=HarfBuzz|website=doc.dl.playstation.net|access-date=2019-05-26}}
  • Android
  • Java{{Cite web|url=http://openjdk.java.net/jeps/258|title=JEP 258: HarfBuzz Font-Layout Engine|website=OpenJDK Enhancement Proposals|access-date=2017-12-20}}
  • Flutter{{Cite web|url=https://github.com/flutter/flutter/blob/master/docs/about/The-Engine-architecture.md#text-rendering|title=Flutter Engine Wiki|website=GitHub |access-date=2025-03-24}}
  • Godot (since version 4.0){{Cite web |last=Engine |first=Godot |title=Complex text layouts progress report #1 |url=https://godotengine.org/article/complex-text-layouts-progress-report-1/ |access-date=2024-09-12 |website=Godot Engine |language=en}}{{Cite web |last=Engine |first=Godot |title=Godot 4.0 sets sail: All aboard for new horizons |url=https://godotengine.org/article/godot-4-0-sets-sail/#new-text-rendering-systems |access-date=2024-09-12 |website=Godot Engine |language=en}}
  • Unity (since version 6.0){{Cite web |date=2024-10-28 |title=Announcing Full RTL Language Support |url=https://discussions.unity.com/t/announcing-full-rtl-language-support/1544214 |access-date=2024-11-18 |website=Unity Discussions |language=en}}
  • OpenHarmony (HarmonyOS){{Cite web |title=OpenHarmony/third_party_harfbuzz |url=https://gitee.com/openharmony/third_party_harfbuzz |access-date=2025-03-13 |website=Gitee |language=zh-CN}}

HarfBuzz is used directly by many applications, including:

  • Chromium
  • Firefox
  • LibreOffice (from version 4.1 on Linux only,{{cite web |url=https://wiki.documentfoundation.org/ReleaseNotes/4.1 |title=LibreOffice 4.1 ReleaseNotes| publisher=The Document Foundation |date=30 July 2013 |access-date=6 October 2019}} from 5.3 on all platforms[https://www.phoronix.com/scan.php?page=news_item&px=LibreOffice-New-Layout-Engine LibreOffice 5.3 Enables New Layout Engine By Default])
  • Scribus (since version 1.5.3){{cite web|url=https://wiki.scribus.net/canvas/1.5.3_Release|title=Scribus 1.5.3 Released|date=2017-05-22|access-date=2018-06-06}}
  • Inkscape
  • Adobe Photoshop (since version 23.0{{Cite web |date=2022-06-07 |title=Unified Text Engine in Photoshop |url=https://helpx.adobe.com/mena_en/photoshop/using/unified-text-engine.html |archive-date= |access-date=2023-05-25 |language=en}})
  • Adobe InDesign (when using World Ready Composer since InDesign 19.0{{Cite web |date=2023-10-30|title=Feature summary of InDesign (October 2023 release)|url=https://helpx.adobe.com/indesign/using/whats-new/2024.html#harfbuzz|language=en}})
  • Figma{{Cite web |date=2016-11-07 |title=Debugging Data Corruption with Emscripten {{!}} Figma Blog |url=https://www.figma.com/blog/debugging-data-corruption-with-emscripten/ |access-date=2024-09-12 |website=Figma |language=en}}{{Cite web |date=2020-05-30 |title=Rasmus Andersson on Twitter: "Figma uses FreeType and Harfbuzz for font layout... |url=https://twitter.com/rsms/status/1266506081284395011 |access-date=2024-09-12 |archive-url=https://web.archive.org/web/20200530023107/https://twitter.com/rsms/status/1266506081284395011 |archive-date=30 May 2020 }}
  • XeTeX (since version 0.9999){{Cite web |last=Hosny |first=Khaled |date=2013-03-12 |title=[XeTeX] XeTeX 0.9999.0 released |url=https://tug.org/pipermail/xetex/2013-March/024118.html |access-date=2024-09-12 |website=TUG |language=en}}{{Cite journal |last=Hosny |first=Khaled |date=2013 |title=What is new in XeTeX 0.9999? |url=https://tug.org/TUGboat/tb34-2/tb107hosny.pdf |journal=TUGboat |volume=34 |issue=2 |page=121}}
  • LuaTeX (since version 1.11.1){{Cite web |title=[Dev-luatex] Luatex 1.11.1 announcement - dev-luatex - NTG Mailing Lists |url=https://mailman.ntg.nl/archives/list/dev-luatex@ntg.nl/message/4L2MA5BYGF2OMOC4VBHFLPS7IPJDOVZG/ |access-date=2024-09-12 |website=mailman.ntg.nl |language=en}}{{Cite journal |last=Hosny |first=Khaled |date=2019 |title=Bringing world scripts to LuaTeX: The HarfBuzz experiment |url=https://tug.org/TUGboat/tb40-1/tb124hosny-harfbuzz.pdf |journal=TUGboat |volume=40 |issue=1 |pages=38–43}}

See also

{{Portal|Free Software}}

References

{{Reflist}}