diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index 1138995..8ec41d2 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -67,9 +67,7 @@
     }
 
     SkString onShortName() override {
-        SkString name("coloremoji");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("coloremoji");
     }
 
     SkISize onISize() override { return SkISize::Make(650, 1200); }
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index e24ba53..8538cdd 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -62,9 +62,7 @@
     }
 
     virtual SkString onShortName() override {
-        SkString name("coloremoji_blendmodes");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("coloremoji_blendmodes");
     }
 
     virtual SkISize onISize() override {
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index d0bf1af..e8fe2b8 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -29,9 +29,7 @@
     }
 
     SkString onShortName() override {
-        SkString name("dftext");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("dftext");
     }
 
     SkISize onISize() override {
diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp
index 4a918cb..32f19b1 100644
--- a/gm/dftext_blob_persp.cpp
+++ b/gm/dftext_blob_persp.cpp
@@ -24,9 +24,7 @@
 
 protected:
     SkString onShortName() override {
-        SkString name("dftext_blob_persp");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("dftext_blob_persp");
     }
 
     SkISize onISize() override { return SkISize::Make(900, 350); }
diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp
index cc6388c..49fa5d0 100644
--- a/gm/fontmgr.cpp
+++ b/gm/fontmgr.cpp
@@ -61,7 +61,6 @@
 
         fName.set("fontmgr_iter");
         fFM = SkFontMgr::RefDefault();
-        fName.append(sk_tool_utils::platform_font_manager());
     }
 
 protected:
@@ -127,9 +126,7 @@
 
 protected:
     SkString onShortName() override {
-        SkString name("fontmgr_match");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("fontmgr_match");
     }
 
     SkISize onISize() override {
@@ -215,7 +212,6 @@
         if (scale != 1 || skew != 0) {
             fName.appendf("_%g_%g", scale, skew);
         }
-        fName.append(sk_tool_utils::platform_font_manager());
         fFM = SkFontMgr::RefDefault();
     }
 
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 51d8425..e3aa82e 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -20,9 +20,7 @@
 protected:
 
     SkString onShortName() override {
-        SkString name("fontscaler");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("fontscaler");
     }
 
     SkISize onISize() override {
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index fcdac17..81ea5ae 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -31,9 +31,7 @@
 class GammaTextGM : public skiagm::GM {
 protected:
     SkString onShortName() override {
-        SkString name("gammatext");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("gammatext");
     }
 
     SkISize onISize() override {
diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp
index e605ac0..153e835 100644
--- a/gm/lcdtext.cpp
+++ b/gm/lcdtext.cpp
@@ -28,9 +28,7 @@
 protected:
 
     SkString onShortName() {
-        SkString name("lcdtext");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("lcdtext");
     }
 
     SkISize onISize() { return SkISize::Make(640, 480); }
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index 19394db..2a2b4e3 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -96,8 +96,7 @@
     }
 
     SkString onShortName() override {
-        return SkStringPrintf("mixedtextblobs%s",
-                              sk_tool_utils::platform_font_manager());
+        return SkString("mixedtextblobs");
     }
 
     SkISize onISize() override {
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
index 3e19803..56143e0 100644
--- a/gm/scaledemoji.cpp
+++ b/gm/scaledemoji.cpp
@@ -45,9 +45,7 @@
     }
 
     SkString onShortName() override {
-        SkString name("scaledemoji");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("scaledemoji");
     }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
@@ -97,9 +95,7 @@
     }
 
     SkString onShortName() override {
-        SkString name("scaledemojipos");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("scaledemojipos");
     }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp
index 0987f63..df3c382 100644
--- a/gm/scaledemoji_rendering.cpp
+++ b/gm/scaledemoji_rendering.cpp
@@ -31,9 +31,7 @@
     }
 
     SkString onShortName() override {
-        SkString name("scaledemoji_rendering");
-        name.append(sk_tool_utils::platform_font_manager());
-        return name;
+        return SkString("scaledemoji_rendering");
     }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp
index 2246350..1072959 100644
--- a/gm/textblobmixedsizes.cpp
+++ b/gm/textblobmixedsizes.cpp
@@ -80,8 +80,7 @@
     }
 
     SkString onShortName() override {
-        return SkStringPrintf("textblobmixedsizes%s%s",
-                              sk_tool_utils::platform_font_manager(),
+        return SkStringPrintf("textblobmixedsizes%s",
                               fUseDFT ? "_df" : "");
     }
 
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index b90e9e7..792dab2 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -101,7 +101,6 @@
         if (fApplyKerning) {
             name.append("_kerning");
         }
-        name.append(sk_tool_utils::platform_font_manager());
         return name;
     }
 
