Fix vertical offset of fonts like MinionPro

For some reason, adding a LTR/RTL Override unicode character before a
MinionPro string increases the ascent of the line.

This creates vertical offset issues when painting if the ascent used
as reference is the one of the font. Use the QTextLine ascent instead
for better results.

This is a followup to 1bed76e2a.

Fixes (reopened) ticket #11284.
Fixes ticket #10532.
Fixes ticket #10767.

(cherry picked from commit d8498d4785)
This commit is contained in:
Jean-Marc Lasgouttes 2019-01-03 12:14:27 +01:00
parent 08100f8b02
commit e73c0d6387
2 changed files with 6 additions and 5 deletions

View File

@ -455,11 +455,10 @@ void GuiPainter::text(int x, int y, docstring const & s,
// don't use the pixmap cache
setQPainterPen(computeColor(f.realColor()));
if (dir != Auto) {
shared_ptr<QTextLayout const> ptl =
fm.getTextLayout(s, dir == RtL, wordspacing);
ptl->draw(this, QPointF(x, y - fm.maxAscent()));
}
else {
auto ptl = fm.getTextLayout(s, dir == RtL, wordspacing);
QTextLine const & tline = ptl->lineForTextPosition(0);
ptl->draw(this, QPointF(x, y - tline.ascent()));
} else {
if (font() != ff)
setFont(ff);
drawText(x, y, str);

View File

@ -115,6 +115,8 @@ What's new
- Fix document updating issues with split view (bug 11354).
- Fix cases where text is offset vertically (bug 10532, 10767).
* INTERNALS