我認為當 Don Knuth 創建他的電腦現代字體時,他優化了它們,至少在他看來是針對\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#
,這是元字體的深層魔力,我們不需要在這裡深入探討。 (實際上並不是很深入;但這裡也不是很相關。)
然而,這些\fontdimen
值可以由 TeX 來操作。例如,要取得\frenchspacing
Computer Modern 字體標點符號後的行為,您只需\fontdimen7
對這些字體說重置即可。因此,例如:
\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 覆蓋。