+ if ( m_encoding == wxFONTENCODING_DEFAULT )
+ m_encoding = wxFont::GetDefaultEncoding();
+
+ m_noAA = false;
+
+ // Create native font info
+ m_nativeFontInfo.description = pango_font_description_new();
+
+ // And set its values
+ if (!m_faceName.empty())
+ {
+ pango_font_description_set_family( m_nativeFontInfo.description,
+ wxGTK_CONV_SYS(m_faceName) );
+ }
+ else
+ {
+ switch (m_family)
+ {
+ case wxFONTFAMILY_MODERN:
+ case wxFONTFAMILY_TELETYPE:
+ pango_font_description_set_family( m_nativeFontInfo.description, "monospace" );
+ break;
+ case wxFONTFAMILY_ROMAN:
+ pango_font_description_set_family( m_nativeFontInfo.description, "serif" );
+ break;
+ case wxFONTFAMILY_SWISS:
+ // SWISS = sans serif
+ default:
+ pango_font_description_set_family( m_nativeFontInfo.description, "sans" );
+ break;
+ }
+ }
+
+ SetStyle( m_style );
+ SetPointSize( m_pointSize );
+ SetWeight( m_weight );
+}
+
+void wxFontRefData::InitFromNative()
+{
+ m_noAA = false;
+
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ // init fields
+ m_faceName = wxGTK_CONV_BACK_SYS(pango_font_description_get_family(desc));
+
+ // Pango sometimes needs to have a size
+ int pango_size = pango_font_description_get_size( desc );
+ if (pango_size == 0)
+ m_nativeFontInfo.SetPointSize(12);
+
+ m_pointSize = m_nativeFontInfo.GetPointSize();
+ m_style = m_nativeFontInfo.GetStyle();
+ m_weight = m_nativeFontInfo.GetWeight();
+
+ if (m_faceName == wxT("monospace"))
+ {
+ m_family = wxFONTFAMILY_TELETYPE;
+ }
+ else if (m_faceName == wxT("sans"))
+ {
+ m_family = wxFONTFAMILY_SWISS;
+ }
+ else if (m_faceName == wxT("serif"))
+ {
+ m_family = wxFONTFAMILY_ROMAN;
+ }
+ else
+ {
+ m_family = wxFONTFAMILY_UNKNOWN;
+ }
+
+ // Pango description are never underlined (?)
+ m_underlined = false;
+
+ // always with GTK+ 2
+ m_encoding = wxFONTENCODING_UTF8;