#include "FontData.hpp" #include #include #include #include #include #ifdef __EMSCRIPTEN__ #elif _WIN32 #include #elif __APPLE__ #include #elif __linux__ #include #include #endif FontData::FontData() { #ifdef __EMSCRIPTEN__ localFontMgr = SkFontMgr_New_Custom_Empty(); #elif _WIN32 localFontMgr = SkFontMgr_New_GDI(); #elif __APPLE__ localFontMgr = SkFontMgr_New_Custom_Empty(); #elif __linux__ localFontMgr = SkFontMgr_New_FontConfig(nullptr, SkFontScanner_Make_FreeType()); #else localFontMgr = SkFontMgr_New_Custom_Empty(); #endif defaultFontMgr = SkFontMgr_New_Custom_Directory("data/fonts"); map["Roboto"] = defaultFontMgr->makeFromFile("data/fonts/Roboto-variable.ttf"); collection = sk_make_sp(); collection->setDefaultFontManager(defaultFontMgr, {SkString{"Roboto"}}); collection->setDynamicFontManager(localFontMgr); } FontData::~FontData() { } Vector2f get_str_font_bounds(const SkFont& font, const std::string& str) { SkFontMetrics metrics; font.getMetrics(&metrics); float nextText = font.measureText(str.data(), str.length(), SkTextEncoding::kUTF8, nullptr); return Vector2f{nextText, - metrics.fAscent + metrics.fDescent}; }