当字体未被加载时,字重如何呈现?

3

我通常通过@import url(https://fonts.googleapis.com/css?family=Roboto)从Google下载字体,然后使用它们来调整各种元素(如h1h2等)

h1 {
    font-weight: 500;
}
h2 {
    font-weight: bold;
}

当以下情况发生时,字体渲染是如何计算的:
  • 当尚未通过@import url(https://fonts.googleapis.com/css?family=Roboto:500)加载正确的字重(在上述情况中为500)时?它是从基础版本的字体(效果更好或更差)推断出呢,还是计算出来的,在这种情况下,预先加载500只有助于性能表现,但不会影响字体的视觉效果?
  • 使用了boldbold是否是特定数字权重的快捷方式?还是字体自我定义了bold在其情况下的含义(我猜应该是一个特定的数字权重)?
2个回答

6

关于font-weight

font-weight属性选择字体的粗细。值为100到900形成一个有序序列,其中每个数字表示的重量至少和它的前一个一样暗。关键字'normal'与'400'同义,而'bold'与'700'同义。

以上引用摘自W3.org的推荐,这意味着它是所有浏览器都要使用的标准。


当权重未加载时的渲染

当找不到字体权重时,浏览器会按照一组规则查找最接近的可用选项。

一旦将字体系列的权重映射到CSS比例上,缺失的权重将按以下方式选择:

  • 如果所需权重小于400,则按降序检查所需权重以下的权重,然后按升序检查所需权重以上的权重,直到找到匹配项。
  • 如果所需权重大于500,则按升序检查所需权重以上的权重,然后按降序检查所需权重以下的权重,直到找到匹配项。
  • 如果所需权重为400,则首先检查500,然后使用小于400的所需权重规则。
  • 如果所需权重为500,则首先检查400,然后使用小于400的所需权重规则。

现在,这可能看起来像术语,但对于您的情况,您只需要阅读它的最后一点。

  • 如果所需权重为500,则首先检查400,然后使用小于400的所需权重规则。

因此,最终,它将找到是否使用基本字体,如果没有,它将查找低于基本字体的任何内容,然后如果仍然找不到任何内容,它将尝试查找高于它的任何内容。


bold时的渲染

bold的正常font-weight700。一旦您开始增加字体权重,这不会改变。如果您想要比普通文本更粗的文本的字体权重,您需要使用bolder(或替代的lighter),因为基础字体重量和bolder之间的间隔必须始终大于除非它到达了极限。

下面是bolderlighter特定含义的表格。

基础字体粗细度

100 --- 400 --- 100

200 --- 400 --- 100

300 --- 400 --- 100

400 --- 700 --- 100

500 --- 700 --- 100

600 --- 900 --- 400

700 --- 900 --- 400

800 --- 900 --- 700

900 --- 900 --- 700

最终,所有这些信息都可以在 W3.org 规范中找到。


谢谢您提供文档链接,它解决了很多问题(以及您的回答)。我的问题表述不够清晰:我特别想知道当没有东西“填补空洞”(根据文档)时,缺失权重是如何计算的(以及这是否意味着质量损失)。 - WoJ
希望第二部分“在权重未加载时呈现”能够解释浏览器替换缺失权重的过程。 - Stewartside
第二部分关于加粗的解释非常清楚。我想知道的是,如果我只有基本字体(据我所知,是通过裸的 @import url(https://fonts.googleapis.com/css?family=Roboto) 加载的),那么其他字重就需要计算出来。这个计算是无损的(在质量上),如果是这样的话,就不必加载除基本字重以外的字重 - 还是说这种计算是近似的,需要加载特定的字重才能完美呈现字体? - WoJ
@WoJ 我认为它只是让字体变得更加黑暗,但是正如规范所述,“并不保证每个‘font-weight’值都有一个更深的字体”。 - Stewartside

0

字重定义了字符从细到粗的程度。400与普通相同,700与粗体相同。

据我所知,浏览器将设置CSS中默认设置的字体(如果有设置),或者计算机的默认字体,在Mac上是Helvetica,在PC上是Arial。

字体的粗细仍然会被应用。


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