// Author: Vadim Zeitlin
// Modified by:
// Created: 21.06.2003 (extracted from common/fontmap.cpp)
-// RCS-ID: $Id$
// Copyright: (c) 1999-2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
#include "wx/wxcrtvararg.h"
#endif //WX_PRECOMP
-#if defined(__WXMSW__)
+#if defined(__WINDOWS__)
#include "wx/msw/private.h" // includes windows.h for LOGFONT
#include "wx/msw/winundef.h"
#endif
// ----------------------------------------------------------------------------
// encodings supported by GetEncodingDescription
-static wxFontEncoding gs_encodings[] =
+static const wxFontEncoding gs_encodings[] =
{
wxFONTENCODING_ISO8859_1,
wxFONTENCODING_ISO8859_2,
wxFONTENCODING_ISO8859_15,
wxFONTENCODING_KOI8,
wxFONTENCODING_KOI8_U,
+ wxFONTENCODING_CP866,
wxFONTENCODING_CP874,
wxFONTENCODING_CP932,
wxFONTENCODING_CP936,
wxFONTENCODING_CP1255,
wxFONTENCODING_CP1256,
wxFONTENCODING_CP1257,
+ wxFONTENCODING_CP1258,
+ wxFONTENCODING_CP1361,
wxFONTENCODING_CP437,
wxFONTENCODING_UTF7,
wxFONTENCODING_UTF8,
wxFONTENCODING_UTF32LE,
wxFONTENCODING_EUC_JP,
wxFONTENCODING_DEFAULT,
- wxFONTENCODING_BIG5,
- wxFONTENCODING_SHIFT_JIS,
- wxFONTENCODING_GB2312,
wxFONTENCODING_ISO2022_JP,
+
+ wxFONTENCODING_MACROMAN,
+ wxFONTENCODING_MACJAPANESE,
+ wxFONTENCODING_MACCHINESETRAD,
+ wxFONTENCODING_MACKOREAN,
+ wxFONTENCODING_MACARABIC,
+ wxFONTENCODING_MACHEBREW,
+ wxFONTENCODING_MACGREEK,
+ wxFONTENCODING_MACCYRILLIC,
+ wxFONTENCODING_MACDEVANAGARI,
+ wxFONTENCODING_MACGURMUKHI,
+ wxFONTENCODING_MACGUJARATI,
+ wxFONTENCODING_MACORIYA,
+ wxFONTENCODING_MACBENGALI,
+ wxFONTENCODING_MACTAMIL,
+ wxFONTENCODING_MACTELUGU,
+ wxFONTENCODING_MACKANNADA,
+ wxFONTENCODING_MACMALAJALAM,
+ wxFONTENCODING_MACSINHALESE,
+ wxFONTENCODING_MACBURMESE,
+ wxFONTENCODING_MACKHMER,
+ wxFONTENCODING_MACTHAI,
+ wxFONTENCODING_MACLAOTIAN,
+ wxFONTENCODING_MACGEORGIAN,
+ wxFONTENCODING_MACARMENIAN,
+ wxFONTENCODING_MACCHINESESIMP,
+ wxFONTENCODING_MACTIBETAN,
+ wxFONTENCODING_MACMONGOLIAN,
+ wxFONTENCODING_MACETHIOPIC,
+ wxFONTENCODING_MACCENTRALEUR,
+ wxFONTENCODING_MACVIATNAMESE,
+ wxFONTENCODING_MACARABICEXT,
+ wxFONTENCODING_MACSYMBOL,
+ wxFONTENCODING_MACDINGBATS,
+ wxFONTENCODING_MACTURKISH,
+ wxFONTENCODING_MACCROATIAN,
+ wxFONTENCODING_MACICELANDIC,
+ wxFONTENCODING_MACROMANIAN,
+ wxFONTENCODING_MACCELTIC,
+ wxFONTENCODING_MACGAELIC,
+ wxFONTENCODING_MACKEYBOARD
};
// the descriptions for them
-static const char* gs_encodingDescs[] =
+static const char* const gs_encodingDescs[] =
{
wxTRANSLATE( "Western European (ISO-8859-1)" ),
wxTRANSLATE( "Central European (ISO-8859-2)" ),
wxTRANSLATE( "Western European with Euro (ISO-8859-15)" ),
wxTRANSLATE( "KOI8-R" ),
wxTRANSLATE( "KOI8-U" ),
+ wxTRANSLATE( "Windows/DOS OEM Cyrillic (CP 866)" ),
wxTRANSLATE( "Windows Thai (CP 874)" ),
- wxTRANSLATE( "Windows Japanese (CP 932)" ),
- wxTRANSLATE( "Windows Chinese Simplified (CP 936)" ),
+ wxTRANSLATE( "Windows Japanese (CP 932) or Shift-JIS" ),
+ wxTRANSLATE( "Windows Chinese Simplified (CP 936) or GB-2312" ),
wxTRANSLATE( "Windows Korean (CP 949)" ),
- wxTRANSLATE( "Windows Chinese Traditional (CP 950)" ),
+ wxTRANSLATE( "Windows Chinese Traditional (CP 950) or Big-5" ),
wxTRANSLATE( "Windows Central European (CP 1250)" ),
wxTRANSLATE( "Windows Cyrillic (CP 1251)" ),
wxTRANSLATE( "Windows Western European (CP 1252)" ),
wxTRANSLATE( "Windows Hebrew (CP 1255)" ),
wxTRANSLATE( "Windows Arabic (CP 1256)" ),
wxTRANSLATE( "Windows Baltic (CP 1257)" ),
+ wxTRANSLATE( "Windows Vietnamese (CP 1258)" ),
+ wxTRANSLATE( "Windows Johab (CP 1361)" ),
wxTRANSLATE( "Windows/DOS OEM (CP 437)" ),
wxTRANSLATE( "Unicode 7 bit (UTF-7)" ),
wxTRANSLATE( "Unicode 8 bit (UTF-8)" ),
#endif // WORDS_BIGENDIAN
wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ),
wxTRANSLATE( "US-ASCII" ),
- wxTRANSLATE( "BIG5" ),
- wxTRANSLATE( "SHIFT-JIS" ),
- wxTRANSLATE( "GB-2312" ),
wxTRANSLATE( "ISO-2022-JP" ),
+
+ wxTRANSLATE( "MacRoman" ),
+ wxTRANSLATE( "MacJapanese" ),
+ wxTRANSLATE( "MacChineseTrad" ),
+ wxTRANSLATE( "MacKorean" ),
+ wxTRANSLATE( "MacArabic" ),
+ wxTRANSLATE( "MacHebrew" ),
+ wxTRANSLATE( "MacGreek" ),
+ wxTRANSLATE( "MacCyrillic" ),
+ wxTRANSLATE( "MacDevanagari" ),
+ wxTRANSLATE( "MacGurmukhi" ),
+ wxTRANSLATE( "MacGujarati" ),
+ wxTRANSLATE( "MacOriya" ),
+ wxTRANSLATE( "MacBengali" ),
+ wxTRANSLATE( "MacTamil" ),
+ wxTRANSLATE( "MacTelugu" ),
+ wxTRANSLATE( "MacKannada" ),
+ wxTRANSLATE( "MacMalayalam" ),
+ wxTRANSLATE( "MacSinhalese" ),
+ wxTRANSLATE( "MacBurmese" ),
+ wxTRANSLATE( "MacKhmer" ),
+ wxTRANSLATE( "MacThai" ),
+ wxTRANSLATE( "MacLaotian" ),
+ wxTRANSLATE( "MacGeorgian" ),
+ wxTRANSLATE( "MacArmenian" ),
+ wxTRANSLATE( "MacChineseSimp" ),
+ wxTRANSLATE( "MacTibetan" ),
+ wxTRANSLATE( "MacMongolian" ),
+ wxTRANSLATE( "MacEthiopic" ),
+ wxTRANSLATE( "MacCentralEurRoman" ),
+ wxTRANSLATE( "MacVietnamese" ),
+ wxTRANSLATE( "MacExtArabic" ),
+ wxTRANSLATE( "MacSymbol" ),
+ wxTRANSLATE( "MacDingbats" ),
+ wxTRANSLATE( "MacTurkish" ),
+ wxTRANSLATE( "MacCroatian" ),
+ wxTRANSLATE( "MacIcelandic" ),
+ wxTRANSLATE( "MacRomanian" ),
+ wxTRANSLATE( "MacCeltic" ),
+ wxTRANSLATE( "MacGaelic" ),
+ wxTRANSLATE( "MacKeyboardGlyphs" )
};
// and the internal names (these are not translated on purpose!)
-static const wxChar* gs_encodingNames[WXSIZEOF(gs_encodingDescs)][9] =
+static const wxChar* const gs_encodingNames[][9] =
{
// names from the columns correspond to these OS:
// Linux Solaris and IRIX HP-UX AIX
- { _T("ISO-8859-1"), _T("ISO8859-1"), _T("iso88591"), _T("8859-1"), wxT("iso_8859_1"), NULL },
- { _T("ISO-8859-2"), _T("ISO8859-2"), _T("iso88592"), _T("8859-2"), NULL },
- { _T("ISO-8859-3"), _T("ISO8859-3"), _T("iso88593"), _T("8859-3"), NULL },
- { _T("ISO-8859-4"), _T("ISO8859-4"), _T("iso88594"), _T("8859-4"), NULL },
- { _T("ISO-8859-5"), _T("ISO8859-5"), _T("iso88595"), _T("8859-5"), NULL },
- { _T("ISO-8859-6"), _T("ISO8859-6"), _T("iso88596"), _T("8859-6"), NULL },
- { _T("ISO-8859-7"), _T("ISO8859-7"), _T("iso88597"), _T("8859-7"), NULL },
- { _T("ISO-8859-8"), _T("ISO8859-8"), _T("iso88598"), _T("8859-8"), NULL },
- { _T("ISO-8859-9"), _T("ISO8859-9"), _T("iso88599"), _T("8859-9"), NULL },
- { _T("ISO-8859-10"), _T("ISO8859-10"), _T("iso885910"), _T("8859-10"), NULL },
- { _T("ISO-8859-11"), _T("ISO8859-11"), _T("iso885911"), _T("8859-11"), NULL },
- { _T("ISO-8859-12"), _T("ISO8859-12"), _T("iso885912"), _T("8859-12"), NULL },
- { _T("ISO-8859-13"), _T("ISO8859-13"), _T("iso885913"), _T("8859-13"), NULL },
- { _T("ISO-8859-14"), _T("ISO8859-14"), _T("iso885914"), _T("8859-14"), NULL },
- { _T("ISO-8859-15"), _T("ISO8859-15"), _T("iso885915"), _T("8859-15"), NULL },
+ { wxT("ISO-8859-1"), wxT("ISO8859-1"), wxT("iso88591"), wxT("8859-1"), wxT("iso_8859_1"), NULL },
+ { wxT("ISO-8859-2"), wxT("ISO8859-2"), wxT("iso88592"), wxT("8859-2"), NULL },
+ { wxT("ISO-8859-3"), wxT("ISO8859-3"), wxT("iso88593"), wxT("8859-3"), NULL },
+ { wxT("ISO-8859-4"), wxT("ISO8859-4"), wxT("iso88594"), wxT("8859-4"), NULL },
+ { wxT("ISO-8859-5"), wxT("ISO8859-5"), wxT("iso88595"), wxT("8859-5"), NULL },
+ { wxT("ISO-8859-6"), wxT("ISO8859-6"), wxT("iso88596"), wxT("8859-6"), NULL },
+ { wxT("ISO-8859-7"), wxT("ISO8859-7"), wxT("iso88597"), wxT("8859-7"), NULL },
+ { wxT("ISO-8859-8"), wxT("ISO8859-8"), wxT("iso88598"), wxT("8859-8"), NULL },
+ { wxT("ISO-8859-9"), wxT("ISO8859-9"), wxT("iso88599"), wxT("8859-9"), NULL },
+ { wxT("ISO-8859-10"), wxT("ISO8859-10"), wxT("iso885910"), wxT("8859-10"), NULL },
+ { wxT("ISO-8859-11"), wxT("ISO8859-11"), wxT("iso885911"), wxT("8859-11"), NULL },
+ { wxT("ISO-8859-12"), wxT("ISO8859-12"), wxT("iso885912"), wxT("8859-12"), NULL },
+ { wxT("ISO-8859-13"), wxT("ISO8859-13"), wxT("iso885913"), wxT("8859-13"), NULL },
+ { wxT("ISO-8859-14"), wxT("ISO8859-14"), wxT("iso885914"), wxT("8859-14"), NULL },
+ { wxT("ISO-8859-15"), wxT("ISO8859-15"), wxT("iso885915"), wxT("8859-15"), NULL },
// although koi8-ru is not strictly speaking the same as koi8-r,
// they are similar enough to make mapping it to koi8 better than
{ wxT( "KOI8-R" ), wxT( "KOI8-RU" ), NULL },
{ wxT( "KOI8-U" ), NULL },
- { wxT( "WINDOWS-874" ), wxT( "CP-874" ), wxT( "MS-874" ), wxT( "IBM-874" ), NULL },
- { wxT( "WINDOWS-932" ), wxT( "CP-932" ), wxT( "MS-932" ), wxT( "IBM-932" ), NULL },
- { wxT( "WINDOWS-936" ), wxT( "CP-936" ), wxT( "MS-936" ), wxT( "IBM-936" ), NULL },
- { wxT( "WINDOWS-949" ), wxT( "CP-949" ), wxT( "MS-949" ), wxT( "IBM-949" ), wxT( "EUC-KR" ), wxT( "eucKR" ), wxT( "euc_kr" ), NULL },
- { wxT( "WINDOWS-950" ), wxT( "CP-950" ), wxT( "MS-950" ), wxT( "IBM-950" ), NULL },
- { wxT( "WINDOWS-1250" ),wxT( "CP-1250" ),wxT( "MS-1250" ),wxT( "IBM-1250" ),NULL },
- { wxT( "WINDOWS-1251" ),wxT( "CP-1251" ),wxT( "MS-1251" ),wxT( "IBM-1251" ),NULL },
- { wxT( "WINDOWS-1252" ),wxT( "CP-1252" ),wxT( "MS-1252" ),wxT( "IBM-1252" ),NULL },
- { wxT( "WINDOWS-1253" ),wxT( "CP-1253" ),wxT( "MS-1253" ),wxT( "IBM-1253" ),NULL },
- { wxT( "WINDOWS-1254" ),wxT( "CP-1254" ),wxT( "MS-1254" ),wxT( "IBM-1254" ),NULL },
- { wxT( "WINDOWS-1255" ),wxT( "CP-1255" ),wxT( "MS-1255" ),wxT( "IBM-1255" ),NULL },
- { wxT( "WINDOWS-1256" ),wxT( "CP-1256" ),wxT( "MS-1256" ),wxT( "IBM-1256" ),NULL },
- { wxT( "WINDOWS-1257" ),wxT( "CP-1257" ),wxT( "MS-1257" ),wxT( "IBM-1257" ),NULL },
- { wxT( "WINDOWS-437" ), wxT( "CP-437" ), wxT( "MS-437" ), wxT( "IBM-437" ), NULL },
+ { wxT( "WINDOWS-866" ), wxT( "CP866" ), NULL },
+
+ { wxT( "WINDOWS-874" ), wxT( "CP874" ), wxT( "MS874" ), wxT( "IBM-874" ), NULL },
+ { wxT( "WINDOWS-932" ), wxT( "CP932" ), wxT( "MS932" ), wxT( "IBM-932" ), wxT( "SJIS" ), wxT( "SHIFT-JIS" ), wxT( "SHIFT_JIS" ), NULL },
+ { wxT( "WINDOWS-936" ), wxT( "CP936" ), wxT( "MS936" ), wxT( "IBM-936" ), wxT( "GB2312" ), wxT( "gbk" ),wxT( "GBK" ), NULL },
+ { wxT( "WINDOWS-949" ), wxT( "CP949" ), wxT( "MS949" ), wxT( "IBM-949" ), wxT( "EUC-KR" ), wxT( "eucKR" ), wxT( "euc_kr" ), NULL },
+ { wxT( "WINDOWS-950" ), wxT( "CP950" ), wxT( "MS950" ), wxT( "IBM-950" ), wxT( "BIG5" ), wxT( "BIG-5" ), wxT( "BIG-FIVE" ), NULL },
+ { wxT( "WINDOWS-1250" ),wxT( "CP1250" ),wxT( "MS1250" ),wxT( "IBM-1250" ),NULL },
+ { wxT( "WINDOWS-1251" ),wxT( "CP1251" ),wxT( "MS1251" ),wxT( "IBM-1251" ),NULL },
+ { wxT( "WINDOWS-1252" ),wxT( "CP1252" ),wxT( "MS1252" ),wxT( "IBM-1252" ),NULL },
+ { wxT( "WINDOWS-1253" ),wxT( "CP1253" ),wxT( "MS1253" ),wxT( "IBM-1253" ),NULL },
+ { wxT( "WINDOWS-1254" ),wxT( "CP1254" ),wxT( "MS1254" ),wxT( "IBM-1254" ),NULL },
+ { wxT( "WINDOWS-1255" ),wxT( "CP1255" ),wxT( "MS1255" ),wxT( "IBM-1255" ),NULL },
+ { wxT( "WINDOWS-1256" ),wxT( "CP1256" ),wxT( "MS1256" ),wxT( "IBM-1256" ),NULL },
+ { wxT( "WINDOWS-1257" ),wxT( "CP1257" ),wxT( "MS1257" ),wxT( "IBM-1257" ),NULL },
+ { wxT( "WINDOWS-1258" ),wxT( "CP1258" ),wxT( "MS1258" ),wxT( "IBM-1258" ),NULL },
+ { wxT( "WINDOWS-1361" ),wxT( "CP1361" ),wxT( "MS1361" ),wxT( "IBM-1361" ), wxT( "JOHAB" ), NULL },
+ { wxT( "WINDOWS-437" ), wxT( "CP437" ), wxT( "MS437" ), wxT( "IBM-437" ), NULL },
{ wxT( "UTF-7" ), wxT("UTF7"), NULL },
{ wxT( "UTF-8" ), wxT("UTF8"), NULL },
{ wxT( "US-ASCII" ), wxT( "ASCII" ), wxT("C"), wxT("POSIX"), wxT("ANSI_X3.4-1968"),
wxT("646"), wxT("roman8"), wxT( "" ), NULL },
- { wxT( "BIG5" ), wxT("big5"), NULL },
- { wxT( "SJIS" ), wxT( "SHIFT-JIS" ), wxT( "SHIFT_JIS" ), NULL },
- { wxT( "GB2312" ), NULL },
{ wxT( "ISO-2022-JP" ), NULL },
+
+
+ { wxT( "MacRoman" ), NULL },
+ { wxT( "MacJapanese" ), NULL },
+ { wxT( "MacChineseTrad" ), NULL },
+ { wxT( "MacKorean" ), NULL },
+ { wxT( "MacArabic" ), NULL },
+ { wxT( "MacHebrew" ), NULL },
+ { wxT( "MacGreek" ), NULL },
+ { wxT( "MacCyrillic" ), NULL },
+ { wxT( "MacDevanagari" ), NULL },
+ { wxT( "MacGurmukhi" ), NULL },
+ { wxT( "MacGujarati" ), NULL },
+ { wxT( "MacOriya" ), NULL },
+ { wxT( "MacBengali" ), NULL },
+ { wxT( "MacTamil" ), NULL },
+ { wxT( "MacTelugu" ), NULL },
+ { wxT( "MacKannada" ), NULL },
+ { wxT( "MacMalayalam" ), NULL },
+ { wxT( "MacSinhalese" ), NULL },
+ { wxT( "MacBurmese" ), NULL },
+ { wxT( "MacKhmer" ), NULL },
+ { wxT( "MacThai" ), NULL },
+ { wxT( "MacLaotian" ), NULL },
+ { wxT( "MacGeorgian" ), NULL },
+ { wxT( "MacArmenian" ), NULL },
+ { wxT( "MacChineseSimp" ), NULL },
+ { wxT( "MacTibetan" ), NULL },
+ { wxT( "MacMongolian" ), NULL },
+ { wxT( "MacEthiopic" ), NULL },
+ { wxT( "MacCentralEurRoman" ), NULL },
+ { wxT( "MacVietnamese" ), NULL },
+ { wxT( "MacExtArabic" ), NULL },
+ { wxT( "MacSymbol" ), NULL },
+ { wxT( "MacDingbats" ), NULL },
+ { wxT( "MacTurkish" ), NULL },
+ { wxT( "MacCroatian" ), NULL },
+ { wxT( "MacIcelandic" ), NULL },
+ { wxT( "MacRomanian" ), NULL },
+ { wxT( "MacCeltic" ), NULL },
+ { wxT( "MacGaelic" ), NULL },
+ { wxT( "MacKeyboardGlyphs" ), NULL }
};
wxCOMPILE_TIME_ASSERT( WXSIZEOF(gs_encodingDescs) == WXSIZEOF(gs_encodings), EncodingsArraysNotInSync );
sm_instance = traits->CreateFontMapper();
wxASSERT_MSG( sm_instance,
- _T("wxAppTraits::CreateFontMapper() failed") );
+ wxT("wxAppTraits::CreateFontMapper() failed") );
}
if ( !sm_instance )
// discard the optional quotes
if ( !cs.empty() )
{
- if ( cs[0u] == _T('"') && cs.Last() == _T('"') )
+ if ( cs[0u] == wxT('"') && cs.Last() == wxT('"') )
{
cs = wxString(cs.c_str(), cs.length() - 1);
}
for ( size_t i = 0; i < WXSIZEOF(gs_encodingNames); ++i )
{
- for ( const wxChar** encName = gs_encodingNames[i]; *encName; ++encName )
+ for ( const wxChar* const* encName = gs_encodingNames[i]; *encName; ++encName )
{
if ( cs.CmpNoCase(*encName) == 0 )
return gs_encodings[i];
case 950:
encoding = wxFONTENCODING_CP950;
break;
+
+ case 1258:
+ encoding = wxFONTENCODING_CP1258;
+ break;
+
+ case 1361:
+ encoding = wxFONTENCODING_CP1361;
+ break;
}
}
}
wxFontEncoding wxFontMapperBase::GetEncoding(size_t n)
{
wxCHECK_MSG( n < WXSIZEOF(gs_encodings), wxFONTENCODING_SYSTEM,
- _T("wxFontMapper::GetEncoding(): invalid index") );
+ wxT("wxFontMapper::GetEncoding(): invalid index") );
return gs_encodings[n];
}
/* static */
const wxChar** wxFontMapperBase::GetAllEncodingNames(wxFontEncoding encoding)
{
- static const wxChar* dummy[] = { NULL };
+ static const wxChar* const dummy[] = { NULL };
for ( size_t i = 0; i < WXSIZEOF(gs_encodingNames); i++ )
{
if ( gs_encodings[i] == encoding )
{
- return gs_encodingNames[i];
+ return const_cast<const wxChar**>(gs_encodingNames[i]);
}
}
- return dummy;
+ return const_cast<const wxChar**>(dummy);
}
/* static */
for ( size_t i = 0; i < count; i++ )
{
- for ( const wxChar** encName = gs_encodingNames[i]; *encName; ++encName )
+ for ( const wxChar* const* encName = gs_encodingNames[i]; *encName; ++encName )
{
if ( name.CmpNoCase(*encName) == 0 )
return gs_encodings[i];