0

此页面上的图 6.1 显示了您可以从 NSFont 获得的字体指标: https ://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html

如果我创建一个大小为 256 的 Arial 字体,我会得到以下值:


nsfont pointSize 256
nsfont ascender 231.75
nsfont descender -54.25
nsfont leading 8.375
nsfont capHeight 183.375
nsfont xHeight 132.75

我不明白字体大小(256)与指标的关系。我本来希望字体大小等于上升加上下降,或者可能等于 Cap 高度。感谢您的任何帮助。

4

1 回答 1

1

我们来看看 macOS 上的 Arial 字体。使用FontForge (或任何其他工具)打开它并查看指标。

  • Em 尺寸 2048(又名 Em 平方,UPM = 每 em 单位,...)
  • 赢得上升 1854
  • 赢得血统 434
  • 大写高度1467
  • X身高1062
  • ...

简化解释:

  • Em size - 假设它是一个容器,每个字符都将被绘制
    • 您可以找到具有 1000、1024、2048 等值的字体
  • 其他指标(上升,...)是相对于 em 大小的单位
    • 例如上升 - 1854 / 2048 = 0.905...
  • 当您要求 256pt 字体大小时,ascent 为 0.905... * 256 = 231.75

macOS 如何获得您列出的所有这些值:

  • 上升 = (1854 / 2048) * 256 = 231.75
  • 下降 = -(434 / 2048) * 256 = -54.25
  • 资本高度 = (1467 / 2048) * 256 = 183.375
  • ...

我本来希望字体大小等于上升加上下降,或者可能等于 Cap 高度。

没有。当您要求 256pt 字体大小时,您基本上是在说您希望将 Em 大小的容器缩放到 256pt。其他一切都取决于字体本身的指标。每种字体的差异很大。

于 2020-08-17T08:00:00.993 回答