1

我有一些(测试)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 这样做?

4

2 回答 2

3

monospace不是特定的字体系列。完全像serifor sans-serif,它们是通用族定义。

font-family: monospace;只是告诉浏览器使用默认的“等宽字体”,在这种情况下是 Courier New。另请参阅此资源

编辑:

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

希望这可以帮助。

于 2013-02-05T08:54:39.753 回答
2

似乎在 IE 中,monospace意味着 Courier New。更改“纯文本字体”的 IE 设置会影响某些元素的默认字体,例如tt,但不会更改monospace. 在一个旧的讨论中,一个似乎知道他在说什么的人写道:“(请不要对可以使用工具、Internet 选项选择的衬线字体和等宽字体发表评论。它们与默认的 CSS 通用字体无关。)” </p>

作为 IE 用户,如果您想更改 的含义,我想您需要在 Windows 注册表中为其找到一个条目(我无法在 Windows 7 中找到它——例如monospace找不到)。IEFixedFontName

但是,如果您只是希望某些元素以您喜欢的等宽字体呈现(就实际效果而言,这几乎是相同的),您可以设置一个用户样式表,其内容如下

code, kbd, pre, samp, tt, xmp, listing, plaintext {
    font-family: Consolas !important;
}
于 2013-02-05T05:38:23.737 回答