setQPainterPen(computeColor(f.realColor()));
if (dir != Auto) {
auto ptl = fm.getTextLayout(s, dir == RtL, wordspacing);
- ptl->draw(this, QPointF(x, y - fm.maxAscent()));
+ QTextLine const & tline = ptl->lineForTextPosition(0);
+ ptl->draw(this, QPointF(x, y - tline.ascent()));
} else {
if (font() != ff)
setFont(ff);
int const height = fm.maxAscent() + fm.maxDescent();
int xmin = fm.pos2x(str, from, dir == RtL, wordspacing);
int xmax = fm.pos2x(str, to, dir == RtL, wordspacing);
- if (xmin > xmax)
+ // Avoid this case, since it would make the `other' text spill in some cases
+ if (xmin == xmax) {
+ text(x, y, str, fi, dir, wordspacing, tw);
+ return;
+ } else if (xmin > xmax)
swap(xmin, xmax);
// First the part in other color