diff --git a/core/fxge/android/cfx_androidfontinfo.cpp b/core/fxge/android/cfx_androidfontinfo.cpp
index c2b293a..d4c5a9a 100644
--- a/core/fxge/android/cfx_androidfontinfo.cpp
+++ b/core/fxge/android/cfx_androidfontinfo.cpp
@@ -27,9 +27,7 @@
   return true;
 }
 
-bool CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper) {
-  return false;
-}
+void CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper) {}
 
 void* CFX_AndroidFontInfo::MapFont(int weight,
                                    bool bItalic,
diff --git a/core/fxge/android/cfx_androidfontinfo.h b/core/fxge/android/cfx_androidfontinfo.h
index 647e89b..7692a27 100644
--- a/core/fxge/android/cfx_androidfontinfo.h
+++ b/core/fxge/android/cfx_androidfontinfo.h
@@ -24,7 +24,7 @@
   bool Init(CFPF_SkiaFontMgr* pFontMgr, const char** user_paths);
 
   // SystemFontInfoIface:
-  bool EnumFontList(CFX_FontMapper* pMapper) override;
+  void EnumFontList(CFX_FontMapper* pMapper) override;
   void* MapFont(int weight,
                 bool bItalic,
                 FX_Charset charset,
diff --git a/core/fxge/cfx_folderfontinfo.cpp b/core/fxge/cfx_folderfontinfo.cpp
index 7c13863..e5b2f12 100644
--- a/core/fxge/cfx_folderfontinfo.cpp
+++ b/core/fxge/cfx_folderfontinfo.cpp
@@ -146,11 +146,11 @@
   m_PathList.push_back(path);
 }
 
-bool CFX_FolderFontInfo::EnumFontList(CFX_FontMapper* pMapper) {
+void CFX_FolderFontInfo::EnumFontList(CFX_FontMapper* pMapper) {
   m_pMapper = pMapper;
-  for (const auto& path : m_PathList)
+  for (const auto& path : m_PathList) {
     ScanPath(path);
-  return true;
+  }
 }
 
 void CFX_FolderFontInfo::ScanPath(const ByteString& path) {
diff --git a/core/fxge/cfx_folderfontinfo.h b/core/fxge/cfx_folderfontinfo.h
index e97bc4c..432530c 100644
--- a/core/fxge/cfx_folderfontinfo.h
+++ b/core/fxge/cfx_folderfontinfo.h
@@ -31,7 +31,7 @@
   void AddPath(const ByteString& path);
 
   // SystemFontInfoIface:
-  bool EnumFontList(CFX_FontMapper* pMapper) override;
+  void EnumFontList(CFX_FontMapper* pMapper) override;
   void* MapFont(int weight,
                 bool bItalic,
                 FX_Charset charset,
diff --git a/core/fxge/cfx_fontmapper_unittest.cpp b/core/fxge/cfx_fontmapper_unittest.cpp
index 2c50c0f..6ecf30d 100644
--- a/core/fxge/cfx_fontmapper_unittest.cpp
+++ b/core/fxge/cfx_fontmapper_unittest.cpp
@@ -28,7 +28,7 @@
   ~MockSystemFontInfo() override = default;
 
   // SystemFontInfoIface:
-  MOCK_METHOD(bool, EnumFontList, (CFX_FontMapper*), (override));
+  MOCK_METHOD(void, EnumFontList, (CFX_FontMapper*), (override));
   MOCK_METHOD(void*,
               MapFont,
               (int, bool, FX_Charset, int, const ByteString&),
diff --git a/core/fxge/fx_font_unittest.cpp b/core/fxge/fx_font_unittest.cpp
index 7e8b564..324cca8 100644
--- a/core/fxge/fx_font_unittest.cpp
+++ b/core/fxge/fx_font_unittest.cpp
@@ -48,7 +48,7 @@
 
     font_mapper.SetSystemFontInfo(
         CFX_GEModule::Get()->GetPlatform()->CreateDefaultSystemFontInfo());
-    ASSERT_TRUE(folder_font_info.EnumFontList(&font_mapper));
+    folder_font_info.EnumFontList(&font_mapper);
   }
 
   ASSERT_EQ(1u, font_mapper.GetFaceSize());
diff --git a/core/fxge/systemfontinfo_iface.h b/core/fxge/systemfontinfo_iface.h
index 985068b..ee97d21 100644
--- a/core/fxge/systemfontinfo_iface.h
+++ b/core/fxge/systemfontinfo_iface.h
@@ -22,7 +22,7 @@
  public:
   virtual ~SystemFontInfoIface() = default;
 
-  virtual bool EnumFontList(CFX_FontMapper* pMapper) = 0;
+  virtual void EnumFontList(CFX_FontMapper* pMapper) = 0;
   virtual void* MapFont(int weight,
                         bool bItalic,
                         FX_Charset charset,
diff --git a/core/fxge/win32/cwin32_platform.cpp b/core/fxge/win32/cwin32_platform.cpp
index ec9ac95..8c72103 100644
--- a/core/fxge/win32/cwin32_platform.cpp
+++ b/core/fxge/win32/cwin32_platform.cpp
@@ -111,7 +111,7 @@
   ~CFX_Win32FontInfo() override;
 
   // SystemFontInfoIface:
-  bool EnumFontList(CFX_FontMapper* pMapper) override;
+  void EnumFontList(CFX_FontMapper* pMapper) override;
   void* MapFont(int weight,
                 bool bItalic,
                 FX_Charset charset,
@@ -199,7 +199,7 @@
   m_LastFamily = name;
 }
 
-bool CFX_Win32FontInfo::EnumFontList(CFX_FontMapper* pMapper) {
+void CFX_Win32FontInfo::EnumFontList(CFX_FontMapper* pMapper) {
   m_pMapper = pMapper;
   LOGFONTA lf = {};  // Aggregate initialization.
   static_assert(std::is_aggregate_v<decltype(lf)>);
@@ -208,7 +208,6 @@
   lf.lfPitchAndFamily = 0;
   EnumFontFamiliesExA(m_hDC, &lf, reinterpret_cast<FONTENUMPROCA>(FontEnumProc),
                       reinterpret_cast<uintptr_t>(this), 0);
-  return true;
 }
 
 ByteString CFX_Win32FontInfo::FindFont(const ByteString& name) {
diff --git a/fpdfsdk/fpdf_sysfontinfo.cpp b/fpdfsdk/fpdf_sysfontinfo.cpp
index 1cafcf9..d1fddde 100644
--- a/fpdfsdk/fpdf_sysfontinfo.cpp
+++ b/fpdfsdk/fpdf_sysfontinfo.cpp
@@ -72,12 +72,10 @@
       m_pInfo->Release(m_pInfo);
   }
 
-  bool EnumFontList(CFX_FontMapper* pMapper) override {
+  void EnumFontList(CFX_FontMapper* pMapper) override {
     if (m_pInfo->EnumFonts) {
       m_pInfo->EnumFonts(m_pInfo, pMapper);
-      return true;
     }
-    return false;
   }
 
   void* MapFont(int weight,
diff --git a/testing/test_fonts.cpp b/testing/test_fonts.cpp
index 7807e04..e0b1038 100644
--- a/testing/test_fonts.cpp
+++ b/testing/test_fonts.cpp
@@ -49,8 +49,8 @@
       : impl_(std::move(impl)) {}
   ~SystemFontInfoWrapper() override { CHECK(active_fonts_.empty()); }
 
-  bool EnumFontList(CFX_FontMapper* pMapper) override {
-    return impl_->EnumFontList(pMapper);
+  void EnumFontList(CFX_FontMapper* pMapper) override {
+    impl_->EnumFontList(pMapper);
   }
   void* MapFont(int weight,
                 bool bItalic,
