6

本周我们在使用该@font-face构造嵌入 EOT 字体文件时偶然发现了 IE7 中的一个相当奇怪的错误(惊喜,惊喜)。

为了节省带宽,我们经常从我们知道不会在网站上使用的字体中编辑出一组字符。在这个特定的例子中,我们将这种字体用于所有以标题大小写组成的标题,但使用该text-transform属性以大写形式显示。从逻辑上讲,我们只使用大写字符保存了所有字体文件,因为我们根本不使用小写字母。

该网站在所有支持该结构的浏览器(包括 IE6 和 IE8)中都能完美呈现@font-face,但 IE7 除外。IE7 仅以正确的字体显示每个单词的第一个字符——其余字符以浏览器的默认字体显示。

摸不着头脑,我们终于发现,由于标题实际上是写成标题大小写的(因此包含小写字符),即使text-transform部署了属性并且字符以大写形式出现,IE7 也要求 EOT 文件中存在小写字母显示大写字符。(直觉,不是吗?)

简单的修复是使用大写和小写字形重建 EOT 文件,即使从未使用小写字符。

我怎样才能正确解决这个问题?(即让 IE7 呈现大写字符,而不必在字体中包含小写字形。)

谢谢!

4

3 回答 3

4

我认为您已经有了最好的解决方法 - 只需在.eot.

您的服务器正在使用 HTTP 压缩。

电流.eot22.62 KB,它被压缩到13.87 KB

即使添加大写字形会使大小加倍,它仍然只会被~28 KB压缩。

除非有一个简单的“实际解决”问题,否则坚持下去。

于 2011-06-17T09:34:35.850 回答
1

Is it an option to transform the case on the server-side? For example, php has this: http://php.net/manual/en/function.strtoupper.php

That might fix your IE7 problem, if it's practical to use such a function.

于 2011-06-17T09:26:39.337 回答
0

a 刚遇到同样的问题并很快解决了

对于 ie7 来说,使用 text-transform "uppercase" 正确渲染字体对于 ie7 来说,在字体文件中定义小写字母就足够了,它们不需要包含真正的字母 = 它们在字体文件中的小写字母可以为空且字体大小不会增加。

于 2011-07-13T11:02:34.197 回答