Summary: | Curly and colored underlines | ||
---|---|---|---|
Product: | [Applications] konsole | Reporter: | Egmont Koblinger <egmont> |
Component: | emulation | Assignee: | Konsole Developer <konsole-devel> |
Status: | RESOLVED FIXED | ||
Severity: | wishlist | CC: | dwt, lilydjwg, liu.qihuan, matan, migtex2, pfyu817, textshell, uwu |
Priority: | NOR | ||
Version: | 22.04.1 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/utilities/konsole/commit/76f879cd70fb494ab2334d2660b34679546f3d9d | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: |
Comparison
screenshot of test script |
Description
Egmont Koblinger
2017-12-11 23:20:02 UTC
(As per https://github.com/kovidgoyal/kitty/issues/226#issuecomment-381665023, mintty decided that 4:4 is dotted underline, and 4:5 is dashed.) Created attachment 150154 [details]
Comparison
(In reply to migtex from comment #2) > Created attachment 150154 [details] > Comparison Can you tell which program is used for those tests? Sorry i should have linked the sauce the first time... I've lost the reference, the reference on the code is not correct and this was still stored in my pc. The credit for this is not mine Here it is: #!/bin/sh echo "# 24-bit (true-color)" # based on: https://gist.github.com/XVilka/8346728 term_cols="$(tput cols || echo 80)" cols=$(echo "2^((l($term_cols)/l(2))-1)" | bc -l 2> /dev/null) rows=$(( cols / 2 )) awk -v cols="$cols" -v rows="$rows" 'BEGIN{ s=" "; m=cols+rows; for (row = 0; row<rows; row++) { for (col = 0; col<cols; col++) { i = row+col; r = 255-(i*255/m); g = (i*510/m); b = (i*255/m); if (g>255) g = 510-g; printf "\033[48;2;%d;%d;%dm", r,g,b; printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b; printf "%s\033[0m", substr(s,(col+row)%2+1,1); } printf "\n"; } printf "\n\n"; }' echo "# text decorations" printf '\e[1mbold\e[22m\n' printf '\e[2mdim\e[22m\n' printf '\e[3mitalic\e[23m\n' printf '\e[4munderline\e[24m\n' printf '\e[4:1mthis is also underline\e[24m\n' printf '\e[21mdouble underline\e[24m\n' printf '\e[4:2mthis is also double underline\e[24m\n' printf '\e[4:3mcurly underline\e[24m\n' printf '\e[58;5;10;4mcolored underline\e[59;24m\n' printf '\e[5mblink\e[25m\n' printf '\e[7mreverse\e[27m\n' printf '\e[8minvisible\e[28m <- invisible (but copy-pasteable)\n' printf '\e[9mstrikethrough\e[29m\n' printf '\e[53moverline\e[55m\n' echo echo "# magic string (see https://en.wikipedia.org/wiki/Unicode#Web)" echo "é Δ Й ק م ๗ あ 叶 葉 말" echo echo "# emojis" echo "" echo echo "# right-to-left ('w' symbol should be at right side)" echo "שרה" echo echo "# sixel graphics" printf '\eP0;0;0q"1;1;64;64#0;2;0;0;0#1;2;100;100;100#1~{wo_!11?@FN^!34~^NB @?_ow{~$#0?BFN^!11~}wo_!34?_o{}~^NFB-#1!5~}{o_!12?BF^!25~^NB@??ow{!6~$#0!5? @BN^!12~{w_!25?_o{}~~NFB-#1!10~}w_!12?@BN^!15~^NFB@?_w{}!10~$#0!10?@F^!12~} {o_!15?_ow{}~^FB@-#1!14~}{o_!11?@BF^!7~^FB??_ow}!15~$#0!14?@BN^!11~}{w_!7?_ w{~~^NF@-#1!18~}{wo!11?_r^FB@??ow}!20~$#0!18?@BFN!11~^K_w{}~~NF@-#1!23~M!4? _oWMF@!6?BN^!21~$#0!23?p!4~^Nfpw}!6~{o_-#1!18~^NB@?_ow{}~wo!12?@BFN!17~$#0! 18?_o{}~^NFB@?FN!12~}{wo-#1!13~^NB@??_w{}!9~}{w_!12?BFN^!12~$#0!13?_o{}~~^F B@!9?@BF^!12~{wo_-#1!8~^NFB@?_w{}!19~{wo_!11?@BN^!8~$#0!8?_ow{}~^FB@!19?BFN ^!11~}{o_-#1!4~^NB@?_ow{!28~}{o_!12?BF^!4~$#0!4?_o{}~^NFB!28?@BN^!12~{w_-#1 NB@???GM!38NMG!13?@BN$#0?KMNNNF@!38?@F!13NMK-\e\' Created attachment 150670 [details]
screenshot of test script
Thanks. This is how it (with some changes) looks in my branch. Hopefully in 22.12.
A possibly relevant merge request was started @ https://invent.kde.org/utilities/konsole/-/merge_requests/722 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 416508, bug 452087, bug 425973, bug 430822, bug 442742, 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 |