当使用-[NSString drawInRect:withAttributes:]时,主要是在使用内置的Helvetica Neue以及其他字体时,字距调整确实很糟糕。但是,当在Text Edit(使用NSTextView)中呈现相同的字符串时,字距调整非常好。考虑以下两个字符串:



对于较小的磅值,第一种情况(在Cocoa中渲染)几乎难以辨认,而第二种情况(来自“文本编辑”)更好。我认为此处根本没有使用紧缩信息。如果我将NSKernAttribute的值设置为0.0(根据文档,该选项将关闭字距调整),我将得到相同的结果,即顶部的结果。

我还尝试将Core Text与CTLineDraw一起使用,但字距微弱。所以我的问题是,我需要做些什么特别的事情才能在Cocoa文本系统中启用字距调整吗?如果不是,NSTextView如何应用字距调整?

最佳答案

最上面的例子是'tighter',最下面的例子是'loser',请参见-[NSTextView tightenKerning]-[NSTextView loosenKerning]。在这里,Apple令人困惑地将其他人称为“跟踪”的东西称为“紧缩”。在字体中指定的“字符前进”之后,在每个字形之间均匀地施加恒定量的附加空间(正或负),以使文本看起来更好,更紧或更松。

默认的“紧密度”或“松散度”是呈现引擎的属性,而不是字体,并且在不同的OSX版本,应用程序或UI元素之间很容易会有所不同。

在字型中,字距调整表用于调整特定字形对所需的字符进阶,例如,在我的假设字体中:“AV”列为字距对-当字符输入时,“A”字距应较小紧随其后的是“V”。

OSX字体Helvetica和HelveticaNeue(以及许多其他字体)根本没有字距调整信息,因此,您的示例中没有使用字距调整信息是正确的。

如果字体没有字距信息,则您的问题“如何在Cocoa文本系统中启用字距调整”?没有任何意义或不代表您认为的意思(?)。

关于objective-c - 使用-[NSString drawInRect : withAttributes:]时,字距调整错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12172408/

10-09 12:29