gpt4 book ai didi

fonts - 计算字体 truetype hhea 值(上升、下降)

转载 作者:行者123 更新时间:2023-12-02 06:32:31 27 4
gpt4 key购买 nike

我正在尝试解析 truetype 字体以构建和存储每个字体大小的上升部分、下降部分,我正在使用 http://nodebox.github.io/opentype.js/这做得非常出色,但我不明白如何计算返回值。

示例字体 Blackoak (adobe)我有 [上升,下降] = 1900 和 -500

我认为这些数字表示距全空间基线的距离,但是我是否需要其他元信息来计算这些值?

最佳答案

如果您想计算特定字体大小的上升/下降像素(以像素为单位),则需要查找 OS/2 表中的 sTypoAscendersTypoDescender code> 值(按照 W3C 的指示)。 hhea 表的 ascenderdescender 值仅标记 font designer's intention其中不一定对应于真实的计算值。关于值类型,你是对的,上升部分和下降部分采用 UPM 单位,负值表示低于基线。

为了将这些数字转换为特定字体大小的像素,您还需要提取字体中每个 em 的单位数。您可以通过从 head 表中读取 unitsPerEm 值来完成此操作。通常,OTF 为 1000 UPM,TTF 为 1024 或 2048 UPM。 sTypoAscendersTypoDescender 的绝对值合计应等于 unitsPerEm 值。然后这只是一个比例问题。

例如,让我们看一下 opentype.js Font Inspector并假设字体大小为 16px。值unitsPerEm为2048 UPM,sTypoAscendersTypoDesender分别为1536和-512(1536 + 512 = 2048):

 Ascender = 16 * 1536/2048 = 12px  (above baseline)
Descender = 16 * -512/2048 = -4px (below baseline)

关于fonts - 计算字体 truetype hhea 值(上升、下降),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com