diff --git a/src/core/SkPaint_text.cpp b/src/core/SkPaint_text.cpp
index eda6fc3..aa36cbb 100644
--- a/src/core/SkPaint_text.cpp
+++ b/src/core/SkPaint_text.cpp
@@ -473,32 +473,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 SkScalar SkPaint::getFontMetrics(SkFontMetrics* metrics) const {
-    SkCanonicalizePaint canon(*this);
-    const SkPaint& paint = canon.getPaint();
-    SkScalar scale = canon.getScale();
-
-    FontMetrics storage;
-    if (nullptr == metrics) {
-        metrics = &storage;
-    }
-
-    SkAutoDescriptor ad;
-    SkScalerContextEffects effects;
-
-    auto desc = SkScalerContext::CreateDescriptorAndEffectsUsingPaint(
-        paint, SkSurfaceProps(0, kUnknown_SkPixelGeometry),
-        SkScalerContextFlags::kNone, SkMatrix::I(), &ad, &effects);
-
-    {
-        auto typeface = SkPaintPriv::GetTypefaceOrDefault(paint);
-        auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*desc, effects, *typeface);
-        *metrics = cache->getFontMetrics();
-    }
-
-    if (scale) {
-        SkPaintPriv::ScaleFontMetrics(metrics, scale);
-    }
-    return metrics->fDescent - metrics->fAscent + metrics->fLeading;
+    return SkFont::LEGACY_ExtractFromPaint(*this).getMetrics(metrics);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/tests/FontObjTest.cpp b/tests/FontObjTest.cpp
index 42a0b56..4f7e526 100644
--- a/tests/FontObjTest.cpp
+++ b/tests/FontObjTest.cpp
@@ -34,23 +34,6 @@
     REPORTER_ASSERT(reporter, paint.getHinting() == p.getHinting());
 }
 
-static void test_fontmetrics(skiatest::Reporter* reporter,
-                             const SkPaint& paint, const SkFont& font) {
-    SkFontMetrics fm0, fm1;
-    SkScalar h0 = paint.getFontMetrics(&fm0);
-    SkScalar h1 = font.getMetrics(&fm1);
-
-    REPORTER_ASSERT(reporter, h0 == h1);
-#define CMP(field) REPORTER_ASSERT(reporter, fm0.field == fm1.field)
-    CMP(fFlags);
-    CMP(fTop);
-    CMP(fAscent);
-    CMP(fDescent);
-    CMP(fBottom);
-    CMP(fLeading);
-#undef CMP
-}
-
 static void test_cachedfont(skiatest::Reporter* reporter) {
     static const char* const faces[] = {
         nullptr,   // default font
@@ -102,7 +85,6 @@
                 const SkFont font(SkFont::LEGACY_ExtractFromPaint(paint));
 
                 test_cachedfont(reporter, paint, font);
-                test_fontmetrics(reporter, paint, font);
 
                 SkRect bounds;
 
