网页字体中的字符宽度由什么定义?

6

字体大小似乎适用于字体“框”的高度,就我所知,这个“框”在字体文件本身中定义。因此,对于相同的字体大小,任何字符(无论其视觉高度如何)都应位于等高的框内。

那么,字符的宽度在哪里定义?

每个字符的宽度也需要与字体大小相关联,但是每个字符似乎都有不同的宽度(通过这个测试这个测试)。它不像高度那样规则。因此,定义每个字符的宽度的不是字体中定义的框的宽度。

那么,它是在哪里/如何定义的呢?

2个回答

2
字体中每个字形(字符)的定义都有一个宽度值,该值与字体大小成比例。因此,对于TrueType字体,字体大小通常被分解为2048个单位。然后,每个字形的宽度定义为同样数量的单位。
例如,使用Arial字体,字符“i”的宽度为180个单位(AW -(LSB + RSB)= 455-(136 + 139))。

Glyph metrics for i character

w 的宽度为1457个单位(AW - (LSB + RSB) = 1479 - (6 + 16))

Glyph metrics for w character

(图片来自TypeLight 3.2)

这是一个很好的答案,谢谢。我还想知道这些信息是如何保存在字体文件中的,是否可以通过任何客户端或服务器直接获取。在我开始新问题之前,您是否知道这一点?谢谢。 - Jaume Mal
1
@JaumeMal - 我相当确定在浏览器中无法以编程方式获取信息。可能可以在服务器端获取它,但我不知道任何这样做的方法。如果您要提出新问题,请小心不要违反关于/离题规则,即不要要求社区为您找到一个库。 - Alohci

0
据我所知,宽高比是一种更或多或少标准的比例。它通常不会改变。字体大小属性是缩放宽高比的一种方式。对于给定的字体,比例保持不变。这里有一个链接提供有关比例图表的更多细节:

https://www.lifewire.com/aspect-ratio-table-common-fonts-3467385

因此,如果像素中的字体大小定义了高度,则宽度由字体系列的宽高比定义,您可以通过style.fontSizeAdjust更改它,根据文章所述。


但是,就我理解您的回答而言,这应该导致相同字体的所有字符具有相等的宽度。但事实并非如此,不是吗? - Jaume Mal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接