-
Notifications
You must be signed in to change notification settings - Fork 4
Home
HarfBuzz is an OpenType text shaping engine. It is used in software like Qt, Pango, Firefox, Chromium, XeTeX and LibreOffice.
luaharfbuzz provides Lua bindings for Harfbuzz. It aims to provide a set of lightweight wrappers around the types and functions exposed by the Harfbuzz API. The idea is to stick closely to the API semantics of the original API, but also provide Lua-friendly idioms like optional arguments etc. Wherever possible, helper methods are provided as an addition, without violating the original API semantics.
Documentation for Harfbuzz is hard to come by. There is no definitive source for it. Information is spread over the code, the wiki and the mailing list archives.
To get started from the very basics, you can try the harfbuzz-tutorial, along with the walkthough accompanying that. It is recommended that you go through the resources on the wiki, and then read the comments in the source files. After that, get on the mailing list and ask questions.
luaharfbuzz does not do much beyond wrapping the original Harfbuzz API. So it is necessary that you have some background in Harfbuzz first. You can refer to the following sources for luaharfbuzz specific documentation:
- API Docs
- API Coverage Status: list of all Harfbuzz API methods wrapped by luaharfbuzz so far. If you need to wrap any additional methods or types, file an issue, or send a pull request.
- Files in the examples folder of the source tree.
- The specs, which contain a comprehensive overview of the methods and types that have been wrapped so far.
- Michal Hoftich’s (highly) experimental code integrating luaharfbuzz with LuaTeX.