我在使用 fontspec 包和我正在开发的 ttf/otf 字体时遇到了一个问题:
字距调整在 XeLaTeX(以及浏览器等)中可以正常工作,但字距调整在 LuaLaTeX 中仅部分应用。
根据第一个答复中的选项 3如何报告 LuaTeX 中的错误?我在此报告 LuaLaTeX 问题。
(根据对于同一种字体,为什么字距调整对 LuaLaTex 有效,而对 XeLaTex 无效?LuaLaTeX 中的字距调整与 XeLaTeX 中的字距调整完全不同,因此我推测该问题与 fontspec 包完全无关,也与 XeLaTeX 无关。)
细节:
我正在开发的字体基于 Fredrick Brennan 的等宽超现实主义“TT2020”字体中的一些字形,请参阅https://ctrlcctrlv.github.io/TT2020/docs/moreinfo2.html
“TT2020”中的技巧是,GSUB 表为每种类型定义了 9 个略有不同的字形,以模拟自然变化(例如名为“a”、“a.2”、...、“a.9”的字形)。
TT2020 对我来说与 XeLaTeX 和 LuaLaTeX 中的 TeXLive 2021 配合得很好,字符在 9 个字形中正确旋转。
我正在开发的字体还定义了 GPOS 表(和字距表)中字形之间的字距调整,并且在 Mac 上以及 XeLaTeX 中的 TeXLive 2021 上都可以正常工作。但 LuaLaTeX 中的 TeXLive 2021 字距调整仅在某些情况下有效。
以下是一个测试文档:
\documentclass{article}
% Commented out after comment by Davis Carlisle below
%\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{fontspec}
\begin{document}
% Replaced after comment by Marcel Krüger further below
\setmainfont{Jackwriter.ttf}
%\setmainfont{Jackwriter}[UprightFont=[Jackwriter.ttf]]
\lipsum[1]
xxxxxxxxxxxxxxxxxx
iiiiiiiiiiiiiiiiii
\end{document}
引用的字体在这里:
以上来源呈现:
- https://www.artecat.ch/jexler/kerning/kerning-xelatex.pdf
- https://www.artecat.ch/jexler/kerning/kerning-lualatex.pdf
LuaLaTeX 输出中缺失的字距调整可能在最后一行最明显,因为有很多“iiiiiii”。(由于字体基于打字机字体,因此缺失的字距调整不会在所有字母之间显示。还请注意,到目前为止,我只定义了所有小写字形之间的字距调整,但对于大多数其他字形,我仅部分定义了字距调整。)
根据控制台输出使用的版本:
- XeTeX,版本 3.141592653-2.6-0.999993(TeX Live 2021)(预加载格式=xelatex)
- LuaHBTeX,版本 1.13.0 (TeX Live 2021)
- LaTeX2e <2020-10-01> 补丁级别 4
- L3编程层 <2021-02-18>
Mac OS Catalina:10.15.7 (19H524)