bool underlined,
const wxString& facename,
const wxString& xregistry,
- const wxString& xencoding);
+ const wxString& xencoding,
+ wxString* xFontName);
// ============================================================================
// implementation
// ----------------------------------------------------------------------------
// convert to/from the string representation: format is
-// registry-encoding[-facename]
+// encodingid;registry;encoding[;facename]
bool wxNativeEncodingInfo::FromString(const wxString& s)
{
- wxStringTokenizer tokenizer(s, _T("-"));
+ wxStringTokenizer tokenizer(s, _T(";"));
+ // cannot use "-" because it may be part of encoding name
+
+ wxString encid = tokenizer.GetNextToken();
+ long enc;
+ if ( !encid.ToLong(&enc) )
+ return FALSE;
+ encoding = (wxFontEncoding)enc;
xregistry = tokenizer.GetNextToken();
if ( !xregistry )
wxString wxNativeEncodingInfo::ToString() const
{
wxString s;
- s << xregistry << _T('-') << xencoding;
+ s << (long)encoding << _T(';') << xregistry << _T(';') << xencoding;
if ( !!facename )
{
- s << _T('-') << facename;
+ s << _T(';') << facename;
}
return s;
case wxFONTENCODING_ISO8859_9:
case wxFONTENCODING_ISO8859_10:
case wxFONTENCODING_ISO8859_11:
+ case wxFONTENCODING_ISO8859_12:
case wxFONTENCODING_ISO8859_13:
case wxFONTENCODING_ISO8859_14:
case wxFONTENCODING_ISO8859_15:
int weight,
bool underlined,
const wxString &facename,
- wxFontEncoding encoding)
+ wxFontEncoding encoding,
+ wxString* xFontName)
{
if ( encoding == wxFONTENCODING_DEFAULT )
{
}
// OK, we have the correct xregistry/xencoding in info structure
- wxNativeFont font = wxLoadQueryFont( pointSize, family, style, weight,
+ wxNativeFont font = 0;
+
+ // if we already have the X font name, try to use it
+ if( xFontName && !xFontName->IsEmpty() )
+ font = wxLoadFont(*xFontName);
+
+ if( !font )
+ font = wxLoadQueryFont( pointSize, family, style, weight,
underlined, facename,
- info.xregistry, info.xencoding );
+ info.xregistry, info.xencoding,
+ xFontName );
if ( !font )
{
for ( i = pointSize - 10; !font && i >= 10 && i >= min_size; i -= 10 )
{
font = wxLoadQueryFont(i, family, style, weight, underlined,
- facename, info.xregistry, info.xencoding);
+ facename, info.xregistry, info.xencoding,
+ xFontName);
}
// Search for larger size (approx.)
for ( i = pointSize + 10; !font && i <= max_size; i += 10 )
{
font = wxLoadQueryFont(i, family, style, weight, underlined,
- facename, info.xregistry, info.xencoding);
+ facename, info.xregistry, info.xencoding,
+ xFontName);
}
// Try default family
{
font = wxLoadQueryFont(pointSize, wxDEFAULT, style, weight,
underlined, facename,
- info.xregistry, info.xencoding );
+ info.xregistry, info.xencoding,
+ xFontName );
}
// Bogus font I
{
font = wxLoadQueryFont(120, wxDEFAULT, wxNORMAL, wxNORMAL,
underlined, facename,
- info.xregistry, info.xencoding);
+ info.xregistry, info.xencoding,
+ xFontName);
}
// Bogus font II
{
font = wxLoadQueryFont(120, wxDEFAULT, wxNORMAL, wxNORMAL,
underlined, wxEmptyString,
- info.xregistry, info.xencoding);
+ info.xregistry, info.xencoding,
+ xFontName);
}
}
bool WXUNUSED(underlined),
const wxString& facename,
const wxString& xregistry,
- const wxString& xencoding)
+ const wxString& xencoding,
+ wxString* xFontName)
{
wxString xfamily;
switch (family)
xfamily.c_str(), xweight.c_str(), xstyle.c_str(),
pointSize, xregistry.c_str(), xencoding.c_str());
+ if( xFontName )
+ *xFontName = fontSpec;
+
return wxLoadFont(fontSpec);
}