From 9c2e31603e7b3bb865e8c58289911687753cd627 Mon Sep 17 00:00:00 2001 From: signedav Date: Tue, 7 Jan 2025 16:07:27 +0100 Subject: [PATCH] don't scale the char offset --- src/core/symbology/qgsmarkersymbollayer.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/symbology/qgsmarkersymbollayer.cpp b/src/core/symbology/qgsmarkersymbollayer.cpp index d38d33190adf..a83137cada79 100644 --- a/src/core/symbology/qgsmarkersymbollayer.cpp +++ b/src/core/symbology/qgsmarkersymbollayer.cpp @@ -3579,10 +3579,11 @@ void QgsFontMarkerSymbolLayer::startRender( QgsSymbolRenderContext &context ) mChrWidth = mFontMetrics->horizontalAdvance( mString ); double centerOfCharBound = mFontMetrics->boundingRect( mString.at( 0 ) ).bottom() - mFontMetrics->boundingRect( mString.at( 0 ) ).height() / 2.0; + switch ( mVerticalAnchorMode ) { case VerticalAnchorMode::Bounds: - mChrOffset = QPointF( mChrWidth / 2.0, centerOfCharBound / static_cast( mFontMetrics->ascent() ) * sizePixels ); + mChrOffset = QPointF( mChrWidth / 2.0, centerOfCharBound ); break; case VerticalAnchorMode::Baseline: mChrOffset = QPointF( mChrWidth / 2.0, -sizePixels / 2.0 ); @@ -3628,7 +3629,7 @@ QString QgsFontMarkerSymbolLayer::characterToRender( QgsSymbolRenderContext &con switch ( mVerticalAnchorMode ) { case VerticalAnchorMode::Bounds: - charOffset = QPointF( charWidth / 2.0, centerOfCharBound / static_cast( mFontMetrics->ascent() ) * sizePixels ); + charOffset = QPointF( charWidth / 2.0, centerOfCharBound ); break; case VerticalAnchorMode::Baseline: charOffset = QPointF( charWidth / 2.0, -sizePixels / 2.0 ); @@ -3807,10 +3808,8 @@ void QgsFontMarkerSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContex //if we use the bounds, the font metric boundings are used if ( mVerticalAnchorMode == VerticalAnchorMode::Bounds ) - { sizeToCalculateOffsets = mFontMetrics->boundingRect( mString.at( 0 ) ).height() / static_cast( mFontMetrics->ascent() ) * sizeToRender; - } bool hasDataDefinedRotation = false; QPointF offset; double angle = 0;