diff options
-rw-r--r-- | src/gui/painting/qpainter.cpp | 5 | ||||
-rw-r--r-- | src/gui/text/qtextlayout.cpp | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 7070e5732d..0cfe953e43 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -7498,8 +7498,11 @@ start_lengthVariant: l.setLineWidth(lineWidth); height += leading; + + // Make sure lines are positioned on whole pixels + height = qCeil(height); l.setPosition(QPointF(0., height)); - height += l.height(); + height += textLayout.engine()->lines[l.lineNumber()].height().toReal(); width = qMax(width, l.naturalTextWidth()); if (!dontclip && !brect && height >= r.height()) break; diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index a0a92897c5..0ca8e8d9a6 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -916,7 +916,7 @@ QRectF QTextLayout::boundingRect() const QFixed lineWidth = si.width < QFIXED_MAX ? qMax(si.width, si.textWidth) : si.textWidth; xmax = qMax(xmax, si.x+lineWidth); // ### shouldn't the ascent be used in ymin??? - ymax = qMax(ymax, si.y+si.height()); + ymax = qMax(ymax, si.y+si.height().ceil()); } return QRectF(xmin.toReal(), ymin.toReal(), (xmax-xmin).toReal(), (ymax-ymin).toReal()); } @@ -1466,7 +1466,7 @@ qreal QTextLine::descent() const */ qreal QTextLine::height() const { - return eng->lines[index].height().toReal(); + return eng->lines[index].height().ceil().toReal(); } /*! |