Use the AppKit's font rendering mode. This fixes 3905347, but we still need to...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 7 Dec 2004 04:11:36 +0000 (04:11 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 7 Dec 2004 04:11:36 +0000 (04:11 +0000)
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8144 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/WebCoreSupport.subproj/WebTextRenderer.m

index eb44d6d07f21b481c95a2284fea42e2535f5ab5f..1cb0d26834b2958da9997811ae216e7610b79a5b 100644 (file)
@@ -1,3 +1,16 @@
+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.
index a48ee3a7337b36e498dfeaab557306b088c04192..206aec6cd32ff07ed0a0fde52aeb0e42e33ce65b 100644 (file)
@@ -221,6 +221,14 @@ static WebGlyphWidth getUncachedWidth(WebTextRenderer *renderer, WidthMap *map,
 
 #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;
@@ -232,7 +240,7 @@ static WebGlyphWidth getUncachedWidth(WebTextRenderer *renderer, WidthMap *map,
 
     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;
@@ -913,7 +921,7 @@ static void _drawGlyphs(NSFont *font, NSColor *color, CGGlyph *glyphs, CGSize *a
         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