NSFont字体大小与字体指标如何相关

时间:2020-08-15 11:14:27

标签: macos fonts metrics nsfont

此页面上的图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高度。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

让我们看一下macOS上的Arial字体。使用FontForge(或任何其他工具)将其打开,然后查看指标。

  • Em大小2048(又称Em正方形,UPM =每个em的单位,...)
  • 赢得上升1854
  • 后裔434
  • 首都高度1467
  • X高度1062
  • ...

简化说明:

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

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

  • Ascender =(1854/2048)* 256 = 231.75
  • Descender =-(434/2048)* 256 = -54.25
  • 资本高度=(1467/2048)* 256 = 183.375
  • ...

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

不。当您要求256pt字体大小时,您基本上是想将Em size容器缩放到256pt。其他所有内容都取决于字体本身的指标。每种字体的差异很大。