Changeset 96366 in webkit


Ignore:
Timestamp:
Sep 29, 2011 3:21:00 PM (13 years ago)
Author:
caryclark@google.com
Message:

Enable LCD text in Skia on Mac
https://bugs.webkit.org/show_bug.cgi?id=68734

Reviewed by Stephen White.

No new tests. Existing layout tests are generated
with LCD text disabled for pixel comparisons.

Duplicate the logic in FontMac.mm to pass settings
for antialiasing and smoothing. Also disable smoothing
for DumpRenderTree.

  • platform/graphics/skia/FontSkia.cpp:

(WebCore::setupPaint):
(WebCore::Font::drawGlyphs):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r96365 r96366  
     12011-09-29  Cary Clark  <caryclark@google.com>
     2
     3        Enable LCD text in Skia on Mac
     4        https://bugs.webkit.org/show_bug.cgi?id=68734
     5
     6        Reviewed by Stephen White.
     7
     8        No new tests. Existing layout tests are generated
     9        with LCD text disabled for pixel comparisons.
     10
     11        Duplicate the logic in FontMac.mm to pass settings
     12        for antialiasing and smoothing. Also disable smoothing
     13        for DumpRenderTree.
     14 
     15        * platform/graphics/skia/FontSkia.cpp:
     16        (WebCore::setupPaint):
     17        (WebCore::Font::drawGlyphs):
     18
    1192011-09-29  Varun Jain  <varunjain@google.com>
    220 
  • trunk/Source/WebCore/platform/graphics/skia/FontSkia.cpp

    r95901 r96366  
    3535#include "GraphicsContext.h"
    3636#include "PlatformContextSkia.h"
     37#include "PlatformSupport.h"
    3738#include "SimpleFontData.h"
    3839
     
    7475}
    7576
    76 static void setupPaint(SkPaint* paint, const SimpleFontData* fontData, const Font* font)
     77static void setupPaint(SkPaint* paint, const SimpleFontData* fontData, const Font* font, bool shouldAntialias, bool shouldSmoothFonts)
    7778{
    7879    const FontPlatformData& platformData = fontData->platformData();
    7980    const float textSize = platformData.m_size >= 0 ? platformData.m_size : 12;
    8081
    81     paint->setAntiAlias(true);
     82    paint->setAntiAlias(shouldAntialias);
    8283    paint->setEmbeddedBitmapText(false);
    8384    paint->setTextSize(SkFloatToScalar(textSize));
     
    8889    paint->setTextSkewX(platformData.m_syntheticOblique ? -SK_Scalar1 / 4 : 0);
    8990    paint->setAutohinted(false); // freetype specific
    90     paint->setLCDRenderText(font->fontDescription().fontSmoothing() == SubpixelAntialiased);
     91    paint->setLCDRenderText(shouldSmoothFonts);
    9192}
    9293
     
    9899                      const FloatPoint& point) const {
    99100    COMPILE_ASSERT(sizeof(GlyphBufferGlyph) == sizeof(uint16_t), GlyphBufferGlyphSize_equals_uint16_t);
     101
     102    bool shouldSmoothFonts = true;
     103    bool shouldAntialias = true;
     104   
     105    switch (fontDescription().fontSmoothing()) {
     106    case Antialiased:
     107        shouldSmoothFonts = false;
     108        break;
     109    case SubpixelAntialiased:
     110        break;
     111    case NoSmoothing:
     112        shouldAntialias = false;
     113        shouldSmoothFonts = false;
     114        break;
     115    case AutoSmoothing:
     116        // For the AutoSmooth case, don't do anything! Keep the default settings.
     117        break;
     118    }
     119   
     120    if (!shouldUseSmoothing() || PlatformSupport::layoutTestMode())
     121        shouldSmoothFonts = false;
    100122
    101123    const GlyphBufferGlyph* glyphs = glyphBuffer.glyphs(from);
     
    134156        SkPaint paint;
    135157        gc->platformContext()->setupPaintForFilling(&paint);
    136         setupPaint(&paint, font, this);
     158        setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts);
    137159        adjustTextRenderMode(&paint, gc->platformContext());
    138160        paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
     
    157179        SkPaint paint;
    158180        gc->platformContext()->setupPaintForStroking(&paint, 0, 0);
    159         setupPaint(&paint, font, this);
     181        setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts);
    160182        adjustTextRenderMode(&paint, gc->platformContext());
    161183        paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
Note: See TracChangeset for help on using the changeset viewer.