diff --git a/specter/include/specter/FontCache.hpp b/specter/include/specter/FontCache.hpp index fe1f14e03..88155ca00 100644 --- a/specter/include/specter/FontCache.hpp +++ b/specter/include/specter/FontCache.hpp @@ -5,7 +5,6 @@ #include #include -#include #include #include #include @@ -66,7 +65,7 @@ public: } }; -using FCharFilter = std::pair>; +using FCharFilter = std::pair; class FontAtlas { FT_Face m_face; diff --git a/specter/lib/FontCache.cpp b/specter/lib/FontCache.cpp index c6ba42461..db491ec09 100644 --- a/specter/lib/FontCache.cpp +++ b/specter/lib/FontCache.cpp @@ -43,15 +43,16 @@ extern "C" const FT_Driver_ClassRec tt_driver_class; namespace specter { static logvisor::Module Log("specter::FontCache"); -const FCharFilter AllCharFilter = std::make_pair("all-glyphs", [](uint32_t) -> bool { return true; }); +const FCharFilter AllCharFilter{"all-glyphs", [](uint32_t) { return true; }}; -const FCharFilter LatinCharFilter = - std::make_pair("latin-glyphs", [](uint32_t c) -> bool { return c <= 0xff || ((c - 0x2200) <= (0x23FF - 0x2200)); }); +const FCharFilter LatinCharFilter{"latin-glyphs", + [](uint32_t c) { return c <= 0xff || (c - 0x2200) <= (0x23FF - 0x2200); }}; -const FCharFilter LatinAndJapaneseCharFilter = std::make_pair("latin-and-jp-glyphs", [](uint32_t c) -> bool { - return LatinCharFilter.second(c) || ((c - 0x2E00) <= (0x30FF - 0x2E00)) || ((c - 0x4E00) <= (0x9FFF - 0x4E00)) || - ((c - 0xFF00) <= (0xFFEF - 0xFF00)); -}); +const FCharFilter LatinAndJapaneseCharFilter{"latin-and-jp-glyphs", [](uint32_t c) { + return LatinCharFilter.second(c) || (c - 0x2E00) <= (0x30FF - 0x2E00) || + (c - 0x4E00) <= (0x9FFF - 0x4E00) || + (c - 0xFF00) <= (0xFFEF - 0xFF00); + }}; FontTag::FontTag(std::string_view name, bool subpixel, float points, uint32_t dpi) { XXH64_state_t st; @@ -628,10 +629,11 @@ FontTag FontCache::prepCustomFont(std::string_view name, FT_Face face, FCharFilt FT_Set_Char_Size(face, 0, points * 64.0, 0, dpi); /* Make tag and search for cached version */ - FontTag tag(std::string(name) + '_' + filter.first, subpixel, points, dpi); - auto search = m_cachedAtlases.find(tag); - if (search != m_cachedAtlases.end()) + const FontTag tag(std::string(name).append(1, '_').append(filter.first), subpixel, points, dpi); + const auto search = m_cachedAtlases.find(tag); + if (search != m_cachedAtlases.end()) { return tag; + } /* Now check filesystem cache */ hecl::SystemString cachePath = m_cacheRoot + _SYS_STR('/') + fmt::format(fmt(_SYS_STR("{}")), tag.hash());