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/