【问题标题】:Icon fonts opaque in all versions of Internet Explorer在所有版本的 Internet Explorer 中图标字体不透明
【发布时间】:2014-12-29 09:19:26
【问题描述】:

我用IcoMoon 创建了几个图标字体。

它们在所有其他浏览器中都能正常工作,但出于某种原因,它们在所有测试过的 IE 版本 (8-11) 中完全不透明。 Bootstrap 的图标字体看起来不错,所以这是我必须做或不做的事情。

你可以在左上角看到它:http://voicethread.com/new/myvoice/#browse

它在不同浏览器中的外观:

【问题讨论】:

  • 我无法在最新的 IE、Firefox 或 Chrome 中看到“主页”图标。你确定字体图标在你的网络服务器上,而不仅仅是你的本地机器上吗?

标签: css twitter-bootstrap internet-explorer cross-browser font-family


【解决方案1】:

我猜IcoMoon 创建字体文件的方式存在问题。

我在 Chrome、IE 和 FF(分别)中渲染时遇到问题:

字体似乎可以正常发送到网站:

以下是您的CSS file 的相关部分,将其包含在问题中不会有什么坏处:

@font-face {
    font-family: 'vt-icons';
    src: url('fonts/vt-icons/fonts/vt-icons.eot?ovc75f');                                      /* IE9 Compat Modes */
    src: url('fonts/vt-icons/fonts/vt-icons.eot?#iefixovc75f')    format('embedded-opentype'), /* IE6-IE8 */
         url('fonts/vt-icons/fonts/vt-icons.woff?ovc75f')         format('woff'),              /* Modern Browsers */
         url('fonts/vt-icons/fonts/vt-icons.ttf?ovc75f')          format('truetype'),          /* Safari, Android, iOS */
         url('fonts/vt-icons/fonts/vt-icons.svg?ovc75f#vt-icons') format('svg');               /* Legacy iOS */
}
[class^="icon-"], [class*=" icon-"] {
    font-family: 'vt-icons';
}

.icon-vt-logo-solid:before {
    content: "\e600";
}
.icon-study: before {
    content: "\e601";
}

如果您尝试另一个 content 类型,例如 "\e601",它可以正常工作。所以我猜它是为那个特定项目构建的。

您可以通过下载类似FontForge 的字体查看器并打开.woff file 来确认这一点:

显示同样的问题,所以不太可能是浏览器。

如果您双击该图标,您将看到用于创建它的确切向量:

发生的情况是圆圈和 VT 徽标都呈现在“前”层上。圆圈内的所有内容都被填充,使“VT”填充不可见。您可以通过更改圆的形状并看到 VT 从它“后面”出来很容易看到这一点。

我不确定圆圈的区别是什么,但 twitter 圆圈似乎正确地抵消了内部形状。因此,您可以将该圆圈复制并粘贴到您的其他图标中以获取此图标:

然后只需导出并上传到您的主机

为了更好地衡量,我保存了更改,导出了一些相关的字体文件,并added them to GitHub,以便您下载。

在您添加到自己的主机之前,这将起作用:

@font-face {
    font-family: 'vt-icons';
    src: url('http://www.corsproxy.com/kylemitofsky.com/libraries/libraries/fonts/vt-icons.woff?ovc75f') format('woff');
    unicode-range: U+E600-E626;
}

工作版!耶!

顺便说一下,你也可以尝试为@font-family声明添加一个unicode-range,这样浏览器只需要下载它绝对需要的字符,像这样:unicode-range: U+E600-E626;

进一步阅读

【讨论】:

  • 哦,伙计,这几乎是我见过的最好的答案 - 我现在遇到了一些计算机问题,但我会解决它并在我解决后将其标记为正确。
猜你喜欢
  • 2011-06-04
  • 2011-11-24
  • 2014-05-19
  • 2013-01-19
  • 2011-11-25
  • 2014-02-03
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
相关资源
最近更新 更多