summaryrefslogtreecommitdiff
path: root/vcl/qt5/Qt5Graphics_Text.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/qt5/Qt5Graphics_Text.cxx')
-rw-r--r--vcl/qt5/Qt5Graphics_Text.cxx24
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))
{