Chrome 中的字体粗细和字体样式重置 OpenType 设置

OpenType settings reset by font-weight and font-style in Chrome

我正在使用 Google 字体中的 Raleway 作为我项目的主要字体。

一切都很好,直到我注意到数字以 "old-style" 模式显示,这意味着一些数字的上升或下降从字体的基线上升或下降。这会损害呈现大量数字的 UI 部分的可读性。

为了解决这个问题,我可以使用 CSS 调整一些 OpenType 设置,如下所述:https://www.codesmite.com/article/fixing-raleway-and-similar-fonts-numerals

设置 font-feature-settings and/or font-variant-numric 在 Firefox 和 Edge 上工作得很好,但是 Chrome 似乎忽略了它应用了重量或样式规则的元素.

基本上任何具有 font-weight(例如 bold)或 font-style(例如 italic)的非常规 CSS 值的元素都会恢复数字衬里恢复旧式。该特定元素上的显式衬里规则 (font-feature-settings: "lnum") 也没有任何效果。

Chrome 有什么解决方法吗?或者有没有合适的方法来全局定义数字衬里?

我已经在 CodePen 中说明了这个问题。如果您在不同的浏览器中打开它,您会注意到 IE 和 Firefox 按预期工作,但 Chrome 和其他基于 webkit 的浏览器呈现它如上所述:https://codepen.io/anon/pen/LdVoJG

之所以这样,是因为同时使用了两个不同版本的Raleway。

Google 提供的版本只有那些旧式数字——它们没有衬里数字 (lnum)。因此,对于从 Google 服务器加载的所有字体,您会看到这些看起来不规则的数字。

但是您看不到它们的正常重量,因为它正在加载 Raleway 的 local verson。可安装版本(也称为 "desktop version")包含 Raleway 附带的所有 OpenType 布局功能——包括内衬数字。因此,对于所有设置为正常字重的文本,数字将更改为内衬数字。对于您尚未安装且将从 Google 获取的所有版本的 Raleway,不会有这些,因此您会看到不规则的。

尝试卸载所有本地版本的Raleway 并再次尝试使用CodePen。 (注意:通过 Typekit 安装的字体必须通过 Creative Cloud 应用程序删除。)

为什么您会看到 Chrome 和 Firefox 之间的差异,我不知道 — 我确实遇到过您提到的问题,但我在两种浏览器中都遇到过,直到我卸载了本地版本的 Raleway。