Вы можете получить прямоугольник символа в NSTextView
следующим образом:
//Get the range of characters, which may be different than the range of glyphs
NSRange range = [[textView layoutManager]glyphRangeForCharacterRange:NSMakeRange(charIndex, 0) actualCharacterRange:NULL]
//Get the rect of the character
NSRect rect = [[textView layoutManager]boundingRectForGlyphRange:range inTextContainer:[textView textContainer]];
Затем получите желаемое NSGlyph
:
NSGlyph glyph = [[textView layoutManager]glyphAtIndex:range.location];
И нарисуйтев NSBezierPath
:
NSBezierPath *path = [NSBezierPath bezierPath];
[path appendBezierPathWithGlyph:glyph inFont:myFavoriteFont];
Затем запросите путь для его границ:
NSRect actualRect = [path bounds];
Затем вы можете сравнить эти два прямоугольника.
Естьпосмотрите справочник классов NSLayoutManager , обзор текстовой системы и руководство по программированию текстового макета .