diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp
index 7c88f48..23bbb97 100644
--- a/core/fxge/android/cfpf_skiafontmgr.cpp
+++ b/core/fxge/android/cfpf_skiafontmgr.cpp
@@ -11,6 +11,7 @@
 #include <iterator>
 #include <utility>
 
+#include "core/fxcrt/compiler_specific.h"
 #include "core/fxcrt/containers/adapters.h"
 #include "core/fxcrt/fx_codepage.h"
 #include "core/fxcrt/fx_extension.h"
@@ -235,12 +236,23 @@
   return true;
 }
 
-void CFPF_SkiaFontMgr::LoadSystemFonts() {
-  if (loaded_system_fonts_) {
+void CFPF_SkiaFontMgr::LoadFonts(const char** user_paths) {
+  if (loaded_fonts_) {
     return;
   }
+
   ScanPath("/system/fonts");
-  loaded_system_fonts_ = true;
+
+  if (user_paths) {
+    // SAFETY: nullptr-terminated array required from caller.
+    UNSAFE_BUFFERS({
+      for (const char** path = user_paths; *path; ++path) {
+        ScanPath(*path);
+      }
+    });
+  }
+
+  loaded_fonts_ = true;
 }
 
 CFPF_SkiaFont* CFPF_SkiaFontMgr::CreateFont(ByteStringView family_name,
diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h
index 53ea58b..3958b52 100644
--- a/core/fxge/android/cfpf_skiafontmgr.h
+++ b/core/fxge/android/cfpf_skiafontmgr.h
@@ -25,13 +25,13 @@
   CFPF_SkiaFontMgr();
   ~CFPF_SkiaFontMgr();
 
-  void LoadSystemFonts();
+  void LoadFonts(const char** user_paths);
   CFPF_SkiaFont* CreateFont(ByteStringView family_name,
                             FX_Charset charset,
                             uint32_t style);
 
   bool InitFTLibrary();
-  RetainPtr<CFX_Face> GetFontFace(ByteStringView filename, int32_t face_index);
+  RetainPtr<CFX_Face> GetFontFace(ByteStringView path, int32_t face_index);
 
  private:
   void ScanPath(const ByteString& path);
@@ -39,7 +39,7 @@
   std::unique_ptr<CFPF_SkiaPathFont> ReportFace(RetainPtr<CFX_Face> face,
                                                 const ByteString& file);
 
-  bool loaded_system_fonts_ = false;
+  bool loaded_fonts_ = false;
   ScopedFXFTLibraryRec ft_library_;
   std::vector<std::unique_ptr<CFPF_SkiaPathFont>> font_faces_;
   // Key is a hash based on CreateFont() parameters.
diff --git a/core/fxge/android/cfx_androidfontinfo.cpp b/core/fxge/android/cfx_androidfontinfo.cpp
index 2799dcd..0154b92 100644
--- a/core/fxge/android/cfx_androidfontinfo.cpp
+++ b/core/fxge/android/cfx_androidfontinfo.cpp
@@ -16,12 +16,14 @@
 
 CFX_AndroidFontInfo::~CFX_AndroidFontInfo() = default;
 
-bool CFX_AndroidFontInfo::Init(CFPF_SkiaFontMgr* pFontMgr) {
-  if (!pFontMgr)
+bool CFX_AndroidFontInfo::Init(CFPF_SkiaFontMgr* pFontMgr,
+                               const char** user_paths) {
+  if (!pFontMgr) {
     return false;
+  }
 
-  pFontMgr->LoadSystemFonts();
   m_pFontMgr = pFontMgr;
+  m_pFontMgr->LoadFonts(user_paths);
   return true;
 }
 
diff --git a/core/fxge/android/cfx_androidfontinfo.h b/core/fxge/android/cfx_androidfontinfo.h
index 3886f70..647e89b 100644
--- a/core/fxge/android/cfx_androidfontinfo.h
+++ b/core/fxge/android/cfx_androidfontinfo.h
@@ -21,7 +21,7 @@
   CFX_AndroidFontInfo();
   ~CFX_AndroidFontInfo() override;
 
-  bool Init(CFPF_SkiaFontMgr* pFontMgr);
+  bool Init(CFPF_SkiaFontMgr* pFontMgr, const char** user_paths);
 
   // SystemFontInfoIface:
   bool EnumFontList(CFX_FontMapper* pMapper) override;
diff --git a/core/fxge/android/fx_android_impl.cpp b/core/fxge/android/fx_android_impl.cpp
index 12783f5..7883e89 100644
--- a/core/fxge/android/fx_android_impl.cpp
+++ b/core/fxge/android/fx_android_impl.cpp
@@ -29,7 +29,7 @@
       return nullptr;
 
     auto pFontInfo = std::make_unique<CFX_AndroidFontInfo>();
-    pFontInfo->Init(pFontMgr);
+    pFontInfo->Init(pFontMgr, CFX_GEModule::Get()->GetUserFontPaths());
     return pFontInfo;
   }
 
