Currently, for certain box drawing characters, Konsole hardcode their shapes disregarding the font used. This has a few consequences: * When using a high quality font fine tweaked for use in a terminal, the quality becomes lower. The designer might have chosen better line widths, or different corner styles, which are all lost. * When using a high resolution screen, the pixel level line drawing done by Konsole produces unrecognizable characters. The problem worsens when double-line box drawing characters and bold font are involved. So I'm not asking to remove this line drawing feature, since it's still useful when one uses an inadequate terminal font. However, since nowadays high quality terminal fonts are much easier to come by, with all kinds of license from open source to free-of-charge to commercial, at least we should allow the user to use their box-drawing characters from their fonts. While this is a feature request, it's also a bug report, in the sense that the letter "╫", in bold style, is rendered insanely poorly, to the point that it's simply impossible to tell it's actually double vertical line and single horizontal line. Reproducible: Always Steps to Reproduce: Copy the following character to Konsole: "╫". For worse result, set the font to bold. For worse result, use a high resolution screen. Grab quality free fonts, and set them. You will find the shape of "╫" does not change. Actual Results: You will see the glyph "╫", always drawn with lines of width of exactly one pixel. If you set it to bold, the vertical lines becomes two pixels wide, and the gap between the two vertical lines completely disappears. if you use a high resolution screen, you might not be able to spot it's two vertical lines without a magnifier. When you resize the terminal fonts, the line width of "╫" does not change, causing style inconsistency with your console font. Expected Results: Since this is a feature request, I wish we could have an option to simply use the box drawing glyphs built in the console font I chose.
This should be fairly easy to implement: In TerminalDisplay.cpp, method TerminalDisplay::drawCharacters, there is a if-clause calling isLineCharString(text) to decide whether to draw something with built-in line drawing mechanism or to draw it with the chosen font. Probably one could add an option that forces one to draw with the chosen font there.
Created attachment 99796 [details] Screenshot showcasing worst-case scenario for the built-in line drawing mechanism The command was echo -e '╫\033[01m╫' and as you can see, one can barely see it's two lines, and it's impossible to tell it in bold style.
https://bugs.kde.org/show_bug.cgi?id=61637 is the original bug where the feature came from, Maksim noted that it didn't scale properly.
It's amazing to see some code written 11 years ago which fixes a bug reported 13 years ago can still work. However, as I have argued, the available fonts have changed, and the available screen resolutions have changed. Maybe it's time to revisit this patch.
I have code that does this - I'll see if I can get it in the next few days for the next release.
Git commit a4de3feb16df7f18559587ebf78f115d88acc022 by Kurt Hindenburg. Committed on 19/07/2016 at 01:34. Pushed by hindenburg into branch 'master'. Add option to use the selected font's line characters Konsole has builtin code to manually write out line characters. There are certain reasons why this might not be desired. This adds a profile option to use the fonts line characters. The default is as-is today using the builtin code. M +9 -0 src/EditProfileDialog.cpp M +1 -0 src/EditProfileDialog.h M +10 -0 src/EditProfileDialog.ui M +2 -0 src/Profile.cpp M +8 -0 src/Profile.h M +2 -1 src/TerminalDisplay.cpp M +16 -0 src/TerminalDisplay.h M +1 -0 src/ViewManager.cpp http://commits.kde.org/konsole/a4de3feb16df7f18559587ebf78f115d88acc022
Git commit e33355a4d0f57a27ca50270d74b23486fd3ddf2c by Kurt Hindenburg. Committed on 19/07/2016 at 01:37. Pushed by hindenburg into branch 'Applications/16.08'. Add option to use the selected font's line characters Konsole has builtin code to manually write out line characters. There are certain reasons why this might not be desired. This adds a profile option to use the fonts line characters. The default is as-is today using the builtin code. (cherry picked from commit a4de3feb16df7f18559587ebf78f115d88acc022) M +9 -0 src/EditProfileDialog.cpp M +1 -0 src/EditProfileDialog.h M +10 -0 src/EditProfileDialog.ui M +2 -0 src/Profile.cpp M +8 -0 src/Profile.h M +2 -1 src/TerminalDisplay.cpp M +16 -0 src/TerminalDisplay.h M +1 -0 src/ViewManager.cpp http://commits.kde.org/konsole/e33355a4d0f57a27ca50270d74b23486fd3ddf2c