Set fontconfig environment in Linux

This commit is contained in:
Dan Paulat 2023-10-09 22:40:53 -05:00
parent 4916dfe85a
commit 3a754c01c5

View file

@ -1,6 +1,7 @@
#include <scwx/qt/manager/font_manager.hpp> #include <scwx/qt/manager/font_manager.hpp>
#include <scwx/qt/manager/settings_manager.hpp> #include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/qt/settings/text_settings.hpp> #include <scwx/qt/settings/text_settings.hpp>
#include <scwx/util/environment.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <filesystem> #include <filesystem>
@ -50,6 +51,7 @@ class FontManager::Impl
public: public:
explicit Impl(FontManager* self) : self_ {self} explicit Impl(FontManager* self) : self_ {self}
{ {
InitializeEnvironment();
InitializeFontCache(); InitializeFontCache();
InitializeFontconfig(); InitializeFontconfig();
ConnectSignals(); ConnectSignals();
@ -58,6 +60,7 @@ public:
void ConnectSignals(); void ConnectSignals();
void FinalizeFontconfig(); void FinalizeFontconfig();
void InitializeEnvironment();
void InitializeFontCache(); void InitializeFontCache();
void InitializeFontconfig(); void InitializeFontconfig();
void UpdateImGuiFont(types::FontCategory fontCategory); 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() void FontManager::Impl::InitializeFontCache()
{ {
std::string cachePath { std::string cachePath {