{"id":13418188,"url":"https://github.com/harfbuzz/harfbuzz","last_synced_at":"2025-12-16T07:11:31.267Z","repository":{"id":3957145,"uuid":"5050525","full_name":"harfbuzz/harfbuzz","owner":"harfbuzz","description":"HarfBuzz text shaping engine","archived":false,"fork":false,"pushed_at":"2025-05-06T17:12:16.000Z","size":105949,"stargazers_count":4594,"open_issues_count":70,"forks_count":662,"subscribers_count":100,"default_branch":"main","last_synced_at":"2025-05-06T17:13:06.814Z","etag":null,"topics":["aat","c","c-plus-plus","fonts","library","opentype","text-rendering","text-shaping","typography","unicode","variable-fonts"],"latest_commit_sha":null,"homepage":"http://harfbuzz.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harfbuzz.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-07-14T19:50:26.000Z","updated_at":"2025-05-06T15:47:21.000Z","dependencies_parsed_at":"2023-10-14T21:25:47.737Z","dependency_job_id":"6644516d-949a-48a4-b63a-bfb32ca8ba7b","html_url":"https://github.com/harfbuzz/harfbuzz","commit_stats":{"total_commits":17189,"total_committers":255,"mean_commits":67.4078431372549,"dds":0.3190994240502647,"last_synced_commit":"e451e91ec3608a2ebfec34d0c4f0b3d880e00e33"},"previous_names":["behdad/harfbuzz"],"tags_count":190,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harfbuzz%2Fharfbuzz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harfbuzz%2Fharfbuzz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harfbuzz%2Fharfbuzz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harfbuzz%2Fharfbuzz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harfbuzz","download_url":"https://codeload.github.com/harfbuzz/harfbuzz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252782552,"owners_count":21803401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aat","c","c-plus-plus","fonts","library","opentype","text-rendering","text-shaping","typography","unicode","variable-fonts"],"created_at":"2024-07-30T22:00:59.457Z","updated_at":"2025-12-16T07:11:31.241Z","avatar_url":"https://github.com/harfbuzz.png","language":"C++","readme":"# HarfBuzz\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cp\u003e\u003cimg src=\"HarfBuzz.png\" alt=\"HarfBuzz Logo\" width=\"256\" align=\"center\"/\u003e\u003c/p\u003e\n\n[![Linux CI Status](https://github.com/harfbuzz/harfbuzz/actions/workflows/linux.yml/badge.svg)](https://github.com/harfbuzz/harfbuzz/actions/workflows/linux.yml)\n[![macoOS CI Status](https://github.com/harfbuzz/harfbuzz/actions/workflows/macos.yml/badge.svg)](https://github.com/harfbuzz/harfbuzz/actions/workflows/macos.yml)\n[![Windows CI Status](https://github.com/harfbuzz/harfbuzz/actions/workflows/msvc.yml/badge.svg)](https://github.com/harfbuzz/harfbuzz/actions/workflows/msvc.yml)\n[![OSS-Fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/harfbuzz.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#harfbuzz)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/15166/badge.svg)](https://scan.coverity.com/projects/harfbuzz)\n[![Packaging status](https://repology.org/badge/tiny-repos/harfbuzz.svg)](https://repology.org/project/harfbuzz/versions)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/harfbuzz/harfbuzz/badge)](https://securityscorecards.dev/viewer/?uri=github.com/harfbuzz/harfbuzz)\n\n\u003c/div\u003e\n\nHarfBuzz is a text shaping engine. It primarily supports [OpenType][1], but also\n[Apple Advanced Typography][2]. HarfBuzz is used in Android, Chrome,\nChromeOS, Firefox, GNOME, GTK+, KDE, Qt, LibreOffice, OpenJDK, XeTeX,\nPlayStation, Microsoft Edge, Adobe Photoshop, Illustrator, InDesign,\nGodot Engine, Unreal Engine, QuarkXPress, Figma, and other places.\n\n[![xkcd-derived image](xkcd.png)](https://xkcd.com/2347/)\n\nFor bug reports, mailing list, and other information please visit:\n\n  http://harfbuzz.org/\n\nFor license information, see [COPYING](COPYING).\n\n## Documentation\n\nFor user manual as well as API documentation, check: https://harfbuzz.github.io\n\n## Download\n\nFor tarball releases of HarfBuzz, look [here][3]. At the same place you\nwill also find Win32/Win64 binary bundles that include `libharfbuzz` DLL,\n`hb-view.exe`, `hb-shape.exe`, and all dependencies.\n\nThe canonical source tree is available on [github][4].\nBoth development and user support discussion around HarfBuzz happens on\n[github][4] as well.\n\nThe API that comes with `hb.h` will not change incompatibly. Other, peripheral,\nheaders are more likely to go through minor modifications, but again, we do our\nbest to never change API in an incompatible way. We will never break the ABI.\n\nThe API and ABI are stable even across major version number jumps. In fact,\ncurrent HarfBuzz is API/ABI compatible all the way back to the 0.9.x series.\nIf one day we need to break the API/ABI, that would be called a new a library.\n\nAs such, we bump the major version number only when we add major new features,\nthe minor version when there is new API, and the micro version when there\nare bug fixes.\n\n## Development\n\nFor build information, see [BUILD.md](BUILD.md).\n\nFor custom configurations, see [CONFIG.md](CONFIG.md).\n\nFor testing and profiling, see [TESTING.md](TESTING.md).\n\nFor using with Python, see [README.python.md](README.python.md). There is also [uharfbuzz](https://github.com/harfbuzz/uharfbuzz).\n\nFor cross-compiling to Windows from Linux or macOS, see [README.mingw.md](README.mingw.md).\n\nTo report bugs or submit patches please use [github][4] issues and pull-requests.\n\n### Developer documents\n\nTo get a better idea of where HarfBuzz stands in the text rendering stack you\nmay want to read [State of Text Rendering 2024][6].\nHere are a few presentation slides about HarfBuzz at the\nInternationalization and Unicode Conference over the years:\n\n- 2014 – [Unicode, OpenType, and HarfBuzz: Closing the Circle][7]\n- 2012 – [HarfBuzz, The Free and Open Text Shaping Engine][8]\n- 2016 – [Ten Years of HarfBuzz][20]\n- 2009 – [HarfBuzz: the Free and Open Shaping Engine][9]\n\nMore presentations and papers are available on [behdad][11]'s website.\nIn particular, the following _studies_ are relevant to HarfBuzz development:\n\n- 2025 – [AAT layout caches][24]\n- 2025 – [OpenType Layout lookup caches][23]\n- 2025 – [Introducing HarfRust][22]\n- 2025 – [Subsetting][21]\n- 2025 – [Caching][12]\n- 2025 – [`hb-decycler`][13]\n- 2022 – [`hb-iter`][14]\n- 2022 – [A C library written in C++][15]\n- 2022 – [The case of the slow `hb-ft` `\u003eh_advance` function][18]\n- 2022 – [PackTab: A static integer table packer][16]\n- 2020 – [HarfBuzz OT+AAT \"Unishaper\"][19]\n- 2014 – [Building the Indic Shaper][17]\n- 2012 – [Memory Consumption][10]\n\n\n## Name\n\nHarfBuzz (حرف‌باز) is the literal Persian translation of “[OpenType][1]”,\ntransliterated using the Latin script. It also means \"talkative\" or\n\"glib\" (also a nod to the GNOME project where HarfBuzz originates from).\n\n\u003e Background: Originally there was this font format called TrueType. People and\n\u003e companies started calling their type engines all things ending in Type:\n\u003e FreeType, CoolType, ClearType, etc. And then came OpenType, which is the\n\u003e successor of TrueType. So, for my OpenType implementation, I decided to stick\n\u003e with the concept but use the Persian translation. Which is fitting given that\n\u003e Persian is written in the Arabic script, and OpenType is an extension of\n\u003e TrueType that adds support for complex script rendering, and HarfBuzz is an\n\u003e implementation of OpenType complex text shaping.\n\n## Distribution\n\n\u003cdetails\u003e\n  \u003csummary\u003ePackaging status of HarfBuzz\u003c/summary\u003e\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/harfbuzz.svg?header=harfbuzz)](https://repology.org/project/harfbuzz/versions)\n\n\u003c/details\u003e\n\n[1]: https://docs.microsoft.com/en-us/typography/opentype/spec/\n[2]: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html\n[3]: https://github.com/harfbuzz/harfbuzz/releases\n[4]: https://github.com/harfbuzz/harfbuzz\n[6]: https://behdad.org/text2024\n[7]: https://docs.google.com/presentation/d/1x97pfbB1gbD53Yhz6-_yBUozQMVJ_5yMqqR_D-R7b7I/preview\n[8]: https://docs.google.com/presentation/d/1ySTZaXP5XKFg0OpmHZM00v5b17GSr3ojnzJekl4U8qI/preview\n[9]: https://behdad.org/doc/harfbuzz2009-slides.pdf\n[10]: https://docs.google.com/document/d/12jfNpQJzeVIAxoUSpk7KziyINAa1msbGliyXqguS86M/preview\n[11]: https://behdad.org/\n[12]: https://docs.google.com/document/d/1_VgObf6Je0J8byMLsi7HCQHnKo2emGnx_ib_sHo-bt4/preview\n[13]: https://docs.google.com/document/d/1Y-u08l9YhObRVObETZt1k8f_5lQdOix9TRH3zEXaoAw/preview\n[14]: https://docs.google.com/document/d/1o-xvxCbgMe9JYFHLVnPjk01ZY_8Cj0vB9-KTI1d0nyk/preview\n[15]: https://docs.google.com/document/d/18hI56KJpvXtwWbc9QSaz9zzhJwIMnrJ-zkAaKS-W-8k/preview\n[16]: https://docs.google.com/document/d/1Xq3owVt61HVkJqbLFHl73il6pcTy6PdPJJ7bSouQiQw/preview\n[17]: https://docs.google.com/document/d/1wMPwVNBvsIriamcyBO5aNs7Cdr8lmbwLJ8GmZBAswF4/preview\n[18]: https://docs.google.com/document/d/1wskYbA-czBt57oH9gEuGf3sWbTx7bfOiEIcDs36-heo/preview\n[19]: https://prezi.com/view/THNPJGFVDUCWoM20syev/\n[20]: https://behdad.org/doc/harfbuzz10years-slides.pdf\n[21]: https://docs.google.com/document/d/1_vZrt97OorJ0jA1YzJ29LRcGr3YGrNJANdOABjVZGEs/preview\n[22]: https://docs.google.com/document/d/1aH_waagdEM5UhslQxCeFEb82ECBhPlZjy5_MwLNLBYo/preview\n[23]: https://docs.google.com/document/d/1hRd5oYQJLrt0JuwWhEJWi7wh_9rbaIJkX6IR9DW7rZQ/preview\n[24]: https://docs.google.com/document/d/1a3K6fHjsiWW36vSzwJwCwEBOgznunKs80PSpBbpfHiA/preview\n","funding_links":[],"categories":["TODO scan for Android support in followings","Font","C++","Libraries","c","Awesome Khmer Language","Font/Text Library"],"sub_categories":["C++","8. Shaping \u0026 Layout","Rust 2D renderer"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharfbuzz%2Fharfbuzz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharfbuzz%2Fharfbuzz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharfbuzz%2Fharfbuzz/lists"}