Skip to content
A TeX enginge with embedded HarfBuzz and Lua
C Makefile C++ CWeb TeX HTML Other
Branch: master
Clone or download
Pull request Compare This branch is 122 commits ahead, 6 commits behind TeX-Live:trunk.
Latest commit 26df565 Aug 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
manual Recompile the manual May 1, 2019
source reautoconf Aug 15, 2019
.gitignore Add .gitignore Apr 14, 2019
.travis.yml Enable size optimization on Travis builds Jul 16, 2019
COPYING In with the new! Mar 27, 2009
NEWS Update the right news file Jul 18, 2019 Add some background information [ci skip] Apr 30, 2019 Add back --without-mf-x-toolkit --without-x May 31, 2019

Build Status


HarfTeX is a TeX engine based on LuaTeX and aims to combine the flexibility of LuaTeX with comprehensive support world languages and writing systems more-or-less out of box (à la XeTeX).

HarfTeX achieves this by including widely used text layout and font loading libraries (such as HarfBuzz and ICU). That is while keeping the ability for its users to replace the text layout engine.


LuaTeX does not provide native support for text layout other than what TeX originally provided, and instead provide hooks to its internals and Lua scripting capabilities that allow users (or macro packages) to provide such support.

While this is a worthwhile goal, the complexity of text layout and font processing means developing such support from scratch is a complex, time-consuming task that also needs active ongoing development. This resulted in practically having only one text layout engine for LuaTeX written by the ConTeXt team (available through the luaotfload package for LaTeX and Plain TeX). Though it is a very capable engine, it falls short of supporting many world writing systems or some advanced text layout capabilities.

HarfTeX started as an attempt to integrate the HarfBuzz text layout library into LuaTeX as a Lua module and a Lua support package, allowing users to benefit from a mature, well supported and featureful text layout engine. However, the LuaTeX team preferred to avoid the extra dependencies and suggested building a separate engine instead.


Run the build script from the top level directory (see the comment at the op of the script for a list of the options it take):

$ ./
You can’t perform that action at this time.