- GtkWidget *widget = gtk_button_new();
- GtkStyle *def = gtk_rc_get_style( widget );
- if ( !def || !def->font_desc )
- def = gtk_widget_get_default_style();
- if ( def && def->font_desc )
- {
- wxNativeFontInfo info;
- info.description =
- pango_font_description_copy(def->font_desc);
- gs_objects.m_fontSystem = wxFont(info);
- }
- else
- {
- GtkSettings *settings = gtk_settings_get_default();
- gchar *font_name = NULL;
- g_object_get ( settings,
- "gtk-font-name",
- &font_name,
- NULL);
- if (!font_name)
- gs_objects.m_fontSystem = wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL );
- else
- gs_objects.m_fontSystem = wxFont(wxString::FromAscii(font_name));
- g_free (font_name);
- }
- gtk_object_sink((GtkObject*)widget);
+ wxNativeFontInfo info;
+ info.description = ButtonStyle()->font_desc;
+ gs_fontSystem = wxFont(info);
+
+ // (try to) heal the default font (on some common systems e.g. Ubuntu
+ // it's "Sans Serif" but the real font is called "Sans"):
+ if (!wxFontEnumerator::IsValidFacename(gs_fontSystem.GetFaceName()) &&
+ gs_fontSystem.GetFaceName() == "Sans Serif")
+ gs_fontSystem.SetFaceName("Sans");
+
+ info.description = NULL;