嵌入字体声明中的数据 URI (@font-face) 会破坏 IE << 9
我有一个带有 @font-face
声明的 CSS 文件,该声明通过数据 URI 嵌入字体文件:
@font-face {
font-family: 'Custom-Font';
src: url('eot/font.eot');
src: url('eot/font.eot?#iefix') format('embedded-opentype'),
/* ugly FF same-Origin workaround... */
url("data:application/octet-stream;base64,d09GRgABAAAAA ... ") format('woff'),
url('ttf/font.ttf') format('truetype'),
url('svg/font.svg#Custom-Font') format('svg');
}
使用数据 URI 嵌入字体会导致 IE 9 不加载字体。如果我删除该行(或将其更改回引用
.woff
文件),IE 将加载该字体。
这个 CSS 会让 IE 感到困惑吗?
背景:我有一个页面从不同的域(CDN)加载嵌入字体。不幸的是,Mozilla 需要 CORS 标头 (Access-Control-Allow-Origin
)来自不同域的嵌入字体(滥用 CORS 和可怕的想法我的意见)。由于我无法控制的原因(官僚主义),我无法在字体文件上发送 CORS 标头,因此我陷入了通过数据 URI 将字体文件嵌入 CSS 文件的次优情况。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我也有同样的问题。将嵌入字体移动到不同的声明中对我有用。
I had the same problem. Moving the embedded font into a different declaration worked for me.
可能已超出最大网址长度。
请记住,旧版本的 IE 添加了
?
和最后一个');
之间的所有内容(包括数据 URI)。因此,在您的情况下,解决方案是使用另一种方法(例如 Mo' Bulletproofer)。
The maximum URL length has probably been exceeded.
Remember that older versions of IE adds everything between the
?
and the last');
(including the data URI).So in your case the solution would be to use another method (Mo' Bulletproofer for example).