diff --git a/src/Magnum/Text/Renderer.cpp b/src/Magnum/Text/Renderer.cpp index 2a927004c..b14feaa52 100644 --- a/src/Magnum/Text/Renderer.cpp +++ b/src/Magnum/Text/Renderer.cpp @@ -1550,7 +1550,8 @@ Range2D alignRenderedLine(const Range2D& lineRectangle, const LayoutDirection di Float alignmentOffsetX; if((UnsignedByte(alignment) & Implementation::AlignmentHorizontal) == Implementation::AlignmentLeft) - alignmentOffsetX = -lineRectangle.left(); + alignmentOffsetX = UnsignedByte(alignment) & Implementation::AlignmentGlyphBounds ? + -lineRectangle.left() : 0.0f; else if((UnsignedByte(alignment) & Implementation::AlignmentHorizontal) == Implementation::AlignmentCenter) { alignmentOffsetX = -lineRectangle.centerX(); /* Integer alignment */ diff --git a/src/Magnum/Text/Test/RendererTest.cpp b/src/Magnum/Text/Test/RendererTest.cpp index 86d7f80d5..5e341ab45 100644 --- a/src/Magnum/Text/Test/RendererTest.cpp +++ b/src/Magnum/Text/Test/RendererTest.cpp @@ -172,13 +172,19 @@ const struct { Alignment alignment; Float offset; } AlignLineData[]{ - /* The vertical alignment and GlyphBounds has no effect here */ - /* Left is the default (0) value, thus should result in no shift */ - {"left", Alignment::BottomLeft, -10.0f}, - {"right", Alignment::LineRightGlyphBounds, -13.5f}, + /* The vertical alignment has no effect here, GlyphBounds only has an + effect on left alignment */ + /* Left is the default (0) value, thus should result in no shift unless + glyph bounds alignment is explicitly requested, in which case the glyph + offset is subtracted */ + {"left", Alignment::BottomLeft, 0.0f}, + {"left, glyph bounds", Alignment::BottomLeftGlyphBounds, -10.0f}, + {"right", Alignment::LineRight, -13.5f}, + {"right, glyph bounds", Alignment::LineRightGlyphBounds, -13.5f}, /* Integral should be handled only for Center */ - {"right, integral", Alignment::MiddleRightGlyphBoundsIntegral, -13.5f}, + {"right, integral", Alignment::MiddleRightIntegral, -13.5f}, {"center", Alignment::TopCenter, -11.75f}, + {"center, glyph bounds", Alignment::TopCenterGlyphBounds, -11.75f}, {"center, integral", Alignment::TopCenterIntegral, -12.0f}, };