You can iterate through the line fragment positions using -[NSLayoutManager
lineFragmentRectForGlyphIndex:effectiveRange:].
>From the line fragment origin, the baseline offset can be determine by using
>-[NSTypesetter baselineOffsetInLayoutManager:glyphIndex:].
The typesetter can be obtained via -[NSLayoutManager typesetter].
Aki
On Sep 12, 2011, at 1:35 AM, Gerriet M. Denkmann wrote:
>
> I have a subclass of NSTextView which does:
>
> - (void)setUpData
> {
> [ [ self textStorage ] setAttributedString: someAttributedString ];
> // uses self.usedFont
> NSLayoutManager *layoutManager = [ self layoutManager ];
> baselineOffset = [ layoutManager defaultBaselineOffsetForFont:
> self.usedFont ];
> lineHeight = [ layoutManager defaultLineHeightForFont: self.usedFont ];
> }
>
>
> - (void)drawRect:(NSRect)dirtyRect
> {
> [ super drawRect: dirtyRect ];
>
> for( NSUInteger line = 0; line < NBR_OF_LINES; line++ )
> {
> CGFloat bax = lineHeight * line + baselineOffset;
>
> [ [ NSColor blueColor ] set ]; // base line
> [ NSBezierPath strokeLineFromPoint: NSMakePoint(
> NSMinX(dirtyRect), bax )
> toPoint:
> NSMakePoint( NSMaxX(dirtyRect), bax )
> ];
> };
> }
>
> This works, because currently all lines use the same font.
>
> But how would I handle the more general case, where each line might contain
> several and/or different fonts?
>
>
> Kind regards,
>
> Gerriet.
>
> _______________________________________________
>
> Cocoa-dev mailing list ([email protected])
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/aki%40apple.com
>
> This email sent to [email protected]
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]