| Index: core/src/fxge/ge/fx_ge_linux.cpp
|
| diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp
|
| index 065fd124bba0ddffd9af7771451aef5544fc8df6..609777fbb54538d91fc336196386c96de44dda8e 100644
|
| --- a/core/src/fxge/ge/fx_ge_linux.cpp
|
| +++ b/core/src/fxge/ge/fx_ge_linux.cpp
|
| @@ -9,23 +9,6 @@
|
| #include "text_int.h"
|
|
|
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_
|
| -static const struct {
|
| - const FX_CHAR* m_pName;
|
| - const FX_CHAR* m_pSubstName;
|
| -} Base14Substs[] = {
|
| - {"Courier", "Courier New"},
|
| - {"Courier-Bold", "Courier New Bold"},
|
| - {"Courier-BoldOblique", "Courier New Bold Italic"},
|
| - {"Courier-Oblique", "Courier New Italic"},
|
| - {"Helvetica", "Arial"},
|
| - {"Helvetica-Bold", "Arial Bold"},
|
| - {"Helvetica-BoldOblique", "Arial Bold Italic"},
|
| - {"Helvetica-Oblique", "Arial Italic"},
|
| - {"Times-Roman", "Times New Roman"},
|
| - {"Times-Bold", "Times New Roman Bold"},
|
| - {"Times-BoldItalic", "Times New Roman Bold Italic"},
|
| - {"Times-Italic", "Times New Roman Italic"},
|
| -};
|
| class CFX_LinuxFontInfo : public CFX_FolderFontInfo {
|
| public:
|
| void* MapFont(int weight,
|
| @@ -35,12 +18,6 @@ class CFX_LinuxFontInfo : public CFX_FolderFontInfo {
|
| const FX_CHAR* family,
|
| int& iExact) override;
|
| FX_BOOL ParseFontCfg(const char** pUserPaths);
|
| - void* FindFont(int weight,
|
| - FX_BOOL bItalic,
|
| - int charset,
|
| - int pitch_family,
|
| - const FX_CHAR* family,
|
| - FX_BOOL bMatchName);
|
| };
|
| #define LINUX_GPNAMESIZE 6
|
| static const struct {
|
| @@ -94,16 +71,10 @@ void* CFX_LinuxFontInfo::MapFont(int weight,
|
| int pitch_family,
|
| const FX_CHAR* cstr_face,
|
| int& iExact) {
|
| - CFX_ByteString face = cstr_face;
|
| - int iBaseFont;
|
| - for (iBaseFont = 0; iBaseFont < 12; iBaseFont++)
|
| - if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) {
|
| - face = Base14Substs[iBaseFont].m_pSubstName;
|
| - iExact = 1;
|
| - break;
|
| - }
|
| - if (iBaseFont < 12) {
|
| - return GetFont(face);
|
| + void* font = GetSubstFont(cstr_face);
|
| + if (font) {
|
| + iExact = 1;
|
| + return font;
|
| }
|
| FX_BOOL bCJK = TRUE;
|
| switch (charset) {
|
| @@ -147,85 +118,8 @@ void* CFX_LinuxFontInfo::MapFont(int weight,
|
| bCJK = FALSE;
|
| break;
|
| }
|
| - if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) {
|
| - return GetFont("Courier New");
|
| - }
|
| return FindFont(weight, bItalic, charset, pitch_family, cstr_face, !bCJK);
|
| }
|
| -static FX_DWORD _LinuxGetCharset(int charset) {
|
| - switch (charset) {
|
| - case FXFONT_SHIFTJIS_CHARSET:
|
| - return CHARSET_FLAG_SHIFTJIS;
|
| - case FXFONT_GB2312_CHARSET:
|
| - return CHARSET_FLAG_GB;
|
| - case FXFONT_CHINESEBIG5_CHARSET:
|
| - return CHARSET_FLAG_BIG5;
|
| - case FXFONT_HANGEUL_CHARSET:
|
| - return CHARSET_FLAG_KOREAN;
|
| - case FXFONT_SYMBOL_CHARSET:
|
| - return CHARSET_FLAG_SYMBOL;
|
| - case FXFONT_ANSI_CHARSET:
|
| - return CHARSET_FLAG_ANSI;
|
| - default:
|
| - break;
|
| - }
|
| - return 0;
|
| -}
|
| -static int32_t _LinuxGetSimilarValue(int weight,
|
| - FX_BOOL bItalic,
|
| - int pitch_family,
|
| - FX_DWORD style) {
|
| - int32_t iSimilarValue = 0;
|
| - if ((style & FXFONT_BOLD) == (weight > 400)) {
|
| - iSimilarValue += 16;
|
| - }
|
| - if ((style & FXFONT_ITALIC) == bItalic) {
|
| - iSimilarValue += 16;
|
| - }
|
| - if ((style & FXFONT_SERIF) == (pitch_family & FXFONT_FF_ROMAN)) {
|
| - iSimilarValue += 16;
|
| - }
|
| - if ((style & FXFONT_SCRIPT) == (pitch_family & FXFONT_FF_SCRIPT)) {
|
| - iSimilarValue += 8;
|
| - }
|
| - if ((style & FXFONT_FIXED_PITCH) == (pitch_family & FXFONT_FF_FIXEDPITCH)) {
|
| - iSimilarValue += 8;
|
| - }
|
| - return iSimilarValue;
|
| -}
|
| -void* CFX_LinuxFontInfo::FindFont(int weight,
|
| - FX_BOOL bItalic,
|
| - int charset,
|
| - int pitch_family,
|
| - const FX_CHAR* family,
|
| - FX_BOOL bMatchName) {
|
| - CFX_FontFaceInfo* pFind = NULL;
|
| - FX_DWORD charset_flag = _LinuxGetCharset(charset);
|
| - int32_t iBestSimilar = 0;
|
| - for (const auto& it : m_FontList) {
|
| - const CFX_ByteString& bsName = it.first;
|
| - CFX_FontFaceInfo* pFont = it.second;
|
| - if (!(pFont->m_Charsets & charset_flag) &&
|
| - charset != FXFONT_DEFAULT_CHARSET) {
|
| - continue;
|
| - }
|
| - int32_t iSimilarValue = 0;
|
| - int32_t index = bsName.Find(family);
|
| - if (bMatchName && index < 0) {
|
| - continue;
|
| - }
|
| - if (!bMatchName && index > 0) {
|
| - iSimilarValue += 64;
|
| - }
|
| - iSimilarValue =
|
| - _LinuxGetSimilarValue(weight, bItalic, pitch_family, pFont->m_Styles);
|
| - if (iSimilarValue > iBestSimilar) {
|
| - iBestSimilar = iSimilarValue;
|
| - pFind = pFont;
|
| - }
|
| - }
|
| - return pFind;
|
| -}
|
| IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUserPaths) {
|
| CFX_LinuxFontInfo* pInfo = new CFX_LinuxFontInfo;
|
| if (!pInfo->ParseFontCfg(pUserPaths)) {
|
|
|