]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/fontutil.cpp
Added the code to copy setup0.h to setup.h if setup.h does not exist (due to checkout...
[wxWidgets.git] / src / unix / fontutil.cpp
index 2c371f3c1f4357ff440dd9ab42981ee56dc7c9ee..f3a7778e52b5282c078597f759e8f9ca04c032e1 100644 (file)
@@ -110,8 +110,8 @@ static wxNativeFont wxLoadQueryFont(int pointSize,
 //      encodingid;registry;encoding[;facename]
 bool wxNativeEncodingInfo::FromString(const wxString& s)
 {
+    // use ";", not "-" because it may be part of encoding name
     wxStringTokenizer tokenizer(s, _T(";"));
-            // cannot use "-" because it may be part of encoding name
 
     wxString encid = tokenizer.GetNextToken();
     long enc;
@@ -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");
 
@@ -274,13 +281,34 @@ wxNativeFont wxLoadQueryNearestFont(int pointSize,
             }
         }
     }
-    
+
     // OK, we have the correct xregistry/xencoding in info structure
     wxNativeFont font = 0;
 
     // if we already have the X font name, try to use it
     if( xFontName && !xFontName->IsEmpty() )
-        font = wxLoadFont(*xFontName);
+    {
+        //
+        //  Make sure point size is correct for scale factor.
+        //
+        wxStringTokenizer tokenizer(*xFontName, _T("-"), wxTOKEN_RET_DELIMS);
+        wxString newFontName;
+
+        for(int i = 0; i < 8; i++)
+          newFontName += tokenizer.NextToken();
+
+        (void) tokenizer.NextToken();
+
+        newFontName += wxString::Format("%d-", pointSize);
+
+        while(tokenizer.HasMoreTokens())
+          newFontName += tokenizer.GetNextToken();
+
+        font = wxLoadFont(newFontName);
+
+        if(font)
+          *xFontName = newFontName;
+    }
 
     if( !font )
         font = wxLoadQueryFont( pointSize, family, style, weight,
@@ -360,13 +388,12 @@ static bool wxTestFontSpec(const wxString& fontspec)
     wxNativeFont test = (wxNativeFont) g_fontHash->Get( fontspec );
     if (test)
     {
-//        printf( "speed up\n" );
         return TRUE;
     }
 
     test = wxLoadFont(fontspec);
     g_fontHash->Put( fontspec, (wxObject*) test );
-    
+
     if ( test )
     {
         wxFreeFont(test);