diff --git a/src/duckstation-qt/gamelistwidget.cpp b/src/duckstation-qt/gamelistwidget.cpp index b31fdb400..014df329c 100644 --- a/src/duckstation-qt/gamelistwidget.cpp +++ b/src/duckstation-qt/gamelistwidget.cpp @@ -333,6 +333,7 @@ void GameListModel::createPlaceholderImage(QImage& image, const QImage& placehol { QFont font; font.setPixelSize(std::max(static_cast(64.0f * scale), 1)); + font.setFamilies(QtHost::GetRobotoFontFamilies()); painter.setFont(font); const int margin = static_cast(30.0f * scale); diff --git a/src/duckstation-qt/qthost.cpp b/src/duckstation-qt/qthost.cpp index 3d6a1ec22..3a2687a4e 100644 --- a/src/duckstation-qt/qthost.cpp +++ b/src/duckstation-qt/qthost.cpp @@ -141,6 +141,8 @@ struct State std::unique_ptr settings_save_timer; std::vector translators; QLocale app_locale; + std::once_flag roboto_font_once_flag; + QStringList roboto_font_families; bool batch_mode = false; bool nogui_mode = false; bool start_fullscreen_ui = false; @@ -2731,6 +2733,28 @@ std::string QtHost::GetResourcePath(std::string_view filename, bool allow_overri Path::Combine(EmuFolders::Resources, filename); } +const QStringList& QtHost::GetRobotoFontFamilies() +{ + std::call_once(s_state.roboto_font_once_flag, []() { + const int font_id = QFontDatabase::addApplicationFont( + QString::fromStdString(Path::Combine(EmuFolders::Resources, "fonts/Roboto-VariableFont_wdth,wght.ttf"))); + if (font_id < 0) + { + ERROR_LOG("Failed to load Roboto font."); + return; + } + + s_state.roboto_font_families = QFontDatabase::applicationFontFamilies(font_id); + if (s_state.roboto_font_families.isEmpty()) + { + ERROR_LOG("Failed to get Roboto font family."); + return; + } + }); + + return s_state.roboto_font_families; +} + bool Host::ResourceFileExists(std::string_view filename, bool allow_override) { const std::string path = QtHost::GetResourcePath(filename, allow_override); diff --git a/src/duckstation-qt/qthost.h b/src/duckstation-qt/qthost.h index d9c9f9140..b3ecca59e 100644 --- a/src/duckstation-qt/qthost.h +++ b/src/duckstation-qt/qthost.h @@ -379,6 +379,9 @@ QString GetResourcesBasePath(); /// Returns the path to the specified resource. std::string GetResourcePath(std::string_view name, bool allow_override); +/// Returns the font family for the bundled Roboto font. +const QStringList& GetRobotoFontFamilies(); + /// Returns the base settings interface. Should lock before manipulating. INISettingsInterface* GetBaseSettingsInterface();