X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d32001b326f4c1ef1e5e34d2bc634298b14c77d..1483041dab88f43563c26405c1e2a41d6babe6a0:/src/msw/font.cpp diff --git a/src/msw/font.cpp b/src/msw/font.cpp index 56778e8b8b..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)/sizeof(WCHAR)); + wxStrncpy(lf.lfFaceName, facename, WXSIZEOF(lf.lfFaceName)); } void wxNativeFontInfo::SetFamily(wxFontFamily family) @@ -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;