CTFontGetAscent()与OSX上匹配字体的上升有很大不同

时间:2013-04-23 15:14:29

标签: ios xcode fonts core-text

比较CTFontGetAscent()的输出和OS X上相同字体的上升值,我得到两个非常不同的值(考虑点大小)。

实施例: Helvetica Neue上升了952,导致点数35上升33. CTFontGetAscent返回16。 标记毛毡(宽)上升800,导致点大小35上升27点.CTFontGetAscent返回37。

考虑CTFontGetUnitsPerEm()的值不会产生正确的值。

设备上的字体是否真的与“桌面版”字体有很大不同,或者我错过了什么?或者CoreText返回错误的结果?

1 个答案:

答案 0 :(得分:1)

(回答我自己的问题) 许多桌面应用程序报告了不同的上升值,可在字体的Windows兼容性表(“OS / 2”表)中找到。

可以通过以下方式访问表的原始字节:     CTFontCopyTable(myFontRef,'OS / 2',0);

表中的所有字节均按网络顺序排列(请参阅http://linux.about.com/library/cmd/blcmdl3_ntohs.htm

前2个字节构成版本号。可以在http://www.microsoft.com/typography/otspec/os2.htm找到每个表版本的规范。请记住将每个字段的字节翻转为主机顺序。

表格中的“sTypoAscent”字段给出了上升值。除以CTFont(CTFontGetUnitsPerEm)提供的unitsPerEm值,你得到字体的百分比上升。