我已经在Photoshop中将我的字体设置为2224的Helvetica Neue Regular - 无需任何其他自定义。
现在我在OSX应用程序中需要完全相同的结果,这似乎很难实现。
我使用
修改了我的NSTextField的字体self.label.font = [NSFont fontWithName:@"HelveticaNeue" size:22];
我创建了HelveticaNeue(常规)和HelveticaNeue-Medium,Photoshop和OSX的比较。 似乎OSX部分总是更加大胆,字母间距略有缩小。
有可能玩一会儿并使用NSAttribuedString调整OSX上的字体,直到它与Photoshop字体匹配,但这是否真的有必要?字体不应该完全一样吗?
答案 0 :(得分:0)
渲染字体的方法有很多种。显然,Photoshop有自己的字体渲染引擎,它与默认情况下NSTextField
正在做的不同。
如果您将图像放大(以不会尝试平滑结果的方式),您将看到Photoshop渲染使用灰度抗锯齿,而OS X渲染使用子像素抗锯齿。 OS X渲染具有彩色条纹。当以正常尺寸渲染时,这些颜色最终会照亮LCD屏幕中的不同RGB元素。它看起来像是在改变亮度,而不是看起来有色。基本上,子像素抗锯齿使用LCD像素内的颜色元素布局来提高其渲染的分辨率。
我还怀疑OS X渲染引擎正在使用子像素字形定位。这允许字形的大小和间距更紧密地遵循字体规定的内容,在渲染到像素网格时做出较小的妥协。例如,查看第一行(Helvetica Neue 22pt:Photoshop)。 “H”和“e”之间以及“l”和“v”之间的间距对我来说是错误的。 OS X看起来更好看。
如果您自己渲染文字,可以使用CGContextSetShouldSubpixelQuantizeFonts()
关闭子像素消除锯齿,并使用CGContextSetShouldSubpixelPositionFonts()
关闭子像素定位。 (文档建议关闭子像素定位也会关闭子像素消除锯齿,虽然我不确定为什么会出现这种情况。)看看是否会产生更像Photoshop给你的结果。
顺便说一句,也许可以调整Photoshop渲染字体的方式。仅仅因为两件事表面上呈现相同的字体,并不意味着它们会产生相同的像素。