How to install HarfTeX on TeXLive?

Update november 2019

From now on the recommended way to use harfbuzz with luatex and latex is to use a latex format based on the engine luahbtex together with the version 3.11 or newer of luaotfload which contains support for the harf mode.

The binary luahbtex has been added to texlive 2019 for the major OS. It has been connected to the lualatex-dev format. So texlive user can try it out by compiling with lualatex-dev. (see What is "latex-dev"? about what latex-dev means)

MiKTeX has luahbtex too. It has also mapped lualatex-dev to this engine. You should have both executables in the \miktex\bin folder of MiKTeX.

With the new engine and luaotfload 3.11 the example below would look like this. It is no longer needed to load special lua code. Starting with this version the script should be a script in the font (similar to the normal handling with luatex and mode=node).

\documentclass{article}
\usepackage{fontspec}

\setmainfont{notosansbengali-regular.ttf}[RawFeature={mode=harf;script=ben2;}]
\begin{document}
 কণ্যা এখন কি করিবে? 
\end{document}

With a current fontspec the mode and the script can be selected like this.

\documentclass{article}
\usepackage{fontspec}


\setmainfont{notosansbengali-regular.ttf}[Renderer=Harfbuzz,Script=Bengali]
\begin{document}
 কণ্যা এখন কি করিবে?
\end{document}

======================================

Old version (Installation of harftex)

First step

As you are on windows, get binaries from http://w32tex.org/. If you follow the link ctan you will find a link to harftex-w32.tar.xz.

Unpack it and copy harftex.dll, perhaps icudt64.dll, harflatex.exe and harftex.exe to your texlive/<year>/bin/win32 folder.

Create in texmf-local/web2c a fmtutil.cnf with this content

harflatex harftex language.dat,language.dat.lua lualatex.ini
harftex harftex language.def,language.dat.lua luatex.ini

Then create a texmf.cnf in the same directory with this content

TEXINPUTS.harftex   = $TEXMFDOTDIR;$TEXMF/tex/{harftex,luatex,plain,generic,}// 
TEXINPUTS.harflatex = $TEXMFDOTDIR;$TEXMF/tex/{harflatex,lualatex,latex,luatex,generic,}//

LUAINPUTS.harflatex = $TEXMFDOTDIR;$TEXMF/scripts/{$progname,$engine,}/{lua,}//;$TEXMF/tex/{harflatex,lualatex,latex,luatex,generic,}//

Then run in command line

mktexlsr
fmtutil-sys --byengine=harftex

You can then try if harflatex works by running a small document with

harflatex test-document

You will see no real difference to using lualatex here. To make use of the additional feature of harflatex more files are needed, but this is then the second step.

Second step

get from https://github.com/khaledhosny/harf/tree/master/src all luafiles and the harfload.sty file. Put them e.g. in texmf-local/tex/latex/harf. Run mktexlsr.

Then test e.g. with this document (I used the noto-font as I don't have yours). The important part is (beside loading the harfload-package) the mode=harf in the font definitions. Fonts with this settings will use harfbuzz in the background. Don't use it for fonts that should use the "normal" lualatex fontloader.

\documentclass{article}
\usepackage{harfload}
\usepackage{fontspec}

\setmainfont{notosansbengali-regular.ttf}[RawFeature={mode=harf}]
\begin{document}
 কণ্যা এখন কি করিবে? \

\end{document}

output with harflatex

enter image description here

output with lualatex for comparision:

enter image description here


harftex for (currently) x86_64-linux, i386-linux, and win32 is now in contrib.texlive.info. One can install it with

  tlmgr --repository https://contrib.texlive.info/current install harftex

If I get access to other binaries I will add them later on.