// 40250 EterLib/Util.cpp:140-297, the default code page and font face. // // The rest of Util.cpp (LoadTextData / base64 / TokenTo*) is logic and not here. The 9x face table has // CP949/Shift-JIS/GBK/Big5 literals, so this block is copied by hand instead of port_copy. #include "EterLib/StdAfx.h" #include "EterLib/Util.h" #include "EterLocale/CodePageId.h" static std::string gs_fontFace=""; static DWORD gs_codePage=0; int GetCharsetFromCodePage(WORD codePage) { switch( codePage ) { case CP_932: return SHIFTJIS_CHARSET; case CP_949: return HANGUL_CHARSET; case CP_936: return GB2312_CHARSET; case CP_950: return CHINESEBIG5_CHARSET; case CP_1253: return GREEK_CHARSET; case CP_1254: return TURKISH_CHARSET; case CP_1255: return HEBREW_CHARSET; case CP_1256: return ARABIC_CHARSET; case CP_1257: return BALTIC_CHARSET; case CP_1258: return VIETNAMESE_CHARSET; case CP_874: return THAI_CHARSET; case CP_1250: return EASTEUROPE_CHARSET; case CP_1251: return RUSSIAN_CHARSET; default: return DEFAULT_CHARSET; } } const char* GetFontFaceFromCodePageNT(WORD codePage) { switch( codePage ) { case CP_932: return "MS PGothic"; case CP_949: return "GulimChe"; case CP_936: return "SimSun"; case CP_950: return "MingLiU"; case CP_874: return "Tahoma"; case CP_1252: return "Arial"; case CP_1256: return "Tahoma"; case CP_1258: return "Tahoma"; case CP_65001: return "Arial"; default: return "Arial"; } } DWORD GetDefaultCodePage() { return gs_codePage; } const char * GetDefaultFontFace() { return gs_fontFace.c_str(); } // PORT: 40250 asks EnumFontFamiliesEx for the 9x (native-script) face name, then the NT one. The native // names never match a font file here; CreateFontIndirect (platform/Win32Gdi.cpp) substitutes a missing // face, so the NT name is the answer. const char* GetFontFaceFromCodePage(WORD codePage) { return GetFontFaceFromCodePageNT(codePage); } void SetDefaultFontFace(const char* fontFace) { gs_fontFace=fontFace; } bool SetDefaultCodePage(DWORD codePage) { gs_codePage=codePage; std::string fontFace=GetFontFaceFromCodePage(codePage); if (fontFace.empty()) return false; SetDefaultFontFace(fontFace.c_str()); return true; }