因此,在处理字体时:
- 默认字重(也称为“常规”)是400
- “粗体”字重是700
- “轻”字重是300
但是...为什么? 400是什么?这是一种单位吗?这背后有历史原因吗?
因此,在处理字体时:
但是...为什么? 400是什么?这是一种单位吗?这背后有历史原因吗?
normal
是相同的,
- 数值700和字符串值bold
是相同的。normal
和bold
,并分别映射到400和700。有关更多信息,请参见https://drafts.csswg.org/css-fonts-4/#font-weight-prop)400
/normal
应该得到该字体系列的 Regular
字形,而字体权重为 700
/bold
应该得到该字体系列的 Bold
字形。其他任何内容都完全未定义,你只知道 100、200 和 300 可能比 400 轻,500 和 600 可能介于常规和粗体之间,800 和 900 可能比 700 更重。@font-face
完全可以使这些数字值的含义失效。如果使用 @font-face
,则完全否决了 CSS 对这些规则的定义。例如:当设置字体权重为 900 时,此规则将影响超薄字体,因为这就是我们告诉浏览器它必须做的事情。@font-face {
font-family: MyFont;
font-weight: 900;
src: url("./fonts/ultra-thin.woff2") format("WOFF2");
}
关于字体粗细没有单位的原因
字体粗细没有单位是因为随着字体粗细的增加和减少,并没有具体可辨认的“事物”被“调高和调低”。与字体大小不同,计算机上字体粗细的增加/减少通常并没有通过编程实现 - 每个字体厚度级别都需要由字体设计师手工创建为完全不同的字体。
这是因为编程实现字体粗细变化比改变大小要困难得多。加粗文本不仅仅是在整个字符上添加了厚度。它通过有选择地在某些字母的某些部分比其他部分更加厚重来添加对比度。请注意下面字体中字母“a”的某些部分如何随着权重的增加变得非常厚重,而同一字母的其他部分则没有增加多少。
这在编程方面并不容易实现,大多数情况下需要手动完成以使其看起来好看 - 印刷工人会创建他们字体的几个不同版本 - 通常是三个 - 开发人员会上传所有三种样式,并设置CSS font-weight属性仅在这些三种之间更改,通常为300、400和700。这是假设您想要真正的粗体/斜体。浏览器提供了假样式 - 假粗体、假斜体等,但结果通常并不理想。
现在的趋势是朝向可变字体,这种字体于2016年推出。它们是专门设计的字体,可以让开发人员完全控制字体粗细和斜体等样式属性。基本上,字体创建者会创建几个不同版本的字体,具有不同的粗细级别,计算机会智能地填充中间空白,以便开发人员现在可以使用给定字体的潜在无限度的字重。
即使有了这种变化,也很难确定使文本更加重或更轻的具体、科学可测量的“事物”。因此,我怀疑我们不会很快看到任何非相对单位引入字体粗细。
关于100的倍数和默认值400的原因
该系统基于1957年为Univers字体开发的Linotype系统。其想法是使用三个数字指定字重、宽度和斜体,顺序为字重、宽度和斜体。因此,099
非常轻、非常宽、非常斜体。905
非常沉重、非常压缩、斜体适中。这只是一个例子,实际可用值是不同的。人们更多地使用了系统中的“字重”部分,因此第二个和第三个数字越来越少被使用,直到它们变得像遗传器官一样,人们忘记了编号系统用于除了指定字重之外的任何其他内容。在这一点上,使用1-9级字重比100-900更有意义,但100-900现在已成为惯例。