1

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 是一样的。

我是不是误会了?

4

2 回答 2

1

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

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

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

于 2012-10-16T16:17:51.743 回答
0

-rectArrayForCharacterRange

返回一个矩形数组,并通过引用返回此类矩形的数量,这些矩形定义了给定容器中包含给定字符范围的区域。

关于 CharacterRange 的参考

-rectArrayForGlyphRange

返回一个矩形数组,并通过引用返回此类矩形的数量,这些矩形定义了给定容器中包含给定字形范围的区域。

关于 GlyphRange 的参考

于 2012-05-11T08:49:47.033 回答