当使用“font-family:monospace”时,IE使用Courier Font

时间:2013-02-05 00:31:56

标签: css internet-explorer

我有一些(测试)HTML就像这样:

<!DOCTYPE html>

<html lang="en">

<head>
  <title>Test Monospace</title>
  <style>
  tt { font-family: monospace; }
  </style>
</head>

<body>
  <h1>Test Monospace</h1>
  <p>This is normal text</p>
  <p><tt>This is monospaced text</tt></p>
</body>

</html>

当我在IE中显示时,等宽文本使用Courier New而不是我在IE中配置的字体。如果我除了删除<style>...</style>块之外什么都不做,它会正确使用配置的字体。

它只适用于IE,而不是FF或GC。 Windows 7上的IE 9。

无论配置样式的位置如何,它都会执行此操作,包括单独的样式表或使用样式属性。

真正的问题是指定font-family和font-size是使用以下样式修复浏览器的等宽文本问题的关键:

/* monospaced sizes are horribly broken in browser default stylesheets */
code, kbd, pre, samp, tt {
    font-family     : monospace,monospace; /* Chrome   (but note that this makes IE use "Courier New" for some strange reason, as does plain monospace.) */
    font-size       : 1em;                 /* Firefox, IE,Opera */
    }

有谁知道如何阻止IE这样做?

2 个答案:

答案 0 :(得分:3)

monospace不是特定的字体系列。与serifsans-serif完全相同,它们是通用的系列定义。

font-family: monospace;只是告诉浏览器使用默认的“monospaced font”,在本例中为Courier New。另请参阅this resource

修改

如果省略CSS中font-family的{​​{1}}规则,IE9似乎会显示自定义设置的纯文本字体。请看这个小提琴:http://jsfiddle.net/sVCwd/1/

希望这有帮助。

答案 1 :(得分:2)

似乎在IE中,monospace表示Courier New。更改“纯文本字体”的IE设置会影响某些元素的默认字体,例如tt,但它不会更改monospace的含义。在old discussion似乎知道他所说的内容的人写道:“(请不要评论serif和monospace字体可以是 使用工具,Internet选项选择。他们与这无关 默认的CSS通用字体。)“

如果你想作为IE用户改变monospace的含义,我想你需要在Windows注册表中找到一个条目(我无法在Windows 7中找到它 - 不能例如,找到IEFixedFontName

但是如果您只想要一些以您喜欢的等宽字体呈现的元素(考虑到实际效果大致相同),您可以设置一个包含

等内容的用户样式表
code, kbd, pre, samp, tt, xmp, listing, plaintext {
    font-family: Consolas !important;
}