@font-face在特定版本的Internet Explorer 11中无法正常工作

20

我知道有很多类似的问题,但是这种情况似乎非常奇怪。@font-face 在Internet Explorer 11(Windows 7 Pro)上好像出了问题。具体地说,版本:11.0.9600.17728,更新版本:11.0.18

@font-face 在Chrome、Firefox、Safari和Opera上(适用时均为Linux和Windows)都能正常工作。事实上,它甚至在另一台我所拥有的运行Windows 7的机器上的Internet Explorer Version: 11.0.9600.17633,更新版本:11.0.16上也能工作良好。

开发者控制台中没有任何指示表明存在获取字体的问题。我已将html/css简化为一些非常基本的内容以重现该问题。在下面的示例中,两个自定义字体都无法正常工作(对于该特定IE版本):

<html>
<head>
    <link rel="stylesheet" type="text/css" href="test.css" />
</head>   
<body>      
    <p>This font should be Roboto Thin</p>
    <p>There should be icons below. If not, then font-face is not working.</p>
    <span>a</span>
    <span>b</span>
    <span>c</span>
    <span>d</span>
    <span>e</span>
    <span>f</span>
    <span>g</span>
    <span>h</span>
    <span>i</span>
    <span>j</span>
    <span>k</span>
    <span>l</span>
    <span>m</span>   
</body>
</html>

...以及 CSS:

@charset "UTF-8";

@font-face {
    font-family: 'robotothin';
    src: url('roboto-thin-webfont.eot');
    src: url('roboto-thin-webfont.eot?#iefix') format('embedded-opentype'),
         url('roboto-thin-webfont.woff') format('woff'),
         url('roboto-thin-webfont.ttf') format('truetype'),
         url('roboto-thin-webfont.svg#robotothin') format('svg');
    font-weight: normal;
    font-style: normal;
}

@font-face { 
    font-family: 'typicons'; 
    src: url('typicons-regular-webfont.ttf'); 
}

p {
    font-family: robotothin;
    font-size: 26px;
    color: #666;
}

span {
    font-family: typicons;
    font-size: 30px;
    color: #0062A8;
}

您可以在这里运行的代码中找到。


如果我使用那个引起问题的IE版本查看该页面,文本字体将是默认值,并且代替图标,您只会看到标签中的字母。

考虑到在我测试过的每个其他浏览器中@ font-face都在工作(即使是不同版本的IE 11),这可能是那个IE版本的错误吗?是否有任何方法可以修复或进一步调试?


哪一个不起作用?typicons 还是 robotothin - Huangism
两者都有问题,所以字体似乎完全无法正常显示。 - RTF
1
这不是IE特定版本的错误,而是与该浏览器的设置(或者可能是机器所在的网络)有关。我正在运行11.0.18(构建版本以17728结尾),它对我有效。 - Adam Jenkins
对于未来的读者:这可能与HTTP缓存头有关,请参见https://dev59.com/ZF0Z5IYBdhLWcg3wlBJU#39055984。 - Arjan
4个回答

16

这可能与安全设置有关,如此错误报告中所述。

在Internet选项中转到:

  • 安全选项卡
  • 此区域的安全级别
  • 自定义级别
  • 下载
  • 字体下载

如果被禁用,则需要启用它。

Internet选项窗口截图。选择了安全选项卡,"自定义级别..."按钮周围有红色框。

安全设置窗口截图。启用字体下载选项周围有红色框。


之前一切都正常,直到自动更新进行了它的操作。因此,在更新到最新版本期间,IE禁用了该字体下载选项。荒谬。但是难道它不会对其他人做同样的事情,导致字体破裂吗? - RTF
我认为是这样,至少对于那些进行了更新的人来说是这样,但我不确定。 - BSMP
2
我已启用“字体下载”,但在IE 11上运行上面链接中的示例代码仍然失败。 - gye

2
如果问题是“@font-face在特定版本的Internet Explorer 11中无法工作”,请检查您的字体嵌入性:可安装enter image description here。如果它不是可嵌入的,请添加可安装字体,然后它将完美地工作。

0

通过在Apache级别上删除“Vary”标头来修复“eot”文件的问题

<Location ~ \.eot$>
  Header unset Vary
</Location>

0

问题可能与在特定版本的Internet Explorer上使用HTTPS有关。我发现运行在Win 7上的版本11.0.9600.19035,更新版本11.0.65也受到影响。

尽管Google声称支持Microsoft Internet Explorer 6+,但它们的字体受到与上述描述相同的影响。

通过HTTP提供字体将会带来“混合内容”警告。接受警告后,字体将在受影响的IE上显示,但不会在未受影响的IE上显示。

目前我不知道任何解决方法,甚至没有一种通过HTML/CSS/JavaScript检测受影响版本的方法。


在一个旧的Windows 7虚拟机中出现了同样的问题,版本为11.0.9600.18163,更新版本为11.0.27,KB3124275,在关于对话框中链接到了一个2016年1月的更新,该更新引用了一个旧的安全公告。然而,在办公室里,这个问题似乎是本周开始出现的。字体从同一域的子文件夹加载,并且最近没有更改。但也许一些标头已经更改了。 - Arjan
更有趣的事实是:在安装了11.0.9600.10035版本并更新到11.0.66版本(记录为6月12日)的情况下,一切都很正常,这个版本在你的回答中被提到会有问题。但是,当从另一个网络使用11.0.9600.19080版本,更新版本为11.0.70(7月10日)访问同一个网站时,出现了问题。因此,我猜测是我们的网络出了问题,而不是IE11的版本。 - Arjan
实际上,对于我们来说与特定版本无关,而是与头文件的更改有关;请参见https://dev59.com/ZF0Z5IYBdhLWcg3wlBJU#39055984。 - Arjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接