• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Rendering combining marks
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Rendering combining marks


  • Subject: Re: Rendering combining marks
  • From: George Nachman <email@hidden>
  • Date: Tue, 4 Jan 2011 22:17:00 -0800

That's exactly what I needed, thanks!

On Mon, Jan 3, 2011 at 8:34 PM, Aki Inoue <email@hidden> wrote:
> -drawInRect: variant is designed for matching the field editor layout.
>
> -drawWithRect: variant is the base and should be used over the other two.
>
> Aki Inoue
>
>
> On 2011/01/03, at 16:45, George Nachman <email@hidden> wrote:
>
>> On Mon, Jan 3, 2011 at 1:47 PM, Wim Lewis <email@hidden> wrote:
>>>
>>> On 2 Jan 2011, at 1:23 PM, George Nachman wrote:
>>>> I'm using CGContextShowGlyphsWithAdvances to render fixed-width text
>>>> because it is very fast. If a glyph is missing, I use
>>>> CTFontCreateForString() to pick a better font, and that usually works.
>>>> I ran into a case that I just can't solve with this technique [...]
>>>
>>> Do you need layout+rendering to be fast, or just rendering? If the latter, for example if you're drawing a fixed string multiple times, you could use a higher level routine to do the layout (e.g. CTTypesetterCreateLine() or CTLineCreateWithAttributedString()) and then extract the glyphs, offsets, so on from the typeset line to draw with CGContextShowGlyphsWithAdvances().
>>>
>>> (Actually I'd be surprised if CGContextShowGlyphsWithAdvances() is much faster than CTLineDraw() --- I'd guess that simply caching the typeset line will get you most of the available speedup.)
>>
>> It's rare that I have text that requires layout. 99% is plain old
>> ASCII. It's not fixed text but I don't mind having a slower code path
>> for more complex text.
>>
>> I tried using CTLineCreateWithAttributedString() and then rendering it
>> with CTLineDraw() but it still fails to draw certain glyphs. For
>> example, U+23B7: RADICAL SYMBOL BOTTOM appears as a box (the missing
>> glyph symbol). It exists in the "Apple Symbols" font, but I guess it's
>> just using the font I requested. If I use -[NSAttributedString
>> drawInRect:], it can render the glyph, despite my specifying
>> AndaleMono as the font. I wish I could do all my text drawing with
>> -[NSAttributedString drawInRect:], but it is very slow. I tried using
>> that call for only "problem" characters and
>> CGContextShowGlyphsWithAdvances for "normal" characters, but I can't
>> get the baselines to line up correctly (the attributed string draws a
>> few pixels lower for some reason). If I could get the baselines to
>> match up, this would be an ideal solution.
>>
>> Another smaller issue is that CTLineCreateWithAttributedString() +
>> CTLineDraw() doesn't perform layout as nicely as -[NSAttributedString
>> drawInRect:] in some edge cases. For instance, the sequence U+0061
>> U+20D1 (where the latter is COMBINING RIGHT HARPOON ABOVE)  draws the
>> diacritic through the top of the letter, while -[NSAttributedString
>> drawInRect:] places it just above the letter.
>> _______________________________________________
>>
>> 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
>
_______________________________________________

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

References: 
 >Rendering combining marks (From: George Nachman <email@hidden>)
 >Re: Rendering combining marks (From: Wim Lewis <email@hidden>)
 >Re: Rendering combining marks (From: George Nachman <email@hidden>)
 >Re: Rendering combining marks (From: Aki Inoue <email@hidden>)

  • Prev by Date: RE: execute system("some script") on behalf of root from non-root app
  • Next by Date: Question regarding popoverControllerDidDismissPopover: delegate method
  • Previous by thread: Re: Rendering combining marks
  • Next by thread: Re: iOS MapKit rotation leaves blank area
  • Index(es):
    • Date
    • Thread