macos - NSTextView中的GlyphRange和CharacterRange有什么区别?

标签 macos cocoa nstextview

NSTextView中的GlyphRange和CharacterRange有什么区别?

- (NSRectArray)rectArrayForCharacterRange:(NSRange)charRange withinSelectedCharacterRange:(NSRange)selCharRange inTextContainer:(NSTextContainer *)container rectCount:(NSUInteger *)rectCount;
- (NSRectArray)rectArrayForGlyphRange:(NSRange)glyphRange withinSelectedGlyphRange:(NSRange)selGlyphRange inTextContainer:(NSTextContainer *)container rectCount:(NSUInteger *)rectCount;

我认为字形和字符始终具有相同的范围。 在使用中我认为 glyphRange 和 charRange 是相同的,因为当我使用这两种方法时,我给 charRange 和 glyphRange 相同的范围值,输出 NSRectArray 是相同的。

我是不是理解错了?

最佳答案

字形和字符之间并不总是一一对应的。连字是代表两个字符的字形示例。

因此,GlyphRange 和CharacterRange 可能不同。字符串“fi”包含两个字符,但布局管理器可能决定将其显示为单个字形(使用 fi 连字),因此字形范围的长度可能为 1。

请记住,字形是字符的图形表示。将像 a 这样的字符视为一个抽象实体,无论字体或字体风格如何,它都是相同的。作为一个字符,Times New Roman Italic a 与 Comic Sans Bold a 一样都是 a。这种视觉外观上的区别仅在字形级别上进行。

关于macos - NSTextView中的GlyphRange和CharacterRange有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547975/

相关文章:

python - 终端路径不是实际位置

cocoa - NSTextView setNeedsDisplay 在 Mavericks 下不起作用?

objective-c - 如何向 NSTextField 添加垂直滚动条?

ios - 为什么textView是:shouldInteractWithTextAttachment:inRange: never getting called on UITextView delegate?

swift - 将 SwiftPM 中的框架嵌入 Cocoa 应用程序 (XCODE)

cocoa - NSTextView 的疯狂字体问题

cocoa - CALayer、NSTextView 和缩放

java - 对 Windows/Linux/Mac 上的 Java 程序中的全局热键使用react?

objective-c - 正确裁剪 CIGaussianBlur

c++ - 我怎样才能修复 xcode 一直编译所有的东西?