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;


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

我误会了吗

最佳答案

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

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

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

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

10-10 21:33