hga*_*tes 6 fonts truetype opentype
我正在尝试解析 truetype 字体来构建和存储每个字体大小的上升部分、下降部分,我正在使用http://nodebox.github.io/opentype.js/,它做了很棒的工作,但我不明白如何计算返回值。
示例字体 Blackoak (adobe) 我有 [Ascender, Desender] = 1900 和 -500
我认为这些数字表示距全空间基线的距离,但是我是否需要其他元信息来计算这些值?
如果您想计算特定字体大小的上升/下降像素(以像素为单位),那么您需要查找和值的OS/2表(按照W3C的指示)。表中的 和 值仅标记字体设计者的意图,不一定对应于实际计算值。关于值类型,你是对的,上升部分和下降部分采用 UPM 单位,负值表示低于基线。sTypoAscendersTypoDescenderascenderdescenderhhea
为了将这些数字转换为特定字体大小的像素,您还需要提取字体中每个 em 的单位数。您可以通过读取表unitsPerEm中的值来做到这一点head。通常,OTF 为 1000 UPM,TTF 为 1024 或 2048 UPM。sTypoAscender和的绝对值sTypoDescender相加应该等于unitsPerEm值。然后这只是一个比例问题。
例如,让我们看一下 opentype.js字体检查器并假设字体大小为 16px。值为unitsPerEm2048 UPM,sTypoAscender相应sTypoDescender为 1536 和 -512 (1536 + 512 = 2048):
Ascender = 16 * 1536/2048 = 12px (above baseline)
Descender = 16 * -512/2048 = -4px (below baseline)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |