Hi everyone,in Qt 5.15 the QFont::ForceIntegerMetrics was deprecated and subsequently removed in Qt 6.
The rendering engine in Konsole, KDE’s terminal emulator, relies on the fact that every glyph in the monospace font is rendered at the same width, since sections of different style (e.g. search highlight, text selection, various escape sequence formattings, etc) are painted in different pases, basically positioned at charWidth * letterXPos.
With Qt 6, without this flag, the individual letters might be placed at fractional positions, so a long text run can end up short of what the renderer expects, leading to gaps in the rendering, see the attached screenshot where I selected some text which now makes a gap.
I have read into QFontEngine a bit and found that the general replacement is disabling use of “design metrics”. I changed the rendering to use QPainter::paint with a QTextOption disabling design metrics [1], which fixed the issue on my machine but apparently causes issues with other fonts again.
Many of us have tried to find a solution for this but haven’t, really, and it is a major showstopper for the Qt 6 adoption here. Any idea how to address this properly, short of rewriting the renderer that I assume has been like this for decades or perhaps some insights on what prompted the removal?
Cheers Kai Uwe [1] https://invent.kde.org/utilities/konsole/-/merge_requests/911
-- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development