Firefox 无法识别字体

Posted

技术标签:

【中文标题】Firefox 无法识别字体【英文标题】:Firefox not recognizing a font 【发布时间】:2012-08-06 08:44:17 【问题描述】:

我正在通过 CSS 设置 pre html 元素的样式,如下所示:

pre 
    font-family : "Franklin Gothic Medium","Arial Narrow Bold","Arial",sans-serif;

它在 Chrome/Chromium、Opera、Safari 和 IE 中有效(意味着该字体确实安装在计算机中),但在 Firefox 中无效。 Firefox 只识别Arial

而且我尝试过使用其他自定义字体(如Century Gothic)并且它可以工作,因此它能够识别自定义字体。

底线,Firefox 无法识别 Franklin Gothic MediumArial Narrow Bold,即使

它们安装在计算机中 它能够识别其他自定义字体

这里可能发生了什么?

【问题讨论】:

这是 mozilla 的问题:bugzilla.mozilla.org/show_bug.cgi?id=644385 【参考方案1】:

如果找不到解决方案,请使用 CSS3 字体路线。 http://www.w3schools.com/css/css3_fonts.asp

【讨论】:

【参考方案2】:

解决方案并不简单。字体外观因浏览器、操作系统以及客户端系统上可用的字体而异。如果没有根据您的目标受众进行进一步测试,请不要轻信这个答案。

在 Windows 上,从 Firefox 4 和 IE9 开始,字体是使用 DirectWrite 而不是 GDI 呈现的。自此更改以来,“Arial Narrow”和“Arial Black”等字体被视为 Arial 系列的一部分,而不是独立的系列。因此,在 Firefox 中,您可以通过带有一些修饰符的常规 Arial 声明来访问 Arial Narrow。 IE9 以类似的方式工作,但似乎嵌入了一些实用技巧,使其以开发人员习惯的方式工作。

富兰克林哥特式媒体

font-family: "Franklin Gothic Medium", "Franklin Gothic", sans-serif;

除 Firefox 之外的所有浏览器都理解“Franklin Gothic Medium”。 Firefox 没有并继续选择下一个选择“Franklin Gothic”,您甚至可能认为自己没有,但这就是“Franklin Gothic Medium”在 DirectWrite 世界中的存在。 在没有任何其他修饰符的情况下(斜体、粗体、拉伸),当指定“Franklin Gothic”时,我的 Firefox 会抓取“Franklin Gothic Medium”。

Arial 窄粗体

font-family: "Arial Narrow Bold", "Arial Narrow", "Arial", sans-serif;
font-stretch: condensed;
font-weight: 700;

某些浏览器,例如 Chrome 和 IE7-8 可以识别“Arial Narrow Bold”。但是 IE9 和 Firefox 没有。 IE9 确实识别“Arial Narrow”。 Firefox 落入 Arial。 font-stretch: condensed 告诉 Firefox 使用 Arial 的“Arial Narrow”版本,font-weight: 700; 告诉 IE9 和 Firefox 使用“Arial Narrow Bold”版本据我所知。 600、700、800 和 900 的字体粗细对我来说触发了粗体。

带有 Arial Narrow Bold 后备的 Franklin Gothic Medium

现在您有了 Catch-22。

font-family: "Franklin Gothic Medium", "Franklin Gothic", "Arial Narrow Bold", "Arial Narrow", "Arial", sans-serif;

如果 Firefox 可以找到“Franklin Gothic”,那你很好,但如果不能,那么它会退回到“Arial”。如果使用font-stretch: condensed; font-weight: 700; 将其变为“Arial Narrow Bold”,则在不使用 Arial 后备时会影响 Franklin 的外观。如果 Franklin 可用,每个浏览器都会将 font-weight 规则应用于 Franklin——这根本不是你想要的。如果你使用font-stretch: condensed 并且 Firefox 可以访问 Franklin,它会尽职尽责地压缩它。 (我在任何其他浏览器中都没有看到。)在您的特定情况下,我会指望 Firefox 获得 Franklin 并接受将常规 Arial 用作后备。但是添加“Franklin Gothic”(适用于 FF)和“Arial Narrow”(适用于 IE9)会有很大帮助。

(在撰写本文时,Chrome 的版本为 21,Firefox 的版本为 14。)

【讨论】:

非常感谢您的回答@David。我很高兴我不必花费整个星期天(父亲节)来解决这个问题。 font-stretch: condensed 为我解决了问题,并选择了字体的窄变体,即 BC 39 3/1 Narrow 没有被 FF 渲染,而 IE 和 Chrome 则完全没有问题。

以上是关于Firefox 无法识别字体的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 无法识别 WebP MIME 类型

Android 无法识别不同的语言字体

Visual Studio 2015 无法识别 OTF 转换字体 (UWP)

Zip Mime 类型似乎无法识别

@-moz-document url-prefix() 无法识别

itext pdf文件打印中文无法识别问题