return s;
}
+// ----------------------------------------------------------------------------
+// wxNativeFontInfo
+// ----------------------------------------------------------------------------
+
+void wxNativeFontInfo::Init()
+{
+ xFontName.clear();
+}
+
+bool wxNativeFontInfo::FromString(const wxString& s)
+{
+ wxStringTokenizer tokenizer(s, _T(";"));
+
+ // check the version
+ wxString token = tokenizer.GetNextToken();
+ if ( token != _T('0') )
+ return FALSE;
+
+ xFontName = tokenizer.GetNextToken();
+
+ // this should be the end
+ if ( tokenizer.HasMoreTokens() )
+ return FALSE;
+
+ return FromXFontName(xFontName);
+}
+
+wxString wxNativeFontInfo::ToString() const
+{
+ // 0 is the version
+ return wxString::Format(_T("%d;%s"), 0, GetXFontName().c_str());
+}
+
+bool wxNativeFontInfo::FromUserString(const wxString& s)
+{
+ return FromXFontName(s);
+}
+
+wxString wxNativeFontInfo::ToUserString() const
+{
+ return GetXFontName();
+}
+
+bool wxNativeFontInfo::FromXFontName(const wxString& xFontName)
+{
+ // TODO: we should be able to handle the font aliases here, but how?
+ wxStringTokenizer tokenizer(xFontName, _T("-"), wxTOKEN_STRTOK);
+
+ for ( size_t n = 0; n < WXSIZEOF(fontElements); n++ )
+ {
+ if ( !tokenizer.HasMoreTokens() )
+ {
+ // not enough elements in the XLFD - or maybe an alias
+ return FALSE;
+ }
+
+ fontElements[n] = tokenizer.GetNextToken();
+ }
+
+ // this should be all
+ return !tokenizer.HasMoreTokens();
+}
+
+wxString wxNativeFontInfo::GetXFontName() const
+{
+ if ( xFontName.empty() )
+ {
+ for ( size_t n = 0; n < WXSIZEOF(fontElements); n++ )
+ {
+ // replace the non specified elements with '*' except for the
+ // additional style which is usually just omitted
+ wxString elt = fontElements[n];
+ if ( elt.empty() && n != 5 )
+ {
+ elt = _T('*');
+ }
+
+ // const_cast
+ ((wxNativeFontInfo *)this)->xFontName << _T('-') << elt;
+ }
+ }
+
+ return xFontName;
+}
+
// ----------------------------------------------------------------------------
// common functions
// ----------------------------------------------------------------------------
break;
case wxFONTENCODING_UTF8:
- // FIXME: this is probably false, but this is how they are called on
- // my system and I don't know what the standard XFLD is (VZ)
- info->xregistry = wxT("iso646.1991");
+ info->xregistry = wxT("iso10646");
info->xencoding = wxT("*");
break;
case wxFONTENCODING_KOI8:
info->xregistry = wxT("koi8");
- // we don't make distinction between koi8-r and koi8-u (so far)
+ // we don't make distinction between koi8-r, koi8-u and koi8-ru (so far)
info->xencoding = wxT("*");
break;
return FALSE;
}
- info->encoding = encoding;
+ info->encoding = encoding;
return TRUE;
}
if ( !wxGetNativeFontEncoding(encoding, &info) ||
!wxTestFontEncoding(info) )
{
+#if wxUSE_FONTMAP
if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) )
+#endif // wxUSE_FONTMAP
{
// unspported encoding - replace it with the default
//