| Index: src/gpu/text/GrFontScaler.cpp | 
| diff --git a/src/gpu/text/GrFontScaler.cpp b/src/gpu/text/GrFontScaler.cpp | 
| index c8412027c04df8cca2ac69c2847ffac1e00f5baf..bf6e2d1c44bb2425291f18ce53d94065b53d4ed2 100644 | 
| --- a/src/gpu/text/GrFontScaler.cpp | 
| +++ b/src/gpu/text/GrFontScaler.cpp | 
| @@ -9,6 +9,7 @@ | 
| #include "GrFontScaler.h" | 
| #include "SkDescriptor.h" | 
| #include "SkDistanceFieldGen.h" | 
| +#include "GrDistanceFieldGenFromVector.h" | 
| #include "SkGlyphCache.h" | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
| @@ -170,28 +171,20 @@ bool GrFontScaler::getPackedGlyphImage(const SkGlyph& glyph, int width, int heig | 
| bool GrFontScaler::getPackedGlyphDFImage(const SkGlyph& glyph, int width, int height, void* dst) { | 
| SkASSERT(glyph.fWidth + 2*SK_DistanceFieldPad == width); | 
| SkASSERT(glyph.fHeight + 2*SK_DistanceFieldPad == height); | 
| -    const void* image = fStrike->findImage(glyph); | 
| -    if (nullptr == image) { | 
| +    const SkPath* path = fStrike->findPath(glyph); | 
| +    if (nullptr == path) { | 
| return false; | 
| } | 
| + | 
| +    SkMatrix drawMatrix; | 
| +    drawMatrix.setTranslate(-glyph.fLeft, -glyph.fTop); | 
| + | 
| // now generate the distance field | 
| SkASSERT(dst); | 
| -    SkMask::Format maskFormat = static_cast<SkMask::Format>(glyph.fMaskFormat); | 
| -    if (SkMask::kA8_Format == maskFormat) { | 
| -        // make the distance field from the image | 
| -        SkGenerateDistanceFieldFromA8Image((unsigned char*)dst, | 
| -                                           (unsigned char*)image, | 
| -                                           glyph.fWidth, glyph.fHeight, | 
| -                                           glyph.rowBytes()); | 
| -    } else if (SkMask::kBW_Format == maskFormat) { | 
| -        // make the distance field from the image | 
| -        SkGenerateDistanceFieldFromBWImage((unsigned char*)dst, | 
| -                                           (unsigned char*)image, | 
| -                                           glyph.fWidth, glyph.fHeight, | 
| -                                           glyph.rowBytes()); | 
| -    } else { | 
| -        return false; | 
| -    } | 
| +    // Generate signed distance field directly from SkPath | 
| +    GrGenerateDistanceFieldFromPath((unsigned char*)dst, | 
| +                                    *path, drawMatrix, | 
| +                                    width, height, width * sizeof(unsigned char)); | 
|  | 
| return true; | 
| } | 
|  |