四月, 2010


25
四 10

IE font-family bug

三谈Web默认字体中有这么一段:

5. GB 编码问题。font: 12px sans-serif; 不设置宋体,页面为 GB 系列编码时,非中文操作系统下(港台用户中有不少英文系统,还有海外华人),IE的默认字体是 Microsoft Sans Serif Regular, 很难看。截图为证:

有两个解决方案:a. 用”宋体”垫底;b. 不加 sans-serif.

同事的项目中也遇到过类似的问题,不过不局限于以上条件,详情如下:

  1. 出现在简体中文旗舰版Win7的IE8中(简体中文版XP的IE8正常),英文系统等未测试
  2. 页面为utf-8编码(http headers及页面meta中都已指定)
  3. css中是这么写的:
    body{font-family:Tahoma,Helvetica,Arial,sans-serif;}

    而浏览器直接跳到了sans-serif

  4. 上面改为
    body{font-family:Tahoma,Helvetica,Arial;}

    而当页面有一处为

    a span{font-family:Arial,sans-serif;}

    mouseover前为sans-serif,mouseover后变为了Arial,太囧了

解决方法:推荐删去sans-serif,而用”宋体”垫底有时会不生效

某鬼佬遇到过另外的字体问题:《Euro symbol showing as serif font in IE7 when using bold Arial

old9评论

windows 下有一套映射缺失字体的机制,helvetica 会自动映射到 arial,可以在注册表里面找到这些东西:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

发现Win7和XP还有些不同,截图留念,XP:

Win7:

顺便再复习下:


8
四 10

IE8 X-UA-Compatible 失效?

现在维护的项目中使用了

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >

来把IE8带入IE7标准,今天测试提出一个IE8下的小BUG,简单分析了一下,发现浏览器始终为IE8标准,并未切换到IE7标准(F12调出开发工具,文本模式自动勾选在IE8标准)

翻了下MSDN《定义文档兼容性》,里面有这么一句:

X-UA-compatible 标头不区分大小写;不过,它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前的标头(HEAD 节(可能为英文网页))中。

MSDN有机器翻译的传统,再看下英文版

The X-UA-compatible header is not case sensitive; however, it must appear in the Web page’s header (the HEAD section) before all other elements, except for the title element and other metaelements.

而项目中是:

<head>
<script ...
<link href="xxx.css" ...
<meta ...

杯具就这么发生了…