比较CTFontGetAscent()的输出和OS X上相同字体的上升值,我得到两个非常不同的值(考虑点大小)。
实施例: Helvetica Neue上升了952,导致点数35上升33. CTFontGetAscent返回16。 标记毛毡(宽)上升800,导致点大小35上升27点.CTFontGetAscent返回37。
考虑CTFontGetUnitsPerEm()的值不会产生正确的值。
设备上的字体是否真的与“桌面版”字体有很大不同,或者我错过了什么?或者CoreText返回错误的结果?
答案 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值,你得到字体的百分比上升。