Google 字体在不导入时应用 font-weigh:800

Google fonts applying font-weigh:800 when not importing it

我正在按照以下方式导入尺寸 300 和 400:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab:300,400" media="all">

但我仍然可以申请 font-weight: 800,它看起来与 font-weight:400 不同,为什么?它是从哪里得到的?

复制: https://jsfiddle.net/7164fk3j/

即使我只导入 font-weight 300:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab:300" media="all">

复制: https://jsfiddle.net/7164fk3j/1/

效果如何?只是加粗300吗?

后备权重

font-weight 根据以下算法使用回退权重:

If the exact weight given is unavailable, then the following heuristic is used to determine the weight actually rendered:

  • If a weight greater than 500 is given, the closest available heavier weight is used (or, if there is none, the closest available lighter weight).

  • If a weight less than 400 is given, the closest available lighter weight is used (or, if there is none, the closest available heavier
    weight).

  • If a weight of exactly 400 is given, then 500 is used. If 500 is not available, then the heuristic for font weights less than 400 is used.

  • If a weight of exactly 500 is given, then 400 is used. If 400 is not available, then the heuristic for font weights less than 400 is used.

Source

合成

这解释了浏览器如何映射权重,但它从哪里获得实际的粗体版本?

有一个名为 font-synthesis 的 CSS 属性 可以控制 how/when 浏览器综合缺少的字体方面(粗细、样式)。

The font-synthesis CSS property controls which missing typefaces, bold or italic, may be synthesized by the browser.

这个 属性 没有在很多浏览器中实现,但它的存在表明浏览器在它丢失时正在合成粗体版本(并且总有一天这个 属性 会让我们控制它)。

Source

合成源

综合以上两个概念,貌似Chrome会以权重300为基础进行合成,但如果导入400版本,则会以400为基础,生成a结果稍厚。

仅导入 300 个权重:

导入了 300 和 400 个权重:

导入了 300、400 和 800 个权重: