- gchar *fontname = gtk_font_selection_dialog_get_font_name(fontdlg);
-
- // extract the relevant bits from it
- wxString xregistry, xencoding;
- char *dash = strrchr(fontname, '-'); // find the last dash
- if ( dash )
- {
- xencoding = dash + 1;
- *dash = '\0';
- dash = strrchr(fontname, '-'); // the last before one
- if ( dash )
- {
- xregistry = dash + 1;
- }
- else
- {
- wxFAIL_MSG(_T("no registry in X font spec?"));
- }
-
- // restore the dash we changed to NUL above
- *(fontname + strlen(fontname)) = '-';
- }
- else
- {
- wxFAIL_MSG(_T("no encoding in X font spec?"));
- }
-
- // transfer the X registry/encoding to wxFontData - they are used by
- // wxFontMapper after wxFontDialog returns
- wxFontData& fontdata = dialog->m_fontData;
-
- // we ignore the facename here - should be enough to choose an arbitrary
- // one if the registry/encoding are specified
- // dialog->m_fontData.EncodingInfo().facename = xfamily;
- fontdata.EncodingInfo().xregistry = xregistry;
- fontdata.EncodingInfo().xencoding = xencoding;
-
- // pass fontdata to wxFont ctor so that it can get the encoding from there
- // if it is already known (otherwise it will try to deduce it itself)
- dialog->m_fontData.SetChosenFont( wxFont(fontname, fontdata) );
-
- g_free( fontname );