#include "wx/msgdlg.h"
#include "wx/fontdlg.h"
#include "wx/choicdlg.h"
+#include "wx/encconv.h"
// ----------------------------------------------------------------------------
// constants
static wxFontMapper gs_fontMapper;
// and public pointer
-wxFontMapper * WXDLLEXPORT wxTheFontMapper = &gs_fontMapper;
+wxFontMapper * wxTheFontMapper = &gs_fontMapper;
// ----------------------------------------------------------------------------
// private classes
bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
wxNativeEncodingInfo *info,
+ const wxString& facename,
bool interactive)
{
wxCHECK_MSG( info, FALSE, wxT("bad pointer in GetAltForEncoding") );
+ info->facename = facename;
+
if ( encoding == wxFONTENCODING_DEFAULT )
{
encoding = wxFont::GetDefaultEncoding();
}
//else: we're in non-interactive mode
- // now try the default mappings
- switch ( encoding )
- {
- case wxFONTENCODING_ISO8859_15:
- // iso8859-15 is slightly modified iso8859-1
- if ( TestAltEncoding(configEntry, wxFONTENCODING_ISO8859_1, info) )
- return TRUE;
- // fall through
-
- case wxFONTENCODING_ISO8859_1:
- // iso8859-1 is identical to CP1252
- if ( TestAltEncoding(configEntry, wxFONTENCODING_CP1252, info) )
- return TRUE;
-
- break;
-
- case wxFONTENCODING_CP1252:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_ISO8859_1, info) )
- return TRUE;
-
- break;
-
- // iso8859-13 is quite similar to WinBaltic
- case wxFONTENCODING_ISO8859_13:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_CP1257, info) )
- return TRUE;
-
- break;
-
- case wxFONTENCODING_CP1257:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_ISO8859_13, info) )
- return TRUE;
-
- break;
- // iso8859-8 is almost identical to WinHebrew
- case wxFONTENCODING_ISO8859_8:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_CP1255, info) )
- return TRUE;
-
- break;
-
- case wxFONTENCODING_CP1255:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_ISO8859_8, info) )
- return TRUE;
+ // now try the default mappings:
+
+ wxFontEncodingArray equiv = wxEncodingConverter::GetAllEquivalents(encoding);
+ for ( unsigned i = (equiv[0] == encoding) ? 1 : 0; i < equiv.GetCount(); i++ )
+ if ( TestAltEncoding(configEntry, equiv[i], info) )
+ return TRUE;
- break;
+ return FALSE;
+}
- // and iso8859-7 is not too different from WinGreek
- case wxFONTENCODING_ISO8859_7:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_CP1253, info) )
- return TRUE;
- break;
- case wxFONTENCODING_CP1253:
- if ( TestAltEncoding(configEntry, wxFONTENCODING_ISO8859_7, info) )
- return TRUE;
+bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
+ wxFontEncoding *alt_encoding,
+ const wxString& facename,
+ bool interactive)
+{
+ wxNativeEncodingInfo info;
+ bool r = GetAltForEncoding(encoding, &info, facename, interactive);
+ *alt_encoding = info.encoding;
+ return r;
+}
- break;
- default:
- // TODO add other mappings...
- ;
- }
- return FALSE;
+bool wxFontMapper::IsEncodingAvailable(wxFontEncoding encoding,
+ const wxString& facename)
+{
+ wxNativeEncodingInfo info;
+
+ wxGetNativeFontEncoding(encoding, &info);
+ info.facename = facename;
+ return wxTestFontEncoding(info);
}