1

我正在按照以下方式导入 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吗?

4

1 回答 1

2

后备权重

font-weight使用基于以下算法的后备权重:

如果给出的确切权重不可用,则使用以下启发式方法来确定实际呈现的权重:

  • 如果给出的重量大于 500,则使用最接近的可用较重重量(或者,如果没有,则使用最接近的可用较轻重量)。

  • 如果给出的重量小于 400,则使用最接近的可用较轻重量(或者,如果没有,则使用最接近的可用较重
    重量)。

  • 如果给出的权重正好为 400,则使用 500。如果 500 不可​​用,则使用小于 400 的字体粗细的启发式。

  • 如果给出的权重正好为 500,则使用 400。如果 400 不可​​用,则使用小于 400 的字体粗细的启发式。

资源

合成

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

有一个名为的 CSS 属性font-synthesis可以控制浏览器如何/何时合成缺失的字体(粗细、样式)的各个方面。

font-synthesis CSS 属性控制哪些缺少的字体,粗体或斜体,可以由浏览器合成。

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

资源

合成源

把上面的两个概念放在一起,看来 Chrome 会以 300 的权重作为合成的基础,但是如果你导入 400 的版本,它会以 400 作为基础,并产生稍厚的结果。

仅进口 300 重量: 在此处输入图像描述

进口 300 和 400 个砝码: 在此处输入图像描述

进口 300、400 和 800 砝码: 在此处输入图像描述

于 2017-11-24T00:57:12.797 回答