1em 和 1ex 的值从何而来?

1em 和 1ex 的值从何而来?

在我的回答“在 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

如所列

不同的 \fontdimen<num> 代表什么意思

ex 和 em 长度在 tfm 格式中分别指定为参数 5 和 6。字体设计者可以将它们设置为任意值,尽管通常 ex 就是 x 的高度(em 变化更大,但通常接近标称设计尺寸)。您还可以在加载字体后、在用字体排版任何文本之前将它们设置为 TeX 中的任意值。

不确定 xetex,但我怀疑它采用了您建议的默认值。

答案2

我不确定这个答案是否正确,因为我既不是专业的印刷工也不是字体设计师。不过,我还是想补充一下我的看法:我认为一致性在这里发挥了作用。

您希望\rule{1ex}{1ex}具有相同的大小,而不取决于当前字体设置是\bfseries还是\itshape(哪个会改变) 。而\heightof{x}Computer Modern 和派生字体中到1em的变化可能在于这些字体始终是。10pt11pt\mdseries\bfseries\widthof{<single-digit>}0.5em

相关内容