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

Internet explorer IE9-CSS3111:@font-face遇到未知错误,internet-explorer,css,fonts,google-webfonts,Internet Explorer,Css,Fonts,Google Webfonts,我嵌入了三种谷歌字体(Dosis、Open SAN、Lato) 除IE9返回外,它们都工作正常: CSS3111: @font-face encountered unknown error. 2HG_tEPiQ4Z6795cGfdivPY6323mHUZFJMgTvxaG2iE.eot CSS3111: @font-face encountered unknown error. KlmP_Vc2zOZBldw8AfXD5g.eot CSS3111: @font-face encounte

我嵌入了三种谷歌字体(Dosis、Open SAN、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
偶尔会破坏整个网站


如何解决此问题?

希望以下说明对您有用:

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

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

标题集访问控制允许原点http://mydomain.com"

我找到了这个答案,它比公认的答案更直接地回答了这个问题,而公认的答案实际上不应该是答案:)

现在来看看我们的主要亮点——“CSS3111:@font-face” 未知错误”。此错误非常模糊。如果您查看 MSDN再一次,你会看到它的描述说:“一个未知的问题 遇到“Web开放式字体格式(WOFF)”和“嵌入式” OpenType字体(EOT)“的级联样式表(CSS)字体”。 “未知问题”对我来说听起来不太好——我该怎么做 解决一个未知问题?幸运的是,我们在这里得到了一个提示 说:“检查字体的来源”。实际上,CSS3111通常是由 由一个问题与字体的二进制源。一个流行的在线 例如,TTF到EOT转换器生成带有名称表的EOT文件 这不符合微软标准,导致EOT 从未载入IE并产生CSS3111错误的字体 如果您遇到CSS3111,尝试使用不同的 TTF到EOT转换器或字体生成器


来源:

我用下面的
@字体解决了IE 9上的问题:

@font-face {
    font-family: Gidole;
    src: url('Gidole-Regular.woff2') format('woff2'),
         url('Gidole-Regular.woff') format('woff');
}

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


注释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"); }

当您使用非常规化字体时也会发生此错误,Internet Explorer的任何版本似乎都无法处理此错误


如果您使用软件包生成字体文件,请确保未设置
--desubroutinize
标志。

我在IE11中遇到了相同的问题,我通过将字体文件从
.woff2
转换为
.woff
解决了这个问题


一般来说,请确保浏览器支持字体文件格式。

这不是关于标题访问控制源,而是CSS3111错误。当FF显示字体而IE不显示字体时会发生什么情况?特别是
CSS3111:@font-face遇到未知错误。KlmP_Vc2zOZBldw8AfXD5g.eot
是我得到的错误,我已经缩小为Lato字体。根据我的经验,OP的经验和Victor S at的经验,Lato似乎是罪魁祸首。那么你怎么办?选择一种不同的字体?只是一个想法-也许可以检查字体的许可证是否允许修改它,然后修复它?我发现这个网站可以转换与IE兼容的字体,它适用于我:还有一个想法(2016年)--如果您不想支持硬邦邦的IE版本,只需使用核弹.eot文件。上次气泡破裂之前未创建的任何IE版本都将加载您的
.otf
s或
.woff
s。@ericsoco解决方案对我有效。删除了.eot,然后IE11中不再出现错误。这是使用开放式图标字体。