图标字体导致IE8中的兼容模式

时间:2014-08-15 00:33:35

标签: unicode fonts internet-explorer-8 font-awesome glyphicons

我遇到问题,图标字体导致IE8进入兼容模式。相应地,如果IE8被强制进入边缘模式(例如,通过<meta http-equiv="X-UA-Compatible" content="IE=edge" />),那么IE将崩溃。

具体来说,我有一个我正在使用的自定义图标字体,它当前已映射到Private Use Area的unicode Basic Multilingual Plane。字体从\f000开始,一直到\f360左右。

我发现一些文章表明分配给unicode私人使用区是问题所在:

我试图修复它的事情:

  • 将范围重新映射到\e000 - \e360
    • (Glyphicons使用\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。我已经在那里应用了这些技术来解决这些问题。

1 个答案:

答案 0 :(得分:1)

长话短说,有两种方法可以解决这个问题:

  • 分配给Basic Latin RangeU+0020 to U+007F
  • 分配给Low Surrogates RangeU+DC00 to U+DFFF

我通过使用grunt-webfont构建过程使用我的自定义图标字体对各种范围进行单元测试来发现这一点。 我并没有详尽地测试每个范围,但我发现这两个范围都有效,并且足够了。

注意:基本拉丁语范围从U+0020而不是U+0000开始。 Low Surrogates Range有一个更大的地址空间,如果你有很多字形,那么它是可取的。如果字形无法加载,它还具有渲染方框的优势,而不是像Basic Latin Range那样的各种拉丁字符。