reckognize cp125x charsets
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
// what to test (in alphabetic order)?
|
||||
|
||||
//#define TEST_ARRAYS
|
||||
#define TEST_CHARSET
|
||||
//#define TEST_CMDLINE
|
||||
//#define TEST_DATETIME
|
||||
//#define TEST_DIR
|
||||
@@ -54,7 +55,7 @@
|
||||
//#define TEST_LONGLONG
|
||||
//#define TEST_MIME
|
||||
//#define TEST_PATHLIST
|
||||
#define TEST_REGCONF
|
||||
//#define TEST_REGCONF
|
||||
//#define TEST_REGISTRY
|
||||
//#define TEST_SOCKETS
|
||||
//#define TEST_STREAMS
|
||||
@@ -66,12 +67,6 @@
|
||||
//#define TEST_ZIP
|
||||
//#define TEST_ZLIB
|
||||
|
||||
|
||||
#ifdef TEST_DATETIME
|
||||
#include <math.h>
|
||||
#endif
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// test class for container objects
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -121,6 +116,46 @@ static wxString MakePrintable(const wxChar *s)
|
||||
|
||||
#endif // MakePrintable() is used
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontMapper::CharsetToEncoding
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifdef TEST_CHARSET
|
||||
|
||||
#include <wx/fontmap.h>
|
||||
|
||||
static void TestCharset()
|
||||
{
|
||||
static const wxChar *charsets[] =
|
||||
{
|
||||
// some vali charsets
|
||||
_T("us-ascii "),
|
||||
_T("iso8859-1 "),
|
||||
_T("iso-8859-12 "),
|
||||
_T("koi8-r "),
|
||||
_T("utf-7 "),
|
||||
_T("cp1250 "),
|
||||
_T("windows-1252"),
|
||||
|
||||
// and now some bogus ones
|
||||
_T(" "),
|
||||
_T("cp1249 "),
|
||||
_T("iso--8859-1 "),
|
||||
_T("iso-8859-19 "),
|
||||
};
|
||||
|
||||
for ( size_t n = 0; n < WXSIZEOF(charsets); n++ )
|
||||
{
|
||||
wxFontEncoding enc = wxTheFontMapper->CharsetToEncoding(charsets[n]);
|
||||
wxPrintf(_T("Charset: %s\tEncoding: %s (%s)\n"),
|
||||
charsets[n],
|
||||
wxTheFontMapper->GetEncodingName(enc).c_str(),
|
||||
wxTheFontMapper->GetEncodingDescription(enc).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
#endif // TEST_CHARSET
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxCmdLineParser
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -2725,6 +2760,8 @@ static void TestZlibStreamRead()
|
||||
|
||||
#ifdef TEST_DATETIME
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <wx/date.h>
|
||||
|
||||
#include <wx/datetime.h>
|
||||
@@ -4453,10 +4490,9 @@ int main(int argc, char **argv)
|
||||
fprintf(stderr, "Failed to initialize the wxWindows library, aborting.");
|
||||
}
|
||||
|
||||
#ifdef TEST_USLEEP
|
||||
puts("Sleeping for 3 seconds... z-z-z-z-z...");
|
||||
wxUsleep(3000);
|
||||
#endif // TEST_USLEEP
|
||||
#ifdef TEST_CHARSET
|
||||
TestCharset();
|
||||
#endif // TEST_CHARSET
|
||||
|
||||
#ifdef TEST_CMDLINE
|
||||
static const wxCmdLineEntryDesc cmdLineDesc[] =
|
||||
@@ -4769,6 +4805,11 @@ int main(int argc, char **argv)
|
||||
TestDateTimeInteractive();
|
||||
#endif // TEST_DATETIME
|
||||
|
||||
#ifdef TEST_USLEEP
|
||||
puts("Sleeping for 3 seconds... z-z-z-z-z...");
|
||||
wxUsleep(3000);
|
||||
#endif // TEST_USLEEP
|
||||
|
||||
#ifdef TEST_VCARD
|
||||
if ( 0 )
|
||||
TestVCardRead();
|
||||
|
@@ -42,7 +42,6 @@
|
||||
#endif
|
||||
|
||||
#if wxUSE_GUI
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/fontdlg.h"
|
||||
#include "wx/choicdlg.h"
|
||||
@@ -145,15 +144,15 @@ static const wxChar* gs_encodingNames[] =
|
||||
wxT( "iso8859-14" ),
|
||||
wxT( "iso8859-15" ),
|
||||
wxT( "koi8-r" ),
|
||||
wxT( "windows1250" ),
|
||||
wxT( "windows1251" ),
|
||||
wxT( "windows1252" ),
|
||||
wxT( "windows1253" ),
|
||||
wxT( "windows1254" ),
|
||||
wxT( "windows1255" ),
|
||||
wxT( "windows1256" ),
|
||||
wxT( "windows1257" ),
|
||||
wxT( "windows437" ),
|
||||
wxT( "windows-1250" ),
|
||||
wxT( "windows-1251" ),
|
||||
wxT( "windows-1252" ),
|
||||
wxT( "windows-1253" ),
|
||||
wxT( "windows-1254" ),
|
||||
wxT( "windows-1255" ),
|
||||
wxT( "windows-1256" ),
|
||||
wxT( "windows-1257" ),
|
||||
wxT( "windows-437" ),
|
||||
wxT( "utf7" ),
|
||||
wxT( "utf8" ),
|
||||
};
|
||||
@@ -319,6 +318,11 @@ void wxFontMapper::RestorePath(const wxString& pathOld)
|
||||
/* static */
|
||||
wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
|
||||
{
|
||||
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||
{
|
||||
return _("Default encoding");
|
||||
}
|
||||
|
||||
size_t count = WXSIZEOF(gs_encodingDescs);
|
||||
|
||||
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
||||
@@ -341,6 +345,11 @@ wxString wxFontMapper::GetEncodingDescription(wxFontEncoding encoding)
|
||||
/* static */
|
||||
wxString wxFontMapper::GetEncodingName(wxFontEncoding encoding)
|
||||
{
|
||||
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||
{
|
||||
return _("default");
|
||||
}
|
||||
|
||||
size_t count = WXSIZEOF(gs_encodingNames);
|
||||
|
||||
wxASSERT_MSG( count == WXSIZEOF(gs_encodings),
|
||||
@@ -405,11 +414,15 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
||||
|
||||
RestorePath(pathOld);
|
||||
}
|
||||
#endif // wxUSE_CONFIG
|
||||
#endif
|
||||
|
||||
// if didn't find it there, try to reckognise it ourselves
|
||||
// if didn't find it there, try to recognize it ourselves
|
||||
if ( encoding == wxFONTENCODING_SYSTEM )
|
||||
{
|
||||
// trim any spaces
|
||||
cs.Trim(TRUE);
|
||||
cs.Trim(FALSE);
|
||||
|
||||
// discard the optional quotes
|
||||
if ( !!cs )
|
||||
{
|
||||
@@ -422,13 +435,26 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
||||
cs.MakeUpper();
|
||||
|
||||
if ( !cs || cs == wxT("US-ASCII") )
|
||||
{
|
||||
encoding = wxFONTENCODING_DEFAULT;
|
||||
}
|
||||
else if ( cs == wxT("UTF-7") )
|
||||
{
|
||||
encoding = wxFONTENCODING_UTF7;
|
||||
}
|
||||
else if ( cs == wxT("UTF-8") )
|
||||
{
|
||||
encoding = wxFONTENCODING_UTF8;
|
||||
else if ( cs == wxT("KOI8-R") || cs == wxT("KOI8-U") )
|
||||
}
|
||||
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
|
||||
encoding = wxFONTENCODING_KOI8;
|
||||
}
|
||||
else if ( cs.Left(3) == wxT("ISO") )
|
||||
{
|
||||
// the dash is optional (or, to be exact, it is not, but
|
||||
@@ -449,10 +475,30 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( cs.Left(8) == wxT("WINDOWS-") )
|
||||
else // check for Windows charsets
|
||||
{
|
||||
size_t len;
|
||||
if ( cs.Left(7) == wxT("WINDOWS") )
|
||||
{
|
||||
len = 7;
|
||||
}
|
||||
else if ( cs.Left(2) == wxT("CP") )
|
||||
{
|
||||
len = 2;
|
||||
}
|
||||
else // not a Windows encoding
|
||||
{
|
||||
len = 0;
|
||||
}
|
||||
|
||||
if ( len )
|
||||
{
|
||||
const wxChar *p = cs.c_str() + len;
|
||||
if ( *p == wxT('-') )
|
||||
p++;
|
||||
|
||||
int value;
|
||||
if ( wxSscanf(cs.c_str() + 8, wxT("%u"), &value) == 1 )
|
||||
if ( wxSscanf(p, wxT("%u"), &value) == 1 )
|
||||
{
|
||||
if ( value >= 1250 )
|
||||
{
|
||||
@@ -467,6 +513,7 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//else: unknown
|
||||
}
|
||||
|
||||
@@ -696,7 +743,7 @@ bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
|
||||
wxFont font = retData.GetChosenFont();
|
||||
|
||||
*info = retData.EncodingInfo();
|
||||
info->encoding = retData.GetEncoding();
|
||||
info -> encoding = retData.GetEncoding();
|
||||
|
||||
#if wxUSE_CONFIG
|
||||
// remember this in the config
|
||||
@@ -747,7 +794,7 @@ bool wxFontMapper::IsEncodingAvailable(wxFontEncoding encoding,
|
||||
{
|
||||
wxNativeEncodingInfo info;
|
||||
|
||||
if ( wxGetNativeFontEncoding(encoding, &info) )
|
||||
if (wxGetNativeFontEncoding(encoding, &info))
|
||||
{
|
||||
info.facename = facename;
|
||||
return wxTestFontEncoding(info);
|
||||
|
Reference in New Issue
Block a user