gpt4 book ai didi

objective-c - 使用时字距调整错误 -[NSString drawInRect : withAttributes:]

转载 作者:太空狗 更新时间:2023-10-30 03:54:49 25 4
gpt4 key购买 nike

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

Bad kerning

Good kerning

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

我也尝试过将 Core Text 与 CTLineDraw 结合使用,但仍然出现了错误的字距调整。所以我的问题是,要在 Cocoa 文本系统中启用字距调整,我需要做什么特别的事情吗?如果不是,NSTextView 如何应用字距调整?

最佳答案

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

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

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

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com