当我使用 Chrome 开发人员工具检查我网站上的元素时,我将以下内容视为元素的“计算”样式:
font-family: "HelveticaNeue-Medium", "Helvetica Neue Medium", "Helvetica Neue", Helvetica, "Roboto", Arial, "Lucida Grande", sans-serif
Run Code Online (Sandbox Code Playgroud)
但是,如果我进一步向下滚动(到“计算”选项卡的底部),我会看到:
Rendered Fonts
Liberation Sans—Local file(11 glyphs)
Run Code Online (Sandbox Code Playgroud)
由于我的(Linux)操作系统必须有Arial
和sans-serif
,我很困惑为什么 Chrome 会选择“Liberation Sans”:它甚至不在我的font-family
列表中。
我会责怪我自己的糟糕 CSS,但理论上“计算”选项卡显示了我的规则的最终/处理版本,所以无论我的原始 CSS 多么糟糕,Chrome 清楚地看到我的font-family
列表已定义(并被应用)到我的元素......它只是忽略它。
谁能解释这个谜?
编辑: 我安装了一个字体检查程序,结果证明 Linux (Mint) 实际上并没有带有Arial
orsans-serif
字体……但即便如此,我认为浏览器提供了(至少)一种基本sans-serif
字体,无论是什么操作系统?那不正确吗?
您的字体堆栈指定 Arial。
由于许可原因,大多数 Linux 系统上不存在 Arial,它通常被称为 Liberation Sans,因为 Liberation Sans 具有与 Arial 相同的维度(度量)。然而,字体设计是不同的(这就是为什么 Liberation Sans 通常不是默认的 Linux sans serif 字体,它的设计并不流行)。
Helvetica 是另一个众所周知的传统字体名称,通常不存在。如果您尝试在字体堆栈中使用它,它通常会触发各种锯齿。它甚至可能在 Arial 之前触发 Liberation Sans 别名(因为当 Windows 启动时,Arial 是微软可怜的 Helvetica 替代品,并且具有大致相同的指标)。
(当您在 Windows 上创建指定 Helvetica 的 PDF 时,它通常会替代 ArialMT)。
如果您只指定 sans-serif,您将获得系统“最佳”sans-serif 字体,通常是干净的深受喜爱的设计,但它们的尺寸因系统而异。
由于设计人员假设所有系统都使用相同字体、相同像素宽度且可以在页面设计中固定的损坏网站的数量,字体替换通常以公制为先,设计为第二优先级。
在所有客户端上获得相同字体的唯一方法是使用网络字体,但由于字体下载和用户(不是“设计师”)更喜欢快速页面,这会减慢您的网站速度。Web 字体需要小心许可和字体 unicode 覆盖范围,有安全意识的用户会阻止第三方下载,并且有很多关于晦涩的 Web 字体格式的货物(opentype 在当今大多数浏览器中就足够了)。
那种认为 HelveticaNeue 是 alpha 和 omega 的苹果狂通常对 Open Sans 作为网络字体感到满意。
但即使使用 Web 字体,渲染也会略有不同,因为不同的系统使用不同的文本引擎,它们都有自己的特性,对于给定的引擎,某些字体比其他字体工作得更好。