我在我正在制作的网页上使用了一些Unicode符号。出于这个例子的目的,让我们说这就是这个人:'☺'。
据我了解,在CSS的正确实现下,您可以设置所需的任何字体,如果它遇到该字体中不存在的字符,它将开始通过字体系列备份选择回退直到它找到一个有效的。
鉴于此,我在css中将我的font-family设置为这样:
font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif
我的理由是Tahoma捆绑了Windows。但是,我在网上发现,只有某些版本的Windows捆绑的Tahoma支持Unicode。 Helvetica是一种类似于Tahoma for Macs的字体。 “Arial Unicode MS”与Office 2000捆绑在一起,并且肯定支持Unicode。 San-serif是所有情况下的后备,也应该有望支持Unicode。
在大多数情况下,这很有效。然而,正如它常常做的那样,Internet Explorer似乎正在破坏我精心设计的计划。我无法弄清楚模式是什么,因为我在一台运行带有IE8的Vista的计算机上看到它,而另一台在带有IE7的Windows XP上看到它,但它在使用带有IE8 / IE7 Tester / IE6的Win7的开发机器上工作正常测试仪。我在一些不起眼的网页上找到了声明,在旧版本的IE上,它只会查找它的第一个字体,然后将其用于所有内容,即使该字体缺少给定的符号,但这不是解释为什么它会在Vista / IE8上发生。因此,我可爱的Unicode符号变成了一些盒子,但不是所有的IE用户。
在网络上处理Unicode符号的推荐方法是什么?它们是否仅适用于需要广泛浏览器兼容性的项目?我是否应该专门为处理旧IE而包含代码?是否还有其他需要担心的情况或平台?
编辑:更新了有关失败的系统的新信息。
答案 0 :(得分:4)
只有某些版本的Windows捆绑的Tahoma具有Unicode支持
这不是真正的“Unicode支持”。 Tahoma支持Unicode,因为它具有Unicode代码点查找表。这并不意味着您为Unicode定义的每个字符都获得了一个字形...实际上几乎没有字体具有每个字符的字形。
没有版本的Tahoma包含U + 263A White Smiling Face的字形,因此您的代码是对字体后备功能的测试,与其他浏览器相比,IE(特别是IE6)不好用。 包含U + 26A3的更常见的Windows捆绑字体是纯Arial(不是“Arial Unicode”),因为版本3.00(包含在WinXP中)。
答案 1 :(得分:2)
您可以在CSS文件中使用IE覆盖为旧版本的Internet Explorer创建不同的行为。根据Internet Explorer的版本,每个语句之前的覆盖率为#
和_
。
在您的css中为Internet Explorer 6.0及更早版本的每个语句之前添加_
在css中的每个语句前面放一个#
仅用于Internet Explorer
示例:
//Normal
font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif;
// IE 6.0 Earlier
_font-family: Tahoma, Helvetica, sans-serif;
// IE Only
#font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif;
答案 2 :(得分:0)
据我了解,在CSS的正确实现下,您可以设置所需的任何字体,如果它遇到该字体中不存在的字符,它将开始通过字体系列备份选择回退直到它找到一个有效的。
不幸的是,这不是它在Internet Explorer中的工作方式,至少在旧版本中没有。这些浏览器仅使用系统上可用的第一个字体系列。我有时使用的一种方法是为Unicode字符添加一个单独的CSS类:
<span class="unicode">[Unicode character]</span>
.unicode { font-family: "Lucida Sans Unicode", ..., sans-serif; }
我发现 Lucida Sans Unicode 是一个不错的选择,因为它自Windows 98以来在所有Windows版本上都预装了。它的Unicode支持并不像你那样完整&#39;但是,我希望。
但我开始喜欢图标字体。它们的优点是无论实际使用的字体如何,字形总是看起来一样。正如John Slegers在他的回答中提到的,有很棒的在线工具可以创建自己的自定义图标字体。