summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-12-10 12:56:37 +0000
committerrubidium <rubidium@openttd.org>2011-12-10 12:56:37 +0000
commitebb3ad33ffdb950edf159d5bbcf14b56191ac0b2 (patch)
tree8461988317bdc3430e3cc3b9c3f33f707cb9d76a /src
parent6cbeb9e745c9eb3f0b5b768fdb9ed81a98b8fb02 (diff)
downloadopenttd-ebb3ad33ffdb950edf159d5bbcf14b56191ac0b2.tar.xz
(svn r23472) -Fix [FS#4877]: the monospace font broke the bootstrap GUI's ability to find a font
Diffstat (limited to 'src')
-rw-r--r--src/gfx.cpp9
-rw-r--r--src/gfx_func.h2
-rw-r--r--src/strings.cpp6
3 files changed, 10 insertions, 7 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp
index fbca165af..61fc5ea33 100644
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -1516,13 +1516,16 @@ void DoPaletteAnimations()
}
-/** 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);
diff --git a/src/gfx_func.h b/src/gfx_func.h
index dee878915..544c6174e 100644
--- a/src/gfx_func.h
+++ b/src/gfx_func.h
@@ -125,7 +125,7 @@ Dimension GetStringBoundingBox(StringID strid);
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);
diff --git a/src/strings.cpp b/src/strings.cpp
index 06c4132d5..e15d30e00 100644
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -1778,7 +1778,7 @@ bool MissingGlyphSearcher::FindMissingGlyphs(const char **str)
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 @@ void CheckForMissingGlyphs(bool base_font, MissingGlyphSearcher *searcher)
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)
/*