summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/qt5/Qt5Data.hxx1
-rw-r--r--vcl/qt5/Qt5Graphics_Text.cxx36
2 files changed, 26 insertions, 11 deletions
diff --git a/vcl/inc/qt5/Qt5Data.hxx b/vcl/inc/qt5/Qt5Data.hxx
index 6f64925cb2f5..ef537d0c040f 100644
--- a/vcl/inc/qt5/Qt5Data.hxx
+++ b/vcl/inc/qt5/Qt5Data.hxx
@@ -26,7 +26,6 @@
#include <memory>
#include <vclpluginapi.h>
-class GlyphCache;
class QCursor;
class VCLPLUG_QT5_PUBLIC Qt5Data : public GenericUnixSalData
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index 81302a86b233..53f12b8b4401 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -26,6 +26,8 @@
#include <vcl/fontcharmap.hxx>
#include <unx/geninst.h>
#include <unx/fontmanager.hxx>
+#include <unx/glyphcache.hxx>
+#include <unx/genpspgraphics.h>
#include <sallayout.hxx>
#include <PhysicalFontCollection.hxx>
@@ -96,19 +98,32 @@ void Qt5Graphics::GetDevFontList(PhysicalFontCollection* pPFC)
return;
QFontDatabase aFDB;
-
+ QStringList aFontFamilyList;
if (bUseFontconfig)
+ aFontFamilyList = aFDB.families();
+ GlyphCache& rGC = GlyphCache::GetInstance();
+ psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+ ::std::vector<psp::fontID> aList;
+ psp::FastPrintFontInfo aInfo;
+
+ rMgr.getFontList(aList);
+ for (auto const& elem : aList)
{
- const QStringList aFontFamilyList = aFDB.families();
- ::std::vector<psp::fontID> aList;
- psp::FastPrintFontInfo aInfo;
+ if (!rMgr.getFontFastInfo(elem, aInfo))
+ continue;
+
+ // normalize face number to the GlyphCache
+ int nFaceNum = rMgr.getFontFaceNumber(aInfo.m_nID);
+
+ // inform GlyphCache about this font provided by the PsPrint subsystem
+ FontAttributes aDFA = GenPspGraphics::Info2FontAttributes(aInfo);
+ aDFA.IncreaseQualityBy(4096);
+ const OString& rFileName = rMgr.getFontFileSysPath(aInfo.m_nID);
+ rGC.AddFontFile(rFileName, nFaceNum, aInfo.m_nID, aDFA);
- psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
- rMgr.getFontList(aList);
- for (auto const& elem : aList)
+ // register font files unknown to Qt
+ if (bUseFontconfig)
{
- if (!rMgr.getFontFastInfo(elem, aInfo))
- continue;
QString aFilename = toQString(
OStringToOUString(rMgr.getFontFileSysPath(aInfo.m_nID), RTL_TEXTENCODING_UTF8));
QRawFont aRawFont(aFilename, 0.0);
@@ -117,9 +132,10 @@ void Qt5Graphics::GetDevFontList(PhysicalFontCollection* pPFC)
|| !aFDB.styles(aFamilyName).contains(aRawFont.styleName()))
QFontDatabase::addApplicationFont(aFilename);
}
+ }
+ if (bUseFontconfig)
SalGenericInstance::RegisterFontSubstitutors(pPFC);
- }
for (auto& family : aFDB.families())
for (auto& style : aFDB.styles(family))