lxqt / qterminal

A lightweight Qt-based terminal emulator
https://lxqt.github.io
GNU General Public License v2.0
611 stars 153 forks source link

Visual problem when part of a string containing '⧸' (U+29F8) is selected #1186

Open DrinkDregs opened 2 hours ago

DrinkDregs commented 2 hours ago

[The original report is now invisible to anyone other than me when I'm signed in.]

I've found some other characters that cause the problem:

ร ว ว เ ส ย ง

There must be many others.

tsujan commented 2 hours ago

[The original report is now invisible to anyone other than me when I'm signed in.]

Thanks for adding it again.

I add your comment in the previous report that mysteriously vanished:

"When selecting a name that contains a '⧸', the whole string moves to the right and a space inserted to the right or left of the selection for every '⧸' selected."

I also add my comments in that report :

This may not be an issue in QTerminal, because characters like "U+29F8" contradict the monospace property (= fixed-width).

It happens in Konsole too, but in a worse way.

tsujan commented 44 minutes ago

XTerm cheats but adding a margin after such characters to make them like fixed-width characters, while we use QPainter::drawText(), which draws the text as it is, and then the problem arises because the width is smaller than what it should be.

This screenshot shows xterm on the top and QTerminal below it:

xterm

QTerminal (actually, QPainter::drawText) draws the text correctly (it's aabb⧸aabb⧸aabb⧸aabb⧸aabb), but we don't want that in this case.

A workaround may be to use our own version of QPainter::drawText(), but that isn't easy, if possible at all.

EDIT: gnome-terminal cheats exactly in the same way.