我遇到问题,图标字体导致IE8进入兼容模式。相应地,如果IE8被强制进入边缘模式(例如,通过<meta http-equiv="X-UA-Compatible" content="IE=edge" />
),那么IE将崩溃。
具体来说,我有一个我正在使用的自定义图标字体,它当前已映射到Private Use Area的unicode Basic Multilingual Plane。字体从\f000
开始,一直到\f360
左右。
我发现一些文章表明分配给unicode私人使用区是问题所在:
我试图修复它的事情:
\e000
- \e360
\exxx
范围)\0000
- \0360
这两种解决方案都不起作用,IE8继续崩溃和/或进入兼容模式。我还没有尝试将字体限制在严格的基本拉丁语范围内,因为我有太多的字形以适应127个可用的点。
我也能够让FontAwesome和Glyphicons同时崩溃IE8,而且它似乎比我的字体更少发生。大多数情况下,初始页面加载将起作用,然后点击刷新将导致问题。
任何人对我能做什么都有其他想法?
PS:我不关注其他IE8 CSS @ font-face问题,例如此处讨论的问题IE8 CSS @font-face fonts only working for :before content on over and sometimes on refresh/hard refresh。我已经在那里应用了这些技术来解决这些问题。
答案 0 :(得分:1)
长话短说,有两种方法可以解决这个问题:
Basic Latin Range
:U+0020 to U+007F
Low Surrogates Range
:U+DC00 to U+DFFF
我通过使用grunt-webfont
构建过程使用我的自定义图标字体对各种范围进行单元测试来发现这一点。
我并没有详尽地测试每个范围,但我发现这两个范围都有效,并且足够了。
注意:基本拉丁语范围从U+0020
而不是U+0000
开始。
Low Surrogates Range
有一个更大的地址空间,如果你有很多字形,那么它是可取的。如果字形无法加载,它还具有渲染方框的优势,而不是像Basic Latin Range
那样的各种拉丁字符。