Improve built-in line/block characters drawing
Summary:
- Fix bold lines (BUG 402415).
- Make drawing pixel-perfect.
- Make line width proportional to font size.
- Move relevant code to separate file and namespace.
- Remove code for checking supported line characters from Character class. Information about what is supported is now in one place together width drawing code.
- Remove fontembedder/LineFont files (no longer used).
- Add test script for displaying supported characters table.
- Add triple and quadruple dashes (U+2504...U+250B).
- Change shade block characters (U+2591...U+2593) look. When antialiasing is turned on, shades are drawn as transculent solid rectangles with 25%, 50% and 75% alpha. This matches the characters name/description and their usage. Without antialiasing, previous method with patterns is used.
Screenshots
Font size: 10pt; character width: 8px
Font size: 11pt; character width: 9px
Font size: 12pt; character width: 10px
Font size: 13-14pt; character width: 11px; w/o antialiasing
Font size: 13-14pt; character width: 11px
Font size: 15pt; character width: 12px
Font size: 6-7pt; character width: 5px
Font size: 8-9pt; character width: 7px; w/o antialiasing
Font size: 8-9pt; character width: 7px
Alignment test (8pt)
Note: Copyrights in LineBlockCharactersDrawer.cpp are based on
git blame -w src/TerminalDisplay.cpp executed before moving the code
to a separate file. Years from first/last commit. Authors sorted by
year. Whitespace-only changes were ignored. Maksim's code was commited
by Waldo Bastian who mentioned him as the author in commit message
(see 5062b40dd).
BUG: 402415
Test Plan:
Common steps for all tests
- Open Edit Current Profile → Appearance.
- Turn on Draw intense colors in bold font.
- Turn off Use line characters contained in font.
- (Optional) select a font which is able to display bold characters in Konsole (e.g. DejaVu Sans Mono).
Check characters validity
- Run ./tests/line_block_characters_table.py.
- Open Edit Current Profile → Appearance.
- By switching Use line characters contained in font on and off, compare built-in characters drawing with characters from a font. General shape and line directions must be the same. Small offsets, line width differences (as long as proportions between lines in a character are kept), and quality differences are allowed.
Review overall quality
- Run ./tests/line_block_characters_table.py.
- Review glyphs quality in different font sizes.
- Open Edit Current Profile → Appearance.
- Toggle Smooth fonts, review quality again.
Check alignment
- Display tests/UTF-8-demo.txt
- At the bottom of the file you can find a few alignment images. Check if all lines align properly. If you're unsure how it should look, compare it with font characters by turning on Use line characters contained in font option.
Reviewers: Konsole, VDG, fvogt, hindenburg
Reviewed By: Konsole, hindenburg
Subscribers: hindenburg, sandsmark, fvogt, konsole-devel
Tags: Konsole
Differential Revision: https://phabricator.kde.org/D18735