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は同じだと思います。これは、2つのメソッドを使用する場合、charRangeとglyphRangeに同じ範囲値を指定すると、出力NSRectArrayが同じになるためです。

私は誤解していますか?

4

2 に答える 2

1

グリフと文字の間に常に 1 対 1 の対応があるとは限りません。合字は、2 つの文字を表すグリフの例です。

このため、GlyphRange と CharacterRange は同じではない場合があります。文字列 "fi" には 2 つの文字が含まれていますが、レイアウト マネージャーは (fi 合字を使用して) 単一のグリフとして表示することを決定する場合があるため、グリフ範囲の長さは 1 になる場合があります。

グリフは文字のグラフィック表現であることを思い出してください。のような文字は、書体や書体に関係なく同じ抽象的な実体と考えてください。文字として、Times New Roman Italic aは、Comic Sans Bold aと同じくらいaです。この視覚的な外観の区別は、グリフ レベルでのみ行われます。

于 2012-10-16T16:17:51.743 に答える
0

-rectArrayForCharacterRange:

指定された文字範囲を囲む指定されたコンテナ内の領域を定義する長方形の配列と、参照により、そのような長方形の数を返します。

CharacterRange についてのリファレンス

-rectArrayForGlyphRange:

指定されたグリフ rangeを囲む、指定されたコンテナ内の領域を定義する四角形の配列と、参照により、そのような四角形の数を返します。

GlyphRange についてのリファレンス

于 2012-05-11T08:49:47.033 に答える