[luatex] Unicode composite characters and TrueType fonts

Daniel Flipo daniel.flipo at free.fr
Wed May 24 20:08:49 CEST 2017


Hello,

Most TrueType fonts fail to output Unicode composite characters properly
when using LuaTeX while they do a good job with XeTeX.

Let's take <e-acute> as an example. In principle, <e-acute> can be coded
as U+00E9 or as U+0065 U+0301 (e+acute). The following example compiled
with LuaTeX shows differences which depend on the font:

--8<---------------cut here---------------start------------->8---
\input luaotfload.sty

\font\verdana={Verdana}
\font\georgia={Georgia}
\font\arial={Arial}
\font\roboto={Roboto}

% été is coded as U+00E9 U+0074 U+0065 U+0301
% (visible using emacs for instance).
\verdana e^^^^0301, été    % misplaces accent

\georgia e^^^^0301, été    % swallows accent

\arial e^^^^0301, été      % places accent (a lot) too high

\roboto e^^^^0301, été     % correct

\bye
--8<---------------cut here---------------start------------->8---


The corresponding example for XeTeX would be:

--8<---------------cut here---------------start------------->8---
\input font-change-xetex

\myzfont {Verdana}{10}{}  e^^^^0301, été   % correct

\myzfont {Georgia}{10}{}  e^^^^0301, été   % correct

\myzfont {Arial}{10}{}    e^^^^0301, été   % correct

\myzfont {Roboto}{10}{}   e^^^^0301, été   % correct
\bye
--8<---------------cut here---------------start------------->8---


Should the TTF fonts be blamed or is it a LuaTeX bug? None of the
OpenType fonts I tried showed differences between the two encodings for
<e-acute> both with LuaTeX and XeTeX.

Thanks in advance for your comments and/or workarounds!
-- 
Daniel Flipo


More information about the luatex mailing list