在Chrome上,一切都很好。在Firefox和IE (IE是从。ttf转换而来的。eot文件)上,我有 和 的字符宽度问题。
使用预定义的等宽字体, 以适当的宽度显示。但是如果我使用Ubuntu Mono或我自己的monospace truetype字体,空格字符太窄,并且文本在换行时不能垂直对齐。就好像它在用另一种字体来表示空格字符。
如果我在空格字符(32 0x20)中放入一个实际的字形,则间距是正确的。但是,一旦我删除字形并使空格字符再次为空,它就会恢复到错误的间距。下面的例子使用从谷歌字体加载的Ubuntu Mono,以便其他人可以使用。例如,字母"t"应该垂直排列。第二个例子使用了内置的等宽字体,看起来很好。
HTML示例#1:
<html>
<head>
<link href='http://fonts.googleapis.com/css?family=Ubuntu+Mono' rel='stylesheet' type='text/css'>
<meta charset="utf-8">
</head>
<body>
<h1 style="font-family: 'Ubuntu Mono'; font-size: 200%;">
>In ___
<br> One <+ +>
<br> eaR >> ^ << Out
<br> [=] the
<br> ~ OtheR</h1>
</body>
</html>
HTML示例#2:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1 style="font-family: monospace; font-size: 200%;">
>In ___
<br> One <+ +>
<br> eaR >> ^ << Out
<br> [=] the
<br> ~ OtheR</h1>
</body>
</html>
HTML <pre>
元素解决了我的问题。预格式化的文本,它期望使用等宽字体,并且空格以正确的宽度呈现。奇怪,但却是事实。至少我找到了解决办法。我只是将所有这些文本粘贴在<pre>
而不是<h1>
中。唯一需要改变的是前导空格,因为<pre>
不会忽略它们。