当使用 - [NSString drawInRect:withAttributes:]时,主要是在使用内置的Helvetica Neue以及其他字体时,字距调整非常糟糕。但是,当在Text Edit(使用NSTextView)中呈现相同的字符串时,字距调整很棒。考虑这两个字符串:
对于小点大小,第一种情况(在Cocoa中呈现)几乎难以辨认,而第二种情况(来自文本编辑)要好得多。我认为这里根本没有使用字距调整信息。如果我应用NSKernAttribute的值为0.0(根据文档关闭字距调整)我得到相同的结果,顶部的那个。
我也尝试过将Core Text与CTLineDraw一起使用,但仍然有很糟糕的字距。所以我的问题是,在Cocoa文本系统中启用字距调整是否需要做些什么?如果没有,NSTextView如何应用字距调整?
答案 0 :(得分:1)
顶部示例为“更紧密”,底部示例为“更宽松”,请参阅-[NSTextView tightenKerning]
,-[NSTextView loosenKerning]
。 Apple在这里混淆地称其他人称之为“跟踪”为“Kerning”即。在字体中指定的“字符前进”之后,在每个字形之间均匀地应用一定量的额外空间(正或负),以使文本显示,更好,更紧或更松散。
默认的'紧密度'或'松散'是渲染引擎的属性,而不是字体,并且在不同的OSX版本,应用程序或UI元素之间可能很容易有所不同。
在字体中,字距调整表用于调整特定字形对所需的字符前移,例如,在我的假设字体中:'AV'被列为字距调整对 - 'A'应该具有较小的字符当它后面的字符是'V'时。
OSX字体Helvetica和HelveticaNeue(以及许多其他字体)根本没有字距调整信息,因此您的示例中没有使用字距调整信息。
如果字体没有字符串信息,那么您的问题是“我如何在Cocoa文本系统中启用字距调整?”没有意义或不代表你认为它意味着什么(?)。