[Libreoffice-commits] core.git: drawinglayer/source
Aron Budea (via logerrit)
logerrit at kemper.freedesktop.org
Thu Nov 12 20:44:47 UTC 2020
drawinglayer/source/primitive2d/textlayoutdevice.cxx | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
New commits:
commit 5db34391ebf7a51d26196f3fe28f3d9327ea2eb6
Author: Aron Budea <aron.budea at collabora.com>
AuthorDate: Thu Nov 12 07:02:57 2020 +0100
Commit: Aron Budea <aron.budea at collabora.com>
CommitDate: Thu Nov 12 21:43:54 2020 +0100
Revert "tdf#127471 Remove font width scaling hack"
This reverts commit 8891a2fc2a4bf86add68691b7ac167a07a8add84.
Reason: Causes regression, tdf#136891
Revert #2 "-Werror,-Wunused-variable (clang-cl)"
This reverts commit a879b15d59618e73797ad779666f72cd040ff99a.
Reason: Variables are necessary for the other revert.
Change-Id: Ic1c3efe22f5c069f666ea6ba3193612cb44203ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105620
Tested-by: Jenkins
Reviewed-by: Aron Budea <aron.budea at collabora.com>
diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
index 2820ebfbc03d..43afce5d0f1e 100644
--- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx
+++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
@@ -394,6 +394,8 @@ namespace drawinglayer::primitive2d
{
// detect FontScaling
const sal_uInt32 nHeight(basegfx::fround(fabs(fFontScaleY)));
+ const sal_uInt32 nWidth(basegfx::fround(fabs(fFontScaleX)));
+ const bool bFontIsScaled(nHeight != nWidth);
#ifdef _WIN32
// for WIN32 systems, start with creating an unscaled font. If FontScaling
@@ -403,15 +405,12 @@ namespace drawinglayer::primitive2d
rFontAttribute.getFamilyName(),
rFontAttribute.getStyleName(),
Size(0, nHeight));
- (void)fFontScaleX;
#else
// for non-WIN32 systems things are easier since these accept a Font creation
// with initially nWidth != nHeight for FontScaling. Despite that, use zero for
// FontWidth when no scaling is used to explicitly have that zero when e.g. the
// Font would be recorded in a MetaFile (The MetaFile FontAction WILL record a
// set FontWidth; import that in a WIN32 system, and trouble is there)
- const sal_uInt32 nWidth(basegfx::fround(fabs(fFontScaleX)));
- const bool bFontIsScaled(nHeight != nWidth);
vcl::Font aRetval(
rFontAttribute.getFamilyName(),
rFontAttribute.getStyleName(),
@@ -427,6 +426,20 @@ namespace drawinglayer::primitive2d
aRetval.SetPitch(rFontAttribute.getMonospaced() ? PITCH_FIXED : PITCH_VARIABLE);
aRetval.SetLanguage(LanguageTag::convertToLanguageType( rLocale, false));
+#ifdef _WIN32
+ // for WIN32 systems, correct the FontWidth if FontScaling is used
+ if(bFontIsScaled && nHeight > 0)
+ {
+ const FontMetric aUnscaledFontMetric(Application::GetDefaultDevice()->GetFontMetric(aRetval));
+
+ if(aUnscaledFontMetric.GetAverageFontWidth() > 0)
+ {
+ const double fScaleFactor(static_cast<double>(nWidth) / static_cast<double>(nHeight));
+ const sal_uInt32 nScaledWidth(basegfx::fround(static_cast<double>(aUnscaledFontMetric.GetAverageFontWidth()) * fScaleFactor));
+ aRetval.SetAverageFontWidth(nScaledWidth);
+ }
+ }
+#endif
// handle FontRotation (if defined)
if(!basegfx::fTools::equalZero(fFontRotation))
{
More information about the Libreoffice-commits
mailing list