繁体   English   中英

使用时字距调整不良 - [NSString drawInRect:withAttributes:]

[英]Bad kerning when using -[NSString drawInRect: withAttributes:]

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

坏字距

很好的字距

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

我也尝试过使用带有CTLineDraw的Core Text,但仍然有很糟糕的字距。 所以我的问题是,在Cocoa文本系统中启用字距调整是否需要做些什么? 如果没有,NSTextView如何应用字距调整?

顶部的例子是“更紧”,底部的例子是'更宽松'看-[NSTextView tightenKerning]-[NSTextView loosenKerning] Apple在这里混淆地称其他人称之为“跟踪”为“Kerning”即。 在字体中指定的“字符前进”之后,在每个字形之间均匀地应用恒定量的额外空间(正或负),以使文本显示,更好,更紧或更松散。

默认的“紧密度”或“松散度”是渲染引擎的属性,而不是字体,并且在不同的OSX版本,应用程序或UI元素之间可能很容易区分。

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

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

如果字体没有字符串信息,那么您的问题是“我如何在Cocoa文本系统中启用字距调整?” 没有意义或不代表你认为它意味着什么(?)。

暂无
暂无

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

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