diff --git a/src/fontcache.cpp b/src/fontcache.cpp index bcb9364994..93c3f01b26 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -65,9 +65,14 @@ int GetCharacterHeight(FontSize size) } -/* static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) }; - +/* static */ FontCache *FontCache::caches[FS_END]; +/* static */ void FontCache::InitializeFontCaches() +{ + for (FontSize fs = FS_BEGIN; fs != FS_END; fs++) { + if (FontCache::caches[fs] == nullptr) new SpriteFontCache(fs); /* FontCache inserts itself into to the cache. */ + } +} /* Check if a glyph should be rendered with anti-aliasing. */ bool GetFontAAState(FontSize size, bool check_blitter) @@ -136,6 +141,8 @@ extern void LoadCoreTextFont(FontSize fs); */ void InitFontCache(bool monospace) { + FontCache::InitializeFontCaches(); + for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { if (monospace != (fs == FS_MONO)) continue; diff --git a/src/fontcache.h b/src/fontcache.h index efc1496304..3241723f76 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -33,6 +33,8 @@ public: FontCache(FontSize fs); virtual ~FontCache(); + static void InitializeFontCaches(); + static int GetDefaultFontHeight(FontSize fs); /**