+ m_underlined = underlined;
+ m_encoding = encoding;
+
+#if wxUSE_UNICODE
+ // Create native font info
+ m_nativeFontInfo.description = pango_font_description_new();
+
+ // And set its values
+ 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;
+ default:
+ pango_font_description_set_family( m_nativeFontInfo.description, "sans" );
+ break;
+ }
+ SetStyle( m_style );
+ SetPointSize( m_pointSize );
+ SetWeight( m_weight );
+#endif
+}
+
+void wxFontRefData::InitFromNative()
+{
+ m_noAA = FALSE;
+
+#if wxUSE_UNICODE
+ // Get native info
+ PangoFontDescription *desc = m_nativeFontInfo.description;
+
+ // init fields
+ m_faceName = wxGTK_CONV_BACK( pango_font_description_get_family( desc ) );
+
+ m_pointSize = pango_font_description_get_size( desc ) / PANGO_SCALE;
+
+ switch (pango_font_description_get_style( desc ))
+ {
+ case PANGO_STYLE_NORMAL:
+ m_style = wxFONTSTYLE_NORMAL;
+ break;
+ case PANGO_STYLE_ITALIC:
+ m_style = wxFONTSTYLE_ITALIC;
+ break;
+ case PANGO_STYLE_OBLIQUE:
+ m_style = wxFONTSTYLE_SLANT;
+ break;
+ }
+
+ switch (pango_font_description_get_weight( desc ))
+ {
+ case PANGO_WEIGHT_ULTRALIGHT:
+ m_weight = wxFONTWEIGHT_LIGHT;
+ break;
+ case PANGO_WEIGHT_LIGHT:
+ m_weight = wxFONTWEIGHT_LIGHT;
+ break;
+ case PANGO_WEIGHT_NORMAL:
+ m_weight = wxFONTWEIGHT_NORMAL;
+ break;
+ case PANGO_WEIGHT_BOLD:
+ m_weight = wxFONTWEIGHT_BOLD;
+ break;
+ case PANGO_WEIGHT_ULTRABOLD:
+ m_weight = wxFONTWEIGHT_BOLD;
+ break;
+ case PANGO_WEIGHT_HEAVY:
+ m_weight = wxFONTWEIGHT_BOLD;
+ break;
+ }
+
+ if (m_faceName == wxT("monospace"))
+ {
+ m_family = wxFONTFAMILY_TELETYPE;
+ }
+ else if (m_faceName == wxT("sans"))
+ {
+ m_family = wxFONTFAMILY_SWISS;
+ }