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)
 	/*