为什么 chrome 显示渲染字体与计算字体系列不同?

Why chrome shows rendered font which is different to computed font family?

我想知道 chrome 如何选择要呈现的字体?我问这个是因为使用 Chrome 开发人员工具我可以看到计算的字体系列与呈现的字体系列不同,这令人困惑。 Whosebug 上的类似问题在这个特定实例中没有太大帮助。

我的电脑字体系列如下:

font-family: museo-sans, sans-serif, Futura;

渲染字体看起来像:

Helvetica—473 glyphs

在此 article 中提到 chrome 将呈现的字体映射到列出的计算字体。这到底是什么意思,为什么要这样做?有没有办法控制呈现哪种字体?

与任何其他浏览器相同:如果它找不到第一个字体,它会尝试下一个,依此类推,直到用完规则。如果没有匹配的字体,则字体从父元素继承,一直到文档级别,它只会选择浏览器的默认字体。

在这种情况下,事情有点奇怪,因为您显示的顺序是 "a real font",然后是 "a generic CSS class that always resolves, but without any guarantee as to which font that will be, just that it'll be a sans-serif font",然后是真正的字体 "futura"。

所以 Chrome 将尝试使用 museo,找不到它,看到通用 "sans-serif" 并为您选择一种已知的无衬线字体。通常这类似于 Arial 或 Helvetica,但 CSS 规范没有具体说明它必须是哪种字体。它只需要是无衬线字体。

这里奇怪的是,您选择的顺序意味着末尾的 "futura" 永远不会 被检查。一旦点击 serifsans-serifcursivefantasymonospace

,浏览器将 always find a suitable font