m_nativeFontInfo.SetEncoding(encoding);
}
- // native font info
- bool HasNativeFontInfo() const { return true; }
-
const wxNativeFontInfo& GetNativeFontInfo() const
{ return m_nativeFontInfo; }
lf.lfPitchAndFamily = (BYTE)(DEFAULT_PITCH) | ff_family;
- if ( !wxStrlen(lf.lfFaceName) )
- {
- SetFaceName(facename);
- }
+ // reset the facename so that CreateFontIndirect() will automatically choose a
+ // face name based only on the font family.
+ lf.lfFaceName[0] = '\0';
}
void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding)
{
long l;
- wxStringTokenizer tokenizer(s, wxS(";"));
+ wxStringTokenizer tokenizer(s, wxS(";"), wxTOKEN_RET_EMPTY_ALL);
// first the version
wxString token = tokenizer.GetNextToken();
return false;
lf.lfPitchAndFamily = (BYTE)l;
- token = tokenizer.GetNextToken();
- if(!token)
+ if ( !tokenizer.HasMoreTokens() )
return false;
- wxStrcpy(lf.lfFaceName, token.c_str());
+
+ // the face name may be empty
+ wxStrcpy(lf.lfFaceName, tokenizer.GetNextToken());
return true;
}
lf.lfClipPrecision,
lf.lfQuality,
lf.lfPitchAndFamily,
- (const wxChar*)lf.lfFaceName);
+ lf.lfFaceName);
return s;
}
const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
- return IsOk() && M_FONTDATA->HasNativeFontInfo() ? &(M_FONTDATA->GetNativeFontInfo())
- : NULL;
+ return IsOk() ? &(M_FONTDATA->GetNativeFontInfo()) : NULL;
}
wxString wxFont::GetNativeFontInfoDesc() const
{
wxCHECK_MSG( IsOk(), false, wxT("invalid font") );
- if ( M_FONTDATA->HasNativeFontInfo() )
- {
- // the two low-order bits specify the pitch of the font, the rest is
- // family
- BYTE pitch =
- (BYTE)(M_FONTDATA->GetNativeFontInfo().lf.lfPitchAndFamily & PITCH_MASK);
-
- return pitch == FIXED_PITCH;
- }
+ // the two low-order bits specify the pitch of the font, the rest is
+ // family
+ BYTE pitch =
+ (BYTE)(M_FONTDATA->GetNativeFontInfo().lf.lfPitchAndFamily & PITCH_MASK);
- return wxFontBase::IsFixedWidth();
+ return pitch == FIXED_PITCH;
}