From fea78fbfbb2bfe5c6ddf90adb811eb60f4ecfc50 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 24 Nov 2008 18:53:17 +0000 Subject: (svn r14618) -Feature: when the chosen language isn't supported by the current font, try to find a font that does and use that instead. Thanks to glx/michi_cc for the Windows implementation. --- src/fontcache.h | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/fontcache.h') diff --git a/src/fontcache.h b/src/fontcache.h index bf32c2927..e72fc8225 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -19,9 +19,9 @@ void InitializeUnicodeGlyphMap(); #ifdef WITH_FREETYPE struct FreeTypeSettings { - char small_font[260]; - char medium_font[260]; - char large_font[260]; + char small_font[MAX_PATH]; + char medium_font[MAX_PATH]; + char large_font[MAX_PATH]; uint small_size; uint medium_size; uint large_size; @@ -33,13 +33,26 @@ struct FreeTypeSettings { extern FreeTypeSettings _freetype; void InitFreeType(); +void UninitFreeType(); const struct Sprite *GetGlyph(FontSize size, uint32 key); uint GetGlyphWidth(FontSize size, uint32 key); +/** + * We would like to have a fallback font as the current one + * doesn't contain all characters we need. + * This function must set all fonts of settings. + * @param settings the settings to overwrite the fontname of. + * @param language_isocode the language, e.g. en_GB. + * @param winlangid the language ID windows style. + * @return true if a font has been set, false otherwise. + */ +bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid); + #else /* Stub for initializiation */ static inline void InitFreeType() {} +static inline void UninitFreeType() {} /** Get the Sprite for a glyph */ static inline const Sprite *GetGlyph(FontSize size, uint32 key) -- cgit v1.2.3-54-g00ecf