summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/include/fxge/fx_font.h2
-rw-r--r--core/include/fxge/fx_ge.h5
-rw-r--r--core/src/fxge/apple/fx_mac_imp.cpp4
-rw-r--r--core/src/fxge/ge/fx_ge.cpp7
-rw-r--r--core/src/fxge/ge/fx_ge_fontmap.cpp2
-rw-r--r--core/src/fxge/ge/fx_ge_linux.cpp19
-rw-r--r--core/src/fxge/win32/fx_win32_device.cpp4
7 files changed, 26 insertions, 17 deletions
diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h
index aa9286ff3e..5cd16207e6 100644
--- a/core/include/fxge/fx_font.h
+++ b/core/include/fxge/fx_font.h
@@ -285,7 +285,7 @@ class CFX_FontMapper {
};
class IFX_SystemFontInfo {
public:
- static IFX_SystemFontInfo* CreateDefault();
+ static IFX_SystemFontInfo* CreateDefault(const char** pUserPaths);
virtual void Release() = 0;
virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) = 0;
diff --git a/core/include/fxge/fx_ge.h b/core/include/fxge/fx_ge.h
index 0aa3f17d4d..ef3c8f665e 100644
--- a/core/include/fxge/fx_ge.h
+++ b/core/include/fxge/fx_ge.h
@@ -24,7 +24,7 @@ class IFXG_PaintModuleMgr;
class CFX_GEModule {
public:
- static void Create();
+ static void Create(const char** pUserFontPaths);
static void Use(CFX_GEModule* pMgr);
@@ -46,7 +46,7 @@ class CFX_GEModule {
void* GetPlatformData() { return m_pPlatformData; }
protected:
- CFX_GEModule();
+ explicit CFX_GEModule(const char** pUserFontPaths);
~CFX_GEModule();
void InitPlatform();
@@ -58,6 +58,7 @@ class CFX_GEModule {
CFX_FontMgr* m_pFontMgr;
CCodec_ModuleMgr* m_pCodecModule;
void* m_pPlatformData;
+ const char** m_pUserFontPaths;
};
typedef struct {
FX_FLOAT m_PointX;
diff --git a/core/src/fxge/apple/fx_mac_imp.cpp b/core/src/fxge/apple/fx_mac_imp.cpp
index 9918ba97e8..5a4e6603df 100644
--- a/core/src/fxge/apple/fx_mac_imp.cpp
+++ b/core/src/fxge/apple/fx_mac_imp.cpp
@@ -93,7 +93,7 @@ void* CFX_MacFontInfo::MapFont(int weight,
}
return NULL;
}
-IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
+IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) {
CFX_MacFontInfo* pInfo = new CFX_MacFontInfo;
pInfo->AddPath("~/Library/Fonts");
pInfo->AddPath("/Library/Fonts");
@@ -102,7 +102,7 @@ IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
}
void CFX_GEModule::InitPlatform() {
m_pPlatformData = new CApplePlatform;
- m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault());
+ m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr));
}
void CFX_GEModule::DestroyPlatform() {
delete (CApplePlatform*)m_pPlatformData;
diff --git a/core/src/fxge/ge/fx_ge.cpp b/core/src/fxge/ge/fx_ge.cpp
index d37ed5c714..6dfed8837c 100644
--- a/core/src/fxge/ge/fx_ge.cpp
+++ b/core/src/fxge/ge/fx_ge.cpp
@@ -7,12 +7,13 @@
#include "../../../include/fxge/fx_ge.h"
#include "text_int.h"
static CFX_GEModule* g_pGEModule = NULL;
-CFX_GEModule::CFX_GEModule() {
+CFX_GEModule::CFX_GEModule(const char** pUserFontPaths) {
m_pFontCache = NULL;
m_pFontMgr = NULL;
m_FTLibrary = NULL;
m_pCodecModule = NULL;
m_pPlatformData = NULL;
+ m_pUserFontPaths = pUserFontPaths;
}
CFX_GEModule::~CFX_GEModule() {
delete m_pFontCache;
@@ -24,8 +25,8 @@ CFX_GEModule::~CFX_GEModule() {
CFX_GEModule* CFX_GEModule::Get() {
return g_pGEModule;
}
-void CFX_GEModule::Create() {
- g_pGEModule = new CFX_GEModule;
+void CFX_GEModule::Create(const char** userFontPaths) {
+ g_pGEModule = new CFX_GEModule(userFontPaths);
g_pGEModule->m_pFontMgr = new CFX_FontMgr;
g_pGEModule->InitPlatform();
g_pGEModule->SetTextGamma(2.2f);
diff --git a/core/src/fxge/ge/fx_ge_fontmap.cpp b/core/src/fxge/ge/fx_ge_fontmap.cpp
index 02af775a31..d4416d9487 100644
--- a/core/src/fxge/ge/fx_ge_fontmap.cpp
+++ b/core/src/fxge/ge/fx_ge_fontmap.cpp
@@ -1270,7 +1270,7 @@ extern FX_BOOL _LoadFile(FXFT_Library library,
IFX_FileRead* pFile,
FXFT_Stream* stream);
#if _FX_OS_ == _FX_ANDROID_
-IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
+IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) {
return NULL;
}
#endif
diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp
index 299806ca07..8ff0a4e5b1 100644
--- a/core/src/fxge/ge/fx_ge_linux.cpp
+++ b/core/src/fxge/ge/fx_ge_linux.cpp
@@ -34,7 +34,7 @@ class CFX_LinuxFontInfo : public CFX_FolderFontInfo {
int pitch_family,
const FX_CHAR* family,
int& iExact) override;
- FX_BOOL ParseFontCfg();
+ FX_BOOL ParseFontCfg(const char** pUserPaths);
void* FindFont(int weight,
FX_BOOL bItalic,
int charset,
@@ -227,9 +227,9 @@ void* CFX_LinuxFontInfo::FindFont(int weight,
}
return pFind;
}
-IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
+IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUserPaths) {
CFX_LinuxFontInfo* pInfo = new CFX_LinuxFontInfo;
- if (!pInfo->ParseFontCfg()) {
+ if (!pInfo->ParseFontCfg(pUserPaths)) {
pInfo->AddPath("/usr/share/fonts");
pInfo->AddPath("/usr/share/X11/fonts/Type1");
pInfo->AddPath("/usr/share/X11/fonts/TTF");
@@ -237,11 +237,18 @@ IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
}
return pInfo;
}
-FX_BOOL CFX_LinuxFontInfo::ParseFontCfg() {
- return FALSE;
+FX_BOOL CFX_LinuxFontInfo::ParseFontCfg(const char** pUserPaths) {
+ if (!pUserPaths) {
+ return FALSE;
+ }
+ for (const char** pPath = pUserPaths; *pPath; ++pPath) {
+ AddPath(*pPath);
+ }
+ return TRUE;
}
void CFX_GEModule::InitPlatform() {
- m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault());
+ m_pFontMgr->SetSystemFontInfo(
+ IFX_SystemFontInfo::CreateDefault(m_pUserFontPaths));
}
void CFX_GEModule::DestroyPlatform() {}
#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_
diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp
index 4cfc6cbf82..c3325ba738 100644
--- a/core/src/fxge/win32/fx_win32_device.cpp
+++ b/core/src/fxge/win32/fx_win32_device.cpp
@@ -401,7 +401,7 @@ FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) {
charset = tm.tmCharSet;
return TRUE;
}
-IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
+IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) {
return new CFX_Win32FontInfo;
}
void CFX_GEModule::InitPlatform() {
@@ -412,7 +412,7 @@ void CFX_GEModule::InitPlatform() {
pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5;
pPlatformData->m_GdiplusExt.Load();
m_pPlatformData = pPlatformData;
- m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault());
+ m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr));
}
void CFX_GEModule::DestroyPlatform() {
delete (CWin32Platform*)m_pPlatformData;