return M_FONTDATA->IsUsingSizeInPixels();
}
-wxFontFamily wxFont::GetFamily() const
+wxFontFamily wxFont::DoGetFamily() const
{
- wxCHECK_MSG( IsOk(), wxFONTFAMILY_MAX, wxT("invalid font") );
-
return M_FONTDATA->GetFamily();
}
{
wxCHECK_MSG( IsOk(), false, wxT("invalid font") );
- // 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);
+ // LOGFONT doesn't contain the correct pitch information so we need to call
+ // GetTextMetrics() to get it
+ ScreenHDC hdc;
+ SelectInHDC selectFont(hdc, M_FONTDATA->GetHFONT());
+
+ TEXTMETRIC tm;
+ if ( !::GetTextMetrics(hdc, &tm) )
+ {
+ wxLogLastError(wxT("GetTextMetrics"));
+ return false;
+ }
- return pitch == FIXED_PITCH;
+ // Quoting MSDN description of TMPF_FIXED_PITCH: "Note very carefully that
+ // those meanings are the opposite of what the constant name implies."
+ return !(tm.tmPitchAndFamily & TMPF_FIXED_PITCH);
}