Re: Drawing text like Lion's Mail
Re: Drawing text like Lion's Mail
- Subject: Re: Drawing text like Lion's Mail
- From: David Duncan <email@hidden>
- Date: Mon, 8 Aug 2011 10:29:52 -0700
On Aug 8, 2011, at 10:21 AM, Jean-Daniel Dupas wrote:
> Le 8 août 2011 à 18:50, David Duncan a écrit :
>
>> On Aug 8, 2011, at 8:16 AM, Jean-Daniel Dupas wrote:
>>
>>>
>>> I think you can create a CGPath from some text using CTFrameGetPath().
>>> Once you get the path, you can do whatever you want (clipping, shadow, gradient, …).
>>
>>
>> CTFrameGetPath() returns the path used to create the frame, typically a rectangle, not a path that describes the text therein.
>
> My bad.
> So I guess the only way to get the path is to use CTFontCreatePathForGlyph() on each glyph and using other CT methods to get there positions.
> Not as convenient, but possible, especially if this is for a single line of text as requested by the OP.
If you just need the text outlines for clipping, then you should be able to use the Text Drawing mode of the context. By setting it to kCGText*Clip, the clipping region is set to that of the text after it is "drawn".
Unfortunately there is no simple way to get the path this way if it is what you need (at least not that I can tell). CTFontCreatePathForGlyph() is one way to go about it, and I think a combination of NSLayoutManager and NSBezierPath can also do it, although I believe you have to subclass NSLayoutManager to do so (I haven't done this, but I recall Aki Inoue outlining it to me a long time ago). If you are already using NSLayoutManager this would probably be the way to go since your metrics won't change as much going this route.
--
David Duncan
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden