Fix rendering of shadows when justify align is used

This commit is contained in:
Nyall Dawson 2021-11-30 14:47:22 +10:00
parent 423ef09f83
commit a05ecc3915
3 changed files with 16 additions and 0 deletions

View File

@ -1625,6 +1625,7 @@ void QgsTextRenderer::drawTextInternalHorizontal( QgsRenderContext &context, con
if ( !isFinalLineInParagraph && labelWidest > labelWidth )
{
calculateExtraSpacingForLineJustification( labelWidest - labelWidth, block, extraWordSpace, extraLetterSpace );
labelWidth = labelWidest;
}
break;

View File

@ -2459,6 +2459,21 @@ class PyQgsTextRenderer(unittest.TestCase):
format.shadow().setOffsetUnit(QgsUnitTypes.RenderMillimeters)
assert self.checkRender(format, 'shadow_color', QgsTextRenderer.Text, text=['test'])
def testDrawShadowWithJustifyAlign(self):
format = QgsTextFormat()
format.setFont(getTestFont('bold'))
format.setSize(30)
format.setSizeUnit(QgsUnitTypes.RenderPoints)
format.shadow().setEnabled(True)
format.shadow().setShadowPlacement(QgsTextShadowSettings.ShadowText)
format.shadow().setOpacity(0.5)
format.shadow().setBlurRadius(0)
format.shadow().setOffsetDistance(5)
format.shadow().setOffsetUnit(QgsUnitTypes.RenderMillimeters)
assert self.checkRender(format, 'text_justify_aligned_with_shadow',
text=['a t est', 'off', 'justification', 'align'],
alignment=QgsTextRenderer.AlignJustify, rect=QRectF(100, 100, 200, 100))
def testDrawShadowScale(self):
format = QgsTextFormat()
format.setFont(getTestFont('bold'))

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB