]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/font.cpp
Distrib corrections,
[wxWidgets.git] / src / gtk1 / font.cpp
index c27134680f81880480b1c48b9fe5b957f0f7c0a8..97c51a8968d751686a76dc3230fc23a6bcf961f3 100644 (file)
@@ -162,21 +162,28 @@ wxFont::wxFont( GdkFont *WXUNUSED(font), char *xFontName )
     wxString tmp;
 
     wxString fontname( xFontName );
-    wxStringTokenizer tn( fontname, T("-") );
+    wxStringTokenizer tn( fontname, wxT("-") );
 
     tn.GetNextToken();                           // foundry
 
-    M_FONTDATA->m_faceName = tn.GetNextToken();  // courier
+    M_FONTDATA->m_faceName = tn.GetNextToken();  // family
 
-    tmp = tn.GetNextToken().MakeUpper();
-    if (tmp == T("BOLD")) M_FONTDATA->m_weight = wxBOLD;
+    tmp = tn.GetNextToken().MakeUpper();         // weight
+    if (tmp == wxT("BOLD")) M_FONTDATA->m_weight = wxBOLD;
+    if (tmp == wxT("BLACK")) M_FONTDATA->m_weight = wxBOLD;
+    if (tmp == wxT("EXTRABOLD")) M_FONTDATA->m_weight = wxBOLD;
+    if (tmp == wxT("DEMIBOLD")) M_FONTDATA->m_weight = wxBOLD;
+    if (tmp == wxT("ULTRABOLD")) M_FONTDATA->m_weight = wxBOLD;
 
-    tmp = tn.GetNextToken().MakeUpper();
-    if (tmp == T("I")) M_FONTDATA->m_style = wxITALIC;
-    if (tmp == T("O")) M_FONTDATA->m_style = wxITALIC;
+    if (tmp == wxT("LIGHT")) M_FONTDATA->m_weight = wxLIGHT;
+    if (tmp == wxT("THIN")) M_FONTDATA->m_weight = wxLIGHT;
+    
+    tmp = tn.GetNextToken().MakeUpper();        // slant
+    if (tmp == wxT("I")) M_FONTDATA->m_style = wxITALIC;
+    if (tmp == wxT("O")) M_FONTDATA->m_style = wxITALIC;
 
     tn.GetNextToken();                           // set width
-    tn.GetNextToken();                           // ?
+    tn.GetNextToken();                           // add. style
     tn.GetNextToken();                           // pixel size
 
     tmp = tn.GetNextToken();                     // pointsize
@@ -186,13 +193,50 @@ wxFont::wxFont( GdkFont *WXUNUSED(font), char *xFontName )
     tn.GetNextToken();                           // x-res
     tn.GetNextToken();                           // y-res
 
