FF 3.5 for Mac上输入字段的字体大小差异?

Wal*_*ker 2 html css firefox rendering font-size

在测试我的网站时,我注意到Mac上的FF 3.5上的字段大小比Windows上的FF或任何其他浏览器上的字体大.

有没有办法设计或修复它?我试过设置输入{font-size:XXpx; 无济于事!

Abe*_*bel 5

字体大小差异的原因

Mac-OS和Windows-OS之间字体大小的差异不一定是不同字体的结果,因为当您使用相同的字体和大小时也会发生这种差异.相反,原因是历史性的(参见本背景文章):Windows使用96 DPI呈现文本,MacOS使用72 DPI.有时,您甚至可能会看到不同的DPI值,例如,当您在Windows显示属性中选择大字体时(这会增加DPI).

困惑和物理

关于这一点有很多困惑.当然,一个像素是一个像素,那么一个屏幕如何在MacOS上每英寸有72个点,而在Windows上每英寸相同的屏幕有96个点?好吧,它不能.这里的英寸不是真正的英寸.它们是合乎逻辑的英寸 72 DPI意味着:当前屏幕上有72个像素(每个屏幕都不同!)我们认为它好像是一英寸.在物理世界中,这绝不等于纸上的英寸,即2.54cm.

返回网页和您的问题

这一切与您的问题有什么关系?因为我假设你为你的尺码使用积分(好!).一点定义为1/72英寸(72英寸一英寸).既然你知道屏幕上的英寸不是实际的英寸,并且每个操作系统在每个逻辑英寸中放置不同的默认点,你也知道每个系统的点(或mm,inpc)是不同的.

走向(不完美)的解决方案

但是,你可能会问,如果一切都是平等的,按比例调整大小,相对而言,一切都应该是好的和花花公子?不,不完全.如果您使用图像或在其他元素中使用像素作为尺寸,则无效.像素是您可以使用的唯一绝对逻辑大小(即使这也许并不奇怪,这绝不是一个确切的大小:每个显示器的像素大小不同).如果指定像素,则超过OS叠加的DPI或PPI限制(另一个历史记录).即:

/* 
   different font-size per OS / DPI display 
   setting compared to input box 
*/
input.text {
    width: 120px;
    font-size: 10pt;
}

/* 
   equal font-size per OS / DPI display 
   setting compared to input box 
*/
input.text {
    width: 120px;
    font-size: 12px;   /* typically, pixels are slightly smaller than points */
}
Run Code Online (Sandbox Code Playgroud)

但是,即使在上述情况下,渲染问题也可能会回到您的身边.本地样式表,可用字体,视口大小调整和抗锯齿可能会增加细微差别.但这是最接近违反操作系统相关规则的方法.

一个微妙之处:一旦你开始使用像素,与你的图像相比,你可能会更容易测量你的字体,但你将失去扩展整个设计的可能性,你将无法在任何地方指定确切的大小.因此,在您的情况下这是否是一个好主意取决于您(通常的做法是坚持使用积分并将渲染留给浏览器和操作系统,以便让用户体验他们在系统中习惯的东西).

Helvetica vs Arial解决方案

在这个帖子中已经建议Helvetica是MacOS上呈现的字体以及差异的原因.要确定,请查看此页面,以便在呈现的页面中发现Helvetical vs Arial.如果您使用以下CSS,您的页面在Windows(Arial)上的呈现方式将与在MacOS(Helvetica)上的呈现方式不同:

input.text {
    font-family: Helvetica, Arial, sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

但是如果你使用下面的代码,它在Windows(Arial)和MacOS(也是Arial)上看起来是相同的.除非安装了Windows字体,否则只有Linux看起来会有所不同.

input.text {
    font-family: Arial, Helvetica, sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

monospace的奇怪小错误可能会增加混乱

如果使用等宽字体,即使指定字体本身,最终仍可能在渲染方面存在差异.Firefox中有一个隐藏得很好的错误,但是在我之前报道的其他一些浏览器上(博客文章解释了解决方案),但没有引起太多关注.

简单的解决方案是始终指定Courier New,即使您不关心字体.我不认为这是你的问题,正如你提到的Arial和Helvetica.

最后的想法

为什么这一切都麻烦,为什么不是一个标准呢?阅读这篇优秀的背景文章,了解为什么Windows认为将DPI提高30%更好.

进一步阅读:有一个专门针对DPI问题整个网站.