From: Vadim Zeitlin Date: Thu, 8 Feb 2001 18:11:36 +0000 (+0000) Subject: some stupid attempts to make utf8 work - it doesn't, but the code does no harm and... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/bb84929ec5b27eae5433982703dd6d0df89bfc2d 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 --- diff --git a/include/wx/fontenc.h b/include/wx/fontenc.h index 4494b6dea0..24bf9baeba 100644 --- a/include/wx/fontenc.h +++ b/include/wx/fontenc.h @@ -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 diff --git a/samples/font/font.cpp b/samples/font/font.cpp index 10cbdefa46..00719a113f 100644 --- a/samples/font/font.cpp +++ b/samples/font/font.cpp @@ -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; diff --git a/src/common/fontmap.cpp b/src/common/fontmap.cpp index 8dcdcaa7bc..abf1e37e36 100644 --- a/src/common/fontmap.cpp +++ b/src/common/fontmap.cpp @@ -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); diff --git a/src/unix/fontutil.cpp b/src/unix/fontutil.cpp index 9b0395e839..f3a7778e52 100644 --- a/src/unix/fontutil.cpp +++ b/src/unix/fontutil.cpp @@ -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");