+ // Cannot we choose that
+ m_encoding = wxFONTENCODING_SYSTEM;
+#else // X11
+ // get the font parameters from the XLFD
+ // -------------------------------------
+
+ m_faceName = m_nativeFontInfo.GetXFontComponent(wxXLFD_FAMILY);
+
+ m_weight = wxFONTWEIGHT_NORMAL;
+
+ wxString w = m_nativeFontInfo.GetXFontComponent(wxXLFD_WEIGHT).Upper();
+ if ( !w.empty() && w != wxT('*') )
+ {
+ // the test below catches all of BOLD, EXTRABOLD, DEMIBOLD, ULTRABOLD
+ // and BLACK
+ if ( ((w[0u] == wxT('B') && (!wxStrcmp(w.c_str() + 1, wxT("OLD")) ||
+ !wxStrcmp(w.c_str() + 1, wxT("LACK"))))) ||
+ wxStrstr(w.c_str() + 1, wxT("BOLD")) )
+ {
+ m_weight = wxFONTWEIGHT_BOLD;
+ }
+ else if ( w == wxT("LIGHT") || w == wxT("THIN") )
+ {
+ m_weight = wxFONTWEIGHT_LIGHT;
+ }
+ }
+
+ switch ( wxToupper( m_nativeFontInfo.
+ GetXFontComponent(wxXLFD_SLANT)[0u]).GetValue() )
+ {
+ case wxT('I'): // italique
+ m_style = wxFONTSTYLE_ITALIC;
+ break;
+
+ case wxT('O'): // oblique
+ m_style = wxFONTSTYLE_SLANT;
+ break;
+
+ default:
+ m_style = wxFONTSTYLE_NORMAL;
+ }
+
+ long ptSize;
+ if ( m_nativeFontInfo.GetXFontComponent(wxXLFD_POINTSIZE).ToLong(&ptSize) )
+ {
+ // size in XLFD is in 10 point units
+ m_pointSize = (int)(ptSize / 10);
+ }