]> git.saurik.com Git - wxWidgets.git/commitdiff
some stupid attempts to make utf8 work - it doesn't, but the code does no harm and...
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 8 Feb 2001 18:11:36 +0000 (18:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 8 Feb 2001 18:11:36 +0000 (18:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/fontenc.h
samples/font/font.cpp
src/common/fontmap.cpp
src/unix/fontutil.cpp

index 4494b6dea02cb55d831e4e55a95a598749e9a437..24bf9baeba354a333ed3dcbb2c4ce8d5653082ca 100644 (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
 
index 10cbdefa46c57068839ce6da0c93e4b82f4e0c30..00719a113f5a1d528ddb306a7efd8782d8c6bd26 100644 (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;
index 8dcdcaa7bc114735798c3d03241130f7012f0825..abf1e37e36fff0bb13ffa73d8265fdeda09a318a 100644 (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);
index 9b0395e839e8a0c925e3bfc960671989d8a6cc5b..f3a7778e52b5282c078597f759e8f9ca04c032e1 100644 (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");