为什么字体在 Mac OS X 上有时看起来很“胖”?

为什么字体在 Mac OS X 上有时看起来很“胖”?

有时从挂起状态恢复时,Mac OS X 中的字体看起来比正常情况“更粗”。不幸的是,目前我无法让我的 Macbook Pro 表现出“正常”行为以供比较,昨天和今天它一直不正常。如果我能获得我认为“正常”的屏幕截图,我会添加它们。

“修复”这个问题是随机的。我使用外接显示器,有时拔下再插上,甚至关机再打开都能解决问题。有时连接显示器(或不连接显示器)也能检测显示器。有时需要注销或完全重启。

使用的显示器:

  • 苹果MacBook Pro15 英寸内置显示屏
  • 戴尔 27 英寸液晶显示器(2009 年型号)

我发现发生这种情况的软件(至少最明显的是):

我正在使用 Mac OS X 10.5.8。

MacIrssi 的“异常”视图和 Inconsolata 16 pt。

异常(Macirssi)

Firefox 的“异常”视图。

异常(Firefox)

最后终于让它切换回来了,尽管从暂停状态恢复后它又变回了“肥胖”:-(。

正常(Macirssi)

Firefox 中的“正常”状态:

正常(火狐)

答案1

当你放大图像时,问题就变得明显了:

放大“粗”字体的屏幕截图,显示彩色像素
放大“细”字体的屏幕截图,显示灰度像素

如您所见,瘦版完全是灰度的,而胖版有一些像素略带红色,有些像素略带蓝色。

发生这种情况是因为子像素抗锯齿。LCD 屏幕实际上并不包含任何颜色的方形像素;相反,它有三个细长的矩形元素,分别是红色、绿色和蓝色。(下面的图片来自维基百科)。

各种显示器上的像素图案

在对字体进行抗锯齿处理时,除了简单地使用灰色阴影外,您还可以改变三种颜色的强度,这样您就可以以三倍于使用灰色阴影进行抗锯齿所能实现的水平分辨率进行渲染。我提供的放大图片实际上并不代表您所看到的内容;相反,由于像素的形状和位置,字体应该看起来更加平滑。将其渲染成这样会更准确:

子像素抗锯齿文本示例

因此,您看到的是,有时字体使用子像素抗锯齿渲染,有时使用普通抗锯齿渲染。我猜想所使用的子像素抗锯齿算法针对白色背景上的黑色文本进行了优化,这也许可以解释为什么文本在黑色背景上显示为白色文本时看起来有点“胖”。

另一方面,它可能只是对实际字体的更精确渲染。如果你看一个正确缩放的相同字体版本,它看起来比上面显示的“瘦”版本更粗一些,更不纤细:

较大字体大小的示例文本

它在两个版本之间来回切换的原因可能是因为你的第二台显示器。我不知道操作系统何时或如何决定这一点,但它很可能检测到具有未知子像素布局的 LCD。由于它不知道像素的布局,因此它采用更安全的标准抗锯齿(因为子像素抗锯齿在布局错误的 LCD 上显示时看起来会非常奇怪)。似乎不知何故,你有时会让它做出一个决定,有时会让它做出另一个决定。我相信一旦应用程序以某种渲染模式启动,它就不会改变,直到你退出并重新启动该应用程序,这可以解释为什么你会看到不稳定的行为;你得到的行为可能取决于你连接外接显示器的具体时间以及启动应用程序的时间。

如果您只是想使所有应用程序中的一致性,无论您是否使用第二个 LCD,并且始终使用细字体,您只需在外观系统偏好设置面板中关闭字体平滑即可:

在外观系统偏好设置面板中突出显示“使用 LCD 字体平滑(可用时)”

当然,这样你就会在任何地方失去子像素抗锯齿。正如 John Rudy 指出的那样,你可以通过以下方式获得更细粒度的控制defaults使用程序手动设置级别的说明;或者如果您尚未使用 Snow Leopard,那么您仍然可以在系统偏好设置中使用更细粒度的控制。

答案2

这看起来像是抗锯齿方面的差异,如果您在挂起/恢复和外接显示器连接/断开连接时看到此行为,这可能是有道理的。可能是您的戴尔显示器触发了系统使用的抗锯齿模式的更改。

根据您使用的 Mac OS X 版本,您可能有选项可以在“外观系统偏好设置”窗口中控制系统使用的字体平滑度。(从 Snow Leopard 开始,我只看到一个复选框“在可用时使用 LCD 字体平滑度”。这似乎对应于旧的“自动 - 最适合主显示器”设置。)

您仍然可以通过 Terminal.app 中的系统属性进行配置。本文解释细节,我将在下面总结:

字体平滑有五种设置:

  1. 自动 - 最适合主显示屏
  2. 标准 - 最适合 CRT(选项1
  3. 照明(可选2
  4. 中型 - 最适合平板显示器(选项3
  5. 强(选项4

为了严格控制这一点,以便您不再处于自动世界中,请使用 Terminal.app 在系统范围内更改属性。我怀疑如果您这样做,显示切换(在显示器之间,我怀疑可能是您的挂起/恢复屏幕保护程序)应该不再扰乱您的设置。

在 Terminal.app 中输入:

    defaults -currentHost write -globalDomain AppleFontSmoothing -int 2

将更改为2您最喜欢的选项(从上面的列表中,使用文本后的选项编号)。

答案3

如果您使用的是 CRT,在 CRT 完全预热之前,您可能会发现颜色、亮度和宽高比会有些失真。您使用的是什么显示器?

相关内容