LuaLaTeX 通过 luaotfload 包能够动态添加和修改字体的功能和属性。这是通过FeatureFile
在加载字体时使用 fontspec 中的选项来实现的;例如,
\setmainfont[FeatureFile=times-nr.fea]{Times New Roman}
其中,times-nr.fea
在 fontspec 手册中给出了列表(参见 §11)。这些功能文件的语法如下:Adobe。不幸的是,我还没有机会亲自研究这个问题,我也不确定什么是可能的,也不知道如何去做。
我想在 fontspec 手册中添加更多示例,尤其是调整单个字形周围的侧边距以及调整相邻字形之间的字距等等。能够为字体定义自定义字距将真正使 LuaLaTeX 成为世界一流的排版引擎 — 没有其他 TeX 程序能够如此轻松地完成此类事情。
我想做一个实验:fontspec 的源代码位于GitHub。我将为这个问题提供悬赏,以寻找对 fontspec 手册的最佳补丁,为 FeatureFile 选项添加更多的文档,特别是关于侧边距和/或字距调整,但希望您还能看到其他有趣的内容。
那么,有人可以帮忙吗?
PS 如果你纠结于编译 fontspec.pdf 需要一大堆预先构建的 PDF 作为示例,你可以获取它们来自CTAN。
答案1
我不想干扰这个实验,但由于到目前为止还没有人发布答案,所以我只是将更新推送到了文档的功能文件部分github。这不是最清晰的记录方式,但我尽了最大努力(就我的英语能力而言:)
)
答案2
调整 TeX Gyre Bonum 中字形对 fh 的字距需要类似这样的操作......
赔偿责任
languagesystem DFLT dflt;
languagesystem latn dflt;
feature kern {
pos \f \h 125;
} kern;
测试.tex
\documentclass{article}
\usepackage{fontspec}
\setmainfont[FeatureFile=bonum.fea]{TeX Gyre Bonum}
\begin{document}
fh
\end{document}
但是 babel 包存在一个问题...
测试2.tex
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\setmainfont[FeatureFile=bonum.fea]{TeX Gyre Bonum}
\begin{document}
fh aufhalten
\end{document}
如您所见,调整后的字距仅适用于字形对的第一个实例。当字形对出现在单词内部时,调整后的字距不适用。当未加载 babel 时,一切都正常。