From 12dcfc191bc258b51f5d00f46ea44a6a1c6fda91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Thu, 28 Apr 2022 08:38:17 +0200 Subject: [PATCH] include LogicalFontInstance font scale in SalLayoutGlyphsCache key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For some reason it may differ even if vcl::Font is the same. Without this ScExportTest2::testTdf66668 fails. Change-Id: I728a0848ac0420ce0d746134c7072f6ab59f2761 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133537 Tested-by: Jenkins Reviewed-by: Luboš Luňák --- include/vcl/glyphitemcache.hxx | 2 ++ include/vcl/outdev.hxx | 3 ++- vcl/source/gdi/impglyphitem.cxx | 15 +++++++++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/vcl/glyphitemcache.hxx b/include/vcl/glyphitemcache.hxx index ab9ad877059a..ea6d9fca7ffb 100644 --- a/include/vcl/glyphitemcache.hxx +++ b/include/vcl/glyphitemcache.hxx @@ -71,6 +71,8 @@ private: tools::Long logicWidth; VclPtr outputDevice; vcl::Font font; + double fontScaleX; + double fontScaleY; MapMode mapMode; bool rtl; vcl::text::ComplexTextLayoutFlags layoutMode; diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index bf4985622fad..ea14e3d018b7 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -1192,8 +1192,9 @@ public: //If bNewFontLists is true then drop and refetch lists of system fonts SAL_DLLPRIVATE static void ImplUpdateAllFontData( bool bNewFontLists ); -protected: SAL_DLLPRIVATE const LogicalFontInstance* GetFontInstance() const; + +protected: SAL_DLLPRIVATE tools::Long GetEmphasisAscent() const { return mnEmphasisAscent; } SAL_DLLPRIVATE tools::Long GetEmphasisDescent() const { return mnEmphasisDescent; } diff --git a/vcl/source/gdi/impglyphitem.cxx b/vcl/source/gdi/impglyphitem.cxx index 09acbae46150..93f70a853a74 100644 --- a/vcl/source/gdi/impglyphitem.cxx +++ b/vcl/source/gdi/impglyphitem.cxx @@ -364,6 +364,9 @@ SalLayoutGlyphsCache::CachedGlyphsKey::CachedGlyphsKey(const VclPtrGetLayoutMode()) , digitLanguage(outputDevice->GetDigitLanguage()) { + const LogicalFontInstance* fi = outputDevice->GetFontInstance(); + fi->GetScale(&fontScaleX, &fontScaleY); + hashValue = 0; o3tl::hash_combine(hashValue, vcl::text::FirstCharsStringHash()(text)); o3tl::hash_combine(hashValue, index); @@ -371,7 +374,13 @@ SalLayoutGlyphsCache::CachedGlyphsKey::CachedGlyphsKey(const VclPtr