X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/801423ee3454d200581cd51d35fbcdad19f2208a..f239a20092359e3c914adb79bd39f3f5d2b2e06f:/src/common/fontcmn.cpp diff --git a/src/common/fontcmn.cpp b/src/common/fontcmn.cpp index 2125ea97e9..d54521c449 100644 --- a/src/common/fontcmn.cpp +++ b/src/common/fontcmn.cpp @@ -29,6 +29,7 @@ #ifndef WX_PRECOMP #include "wx/dc.h" #include "wx/intl.h" + #include "wx/math.h" #include "wx/dcscreen.h" #include "wx/log.h" #include "wx/gdicmn.h" @@ -491,6 +492,29 @@ bool wxFontBase::SetFaceName(const wxString& facename) return true; } +void wxFontBase::SetSymbolicSize(wxFontSymbolicSize size) +{ + SetSymbolicSizeRelativeTo(size, wxNORMAL_FONT->GetPointSize()); +} + +/* static */ +int wxFontBase::AdjustToSymbolicSize(wxFontSymbolicSize size, int base) +{ + // Using a fixed factor (1.2, from CSS2) is a bad idea as explained at + // http://www.w3.org/TR/CSS21/fonts.html#font-size-props so use the values + // from http://style.cleverchimp.com/font_size_intervals/altintervals.html + // instead. + static const float factors[] = { 0.60f, 0.75f, 0.89f, 1.f, 1.2f, 1.5f, 2.f }; + + wxCOMPILE_TIME_ASSERT + ( + WXSIZEOF(factors) == wxFONTSIZE_XX_LARGE - wxFONTSIZE_XX_SMALL + 1, + WrongFontSizeFactorsSize + ); + + return wxRound(factors[size - wxFONTSIZE_XX_SMALL]*base); +} + wxFont& wxFont::MakeBold() { SetWeight(wxFONTWEIGHT_BOLD); @@ -997,7 +1021,7 @@ bool wxNativeFontInfo::FromUserString(const wxString& s) SetFamily(family); } // NB: the check on the facename is implemented in wxFontBase::SetFaceName - // and not in wxNativeFontInfo::SetFaceName thus we need to explicitely + // and not in wxNativeFontInfo::SetFaceName thus we need to explicitly // call here wxFontEnumerator::IsValidFacename else if ( #if wxUSE_FONTENUM @@ -1016,7 +1040,7 @@ bool wxNativeFontInfo::FromUserString(const wxString& s) if ( !face.empty() ) { // NB: the check on the facename is implemented in wxFontBase::SetFaceName - // and not in wxNativeFontInfo::SetFaceName thus we need to explicitely + // and not in wxNativeFontInfo::SetFaceName thus we need to explicitly // call here wxFontEnumerator::IsValidFacename if ( #if wxUSE_FONTENUM