wxFONTENCODING_ISO8859_14,
wxFONTENCODING_ISO8859_15,
wxFONTENCODING_KOI8,
+ wxFONTENCODING_KOI8_U,
wxFONTENCODING_CP932,
wxFONTENCODING_CP936,
wxFONTENCODING_CP949,
wxFONTENCODING_CP437,
wxFONTENCODING_UTF7,
wxFONTENCODING_UTF8,
+ wxFONTENCODING_UTF16,
+ wxFONTENCODING_UTF16BE,
+ wxFONTENCODING_UTF16LE,
+ wxFONTENCODING_UTF32,
+ wxFONTENCODING_UTF32BE,
+ wxFONTENCODING_UTF32LE,
wxFONTENCODING_EUC_JP,
};
wxTRANSLATE( "Celtic (ISO-8859-14)" ),
wxTRANSLATE( "Western European with Euro (ISO-8859-15)" ),
wxTRANSLATE( "KOI8-R" ),
+ wxTRANSLATE( "KOI8-U" ),
wxTRANSLATE( "Windows Japanese (CP 932)" ),
wxTRANSLATE( "Windows Chinese Simplified (CP 936)" ),
wxTRANSLATE( "Windows Korean (CP 949)" ),
wxTRANSLATE( "Windows/DOS OEM (CP 437)" ),
wxTRANSLATE( "Unicode 7 bit (UTF-7)" ),
wxTRANSLATE( "Unicode 8 bit (UTF-8)" ),
+ wxTRANSLATE( "Unicode 16 bit (UTF-16)" ),
+ wxTRANSLATE( "Unicode 16 bit Big Endian (UTF-16BE)" ),
+ wxTRANSLATE( "Unicode 16 bit Little Endian (UTF-16LE)" ),
+ wxTRANSLATE( "Unicode 32 bit (UTF-32)" ),
+ wxTRANSLATE( "Unicode 32 bit Big Endian (UTF-32BE)" ),
+ wxTRANSLATE( "Unicode 32 bit Little Endian (UTF-32LE)" ),
wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ),
};
wxT( "iso-8859-14" ),
wxT( "iso-8859-15" ),
wxT( "koi8-r" ),
+ wxT( "koi8-u" ),
wxT( "windows-932" ),
wxT( "windows-936" ),
wxT( "windows-949" ),
wxT( "windows-437" ),
wxT( "utf-7" ),
wxT( "utf-8" ),
+ wxT( "utf-16" ),
+ wxT( "utf-16be" ),
+ wxT( "utf-16le" ),
+ wxT( "utf-32" ),
+ wxT( "utf-32be" ),
+ wxT( "utf-32le" ),
wxT( "euc-jp" ),
};
wxFontEncoding
wxFontMapperBase::CharsetToEncoding(const wxString& charset,
bool WXUNUSED(interactive))
+{
+ int enc = NonInteractiveCharsetToEncoding(charset);
+ if ( enc == wxFONTENCODING_UNKNOWN )
+ {
+ // we should return wxFONTENCODING_SYSTEM from here for unknown
+ // encodings
+ enc = wxFONTENCODING_SYSTEM;
+ }
+
+ return (wxFontEncoding)enc;
+}
+
+int
+wxFontMapperBase::NonInteractiveCharsetToEncoding(const wxString& charset)
{
wxFontEncoding encoding = wxFONTENCODING_SYSTEM;
if ( value == wxFONTENCODING_UNKNOWN )
{
// don't try to find it, in particular don't ask the user
- return wxFONTENCODING_SYSTEM;
+ return value;
}
if ( value >= 0 && value <= wxFONTENCODING_MAX )
{
encoding = wxFONTENCODING_UTF8;
}
+ else if ( cs == wxT("UTF-16") )
+ {
+ encoding = wxFONTENCODING_UTF16;
+ }
+ else if ( cs == wxT("UTF-16BE") )
+ {
+ encoding = wxFONTENCODING_UTF16BE;
+ }
+ else if ( cs == wxT("UTF-16LE") )
+ {
+ encoding = wxFONTENCODING_UTF16LE;
+ }
+ else if ( cs == wxT("UTF-32") || cs == wxT("UCS-4") )
+ {
+ encoding = wxFONTENCODING_UTF32;
+ }
+ else if ( cs == wxT("UTF-32BE") || cs == wxT("UCS-4BE") )
+ {
+ encoding = wxFONTENCODING_UTF32BE;
+ }
+ else if ( cs == wxT("UTF-32LE") || cs == wxT("UCS-4LE") )
+ {
+ encoding = wxFONTENCODING_UTF32LE;
+ }
else if ( cs == wxT("GB2312") )
{
encoding = wxFONTENCODING_GB2312;
{
encoding = wxFONTENCODING_EUC_JP;
}
+ else if ( cs == wxT("EUC-KR") ||
+ cs == wxT("EUC_KR") )
+ {
+ encoding = wxFONTENCODING_CP949;
+ }
else if ( cs == wxT("KOI8-R") ||
- cs == wxT("KOI8-U") ||
cs == wxT("KOI8-RU") )
{
// although koi8-ru is not strictly speaking the same as koi8-r,
// they are similar enough to make mapping it to koi8 better than
- // not reckognizing it at all
+ // not recognizing it at all
encoding = wxFONTENCODING_KOI8;
}
+ else if ( cs == wxT("KOI8-U") )
+ {
+ encoding = wxFONTENCODING_KOI8_U;
+ }
else if ( cs.Left(3) == wxT("ISO") )
{
// the dash is optional (or, to be exact, it is not, but
return str;
}
+/* static */
+wxFontEncoding wxFontMapperBase::GetEncodingFromName(const wxString& name)
+{
+ const size_t count = WXSIZEOF(gs_encodingNames);
+
+ for ( size_t i = 0; i < count; i++ )
+ {
+ if ( gs_encodingNames[i] == name )
+ {
+ return gs_encodings[i];
+ }
+ }
+
+ if ( name == _("default") )
+ {
+ return wxFONTENCODING_DEFAULT;
+ }
+
+ return wxFONTENCODING_MAX;
+}
+
#endif // wxUSE_FONTMAP