I'm adding some Core Animation to my existing project, and I'm encountering 
some differences in the font rendering compared to non-Core Animation code.  
Here's the code used to draw my strings:

> NSShadow *selectedShadow = [[NSShadow alloc] init];
> [selectedShadow setShadowOffset:NSMakeSize(0,-1)];
> [selectedShadow setShadowColor:[NSColor colorWithCalibratedWhite:0.0 
> alpha:0.33]];
> [selectedShadow autorelease];
> 
> NSMutableParagraphStyle *leftAlignedEllipsisStyle = [[NSMutableParagraphStyle 
> alloc] init];
> [leftAlignedEllipsisStyle setAlignment:NSLeftTextAlignment];
> [leftAlignedEllipsisStyle setLineBreakMode:NSLineBreakByWordWrapping];
> [leftAlignedEllipsisStyle autorelease];
> 
> NSDictionary *selectedAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
>                                       [NSFont systemFontOfSize:11.0], 
> NSFontAttributeName,
>                                       [NSColor whiteColor], 
> NSForegroundColorAttributeName, 
>                                       selectedShadow, NSShadowAttributeName,
>                                       leftAlignedEllipsisStyle, 
> NSParagraphStyleAttributeName,
>                                       nil];
> 
> [someString drawWithRect:textRect
>                options:NSStringDrawingTruncatesLastVisibleLine | 
> NSStringDrawingUsesLineFragmentOrigin
>             attributes:selectedAttributes];

Here's the difference: http://homepage.mac.com/simx/images/antialiasing-diff.png

On the left is text rendered in my existing project using the above code via 
the drawRect: method.  On the right is text rendered into a CALayer using the 
drawLayer:inContext: method.

I'm aware of the fact that Core Animation disables sub-pixel rendering for text 
when drawing to transparent backgrounds, so I've intentionally designed my 
CALayers so that they have opaque backgrounds.  Sub-pixel rendering is 
definitely active now that I've drawn an opaque color to the layer.  This 
doesn't seem to be the issue, especially because the Core Animation text 
appears *heavier* than the normal Quartz text, whereas it usually appears more 
wispy when sub-pixel rendering is off.

Nor does this seem to be an issue with half-pixels.  The selection bubble is 
rendering crisply (from image assets), which indicates that the layer is 
positioned correctly.  And the text itself isn't blurred, so the text is also 
positioned correctly.

This almost looks as if a heavier kind of antialiasing is active on the text.  
I recall that Mac OS X had four different types of antialiasing you could 
choose in the Appearance preference pane, but this preference is gone in more 
recent versions.  Could I be hitting that and somehow using some different form 
of antialiasing?

Any help would be greatly appreciated.

-- Simone
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to