IE9 - CSS3111:@ font-face遇到未知错误

时间:2012-07-19 11:10:18

标签: internet-explorer css3 fonts google-webfonts

我从http://www.google.com/webfonts嵌入了三个Google字体(Dosis,Open Sans,Lato)

除了IE9之外,它们都能正常工作:

CSS3111: @font-face encountered unknown error. 
2HG_tEPiQ4Z6795cGfdivPY6323mHUZFJMgTvxaG2iE.eot

CSS3111: @font-face encountered unknown error. 
KlmP_Vc2zOZBldw8AfXD5g.eot

CSS3111: @font-face encountered unknown error. 
zLhfkPOm_5ykmdm-wXaiuw.eot

偶尔打破整个网站。

可以采取哪些措施来解决这个问题?

7 个答案:

答案 0 :(得分:25)

我找到了这个答案,它比接受的答案更直接地解决了这个问题,这真的应该不是答案:)

  

现在我们的主要亮点 - “CSS3111:遇到@ font-face   未知错误“。这个错误很模糊。如果你看一下   再次MSDN,你会看到它的描述说:“一个未知的问题是   遇到“Web开放字体格式(WOFF)”和“嵌入式”   “层叠样式表(CSS)字体的OpenType字体(EOT)”。   “未知问题”对我来说听起来不太好 - 我该怎么做   解决一个未知问题?幸运的是,我们在这里给出了一个提示。它   说:“检查字体的来源”。的确,CSS3111通常会引起   由字体的二进制源问题。其中一个流行的在线   例如,TTF到EOT转换器生成带有NAME表的EOT文件   这不符合Microsoft标准,导致EOT   从未在IE中加载并产生CSS3111错误的字体。所以,什么时候   你体验一下CSS3111,尝试使用不同的东西总是好的   TTF到EOT转换器或字体生成器。

来源:http://www.marinbezhanov.com/web-development/16/how-to-embed-webfonts-properly-and-how-to-solve-the-ambiguous-css3111-font-face-encountered-unknown-error/

答案 1 :(得分:3)

我使用下面的@font-face

解决了IE 9上的问题
@font-face {
    font-family: Gidole;
    src: url('Gidole-Regular.woff2') format('woff2'),
         url('Gidole-Regular.woff') format('woff');
}

答案 2 :(得分:2)

我们发现由于新的Windows 10策略,您会收到相同的错误。如果您的错误发生在Windows 10 + IE11上,解决方案可以是:

IE 11: error CSS3111 in my own code, and google.com/fonts doesn't render any fonts

答案 3 :(得分:1)

评论EOT字体的第二个源声明对我有用。确保你上面的第一个声明" src:url(" ../ fonts / webfonts / Helvetica Neue.eot");"

在Chrome,Firefox,Sarafi,IE9-10-11上进行了测试。

@font-face {
  font-family: 'Helvetica Neue';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/webfonts/Helvetica Neue.eot");
  src: local("Helvetica Neue"), local("Helvetica Neue"),
    /*url("../fonts/webfonts/Helvetica Neue.eot?#iefix") format("embedded-opentype"),*/
    url("../fonts/webfonts/Helvetica Neue.woff2") format("woff2"),
    url("../fonts/webfonts/Helvetica Neue.woff") format("woff"),
    url("../fonts/webfonts/Helvetica Neue.ttf") format("truetype"),
    url("../fonts/webfonts/Helvetica Neue.svg") format("svg"); }

答案 4 :(得分:0)

希望以下注释对您有用:

  

如果您的字体位于远程服务器(例如CDN)上,则无法在所有浏览器中正确呈现。这只是部分正确。是的,没有明确的“Access-Control-Allow-Origin”标题,Firefox和Internet Explorer将不会显示您的webfonts(如果您点击F12在IE中打开开发人员工具并转到控制台选项卡,您将获得CSS3117 :@ font-face失败的跨源请求。限制资源访问。错误)这只是因为IE和Firefox默认不允许跨域字体。另一方面,谷歌浏览器将毫无问题地加载字体,如果你不知道跨源问题,调试这可能会非常令人沮丧。虽然我个人也喜欢将我的字体放在同一个域中,但您仍然可以将它们放在远程位置并在所有浏览器中成功加载它们,只要您将此声明添加到主.htaccess文件中:

<FilesMatch "\.(ttf|otf|eot|woff)$">
      <IfModule mod_headers.c>
          Header set Access-Control-Allow-Origin http://mydomain.com"
      </IfModule>
</FilesMatch>

See the reference

答案 5 :(得分:0)

当您使用 desubroutinize d字体时,也会发生此错误,而且没有任何版本的Internet Explorer能够处理。

如果您使用pyftsubset包中的fonttools生成字体文件,请确保设置--desubroutinize标记。

答案 6 :(得分:0)

我在IE11中遇到了同样的问题,我通过将字体文件从.woff转换为{{1}}来解决了这个问题。

通常,请确保浏览器支持字体文件格式。