1*2d1272b8SAndroid Build Coastguard Worker[](https://github.com/harfbuzz/harfbuzz/workflows/linux-ci/badge.svg) 2*2d1272b8SAndroid Build Coastguard Worker[](https://circleci.com/gh/harfbuzz/harfbuzz/tree/main) 3*2d1272b8SAndroid Build Coastguard Worker[](https://oss-fuzz-build-logs.storage.googleapis.com/index.html) 4*2d1272b8SAndroid Build Coastguard Worker[](https://scan.coverity.com/projects/harfbuzz) 5*2d1272b8SAndroid Build Coastguard Worker[](https://app.codacy.com/gh/harfbuzz/harfbuzz/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) 6*2d1272b8SAndroid Build Coastguard Worker[](https://codecov.io/gh/harfbuzz/harfbuzz) 7*2d1272b8SAndroid Build Coastguard Worker[](https://repology.org/project/harfbuzz/versions) 8*2d1272b8SAndroid Build Coastguard Worker[](https://securityscorecards.dev/viewer/?uri=github.com/harfbuzz/harfbuzz) 9*2d1272b8SAndroid Build Coastguard Worker 10*2d1272b8SAndroid Build Coastguard Worker 11*2d1272b8SAndroid Build Coastguard Worker# HarfBuzz 12*2d1272b8SAndroid Build Coastguard Worker 13*2d1272b8SAndroid Build Coastguard WorkerHarfBuzz is a text shaping engine. It primarily supports [OpenType][1], but also 14*2d1272b8SAndroid Build Coastguard Worker[Apple Advanced Typography][2]. HarfBuzz is used in Android, Chrome, 15*2d1272b8SAndroid Build Coastguard WorkerChromeOS, Firefox, GNOME, GTK+, KDE, Qt, LibreOffice, OpenJDK, XeTeX, 16*2d1272b8SAndroid Build Coastguard WorkerPlayStation, Microsoft Edge, Adobe Photoshop, Illustrator, InDesign, 17*2d1272b8SAndroid Build Coastguard WorkerGodot Engine, Unreal Engine, and other places. 18*2d1272b8SAndroid Build Coastguard Worker 19*2d1272b8SAndroid Build Coastguard Worker[](https://xkcd.com/2347/) 20*2d1272b8SAndroid Build Coastguard Worker 21*2d1272b8SAndroid Build Coastguard WorkerFor bug reports, mailing list, and other information please visit: 22*2d1272b8SAndroid Build Coastguard Worker 23*2d1272b8SAndroid Build Coastguard Worker http://harfbuzz.org/ 24*2d1272b8SAndroid Build Coastguard Worker 25*2d1272b8SAndroid Build Coastguard WorkerFor license information, see [COPYING](COPYING). 26*2d1272b8SAndroid Build Coastguard Worker 27*2d1272b8SAndroid Build Coastguard Worker## Documentation 28*2d1272b8SAndroid Build Coastguard Worker 29*2d1272b8SAndroid Build Coastguard WorkerFor user manual as well as API documentation, check: https://harfbuzz.github.io 30*2d1272b8SAndroid Build Coastguard Worker 31*2d1272b8SAndroid Build Coastguard Worker## Download 32*2d1272b8SAndroid Build Coastguard Worker 33*2d1272b8SAndroid Build Coastguard WorkerFor tarball releases of HarfBuzz, look [here][3]. At the same place you 34*2d1272b8SAndroid Build Coastguard Workerwill also find Win32/Win64 binary bundles that include `libharfbuzz` DLL, 35*2d1272b8SAndroid Build Coastguard Worker`hb-view.exe`, `hb-shape.exe`, and all dependencies. 36*2d1272b8SAndroid Build Coastguard Worker 37*2d1272b8SAndroid Build Coastguard WorkerThe canonical source tree is available on [github][4]. 38*2d1272b8SAndroid Build Coastguard Worker 39*2d1272b8SAndroid Build Coastguard WorkerThe API that comes with `hb.h` will not change incompatibly. Other, peripheral, 40*2d1272b8SAndroid Build Coastguard Workerheaders are more likely to go through minor modifications, but again, we do our 41*2d1272b8SAndroid Build Coastguard Workerbest to never change API in an incompatible way. We will never break the ABI. 42*2d1272b8SAndroid Build Coastguard Worker 43*2d1272b8SAndroid Build Coastguard WorkerIf you are not sure whether Pango or HarfBuzz is right for you, read [Pango vs 44*2d1272b8SAndroid Build Coastguard WorkerHarfBuzz][5]. 45*2d1272b8SAndroid Build Coastguard Worker 46*2d1272b8SAndroid Build Coastguard Worker## Development 47*2d1272b8SAndroid Build Coastguard Worker 48*2d1272b8SAndroid Build Coastguard WorkerFor build information, see [BUILD.md](BUILD.md). 49*2d1272b8SAndroid Build Coastguard Worker 50*2d1272b8SAndroid Build Coastguard WorkerFor custom configurations, see [CONFIG.md](CONFIG.md). 51*2d1272b8SAndroid Build Coastguard Worker 52*2d1272b8SAndroid Build Coastguard WorkerFor testing and profiling, see [TESTING.md](TESTING.md). 53*2d1272b8SAndroid Build Coastguard Worker 54*2d1272b8SAndroid Build Coastguard WorkerTo get a better idea of where HarfBuzz stands in the text rendering stack you 55*2d1272b8SAndroid Build Coastguard Workermay want to read [State of Text Rendering 2024][6]. 56*2d1272b8SAndroid Build Coastguard WorkerHere are a few presentation slides about HarfBuzz at the 57*2d1272b8SAndroid Build Coastguard WorkerInternationalization and Unicode Conference over the years: 58*2d1272b8SAndroid Build Coastguard Worker 59*2d1272b8SAndroid Build Coastguard Worker* November 2014, [Unicode, OpenType, and HarfBuzz: Closing the Circle][7], 60*2d1272b8SAndroid Build Coastguard Worker* October 2012, [HarfBuzz, The Free and Open Text Shaping Engine][8], 61*2d1272b8SAndroid Build Coastguard Worker* October 2009, [HarfBuzz: the Free and Open Shaping Engine][9]. 62*2d1272b8SAndroid Build Coastguard Worker 63*2d1272b8SAndroid Build Coastguard WorkerBoth development and user support discussion around HarfBuzz happens on the 64*2d1272b8SAndroid Build Coastguard Worker[github][4]. 65*2d1272b8SAndroid Build Coastguard Worker 66*2d1272b8SAndroid Build Coastguard WorkerTo report bugs or submit patches please use [github][4] issues and 67*2d1272b8SAndroid Build Coastguard Workerpull-requests. 68*2d1272b8SAndroid Build Coastguard Worker 69*2d1272b8SAndroid Build Coastguard WorkerFor a comparison of old vs new HarfBuzz memory consumption see [this][10]. 70*2d1272b8SAndroid Build Coastguard Worker 71*2d1272b8SAndroid Build Coastguard Worker<!--See past and upcoming [HarfBuzz Hackfests](https://freedesktop.org/wiki/Software/HarfBuzz/Hackfests/)!--> 72*2d1272b8SAndroid Build Coastguard Worker 73*2d1272b8SAndroid Build Coastguard Worker## Name 74*2d1272b8SAndroid Build Coastguard Worker 75*2d1272b8SAndroid Build Coastguard WorkerHarfBuzz (حرفباز) is the literal Persian translation of “[OpenType][1]”, 76*2d1272b8SAndroid Build Coastguard Workertransliterated using the Latin script. It also means "talkative" or 77*2d1272b8SAndroid Build Coastguard Worker"glib" (also a nod to the GNOME project where HarfBuzz originates from). 78*2d1272b8SAndroid Build Coastguard Worker 79*2d1272b8SAndroid Build Coastguard Worker> Background: Originally there was this font format called TrueType. People and 80*2d1272b8SAndroid Build Coastguard Worker> companies started calling their type engines all things ending in Type: 81*2d1272b8SAndroid Build Coastguard Worker> FreeType, CoolType, ClearType, etc. And then came OpenType, which is the 82*2d1272b8SAndroid Build Coastguard Worker> successor of TrueType. So, for my OpenType implementation, I decided to stick 83*2d1272b8SAndroid Build Coastguard Worker> with the concept but use the Persian translation. Which is fitting given that 84*2d1272b8SAndroid Build Coastguard Worker> Persian is written in the Arabic script, and OpenType is an extension of 85*2d1272b8SAndroid Build Coastguard Worker> TrueType that adds support for complex script rendering, and HarfBuzz is an 86*2d1272b8SAndroid Build Coastguard Worker> implementation of OpenType complex text shaping. 87*2d1272b8SAndroid Build Coastguard Worker 88*2d1272b8SAndroid Build Coastguard Worker<details> 89*2d1272b8SAndroid Build Coastguard Worker <summary>Packaging status of HarfBuzz</summary> 90*2d1272b8SAndroid Build Coastguard Worker 91*2d1272b8SAndroid Build Coastguard Worker[](https://repology.org/project/harfbuzz/versions) 92*2d1272b8SAndroid Build Coastguard Worker 93*2d1272b8SAndroid Build Coastguard Worker</details> 94*2d1272b8SAndroid Build Coastguard Worker 95*2d1272b8SAndroid Build Coastguard Worker[1]: https://docs.microsoft.com/en-us/typography/opentype/spec/ 96*2d1272b8SAndroid Build Coastguard Worker[2]: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html 97*2d1272b8SAndroid Build Coastguard Worker[3]: https://github.com/harfbuzz/harfbuzz/releases 98*2d1272b8SAndroid Build Coastguard Worker[4]: https://github.com/harfbuzz/harfbuzz 99*2d1272b8SAndroid Build Coastguard Worker[5]: http://mces.blogspot.com/2009/11/pango-vs-harfbuzz.html 100*2d1272b8SAndroid Build Coastguard Worker[6]: http://behdad.org/text2024 101*2d1272b8SAndroid Build Coastguard Worker[7]: https://goo.gl/FSIQuC 102*2d1272b8SAndroid Build Coastguard Worker[8]: https://goo.gl/2wSRu 103*2d1272b8SAndroid Build Coastguard Worker[9]: http://behdad.org/download/Presentations/slippy/harfbuzz_slides.pdf 104*2d1272b8SAndroid Build Coastguard Worker[10]: https://goo.gl/woyty 105