+2004-12-06 Richard Williamson <rjw@apple.com>
+
+ Use the AppKit's font rendering mode. This fixes 3905347, but we still need to track down
+ and resolve why metrics have changed for Courier. This may be caused by changes in
+ AppKit for 3902394.
+
+ Reviewed by John.
+
+ * WebCoreSupport.subproj/WebTextRenderer.m:
+ (_AppkitGetCGRenderingMode):
+ (getUncachedWidth):
+ (_drawGlyphs):
+
2004-12-06 Chris Blumenberg <cblu@apple.com>
Forgot to commit copied header.
#else
+static inline CGFontRenderingMode _AppkitGetCGRenderingMode(NSFont *font) {
+ switch ([font renderingMode]) {
+ case NSFontIntegerAdvancementsRenderingMode: return kCGFontRenderingMode1BitPixelAligned;
+ case NSFontAntialiasedIntegerAdvancementsRenderingMode: return kCGFontRenderingModeAntialiasedPixelAligned;
+ default: return kCGFontRenderingModeAntialiased;
+ }
+}
+
static WebGlyphWidth getUncachedWidth(WebTextRenderer *renderer, WidthMap *map, ATSGlyphRef glyph, NSFont *font)
{
float pointSize;
pointSize = [font pointSize];
m = CGAffineTransformMakeScale(pointSize, pointSize);
- if (!CGFontGetGlyphTransformedAdvances([font _backingCGSFont], &m, kCGFontRenderingModeAntialiased, &glyph, 1, &advance))
+ if (!CGFontGetGlyphTransformedAdvances([font _backingCGSFont], &m, _AppkitGetCGRenderingMode(font), &glyph, 1, &advance))
FATAL_ALWAYS ("Unable to cache glyph widths for %@ %f", [font displayName], pointSize);
return advance.width;
const float *matrix = [drawFont matrix];
float flip = [[NSView focusView] isFlipped] ? -1 : 1;
CGContextSetTextMatrix(cgContext, CGAffineTransformMake(matrix[0], matrix[1] * flip, matrix[2], matrix[3] * flip, matrix[4], matrix[5]));
- CGContextSetFontRenderingMode (cgContext, kCGFontRenderingModeAntialiased);
+ CGContextSetFontRenderingMode (cgContext, _AppkitGetCGRenderingMode(drawFont));
CGContextSetFontSize(cgContext, 1.0);
#endif