Bug 442742 - Second character of `filename.mp4` clipped when printing `exa --icons` and selected text appears shifted
Summary: Second character of `filename.mp4` clipped when printing `exa --icons` and se...
Status: RESOLVED FIXED
Alias: None
Product: konsole
Classification: Applications
Component: font (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Konsole Developer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-20 14:53 UTC by postix
Modified: 2022-08-27 01:11 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Screenrecording (286.43 KB, video/x-matroska)
2021-09-20 14:53 UTC, postix
Details

Note You need to log in before you can comment on or make changes to this bug.
Description postix 2021-09-20 14:53:12 UTC
Created attachment 141732 [details]
Screenrecording

SUMMARY

The second character of the filename is only partly printed when using `exa --icons`.
When the filename string is selected, the all characters appear correctly rendered but at shifted positions compared to the underlying text.

Please see the screen recording


STEPS TO REPRODUCE
1. touch 12.mp3 12a.mp4 12ab.mp4
2. exa --icons

OBSERVED RESULT
(video icon) 12.mp4
              ^ partly rendered only


EXPECTED RESULT
Everything is rendered correctly as expected and selected text appears at the same spot as the underlying text.


SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20210916
KDE Plasma Version: 5.22.5
KDE Frameworks Version: 5.86.0
Qt Version: 5.15.2
Kernel Version: 5.14.2-1-default (64-bit)
Graphics Platform: X11
Comment 1 postix 2021-09-20 14:54:52 UTC
> When the filename string is selected, the[n] all characters appear correctly rendered but at shifted positions compared to the underlying text.

I have to correct that remark: The string appears correctly until the while filename including the unicode icon is selected. In that case it suffers the same issue as the non-selected filename text.
Comment 2 postix 2021-09-22 11:03:59 UTC
I use the Fish shell and the font Hack 9pt. It does not happen in the Bash.
Comment 3 Bug Janitor Service 2022-08-06 18:51:48 UTC
A possibly relevant merge request was started @ https://invent.kde.org/utilities/konsole/-/merge_requests/722
Comment 4 Kurt Hindenburg 2022-08-27 01:11:12 UTC
Git commit 76f879cd70fb494ab2334d2660b34679546f3d9d by Kurt Hindenburg, on behalf of Matan Ziv-Av.
Committed on 26/08/2022 at 19:24.
Pushed by hindenburg into branch 'master'.

Draw characters in exact positions

QT can't be made to draw monospaced text (if the font does not cooperate),
so avoid combining characters, using a QPainter::drawText() call for each
character.

For bidi text support this change requires konsole to reorder and reshape
the characters. This is done using the ICU library (which QT also uses).

This change allows for some improvements related to text rendering:

- More precise bidi reordering, which is no longer changed by characters'
  attributes and selection.
- underlines drawn separately from the text, allowing for differing
  underline modes (double, curly, dashed, dotted, colored).
- Overriding font for emoji characters.

This commit fixes a few bugs and addresses a lot more:

Feature requests: More standard conforming RTL and various underlines:
Related: bug 403729, bug 387811, bug 416508, bug 452087, bug 425973, bug 430822, bug 441037, bug 430822, bug 440070, bug 450017, bug 445846, bug 453086, bug 381593, bug 451716

Using non-monospace font:



Emoji:

Regression: devanagari rendering

M  +2    -0    CMakeLists.txt
M  +1    -0    src/CMakeLists.txt
M  +47   -25   src/FontDialog.cpp
M  +2    -1    src/FontDialog.h
M  +127  -23   src/Screen.cpp
M  +18   -5    src/Screen.h
M  +28   -13   src/Vt102Emulation.cpp
M  +0    -29   src/autotests/CharacterTest.cpp
M  +0    -1    src/autotests/CharacterTest.h
M  +1    -1    src/autotests/TerminalCharacterDecoderTest.cpp
M  +119  -29   src/characters/Character.h
M  +1    -1    src/characters/Hangul.cpp
M  +5    -4    src/decoders/HTMLDecoder.cpp
M  +1    -1    src/decoders/PlainTextDecoder.cpp
M  +3    -0    src/profile/Profile.cpp
M  +29   -0    src/profile/Profile.h
M  +101  -6    src/terminalDisplay/TerminalDisplay.cpp
M  +7    -0    src/terminalDisplay/TerminalDisplay.h
M  +42   -0    src/terminalDisplay/TerminalFonts.cpp
M  +12   -0    src/terminalDisplay/TerminalFonts.h
M  +542  -269  src/terminalDisplay/TerminalPainter.cpp
M  +40   -13   src/terminalDisplay/TerminalPainter.h
M  +2    -0    src/widgets/EditProfileAdvancedPage.ui
M  +113  -3    src/widgets/EditProfileAppearancePage.ui
M  +61   -3    src/widgets/EditProfileDialog.cpp
M  +6    -1    src/widgets/EditProfileDialog.h

https://invent.kde.org/utilities/konsole/commit/76f879cd70fb494ab2334d2660b34679546f3d9d