There seem to be significant differences in the horizontal alignment of the "dot-under" accent depending on whether pdfLaTeX, XeLaTeX, or LuaLaTeX is in use. (I use MacTeX2016, which (still) uses LuaTeX 0.95, with all packages updated thru today (2/22).)
With pdfLaTeX:
With XeLaTeX (and fontspec
):
With LuaLaTeX (and fontspec
):
The placement of the dot-under accents with pdfLaTeX and XeLaTeX is fairly similar, but it's rather different and, in some cases, rather haphazard-looking with LuaTeX; cf. the location of the dot-under accent below the letter i
. The placement of the dot-under accent below the letter e
isn't exactly too hot either.
Is there something a LuaLaTeX user can do to "fix" the placement of the dot-under accents?
Incidentally, if EB Garamond
is used instead of Computer/Latin Modern
, the placement of the dot-under accents is fairly similar (and, in particular, not objectionable) for pdfLaTeX, XeLaTeX, and LuaLaTeX.
\documentclass[border=0.5pt]{standalone}
\usepackage{ifluatex,ifxetex}
\ifluatex
\usepackage{fontspec,luatex85}
\else
\ifxetex
\usepackage{fontspec}
\else
\usepackage[T1]{fontenc}
\fi
\fi
\begin{document}
\d{a} \d{e} \d{i} \d{o} \d{u}
\end{document}
Best Answer
What happens, at the moment, is that no
\d
composites are declared in the TU encoding, so\d{a}
and so on are realized as combinations with the combining dot below (U+0323).However, with XeLaTeX, the HarfBuzz library will seize the initiative and if the precomposed character exists in the font, it will use it. This doesn't happen with LuaTeX.
This is a grey area, I'd say. If the composite are declared, you get nothing if the font doesn't support the characters, if not, you have to rely on good positioning.
Indeed, if I try
\showoutput
with LuaLaTeX, I get for\d{i}
whereas XeLaTeX shows
Unfortunately, Latin Modern is quite weak in positioning certain combining characters, other fonts are better in this respect.
You can fix the issue, provisionally, by defining yourself the necessary composites:
For the “hidden feature”, see How to place a dot below for example: e?