我们使用icomoon作为我们的图标字体,它们在Chrome和Firefox中运行良好,但不会在IE11中显示......有时候 . 它似乎适用于第一页加载,但不适用于后续页面加载 . 清除缓存似乎没有重置它 . 这个问题可能出现在其他IE版本中,现在我们只关注IE11 .
这是我们的@ font-face:
@font-face {
font-family: 'icon';
src:url('fonts/icon.eot?-3q3vo5');
src:url('fonts/icon.eot?#iefix-3q3vo5') format('embedded-opentype'),
url('fonts/icon.woff?-3q3vo5') format('woff'),
url('fonts/icon.ttf?-3q3vo5') format('truetype'),
url('fonts/icon.svg?-3q3vo5#rezku') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'icon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-alphabet:before {
content: "\e600";
}
/* etc etc etc */
但这里变得奇怪 . 查看开发人员工具,正在发送字体的HTTP请求,但只接收了几百个字节(可能只是 Headers ) .
但HTTP响应正确地将内容长度列为几千字节 .
“响应正文”选项卡只显示“无数据可查看” .
您可以在网络面板屏幕截图中看到Google字体的行为不是这样的 .
在位置栏中粘贴URL会导致下载完整文件 .
7 回答
这是问题所在:https://docs.microsoft.com/en-us/windows/security/threat-protection/block-untrusted-fonts-in-enterprise#Turn_on_and_use_the_Blocking_untrusted_fonts_feature
基本上微软让我们不得不回到使用精灵表 .
遇到类似的问题,从上面的截图中,响应的Cache-Control Headers 为“no-store” . IE似乎在缓存和字体方面存在问题 .
同时删除'Cache-Control:no-store'和“Pragma:no-cache” Headers 可以让我们再次显示图标字体 .
https://github.com/FortAwesome/Font-Awesome/issues/6454
在调查了同样的问题,并通过在线发布的各种解决方案后,我创建了以下故障排除列表,其中涵盖了大多数潜在原因:
在Internet选项/安全/自定义级别/字体下载启用/禁用下,IE中禁用字体下载 . 它们可能会被您的网络管理员禁用,在这种情况下,您将无法查看或更改此设置 .
您的HTTP标头阻止IE在本地存储字体文件 . 要修复此问题,请删除所有
Cache-Control: no-store, no-cache
或Pragma: no-cache
标头或任何带有过去日期的Expires
标头 . 此外Vary
标头在IE中有其技巧,如果设置为Accept-Encoding
,User-Agent
,Host
或Accept-Language
以外的任何其他内容,则IE将不会缓存任何内容, unless 也会出现ETAG
标头(请参阅this MSDN blog post) .您没有为字体下载设置正确的MIME类型 . 例如,对于通常的字体类型(
eot, woff, woff2
),Jetty 9将默认设置Content-Type: text/plain
. 有关要使用的正确内容类型,请参阅this answer .确保使用
display: block
或display: inline-block
作为图标元素 .最后,确保在FontAwesome上查看troubleshooting guide .
我有一个类似的问题,它似乎是由IE与某些
display
和position
设置与iconfonts结合有困难引起的 .它通常应该使用:
我遇到了类似的问题,但使用Bootstrap字体图标(Glyphicons) . 你可以试试这是否有效:
(通常在Windows 10上)IE-11设置已更改为不下载任何外部字体并仅使用Windows中可用的字体 . 这是默认行为 .
但是我们可以在IE中更改此设置以使其能够下载外部字体 . 以下是IE中要采取的步骤 - 转到:设置>> Internet选项>>安全
单击“Internet”(或您可能正在使用的任何区域)>>“自定义级别...”
“安全设置”中的下一步 - 启用“字体下载” . 默认情况下,它将被禁用 .
刷新页面
语法是正确的,但是您使用的转换器从.tff转换为.eof的方式可能存在问题 . 有关此问题的更多详细信息,请参阅此文章http://www.iandevlin.com/blog/2009/12/webdev/adventures-with-font-face
与此同时,您可以尝试使用Google字体托管的字体来测试问题 . 我这样说是因为谷歌无缝地处理跨浏览器兼容性 . 如果事实证明Google字体有效,那么您就知道它的字体转换方式存在问题,您需要尝试另一种字体 . 根据我的理解Font Squirrel非常擅长生成跨浏览器兼容的字体 . 我希望这有助于好运
在我的情况下,它已损坏.eot字体文件 . 我已经生成了新的(新的.css样式)并修复了问题 . 试试吧 .
PS . 确保在@ font-face支持IE的EOT,例如: