some stupid attempts to make utf8 work - it doesn't, but the code does no harm and could be useful in the future

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2001-02-08 18:11:36 +00:00
parent cce442ba7c
commit bb84929ec5
4 changed files with 31 additions and 10 deletions

View File

@ -63,7 +63,10 @@ enum wxFontEncoding
wxFONTENCODING_CP1256, // WinArabic
wxFONTENCODING_CP1257, // WinBaltic (same as Latin 7)
wxFONTENCODING_CP12_MAX,
wxFONTENCODING_UTF7, // UTF-7 Unicode encoding
wxFONTENCODING_UTF8, // UTF-8 Unicode encoding
wxFONTENCODING_UNICODE, // Unicode - currently used only by
// wxEncodingConverter class

View File

@ -262,10 +262,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
class MyEncodingEnumerator : public wxFontEnumerator
{
public:
MyEncodingEnumerator()
MyEncodingEnumerator()
{ m_n = 0; }
const wxString& GetText() const
const wxString& GetText() const
{ return m_text; }
protected:
@ -299,10 +299,10 @@ void MyFrame::OnEnumerateEncodings(wxCommandEvent& WXUNUSED(event))
class MyFontEnumerator : public wxFontEnumerator
{
public:
bool GotAny() const
bool GotAny() const
{ return !m_facenames.IsEmpty(); }
const wxArrayString& GetFacenames() const
const wxArrayString& GetFacenames() const
{ return m_facenames; }
protected:
@ -557,14 +557,15 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event))
m_textctrl->LoadFile(filename);
if (!wxTheFontMapper->IsEncodingAvailable(fontenc))
if ( fontenc == wxFONTENCODING_UTF8 ||
!wxTheFontMapper->IsEncodingAvailable(fontenc) )
{
// try to find some similar encoding:
wxFontEncoding encAlt;
if ( wxTheFontMapper->GetAltForEncoding(fontenc, &encAlt) )
{
wxEncodingConverter conv;
if (conv.Init(fontenc, encAlt))
{
fontenc = encAlt;

View File

@ -90,6 +90,8 @@ static wxFontEncoding gs_encodings[] =
wxFONTENCODING_CP1256,
wxFONTENCODING_CP1257,
wxFONTENCODING_CP437,
wxFONTENCODING_UTF7,
wxFONTENCODING_UTF8,
};
// the descriptions for them
@ -120,6 +122,8 @@ static const wxChar* gs_encodingDescs[] =
wxTRANSLATE( "Windows Arabic (CP 1256)" ),
wxTRANSLATE( "Windows Baltic (CP 1257)" ),
wxTRANSLATE( "Windows/DOS OEM (CP 437)" ),
wxTRANSLATE( "Unicode 7 bit (UTF-7)" ),
wxTRANSLATE( "Unicode 8 bit (UTF-8)" ),
};
// and the internal names
@ -150,6 +154,8 @@ static const wxChar* gs_encodingNames[] =
wxT( "windows1256" ),
wxT( "windows1257" ),
wxT( "windows437" ),
wxT( "utf7" ),
wxT( "utf8" ),
};
// ----------------------------------------------------------------------------
@ -399,7 +405,7 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
RestorePath(pathOld);
}
#endif
#endif // wxUSE_CONFIG
// if didn't find it there, try to reckognise it ourselves
if ( encoding == wxFONTENCODING_SYSTEM )
@ -417,6 +423,10 @@ wxFontEncoding wxFontMapper::CharsetToEncoding(const wxString& charset,
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") )
encoding = wxFONTENCODING_KOI8;
else if ( cs.Left(3) == wxT("ISO") )
@ -696,7 +706,7 @@ bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
RestorePath(pathOld);
}
#endif
#endif // wxUSE_CONFIG
return TRUE;
}
@ -737,7 +747,7 @@ bool wxFontMapper::IsEncodingAvailable(wxFontEncoding encoding,
{
wxNativeEncodingInfo info;
if (wxGetNativeFontEncoding(encoding, &info))
if ( wxGetNativeFontEncoding(encoding, &info) )
{
info.facename = facename;
return wxTestFontEncoding(info);

View File

@ -183,6 +183,13 @@ bool wxGetNativeFontEncoding(wxFontEncoding encoding,
}
break;
case wxFONTENCODING_UTF8:
// FIXME: this is probably false, but this is how they are called on
// my system and I don't know what the standard XFLD is (VZ)
info->xregistry = wxT("iso646.1991");
info->xencoding = wxT("*");
break;
case wxFONTENCODING_KOI8:
info->xregistry = wxT("koi8");