+
+ // 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( wxT("no registry in X font spec?") );
+ }
+
+ // restore the dash we changed to NUL above
+ *(fontname + strlen(fontname)) = '-';
+ }
+ else
+ {
+ wxFAIL_MSG( wxT("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
+ 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.GetEncoding()));
+