我认为 TeX 使事物看起来如此漂亮的原因是,它会检查每个段落,并根据其深度、宽度以及周围字母的特征对每个字母/单词进行间距调整,使其看起来“正确”。
我的问题是:这如何适用于不同的字体?每种字体的字母大小和空白空间可能完全不同,等等。它是基于 TeX 可以确定的字体特征,例如宽度吗?它嵌入在字体文件中吗?还是我对 TeX 的评价过高了?
我很奇怪,因为我一直以为这是我用来激活字体的软件包的一部分,但 LuaTeX 和 XeTeX 允许您使用 TTF 和 OTF 字体文件,我假设它们不包含任何像这样的花哨的东西。
答案1
字间间距基于字体文件中存储的参数(.tfm
)。确切地说,每个字体至少存储了七个长度
\fontdimen1
是“每点倾斜度”(以点表示)
\fontdimen2
是单词间间距
\fontdimen3
是单词间拉伸
\fontdimen4
是单词间收缩
\fontdimen5
是 x 高度
\fontdimen6
是四边形宽度
\fontdimen7
是“额外空间”
相关参数为 2、3 和 4;在两个单词之间,第一个单词在字体中,\x
TeX 插入相当于
\hskip \fontdimen1\x plus \fontdimen2\x minus \fontdimen3\x
当当前空间因子至少为 2000 时,“额外空间”就会进入场景(有关详细信息,请参阅 TeXbook 或 TeX by Topic)。字体设计师有责任根据字体的黑度和整体大小将这些参数设置为合适的值。
总是可以通过赋予\spaceskip
和非零值来覆盖这些参数\xspaceskip
。
XeTeX 和 LuaTeX 将 OTF 字体参数转换为参数值\fontdimen
;例如,使用 Linux Libertine 我们得到
\fontdimen2
2.5pt
\fontdimen3
1.25pt
\fontdimen4
0.83333pt
\fontdimen7
0.83333pt
答案2
字体的间距信息(以及其他信息,ee,连字)包含在.tfm
该字体的文件中。(tfm
代表“TeX 字体指标”。)也就是说,它包含在与包含有关如何绘制字符的信息的文件完全分开的文件中。