在我的回答“在 LaTeX 中应该使用哪种测量单位?”我使用 TFM 字体和使用非 TFM 字体的 XeLaTeX 字体机制探索了不同字体1em
的值。1ex
我的,高度经验主义,该帖子的结论是:
- 对于 TFM 字体:
- 的值
1em
不等于字体的‘选定大小’,也不是实际的“M”的宽度。 - 的值
1ex
与实际“x”的大小无关。但是,对于所有“Computer Modern”文本字体和最多“拉丁现代”文本字体的样式,1ex
=\ht
\hbox{x}
- 的值
- 对于非 TFM 字体(在 XeLaTeX 中):
- 的值
1em
正是‘选定的字体大小’。 - 的值
1ex
恰好是“x”的高度。(\ht
的\hbox{x}
)
- 的值
现在回答我的问题。我是否正确地假设:
- 对于 TFM 字体:
1em
和的值1ex
是字体定义文件中单独的“独立”值,这些值在字体加载时会被读入 LaTeX。
- 对于非 TFM 字体(在 XeLaTeX 中):
- 的值
1em
是总是设置为“选定的字体大小”,并且的1ex
值为总是设置为“x”的高度。(\ht
的\hbox{x}
) - 或者;是否有可能
1em
≠‘选定的字体大小’和/或1ex
≠\ht
的\hbox{x}
?
- 的值
编辑以更好地指定我正在寻找的答案:
tohecz 提供的答案涉及设计原因,1em
并不1ex
完全与字母“M”和“x”的范围相关。我正在寻找的答案更像是 TeX 从哪里加载这些值。
David Carlisle 提供的答案证实了我的第一个断言(对于 TFM 字体,值是从字体定义文件中加载的,并且与字母“M”和“x”的范围无关)。
剩下的问题是,对于从非 TFM 文件加载的 Xe(La)TeX 字体,这些值是否总是取自字母“x”的选定大小和范围。
1em
我发现这很有趣,因为和的值1ex
在你从 TFM 文件(例如通过\usepackage{lmodern}
)加载拉丁现代字体或通过新字体方法(例如通过\fontspec{LMSans10}
)时会有所不同
[我意识到这\usepackage{lmodern}
可能是最一致的,但是仍然...]
答案1
如所列
ex 和 em 长度在 tfm 格式中分别指定为参数 5 和 6。字体设计者可以将它们设置为任意值,尽管通常 ex 就是 x 的高度(em 变化更大,但通常接近标称设计尺寸)。您还可以在加载字体后、在用字体排版任何文本之前将它们设置为 TeX 中的任意值。
不确定 xetex,但我怀疑它采用了您建议的默认值。
答案2
我不确定这个答案是否正确,因为我既不是专业的印刷工也不是字体设计师。不过,我还是想补充一下我的看法:我认为一致性在这里发挥了作用。
您希望\rule{1ex}{1ex}
具有相同的大小,而不取决于当前字体设置是\bfseries
还是\itshape
(哪个会改变) 。而\heightof{x}
Computer Modern 和派生字体中到1em
的变化可能在于这些字体始终是。10pt
11pt
\mdseries
\bfseries
\widthof{<single-digit>}
0.5em