-    tmp = tn.GetNextToken().MakeUpper();
-    if (tmp == T("M")) M_FONTDATA->m_family = wxMODERN;
-    else if (M_FONTDATA->m_faceName == T("TIMES")) M_FONTDATA->m_family = wxROMAN;
-    else if (M_FONTDATA->m_faceName == T("HELVETICA")) M_FONTDATA->m_family = wxSWISS;
-    else if (M_FONTDATA->m_faceName == T("LUCIDATYPEWRITER")) M_FONTDATA->m_family = wxTELETYPE;
-    else if (M_FONTDATA->m_faceName == T("LUCIDA")) M_FONTDATA->m_family = wxDECORATIVE;
-    else if (M_FONTDATA->m_faceName == T("UTOPIA")) M_FONTDATA->m_family = wxSCRIPT;
+    tmp = tn.GetNextToken().MakeUpper();         // spacing
+
+    if (tmp == wxT("M"))
+        M_FONTDATA->m_family = wxMODERN;
+    else if (M_FONTDATA->m_faceName == wxT("TIMES"))
+        M_FONTDATA->m_family = wxROMAN;
+    else if (M_FONTDATA->m_faceName == wxT("HELVETICA"))
+        M_FONTDATA->m_family = wxSWISS;
+    else if (M_FONTDATA->m_faceName == wxT("LUCIDATYPEWRITER"))
+        M_FONTDATA->m_family = wxTELETYPE;
+    else if (M_FONTDATA->m_faceName == wxT("LUCIDA"))
+        M_FONTDATA->m_family = wxDECORATIVE;
+    else if (M_FONTDATA->m_faceName == wxT("UTOPIA"))
+        M_FONTDATA->m_family = wxSCRIPT;
+
+    tn.GetNextToken();                           // avg width
+
+    // deal with font encoding
+    wxString registry = tn.GetNextToken().MakeUpper(),
+             encoding = tn.GetNextToken().MakeUpper();
+
+    if ( registry == _T("ISO8859") )
+    {
+        int cp;
+        if ( wxSscanf(encoding, wxT("%d"), &cp) == 1 )
+        {
+            M_FONTDATA->m_encoding =
+                (wxFontEncoding)(wxFONTENCODING_ISO8859_1 + cp - 1);
+        }
+    }
+    else if ( registry == _T("MICROSOFT") )
+    {
+        int cp;
+        if ( wxSscanf(encoding, wxT("cp125%d"), &cp) == 1 )
+        {
+            M_FONTDATA->m_encoding =
+                (wxFontEncoding)(wxFONTENCODING_CP1250 + cp);
+        }
+    }
+    else if ( registry == _T("KOI8") )
+    {
+        M_FONTDATA->m_encoding = wxFONTENCODING_KOI8;
+    }
+    //else: unknown encoding - may be give a warning here?
 }
 
 bool wxFont::Create( int pointSize,
@@ -235,42 +279,42 @@ wxFont::~wxFont()
 
 int wxFont::GetPointSize() const
 {
-    wxCHECK_MSG( Ok(), 0, T("invalid font") );
+    wxCHECK_MSG( Ok(), 0, wxT("invalid font") );
 
     return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceName() const
 {
-    wxCHECK_MSG( Ok(), T(""), T("invalid font") );
+    wxCHECK_MSG( Ok(), wxT(""), wxT("invalid font") );
 
     return M_FONTDATA->m_faceName;
 }
 
 int wxFont::GetFamily() const
 {
-    wxCHECK_MSG( Ok(), 0, T("invalid font") );
+    wxCHECK_MSG( Ok(), 0, wxT("invalid font") );
 
     return M_FONTDATA->m_family;
 }
 
 int wxFont::GetStyle() const
 {
-    wxCHECK_MSG( Ok(), 0, T("invalid font") );
+    wxCHECK_MSG( Ok(), 0, wxT("invalid font") );
 
     return M_FONTDATA->m_style;
 }
 
 int wxFont::GetWeight() const
 {
-    wxCHECK_MSG( Ok(), 0, T("invalid font") );
+    wxCHECK_MSG( Ok(), 0, wxT("invalid font") );
 
     return M_FONTDATA->m_weight;
 }
 
 bool wxFont::GetUnderlined() const
 {
-    wxCHECK_MSG( Ok(), FALSE, T("invalid font") );
+    wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") );
 
     return M_FONTDATA->m_underlined;
 }
@@ -278,7 +322,7 @@ bool wxFont::GetUnderlined() const
 
 wxFontEncoding wxFont::GetEncoding() const
 {
-    wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, T("invalid font") );
+    wxCHECK_MSG( Ok(), wxFONTENCODING_DEFAULT, wxT("invalid font") );
 
     return M_FONTDATA->m_encoding;
 }
@@ -344,7 +388,7 @@ GdkFont *wxFont::GetInternalFont( float scale ) const
 {
     if (!Ok())
     {
-        wxFAIL_MSG( T("invalid font") );
+        wxFAIL_MSG( wxT("invalid font") );
 
         return (GdkFont*) NULL;
     }
@@ -387,7 +431,7 @@ GdkFont *wxFont::GetInternalFont( float scale ) const
 
     if (!font)
     {
-        wxLogError(T("could not load any font"));
+        wxLogError(wxT("could not load any font"));
     }
 
     return font;