From ba804ab2d429c03bf5b20989d207d2b1ebe049f4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 25 Aug 2006 16:52:58 +0000 Subject: [PATCH] don't hardcode HTML font sizes, this makes wxHtmlWindow look really ugly when default font size is not 12, base the default font sizes on wxNORMAL_FONT instead git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/html/htmldefs.h | 40 +++++-------------------- src/html/winpars.cpp | 61 +++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 59 deletions(-) diff --git a/include/wx/html/htmldefs.h b/include/wx/html/htmldefs.h index dc008b77a4..469f707286 100644 --- a/include/wx/html/htmldefs.h +++ b/include/wx/html/htmldefs.h @@ -89,40 +89,16 @@ // wxHTML internal constants //-------------------------------------------------------------------------------- -#define wxHTML_SCROLL_STEP 16 /* size of one scroll step of wxHtmlWindow in pixels */ -#define wxHTML_BUFLEN 1024 +#define wxHTML_SCROLL_STEP 16 + /* size of temporary buffer used during parsing */ -#define wxHTML_PRINT_MAX_PAGES 999 +#define wxHTML_BUFLEN 1024 + /* maximum number of pages printable via html printing */ +#define wxHTML_PRINT_MAX_PAGES 999 + +#endif // wxUSE_HTML +#endif // _WX_HTMLDEFS_H_ - /* default font sizes */ -#ifdef __WXMSW__ - #define wxHTML_FONT_SIZE_1 7 - #define wxHTML_FONT_SIZE_2 8 - #define wxHTML_FONT_SIZE_3 10 - #define wxHTML_FONT_SIZE_4 12 - #define wxHTML_FONT_SIZE_5 16 - #define wxHTML_FONT_SIZE_6 22 - #define wxHTML_FONT_SIZE_7 30 -#elif defined(__WXMAC__) - #define wxHTML_FONT_SIZE_1 9 - #define wxHTML_FONT_SIZE_2 12 - #define wxHTML_FONT_SIZE_3 14 - #define wxHTML_FONT_SIZE_4 18 - #define wxHTML_FONT_SIZE_5 24 - #define wxHTML_FONT_SIZE_6 30 - #define wxHTML_FONT_SIZE_7 36 -#else - #define wxHTML_FONT_SIZE_1 10 - #define wxHTML_FONT_SIZE_2 12 - #define wxHTML_FONT_SIZE_3 14 - #define wxHTML_FONT_SIZE_4 16 - #define wxHTML_FONT_SIZE_5 19 - #define wxHTML_FONT_SIZE_6 24 - #define wxHTML_FONT_SIZE_7 32 -#endif - -#endif -#endif diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 13ef2c9ae6..5446f917d6 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -110,25 +110,39 @@ void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *module) m_Modules.DeleteObject(module); } -void wxHtmlWinParser::SetFonts(const wxString& normal_face, const wxString& fixed_face, +// build all HTML font sizes (1..7) from the given base size +static void wxBuildFontSizes(int *sizes, int size) +{ + // 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 but this is by far + // simplest thing to do so still do it like this for now + sizes[0] = int(size * 0.69); + sizes[1] = int(size * 0.83); + sizes[2] = size; + sizes[3] = int(size * 1.2); + sizes[4] = int(size * 1.44); + sizes[5] = int(size * 1.73); + sizes[6] = int(size * 2); +} + +void wxHtmlWinParser::SetFonts(const wxString& normal_face, + const wxString& fixed_face, const int *sizes) { - static int default_sizes[7] = - { - wxHTML_FONT_SIZE_1, - wxHTML_FONT_SIZE_2, - wxHTML_FONT_SIZE_3, - wxHTML_FONT_SIZE_4, - wxHTML_FONT_SIZE_5, - wxHTML_FONT_SIZE_6, - wxHTML_FONT_SIZE_7 - }; + static int default_sizes[7] = { 0 }; + if ( !sizes ) + { + if ( !default_sizes[0] ) + wxBuildFontSizes(default_sizes, wxNORMAL_FONT->GetPointSize()); - if (sizes == NULL) sizes = default_sizes; + sizes = default_sizes; + } int i, j, k, l, m; - for (i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i]; + for (i = 0; i < 7; i++) + m_FontsSizes[i] = sizes[i]; + m_FontFaceFixed = fixed_face; m_FontFaceNormal = normal_face; @@ -153,22 +167,15 @@ void wxHtmlWinParser::SetStandardFonts(int size, const wxString& normal_face, const wxString& fixed_face) { - wxFont defaultFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + if (size == -1) + size = wxNORMAL_FONT->GetPointSize(); int f_sizes[7]; - if (size == -1) - size = defaultFont.GetPointSize(); - - f_sizes[0] = int(size * 0.6); - f_sizes[1] = int(size * 0.8); - f_sizes[2] = size; - f_sizes[3] = int(size * 1.2); - f_sizes[4] = int(size * 1.4); - f_sizes[5] = int(size * 1.6); - f_sizes[6] = int(size * 1.8); - - wxString normal = normal_face.empty() ? - defaultFont.GetFaceName() : normal_face; + wxBuildFontSizes(f_sizes, size); + + wxString normal = normal_face; + if ( normal.empty() ) + normal = wxNORMAL_FONT->GetFaceName(); SetFonts(normal, fixed_face, f_sizes); } -- 2.45.2