X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7936354da7452fa9923bdd374742d64af9f86934..217f9d07673020ad2f995f269552dad27950a6e4:/src/msw/font.cpp?ds=sidebyside diff --git a/src/msw/font.cpp b/src/msw/font.cpp index 2df27bb969..a8fb8be541 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -399,6 +399,45 @@ wxString wxNativeFontInfo::GetFaceName() const return lf.lfFaceName; } +wxFontFamily wxNativeFontInfo::GetFamily() const +{ + // extract family from pitch-and-family + int lfFamily = lf.lfPitchAndFamily; + int family; + + if ( lfFamily & FIXED_PITCH ) + lfFamily -= FIXED_PITCH; + if ( lfFamily & VARIABLE_PITCH ) + lfFamily -= VARIABLE_PITCH; + + switch ( lfFamily ) + { + case FF_ROMAN: + family = wxROMAN; + break; + + case FF_SWISS: + family = wxSWISS; + break; + + case FF_SCRIPT: + family = wxSCRIPT; + break; + + case FF_MODERN: + family = wxMODERN; + break; + + case FF_DECORATIVE: + family = wxDECORATIVE; + break; + + default: + family = wxSWISS; + } + return (wxFontFamily)family; +} + wxFontEncoding wxNativeFontInfo::GetEncoding() const { return wxGetFontEncFromCharSet(lf.lfCharSet); @@ -465,7 +504,7 @@ void wxNativeFontInfo::SetUnderlined(bool underlined) void wxNativeFontInfo::SetFaceName(wxString facename) { - wxStrncpy(lf.lfFaceName, facename, sizeof(lf.lfFaceName)); + wxStrncpy(lf.lfFaceName, facename, WXSIZEOF(lf.lfFaceName)); } void wxNativeFontInfo::SetFamily(wxFontFamily family) @@ -482,7 +521,7 @@ void wxNativeFontInfo::SetFamily(wxFontFamily family) case wxDECORATIVE: ff_family = FF_DECORATIVE; - facename = _T("Wingdings"); + facename = _T("Old English Text MT"); break; case wxROMAN: @@ -521,19 +560,22 @@ void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding) if ( !wxGetNativeFontEncoding(encoding, &info) ) { #if wxUSE_FONTMAP - if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) ) + if ( wxTheFontMapper->GetAltForEncoding(encoding, &info) ) + { + if ( !info.facename.empty() ) + { + // if we have this encoding only in some particular facename, use + // the facename - it is better to show the correct characters in a + // wrong facename than unreadable text in a correct one + SetFaceName(info.facename); + } + } + else #endif // wxUSE_FONTMAP { // unsupported encoding, replace with the default info.charset = ANSI_CHARSET; } - else if ( !info.facename.empty() ) - { - // if we have this encoding only in some particular facename, use - // the facename - it is better to show the correct characters in a - // wrong facename than unreadable text in a correct one - SetFaceName(info.facename); - } } lf.lfCharSet = info.charset;