Mercurial > hg > openttd
changeset 18625:48c2c81d300e draft
(svn r23472) -Fix [FS#4877]: the monospace font broke the bootstrap GUI's ability to find a font
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 10 Dec 2011 12:56:37 +0000 |
parents | 10948a7b2ea6 |
children | 2db5b0e110f9 |
files | src/gfx.cpp src/gfx_func.h src/strings.cpp |
diffstat | 3 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1516,13 +1516,16 @@ } -/** Initialize _stringwidth_table cache */ -void LoadStringWidthTable() +/** + * Initialize _stringwidth_table cache + * @param monospace Whether to load the monospace cache or the normal fonts. + */ +void LoadStringWidthTable(bool monospace) { _max_char_height = 0; _max_char_width = 0; - for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { + for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) { _max_char_height = max<int>(_max_char_height, GetCharacterHeight(fs)); for (uint i = 0; i != 224; i++) { _stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32);
--- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -125,7 +125,7 @@ uint32 FormatStringLinebreaks(char *str, const char *last, int maxw, FontSize start_fontsize = FS_NORMAL); int GetStringHeight(StringID str, int maxw); Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion); -void LoadStringWidthTable(); +void LoadStringWidthTable(bool monospace = false); void DrawDirtyBlocks(); void SetDirtyBlocks(int left, int top, int right, int bottom);
--- a/src/strings.cpp +++ b/src/strings.cpp @@ -1778,7 +1778,7 @@ InitFreeType(this->Monospace()); const Sprite *question_mark[FS_END]; - for (FontSize size = FS_BEGIN; size < FS_END; size++) { + for (FontSize size = this->Monospace() ? FS_MONO : FS_BEGIN; size < (this->Monospace() ? FS_END : FS_MONO); size++) { question_mark[size] = GetGlyph(size, '?'); } @@ -1903,12 +1903,12 @@ ShowErrorMessage(STR_JUST_RAW_STRING, INVALID_STRING_ID, WL_WARNING); /* Reset the font width */ - LoadStringWidthTable(); + LoadStringWidthTable(searcher->Monospace()); return; } /* Update the font with cache */ - LoadStringWidthTable(); + LoadStringWidthTable(searcher->Monospace()); #if !defined(WITH_ICU) /*