From 3a754c01c5a0504b8f72b361d708b8568b3186b5 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Mon, 9 Oct 2023 22:40:53 -0500 Subject: [PATCH] Set fontconfig environment in Linux --- .../source/scwx/qt/manager/font_manager.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scwx-qt/source/scwx/qt/manager/font_manager.cpp b/scwx-qt/source/scwx/qt/manager/font_manager.cpp index 2747fd4d..e7266a84 100644 --- a/scwx-qt/source/scwx/qt/manager/font_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/font_manager.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -50,6 +51,7 @@ class FontManager::Impl public: explicit Impl(FontManager* self) : self_ {self} { + InitializeEnvironment(); InitializeFontCache(); InitializeFontconfig(); ConnectSignals(); @@ -58,6 +60,7 @@ public: void ConnectSignals(); void FinalizeFontconfig(); + void InitializeEnvironment(); void InitializeFontCache(); void InitializeFontconfig(); void UpdateImGuiFont(types::FontCategory fontCategory); @@ -385,6 +388,21 @@ void FontManager::LoadApplicationFont(types::Font font, } } +void FontManager::Impl::InitializeEnvironment() +{ +#if defined(__linux__) + // Because of the way Fontconfig is built with Conan, FONTCONFIG_PATH must be + // defined on Linux to ensure fonts can be found + static const std::string kFontconfigPathKey {"FONTCONFIG_PATH"}; + + std::string fontconfigPath = scwx::util::GetEnvironment(kFontconfigPathKey); + if (fontconfigPath.empty()) + { + scwx::util::SetEnvironment(kFontconfigPathKey, "/etc/fonts"); + } +#endif +} + void FontManager::Impl::InitializeFontCache() { std::string cachePath {