5

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

糟糕的字距

良好的字距

对于小磅值,第一种情况(在 Cocoa 中渲染)几乎难以辨认,而第二种情况(来自文本编辑)要好得多。我认为这里根本没有使用字距调整信息。如果我应用值为 0.0 的 NSKernAttribute(根据文档关闭字距调整),我会得到相同的结果,即顶部的结果。

我还尝试将 Core Text 与 CTLineDraw 一起使用,但字距仍然很差。所以我的问题是,为了在 Cocoa 文本系统中启用字距调整,我需要做些什么特别的事情吗?如果没有, NSTextView 如何应用字距调整?

4

1 回答 1

1

最上面的例子是“更紧”,最下面的例子是“更松”,见-[NSTextView tightenKerning], -[NSTextView loosenKerning]。在这里,Apple 混淆地将其他人所说的“跟踪”称为“字距调整”,即。在字体中指定的“字符前进”之后,在每个字形之间均匀应用恒定数量的额外空间(正或负),以使文本看起来更紧或更松。

默认的 'tightness' 或 'looseness' 是渲染引擎的属性,而不是字体,并且在不同的 OSX 版本、应用程序或 UI 元素之间很容易不同。

在字体中,字距调整表用于调整特定字形对所需的字符前进,例如,在我假设的字体中:“AV”被列为字距调整对 - 当字符时,“A”应该具有较小的前进后面是一个“V”。

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

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

于 2012-08-29T11:42:41.707 回答