【问题标题】:Font-size differences in input fields on FF 3.5 for Mac?FF 3.5 for Mac 上输入字段的字体大小差异?
【发布时间】:2011-03-16 00:36:47
【问题描述】:

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

有没有办法设置样式或修复它?我试过设置 input { font-size: XXpx; } 无济于事!

【问题讨论】:

  • 您可以发布指向您网站的链接吗?
  • 以什么方式更大,宽度,高度或重量?固定宽度还是可变宽度?两个系统上都可用的字体?请注意,Arial 和 Helvetica 很接近,但字体不相等,因此即使您在任何地方都使用像素来表示大小,您仍然可能会发现差异。
  • @Walker:你错过了赏金的“截止日期”。只是好奇,你有没有看过我的回答,它有什么帮助吗?
  • @Abel,感谢您的回复 - 我仍然遇到一些问题,但感谢您的意见。
  • 很高兴看到你回来,可惜你失去了你的赏金......你还有什么问题或仍然不清楚? (可能在我的回答下发布,如果相关)

标签: html css firefox rendering font-size


【解决方案1】:

字体大小差异的原因

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

困惑与物理

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

返回网页和您的问题

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

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

但是,您可能会问,如果所有内容都按比例调整大小,那么相对而言,一切都应该很好而且花花公子吗?不,不完全是。如果您使用图像或在其他元素中使用像素作为大小,这将不起作用。像素是唯一可用的绝对逻辑大小(即使这绝不是一个精确的大小也不足为奇:每个显示器的像素大小不同)。如果您指定像素,则会超过操作系统叠加的 DPI 或 PPI 限制(另一个 historical note)。即:

/* 
   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 */
}

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

一个微妙之处:一旦您开始使用像素,与图像相比,测量字体可能会变得更容易,但您将失去缩放整个设计的可能性,并且您将无法在任何地方指定精确的尺寸。因此,这在您的情况下是否是一个好主意取决于您(通常的做法是坚持要点并将渲染留给浏览器和操作系统,以让用户体验他们在系统上习惯的内容)。

Helvetica 与 Arial 解决方案

在此线程上已建议 Helvetica 是 MacOS 上的渲染字体以及差异的原因。可以肯定的是,在呈现的页面中查看 spotting Helvetical vs Arial 这个页面。如果您使用以下 CSS,您的页面在 Windows (Arial) 上的呈现方式与在 MacOS (Helvetica) 上的呈现方式不同:

input.text {
    font-family: Helvetica, Arial, sans-serif;
}

但是如果你使用下面的代码,它在 Windows (Arial) 和 MacOS (also Arial) 上看起来是一样的。除非Windows fonts have been installed,否则只有 Linux 的外观会有所不同。

input.text {
    font-family: Arial, Helvetica, sans-serif;
}

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

如果您使用等宽字体,并且即使您指定了字体本身,您最终可能在渲染上仍然存在差异。在 Firefox 中存在一个隐藏得很好的 bug,但在其他一些浏览器上也有,I reported a while ago(博客文章解释了解决方案),但并没有引起太多关注。

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

最后的想法

为什么这么麻烦,为什么不是一个标准?阅读此excellent background article,了解为什么 Windows 认为将 DPI 提高 30% 会更好。

延伸阅读:有一个whole site dedicated to DPI issues

【讨论】:

    【解决方案2】:

    我猜每个操作系统中使用的等宽字体是不一样的。如果我没记错的话,Mac OS X 上的 Monaco 和 Windows XP 上的 Courier New。

    用户习惯于他们使用的操作系统上使用的等宽字体,他们不一定喜欢另一种字体(或关心顺便说一句)。您是否需要跨操作系统有统一的风格并严格执行?
    仅供参考,您是唯一一个看到您提到的浏览器之间存在差异的人,因为您在许多浏览器上测试您的网站(这是一件好事!)。
    绝大多数用户将在一个操作系统上仅使用一个浏览器访问您的网站,并且不会发现差异,并且会注意到差异的 1% 不会在意,除非它的大小是某处的两倍或影响了可读性显示的信息。

    要设置这些文本的样式,您可以使用 font-family(使用 Firebug 或 Web 开发人员工具栏 (Ctrl-Shift-F) 在 SO 上查看此处声明的字体,这对我来说似乎很好),font-stretch 和 @987654322 @
    AFAIK font-stretch 没有在任何地方实现

    浏览器对字体的支持仍然需要大量改进,您无法像在 Photoshop 中那样对它们进行微调。

    【讨论】:

    • 当然,感谢您提供的所有建议!这是我的问题:Mac 上的字体比 Windows 上的字体大 2px 左右,我使用 Autoclear(我在输入字段中有描述该字段或给出示例的文本并在单击时消失)。有时会发生的情况是解释或描述在所有 Windows/Linux 浏览器中都很好,但在 Mac 上太大了。我确实设置了 font-family 和 font-size - 但似乎 Helvetica (mac) 比 Arial (windows) 大,或者发生了一些奇怪的行为。
    【解决方案3】:

    Felipe 是对的:每个操作系统/浏览器组合在字体大小和其他一些元素方面都有不同的起点。

    尝试先对您的网站应用 CSS 重置,然后从那里开始构建。也许它有帮助。 http://developer.yahoo.com/yui/3/cssreset/

    【讨论】:

    • 同意。使用全局重置来重新定义起始字体大小。然后用 EM 单位而不是 PX 来缩放你的字体
    • 重置 CSS 本身并不会改变字体渲染的差异,这只是 因操作系统而异。
    【解决方案4】:

    尝试将字体强制为arial,因为它包含在所有操作系统中,而且看起来不错。

    【讨论】:

    • Arial 在大多数 Linux 系统上都不容易使用,您必须手动安装它们,例如 sudo apt-get install msttcorefonts
    猜你喜欢
    • 2018-01-16
    • 2015-03-17
    • 2011-04-02
    • 2022-09-24
    • 2021-12-19
    • 2012-07-14
    • 2015-02-16
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多