[luatex] glue fill order

David Carlisle d.p.carlisle at gmail.com
Sat Oct 5 22:41:19 CEST 2019

Is there any chance that luatex could change here to be compatible
with other systems?

This is a particularly tricky incompatibility as code is unlikely to
error, just silently do the wrong thing, eg existing code on ctan such

\ifnum\gluestretchorder\tabu at cellskip =\tw@ \hskip-\tabu at cellskip

expecting fill glue to have stretch order 2 just fails in luatex.

\gluestretchorder is available in etex/pdftex/e(u)ptex/xetex and the
luatex value is out by one with respect to all the rest. Even  the
euptex which has fi glue, maintains etex compatible \gluestretchorder.

Interestingly omega, which introduced this, documents its syntax as
being specifically designed to be compatible with existing macros:

\subsection{New infinity level}

A new infinity level \texttt{fi} has been added.  It is smaller than
\texttt{fil} but bigger than any finite quantity.  Its original intention
was for inter-letter stretching: either \emph{filling-in-the-black},
as is done for calligraphic scripts such as Arabic; or for emphasis,
as in Russian; all this without having to rewrite existing macro packages.
There is therefore a new keyword, \texttt{fi}, and two new primitives,
\verb|\hfi| and~\verb|\vfi|.

but the luatex implementation is really quite incompatible.

If it is not possible to change the default behaviour would it be
possible to have a flag settable in the format so that  fi fil fill
fill were (say) -1,1,2,3 not 1,2,3,4?
both for \gluestretchorder and tex.setglue ?


More information about the luatex mailing list