Web 浏览器如何从字体系列中选择字体?
Posted
技术标签:
【中文标题】Web 浏览器如何从字体系列中选择字体?【英文标题】:How does a web browser select a font from a font family? 【发布时间】:2020-05-20 14:15:17 【问题描述】:我最近尝试帮助朋友解决网络浏览器中的字体问题,但发现以下问题:
在网页上(例如***),字体样式规范包括字体系列列表中的Arial 字体。通过使用 Firefox 的检查元素功能并从 font-family
中删除 Arial
条目,视觉外观会发生变化。
令人费解的是,我在 GNU/Linux 操作系统上工作,但我没有从 Arial 字体系列中找到任何字体(使用 fc-list
和 locate
命令)。
如何确定要使用的字体?
问题也可能是:当计算机上没有以 Arial 命名的字体时,firefox 的“Arial”是什么字体?
【问题讨论】:
在 Firefox 上,如果您检查元素的样式(在“规则”选项卡中),请查找font-family
声明(如果有)。使用的字体将带有下划线。此外,Firefox 也有一个字体选项卡,它会告诉您使用的字体以及页面上的所有其他字体用户。这由字体系列列表确定,具体取决于您的操作系统上可用的内容或加载的网络字体(使用@font-face
)。
正确编码的网站有字体,然后是字体后备。如今,浏览器已经足够聪明,可以在指定字体不可用时回退到 fallback 字体。如果没有所需/指定的字体可用。浏览器将使用默认字体。
元素检查器中的“规则”选项卡就是我正在查看的内容。删除Arial改变了外观,删除其他字体没有效果,但我不知道Arial是从哪里来的。我的猜测是浏览器会回退到安装在我电脑上的不同字体。
【参考方案1】:
似乎 Firefox 将 Liberation Sans 字体包含在 Arial 字体系列中,如果在 css 中指定了 Arial
,则很乐意使用这些字体。这是有道理的,因为字体被设计为相似。
【讨论】:
【参考方案2】:您提供了指导,但您无法决定最终用户的浏览器使用什么,因为您无法确定您想要的字体是否已加载。最佳实践是逗号分隔的列表,如果请求的字体不可用,浏览器将从列表的开头尝试并回退到下一个,依此类推。像sans-serif
这样的通用选项作为后备的最后手段非常常见。
来自 MDN:
您应该始终在一个通用姓氏中包含至少一个通用姓氏 font-family 列表,因为不能保证任何给定的字体都是 可用的。这使浏览器可以选择可接受的后备字体 必要时。
https://developer.mozilla.org/en-US/docs/Web/CSS/font-family
【讨论】:
我想我理解后备字体的概念,但是字体从何而来?如果我删除 Arial(在元素检查器中),网站会更改,但是删除任何或所有其他字体不会做任何事情。 这将是在浏览器运行的任何设备上加载的系统或用户字体。 有没有办法获取firefox加载字体的路径? 为了什么目的? 你根本无法从前端代码中做到这一点。当然不是 CSS。以上是关于Web 浏览器如何从字体系列中选择字体?的主要内容,如果未能解决你的问题,请参考以下文章
在web开发中使用了Bootstrap3框架但是Firefox无法显示Glyphicons字体图标,其他浏览器可是,应该如何设置