CSS中的font-weight整数值是什么意思?

3
在CSS中,可以将font-weight设置为normalboldbolderlighterinherit和从100-900的平面整数值。现在我的问题是:为什么会有这样的整数值?为什么我们没有列出的属性字符串值,谁想到使用这些整数值,为什么恰恰是这些整数值而不是从1-9
2个回答

4
关于标题中的问题:font-weight 的整数值表示字体的不同粗细,如果字体格式没有 9 种粗细的刻度,则可能需要重新解释这些值。对于 TrueType 格式,该值是分配给 OS/2 表项 usWeightClass 的字体的值。
字体通常带有“常规”、“轻”、“重”、“粗体”等属性名称。这些词的使用因情况而异,但 CSS3 字体描述了数字和名称之间的一个“大致对应关系”
这些数字仅构成序数刻度;例如,我们只能说具有权重 100 和 200 的字体后者不比前者更轻。数字与字符的“黑度”或笔画宽度之间的对应关系取决于字体。
价值“normal”根据定义等于“400”,而价值“bold”根据定义等于“700”。这些只是CSS中可用作两个数字替代品的关键字。
值“bolder”和“lighter”相对于父元素的字重;它们将数值映射到较大或较小的值。因此,它们不构成新的字重。
价值“inherit”表示属性的值应设置为父元素的属性的值。
因此,唯一真正的字重是从100到900的九个值。对于在网页上常用的大多数字体,只有少数几种字重可用(通常只有400和700,或者可能只有400)。
关于“为什么会有这样的整数值?”,认为9种字重足以 - 字体没有比那更多的字重。
关于“为什么我们没有列出的属性字符串值”,数字是中立的,可以独立于用于字体的命名方案使用。
关于“为什么只选这些而不是1-9”,100、200……的规模允许引入中间权重——以防某天有字体设计师想要花时间设计超过九种字体。这种有点奇怪的编号方案将允许以后引入更精细的刻度。

2
这个术语是从TrueType字体继承而来的。
引用维基百科的话:
“TrueType字体格式引入了一个从100到900的比例尺,其中400是常规的(罗马或平面)字体,这也被CSS和OpenType使用。对字体的第一个算法描述可能是由唐纳德·克努斯在他的Metafont和TeX程序系统中进行的。”

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