@@ -350,9 +349,7 @@
     }
 }
 
-DEF_SIMPLE_GM_BG_NAME(typefacerendering, canvas, 640, 840, SK_ColorWHITE,
-                      SkStringPrintf("typefacerendering%s",
-                                     sk_tool_utils::platform_font_manager())) {
+DEF_SIMPLE_GM(typefacerendering, canvas, 640, 840) {
     if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("fonts/hintgasp.ttf")) {
         draw_typeface_rendering_gm(canvas, std::move(face));
     }
@@ -361,18 +358,14 @@
 // Type1 fonts don't currently work in Skia on Windows.
 #ifndef SK_BUILD_FOR_WIN
 
-DEF_SIMPLE_GM_BG_NAME(typefacerendering_pfa, canvas, 640, 840, SK_ColorWHITE,
-                      SkStringPrintf("typefacerendering_pfa%s",
-                                     sk_tool_utils::platform_font_manager())) {
+DEF_SIMPLE_GM(typefacerendering_pfa, canvas, 640, 840) {
     if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("fonts/Roboto2-Regular.pfa")) {
         // This subsetted typeface doesn't have the character 'A'.
         draw_typeface_rendering_gm(canvas, std::move(face), 'O');
     }
 }
 
-DEF_SIMPLE_GM_BG_NAME(typefacerendering_pfb, canvas, 640, 840, SK_ColorWHITE,
-                      SkStringPrintf("typefacerendering_pfb%s",
-                                     sk_tool_utils::platform_font_manager())) {
+DEF_SIMPLE_GM(typefacerendering_pfb, canvas, 640, 840) {
     if (sk_sp<SkTypeface> face = MakeResourceAsTypeface("fonts/Roboto2-Regular.pfb")) {
         draw_typeface_rendering_gm(canvas, std::move(face), 'O');
     }
diff --git a/tools/fonts/sk_tool_utils_font.cpp b/tools/fonts/sk_tool_utils_font.cpp
index 68c1abc..cbe3dd1 100644
--- a/tools/fonts/sk_tool_utils_font.cpp
+++ b/tools/fonts/sk_tool_utils_font.cpp
@@ -38,36 +38,6 @@
 const char* emoji_sample_text() {
     return "\xF0\x9F\x98\x80" " " "\xE2\x99\xA2"; // 😀 ♢
 }
-
-static const char* platform_os_name() {
-    for (int index = 0; index < FLAGS_key.count(); index += 2) {
-        if (!strcmp("os", FLAGS_key[index])) {
-            return FLAGS_key[index + 1];
-        }
-    }
-    return "";
-}
-
-static bool extra_config_contains(const char* substring) {
-    for (int index = 0; index < FLAGS_key.count(); index += 2) {
-        if (0 == strcmp("extra_config", FLAGS_key[index])
-                && strstr(FLAGS_key[index + 1], substring)) {
-            return true;
-        }
-    }
-    return false;
-}
-
-const char* platform_font_manager() {
-    if (extra_config_contains("GDI")) {
-        return "GDI";
-    }
-    if (extra_config_contains("NativeFonts")){
-        return platform_os_name();
-    }
-    return "";
-}
-
 static sk_sp<SkTypeface> create_font(const char* name, SkFontStyle style) {
     static sk_sp<SkFontMgr> portableFontMgr = MakePortableFontMgr();
     return portableFontMgr->legacyMakeTypeface(name, style);
diff --git a/tools/sk_tool_utils.h b/tools/sk_tool_utils.h
index 196543a..36d7060 100644
--- a/tools/sk_tool_utils.h
+++ b/tools/sk_tool_utils.h
@@ -60,11 +60,6 @@
     const char* emoji_sample_text();
 
     /**
-     * Returns a string describing the platform font manager, if we're using one, otherwise "".
-     */
-    const char* platform_font_manager();
-
-    /**
      * Returns a platform-independent text renderer.
      */
     sk_sp<SkTypeface> create_portable_typeface(const char* name, SkFontStyle style);
