CSS:为什么 Chrome(在 Linux 上)忽略了我的字体系列?

CSS: Why Is Chrome (on Linux) Ignoring My Font-Family?

当我使用 Chrome 开发人员工具检查我网站上的元素时,我看到以下内容是我元素的 "Computed" 样式:

font-family: "HelveticaNeue-Medium", "Helvetica Neue Medium", "Helvetica Neue", Helvetica, "Roboto", Arial, "Lucida Grande", sans-serif

但是如果我进一步向下滚动(到 "Computed" 选项卡的底部),我会看到:

Rendered Fonts
Liberation Sans—Local file(11 glyphs)

由于我的 (Linux) OS 必须 Arialsans-serif,我很困惑为什么Chrome 会选择 "Liberation Sans":它甚至不在我的 font-family 列表中。

我会责怪我自己的坏 CSS,但理论上 "Computed" 选项卡显示我的规则的 final/processed 版本,所以无论我原来的 CSS 有多糟糕可能是,Chrome 清楚地看到我的 font-family 列表定义(并被应用)到我的元素......它只是忽略它。

谁能解开这个谜团?

编辑: 我安装了一个字体检查程序,结果发现 Linux (Mint) 实际上并没有 Arialsans-serif 字体...但即便如此,我认为浏览器(至少)提供了基本的 sans-serif 字体,无论 OS 是什么?这不正确吗?

我看到您的字体系列属性中同时包含 Helvetica 和 Arial。我猜你在 Helvetica 不可用时想要 Arial ......处理此问题的已回答问题是:two fonts

现在,如果我只想使用一种字体系列,例如 Century Gothic,我会这样做:

font-family: "Century Gothic", CenturyGothic, AppleGothic, Sans-Serif;

这个不错guide.

我的问题是,为什么你有这么多

您的字体堆栈指定 Arial。

出于许可原因,Arial 在大多数 Linux 系统中不存在,并且通常将其别名为 Liberation Sans,因为 Liberation Sans 具有与 Arial 相同的尺寸(指标)。然而,字体设计不同(这就是为什么 Liberation Sans 通常 不是 默认的 Linux sans serif 字体,它的设计并不流行)。

Helvetica 是另一种著名的传统字体名称,通常不存在。如果您尝试在字体堆栈中使用它,它通常会触发各种别名。它甚至可能在 Arial 之前触发 Liberation Sans 别名(因为 Arial 在 windows 推出时是微软的穷人 Helvetica 替代品,并且具有大致相同的指标)。

(当您创建在 Windows 上指定 Helvetica 的 PDF 时,它通常会替换 ArialMT)。

如果您只指定 sans-serif,您将获得系统 "best" sans-serif 字体,通常是干净的深受喜爱的设计,但它们的尺寸因系统而异。

由于许多损坏的网站的设计者假设所有系统都使用相同的字体,具有可以在页面设计中固定的相同像素宽度,字体替换通常首先在公制上完成,设计第二优先级。

在所有客户端上获得相同字体的唯一方法是使用网络字体,但由于字体下载和用户(不是 "designers")更喜欢快速页面,这会降低您的网站速度。 Web 字体需要小心许可和字体 unicode 覆盖,有安全意识的用户会阻止第三方下载,并且有很多关于晦涩的 Web 字体格式的货物崇拜(现在大多数浏览器中 opentype 就足够了)。

那种认为 HelveticaNeue 是 alpha 和 omega 的 Apple 狂热者通常对 Open Sans 作为网络字体感到满意。

但即使使用网络字体,渲染也会略有不同,因为不同的系统使用不同的文本引擎,它们都有自己的特点,对于给定的引擎,某些字体比其他字体效果更好。

因为GoogleChrome,url留下了WWW,您可以尝试手动放置。 特别是在Unix或者Mac系统中。

Chrome Linux 中有两种字体回退机制。一种是 OS 级回退。另一个是 CSS 指定的回退。 OS 级别的回退机制 returns Liberation Sans 到 Chrome 而不是 nonenot found 而 Chrome 询问 HelveticaNeue 在您的 OS 中是否可用。 Chrome 采用返回的 Liberation Sans 并相信 OS 返回的答案,因此忽略 CSS 后续字体后备列表。