diff options
-rw-r--r-- | vcl/inc/qt5/Qt5Data.hxx | 1 | ||||
-rw-r--r-- | vcl/qt5/Qt5Graphics_Text.cxx | 36 |
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)) |