Changeset - r11398:3da2674a0a9f
[Not reviewed]
master
0 1 0
glx - 15 years ago 2009-03-18 00:51:44
glx@openttd.org
(svn r15757) -Fix/hackaround (r15314): of course on some system searching a font using its english name fails. So now we search the font using the localised name and use the english name for the final 'validation' only.
1 file changed with 10 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/fontcache.cpp
Show inline comments
 
@@ -172,6 +172,8 @@ static FT_Error GetFontByFaceName(const 
 
		if (err != FT_Err_Ok) break;
 

	
 
		if (strncasecmp(font_name, (*face)->family_name, strlen((*face)->family_name)) == 0) break;
 
		/* Try english name if font name failed */
 
		if (strncasecmp(font_name + strlen(font_name) + 1, (*face)->family_name, strlen((*face)->family_name)) == 0) break;
 
		err = FT_Err_Cannot_Open_Resource;
 

	
 
	} while ((FT_Long)++index != (*face)->num_faces);
 
@@ -296,12 +298,18 @@ static int CALLBACK EnumFontCallback(con
 
		if ((fs.fsCsb[0] & info->locale.lsCsbSupported[0]) == 0 && (fs.fsCsb[1] & info->locale.lsCsbSupported[1]) == 0) return 1;
 
	}
 

	
 
	const char *font_name = GetEnglishFontName(logfont);
 
	DEBUG(freetype, 1, "Fallback font: %s", font_name);
 
	const char *english_name = GetEnglishFontName(logfont);
 
	const char *font_name = WIDE_TO_MB(logfont->elfFullName);
 
	DEBUG(freetype, 1, "Fallback font: %s (%s)", font_name, english_name);
 

	
 
	strecpy(info->settings->small_font,  font_name, lastof(info->settings->small_font));
 
	strecpy(info->settings->medium_font, font_name, lastof(info->settings->medium_font));
 
	strecpy(info->settings->large_font,  font_name, lastof(info->settings->large_font));
 

	
 
	/* Add english name after font name */
 
	strecpy(info->settings->small_font + strlen(info->settings->small_font) + 1, english_name, lastof(info->settings->small_font));
 
	strecpy(info->settings->medium_font + strlen(info->settings->medium_font) + 1, english_name, lastof(info->settings->medium_font));
 
	strecpy(info->settings->large_font + strlen(info->settings->large_font) + 1, english_name, lastof(info->settings->large_font));
 
	return 0; // stop enumerating
 
}
 

	
0 comments (0 inline, 0 general)