繁体   English   中英

将 BaseSDK 从 10.5 更改为 10.6 后字体粗细的问题

[英]Problem with font thickness after changing BaseSDK from 10.5 to 10.6

将我的项目的 BaseSDK 更改为 10.6 后,我注意到我的自定义绘制的文本看起来不同(查看图像:绘制的代码相同)

在 10.5 BaseSDK 下:图片1

在 10.6 BaseSDK 下:图像2

我正在使用 [(NSString *)myString drawInRect:myRect withAttributes:myAttributes] 进行绘图。

myAttributes = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
    [NSColor myColor], NSForegroundColorAttributeName,
    [NSFont systemFontOfSize:18], NSFontAttributeName,
    paragraphStyle, NSParagraphStyleAttributeName,
    shadow, NSShadowAttributeName, nil];

这种差异的原因是什么,或者如何减少字体的粗细? 我试图通过减少厚度

[NSFontManager convertWeight:NO ofFont:font]

但看起来也好不了多少……

提前致谢。

如果我们放大并仔细观察两个图像,我们会立即注意到差异(至少我是这样):

在此处输入图片说明

上图文字采用CRT风格字体平滑处理,下图文字采用Medium LCD风格字体平滑处理。 (LCD 字体平滑的所有 3 种样式都会在抗锯齿像素中引入色偏)。

我们需要有关您的测试设置的更多信息才能说明发生这种情况的原因。 你在什么版本的 OS X 下测试这个? 例如,您的应用是否针对 10.6 SDK 构建,部署目标为 10.5,上图是在 OS X 10.5.x(在同一台机器上)下测试时拍摄的,下图是在 10.6.x 下测试时拍摄的? 或者,是否所有测试都在 Mac OS X 10.6.x 中完成,针对 10.5 SDK 构建会生成上图,针对 10.6 SDK 构建会生成下图? 您使用的是什么型号的 Mac? 您连接了哪种类型的外部 LCD 或 CRT 显示器(如果有)?

只是一些想法,没有上面要求的信息。 我相信 10.5 中的默认字体平滑样式是 CRT,而 10.6 默认为“自动”。 因此,如果您有一个带有 LCD 显示屏的系统并且在 10.5 下进行测试,但从未更改过默认 CRT 样式的字体平滑样式,那么您将获得与上图类似的图像。 如果您随后在同一系统上切换到 10.6,则 10.6 自动字体平滑可能会自动检测到您的 LCD 显示器,并使用中型 LCD 样式字体平滑,这会导致下方图像中的“看起来更重”的文本.

要记住的另一件事是字体平滑值是按主机存储的。 例如,在我的机器上, AppleFontSmoothing值存储在 ~/Library/Preferences/ByHost/.GlobalPreferences.##########.plist 中,其中 ########## 是你的硬件 UUID。 我想可能会为不同的主机设置存储 2 个不同的值。

现在我知道它发生的原因以及这个问题的解决方法:似乎在 10.6 中添加了字体 LCD 平滑选项,该选项在首选项 -> 外观 ->“可用时使用 LCD 字体平滑”作为复选框被选中默认。

这就是为什么将项目的BaseSDK 更改为10.6 后,应用程序中的文本变得像LCD 一样平滑,而且看起来很糟糕。

因此,代码中问题的解决方法是在绘图之前更改图形上下文中的平滑选项:

CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetShouldSmoothFonts(context, NO);

这个方法的文档告诉我们这个参数是图形状态的一部分,所以如果你不想在其他字体绘图中改变这个选项,你应该恢复图形状态。

感谢@NSGod 找到了这个问题的原因。

你得到了你所要求的

[NSFont systemFontOfSize:18]

它们很可能是 10.5 和 10.6 之间略有不同的字体。 无论出于何种原因,平面设计师都发疯了。

如果您记录[NSFont systemFontOfSize:18]的输出,您会得到什么。 10.5 和 10.6 有区别吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM