Skip to content
Deepak Jois edited this page Mar 15, 2021 · 19 revisions

Table of Contents

Introduction

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.

Harfbuzz documentation

Documentation for Harfbuzz is hard to come by. There is no definitive source for it. Information is spread over the API docs, codebase, the wiki and the mailing list archives.

To get started from the very basics, try the harfbuzz-tutorial, along with the walkthough accompanying that. It is recommended to 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 documentation

luaharfbuzz does not do much beyond wrapping the original Harfbuzz API. So it is necessary to have some background in Harfbuzz first. Refer to the following sources for luaharfbuzz specific documentation:

  • API Docs
  • 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.

API Coverage and Adding Additional APIs

API Coverage Status file contains a 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.