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

标记

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

具体来说,我有一个自定义图标字体,我使用,并且它目前映射到的Unicode专用使用区域的的基本多文种平面字体开始于\f000,直到左右\f360

我发现有几篇文章建议分配到Unicode专用区是问题所在:

我尝试解决的问题:

  • 重新将范围映射到\e000-\e360
    • (Glyphicons使用\exxx范围)
  • 重新将范围映射到\0000-\0360
    • (包括拉丁语范围,语言文字和其他欧洲文字)

这些解决方案均无效,IE8继续崩溃和/或进入兼容模式。我尚未尝试将字体严格限制在基本拉丁范围内,因为我有太多的字形无法容纳在127个可用位置中。

我还能够同时使用FontAwesome和Glyphicons来使IE8崩溃,而且它发生的频率似乎比使用我的字体还少。大多数情况下,初始页面加载将起作用,然后单击刷新将导致此问题。

有人对我能做什么有其他想法吗?

PS:我并不担心其他IE8 CSS @ font-face字体问题,例如这里讨论的那些IE8 CSS @ font-face字体仅适用于:before内容,有时甚至是刷新/硬刷新我已经在那里应用了解决这些问题的技术。

标记

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

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

通过使用grunt-webfont构建过程使用自定义图标字体对各种范围进行单元测试,我发现了这一点我没有详尽地测试每个范围,但是我发现这两个都可以正常工作。

注意:基本拉丁语范围从U+0020not开始U+0000Low Surrogates Range具有更大的地址空间,所以是preferrable,如果你有很多的字形。如果字形无法加载,它还具有渲染方盒的优势,这与混合的拉丁字符相反Basic Latin Range

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章