diff options
Diffstat (limited to 'vcl/qt5/Qt5Graphics_Text.cxx')
-rw-r--r-- | vcl/qt5/Qt5Graphics_Text.cxx | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx index 282432214589..92e9a416d74a 100644 --- a/vcl/qt5/Qt5Graphics_Text.cxx +++ b/vcl/qt5/Qt5Graphics_Text.cxx @@ -23,6 +23,8 @@ #include <Qt5Painter.hxx> #include <vcl/fontcharmap.hxx> +#include <unx/geninst.h> +#include <unx/fontmanager.hxx> #include <sallayout.hxx> #include <PhysicalFontCollection.hxx> @@ -89,11 +91,33 @@ bool Qt5Graphics::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) void Qt5Graphics::GetDevFontList(PhysicalFontCollection* pPFC) { + static const bool bUseFontconfig = (nullptr == getenv("SAL_VCL_QT5_NO_FONTCONFIG")); + m_pFontCollection = pPFC; if (pPFC->Count()) return; QFontDatabase aFDB; + + if (bUseFontconfig) + { + ::std::vector<psp::fontID> aList; + psp::FastPrintFontInfo aInfo; + + psp::PrintFontManager& rMgr = psp::PrintFontManager::get(); + rMgr.getFontList(aList); + for (auto const& elem : aList) + { + if (!rMgr.getFontFastInfo(elem, aInfo)) + continue; + QString aFilename = toQString( + OStringToOUString(rMgr.getFontFileSysPath(aInfo.m_nID), RTL_TEXTENCODING_UTF8)); + aFDB.addApplicationFont(aFilename); + } + + SalGenericInstance::RegisterFontSubstitutors(pPFC); + } + for (auto& family : aFDB.families()) for (auto& style : aFDB.styles(family)) { |