我认为当 Don Knuth 创建他的 Computer Modern 字体时,他针对 对其进行了优化,至少在他看来是这样\nonfrenchspacing
。但由于几乎所有未使用 TeX 创建的书籍在标点符号后都没有多余的空格,那么大多数其他字体是否都针对 TeX 进行了优化,是否事后才进行\frenchspacing
任何设置?\nonfrenchspacing
答案1
为 TeX 设计的字体通常编码七个值,这些值可通过以下命令供 TeX 使用\fontdimen
: font_slant
、font_normal_space
、font_normal_stretch
、font_normal_shrink
、font_ex_height
、font_quad
和。这些值是按顺序排列的;您可以使用、等方式font_extra_space
获取它们。\fontdimen1
\fontdimen2
标点符号后的额外空格由 控制\fontdimen7
,在 Metafont 源中定义为font_extra_space
。cmr
例如,在 中\fontdimen7
设置为2u#
,这是 Metafont 的深奥魔法,我们无需在此深入探讨。(实际上并不是很深奥;但在这里也不太相关。)
但是,这些\fontdimen
值可以由 TeX 操纵。例如,要获取\frenchspacing
Computer Modern 字体标点符号后的行为,只需\fontdimen7
对这些字体执行 reset 即可。因此,例如:
\documentclass{article}
\begin{document}
\font\cmr=cmr10
\cmr Hello. I'm Joe.
\fontdimen7\cmr=0pt
Hello. I'm Joe.
\end{document}
根据字体格式,TeX 将从不同的地方获取参数的值\fontdimen
。对于 Computer Modern 和其他 Metafont 字体,它们在 Metafont 源中设置,并由 TeX 从文件中获取tfm
。
这是一个简短的回答:不,字体没有针对\frenchspacing
或其他方面进行优化;但它们确实设置在两种情况下都会使用的值,除非这些值被 TeX 覆盖。