想知道 TeX / LaTeX 中是否有字母间距的压缩/扩展。在查看字体规格,我注意到它们只有 2 个水平属性:前进宽度和左侧轴承。
当前点到字形最左边点的水平距离为左侧边距。字形绘制完成后,当前点移动到下一个字形位置的水平距离为前进宽度。
还会发生一些字距调整,但忽略这一点,字体基本上只定义了每个字母周围的预定义间距(在字母开始之前和字母结束之后)。我想知道 TeX / LaTeX 是否会以某种方式使用或覆盖此行为。也就是说,如果在断线程序或相关,它也可能决定某些字母需要以某种方式压缩或扩展。也许它以单个字母为基础、以单词为基础或以整行为基础(例如,在每一行上,每个字母都有一组间距扩展/压缩)。我从链接的论文中知道他们有可以拉伸和收缩的胶水,即单词之间的空间,但我不确定他们是否会干扰字体测量以进行字母间间距调整。
如果是这样,我感兴趣的是知道在哪里可以找到更多关于字母间距的具体信息。
我知道您可以手动更改每个字母的字母间距,但我想知道是否有任何自动发生的事情。
答案1
据我理解,“字母间距”是指故意且明显地增加某些字母之间的间距,例如小型大写字母或全大写字母。
microtype
确实支持这种意义上的字母间距,其他各种软件包也是如此。
但这和换行没有任何关系。
如果使用某些引擎,可以进行调整以协助换行算法并改善视觉对齐等。这是一个非常不同的功能,根据设计,它不应该被读者注意到或看到。当然,从某种意义上说,它是可见microtype
的,但除非读者正在寻找它并检查排版的属性,而不是检查排版的内容,否则它不应该被察觉到。
任何特定文档是否使用微排版,如果是,那么它在哪些设置下使用哪些功能取决于一系列因素。
使用的格式。据我所知,这几乎仅限于 LaTeX。
包加载了吗
microtype
?这对于微排版来说是必需的(尽管对于字母间距来说不一定是必需的)。使用哪个引擎以及该引擎的哪个版本?当前 pdfTeX 完全受支持。当前 LuaTeX 得到良好支持。当前 XeTeX 的支持极其有限。TeX 完全不受支持。
使用哪种字体?某些功能需要可缩放字体。
使用哪种字体?某些字体有特定于字体的配置。否则,
microtype
将使用更保守的“通用”设置。当然,人们可以覆盖这些。哪些字体激活了哪些功能?有默认设置,但显然可以覆盖这些设置。
文档类和/或加载的包是否会干扰特定上下文中功能的实现?例如,默认情况下,大多数(所有?)类的节标题的光学对齐都会失败。(此外,我无法让它适用于某些类和包,即使它可以为标准类和 Memoir 修复。)
如果配置满足所有需要,microtype
可以使用字体扩展来辅助换行。基本上,它会将字体缩放很小的倍数,以帮助避免水平间距不佳。这样做的效果不是字体大小的明显变化,而是一种非常微妙的变化,实际上只是帮助换行。
此外,如果勾选了必要的框,该软件包还可以执行诸如启用悬挂标点和其他视觉对齐方面的操作。此功能最适合字体特定的配置,但它与大多数其他字体的通用设置配合使用效果也相当好。
可用的微印刷特征的完整列表(来自手册中的表 1)是:
- 突出
- 扩展(自动或非自动)
LuaTeX 和 pdfTeX 支持这两项功能。XeTeX 仅支持凸起。
- 字距调整
- 间距
仅支持 pdfTeX 并且默认禁用。
以下是两张前后对比图,仅供参考。线条表示页面布局,因此您可以轻松看到文本块的边缘。
这显示了没有 的结果microtype
。事物实际上是对齐的,但不是视觉上的。
这显示了 的结果microtype
。事物在视觉上是对齐的,因为标点符号可以稍微突出到边缘。
这显示了 TeX 在将段落拆分成行时遇到的一个问题。结果就是本文档中出现了几个“坏框”之一。(请注意,我必须将字体大小增加到 12pt,并将纸张尺寸减小到 A6 才能得到坏框。)
这显示了扩展功能的改进microtype
。加载包消除了本文档中的所有坏框。
相关的非微印刷特征(来自同一张表):
- 追踪
这就是人们在这个网站上通常所说的“字母间距”。它支持 pdfTeX 和 LuaTeX。虽然不支持 XeTeX,但该软件包为该引擎fontspec
提供了此功能。LetterSpace
以下是标准小型大写字母的比较:
相同示例,但启用了microtype
's tracking
,默认情况下适用于小型大写字母:
此外,还microtype
提供了选择性禁用连字等功能。
扩展演示代码:
\documentclass[british,a6paper,12pt]{article}
\usepackage[showframe]{geometry}
\usepackage{babel}
\usepackage{cfr-lm}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage{kantlipsum}
\begin{document}
\kant[1-20]
\end{document}
所有示例均用 pdfTeX 编译。