为什么其中一种字体在IE8中能够呈现,而其他字体却不能?

7
为什么这种字体在IE8中可以渲染:
@font-face {
  font-family: 'Aller';
  src: url('aller_rg-webfont.eot');
  src: url('aller_rg-webfont.eot?#iefix') format('embedded-opentype'),
       url('aller_rg-webfont.woff') format('woff'),
       url('aller_rg-webfont.ttf') format('truetype'),
       url('aller_rg-webfont.svg#AllerRegular') format('svg');
  font-weight: normal;
  font-style: normal;
}

而这则不行:
@font-face {
  font-family: 'Champagne';
  src: url('champreg-webfont.eot');
  src: url('champreg-webfont.eot?#iefix') format('embedded-opentype'),
       url('champreg-webfont.woff') format('woff'),
       url('champreg-webfont.ttf') format('truetype'),
       url('champreg-webfont.svg#Champagne&LimousinesRegular') format('svg');
  font-weight: normal;
  font-style: normal;
}

我真的想不出来是什么问题。其他浏览器都能够正常工作,显然的。

3个回答

32
尝试使用在线woff/ttf/svg转eot工具之一,使用其中一个已有的文件创建一个新的.eot文件。 如果这个新文件不能工作,那么可能是字体本身的问题。有时,当Fontname和Family Name在实际字体文件中不相同时,IE6-8会出现问题。解决方法如下:
  • 您需要下载FontForge
  • 打开字体文件
  • 从菜单中选择Element > Font Info
  • 确保Fontname、Family Name和Name for Humans都相同
  • 将字体另存为TTF或OTF,并使用在线转换器生成EOT文件。
对于我的所有与font-face有关的问题 - 如果CSS是正确的 - 上述两个解决方案都有效,祝好运 :-) 也许尝试在修改名称属性之前,直接在FontForge中保存该字体并进行在线转换。

1
哇...通过FontForge重命名字体信息居然成功了!今天学到了一些东西,谢谢Patrick。 - djwd
1
这不仅解决了我的IE9问题(它可以工作,但在控制台中记录错误),而且还使其适用于IE8。非常感谢! - Christof
天哪!太感谢了! - Christina
1
我也遇到了同样的问题,我编译了修复后的EOT文件并在这里分享:http://gist.github.com/vjt/7436066。我希望这能为某人节省我在Windows上与FontForge斗争的糟糕时间。 - vjt
这解决了我的问题,但是下一个情况需要修复一些eot文件: 在FontForge中编辑.otf文件:在PS NamesTTF Names中设置所有相同的内容 元素-字体信息...-PS Names:字体名称、家族名称、人类名称 元素-字体信息...-TTF Names:家族。 使用修改后的ttf文件生成eot文件,并通过ttf2eot转换器将ttf转换为eot - ellexdev

0
在IIS(MVC环境)下,我必须将以下规则添加到我的Web.config文件中:
   <system.web>
    <httpHandlers>
      <add verb="GET" path="*.eot" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.svg" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.ttf" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.woff" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.otf" type="System.Web.StaticFileHandler" />
    </httpHandlers>
  </system.web>

0
  1. 将以下内容添加到htaccess文件中。"BrowserMatch MSIE best-standards-support Header set X-UA-Compatible IE=8 env=best-standards-support"
  2. 尝试重新转换eot字体
  3. 更改文档兼容模式
  4. 使用usleep函数进行尝试
  5. 使用setInterval js
  6. 添加Google的HTML5脚本
  7. 在body部分调用ie8的css
  8. 添加data-icon类
  9. ad伪元素js
  10. 在CSS中添加PNG和SVG滤镜
  11. 检查服务器上的字体类型权限

最终在添加了以下文件后正常工作:

.sass和.less CSS

愉快编程... 作者:sivakumar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接