| Index: src/gpu/GrDistanceFieldTextContext.cpp | 
| diff --git a/src/gpu/GrDistanceFieldTextContext.cpp b/src/gpu/GrDistanceFieldTextContext.cpp | 
| index 820223ddc49d1d9084db580b56c201a508d880be..41c28440375b501676ee678a3c5cfaf6c71b7608 100755 | 
| --- a/src/gpu/GrDistanceFieldTextContext.cpp | 
| +++ b/src/gpu/GrDistanceFieldTextContext.cpp | 
| @@ -33,9 +33,9 @@ SK_CONF_DECLARE(bool, c_DumpFontCache, "gpu.dumpFontCache", false, | 
|  | 
| static const int kSmallDFFontSize = 32; | 
| static const int kSmallDFFontLimit = 32; | 
| -static const int kMediumDFFontSize = 64; | 
| -static const int kMediumDFFontLimit = 64; | 
| -static const int kLargeDFFontSize = 128; | 
| +static const int kMediumDFFontSize = 78; | 
| +static const int kMediumDFFontLimit = 78; | 
| +static const int kLargeDFFontSize = 192; | 
|  | 
| static const int kVerticesPerGlyph = 4; | 
| static const int kIndicesPerGlyph = 6; | 
| @@ -80,7 +80,20 @@ GrDistanceFieldTextContext::~GrDistanceFieldTextContext() { | 
| } | 
|  | 
| bool GrDistanceFieldTextContext::canDraw(const SkPaint& paint, const SkMatrix& viewMatrix) { | 
| -    if (!fEnableDFRendering && !paint.isDistanceFieldTextTEMP()) { | 
| +    // TODO: support perspective (need getMaxScale replacement) | 
| +    if (viewMatrix.hasPerspective()) { | 
| +        return false; | 
| +    } | 
| + | 
| +    SkScalar maxScale = viewMatrix.getMaxScale(); | 
| +    SkScalar scaledTextSize = maxScale*paint.getTextSize(); | 
| +    // Scaling up beyond 2x yields undesireable artifacts | 
| +    if (scaledTextSize > 2*kLargeDFFontSize) { | 
| +        return false; | 
| +    } | 
| + | 
| +    if (!fEnableDFRendering && !paint.isDistanceFieldTextTEMP() && | 
| +        scaledTextSize < kLargeDFFontSize) { | 
| return false; | 
| } | 
|  | 
| @@ -96,12 +109,6 @@ bool GrDistanceFieldTextContext::canDraw(const SkPaint& paint, const SkMatrix& v | 
| return false; | 
| } | 
|  | 
| -    // TODO: choose an appropriate maximum scale for distance fields and | 
| -    //       enable perspective | 
| -    if (SkDraw::ShouldDrawTextAsPaths(paint, viewMatrix)) { | 
| -        return false; | 
| -    } | 
| - | 
| return true; | 
| } | 
|  | 
|  |