Improve built-in line/block characters drawing

Authored by mglb on Feb 7 2019, 12:36 AM.

Description

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

Details

Committed
mglbFeb 22 2019, 5:43 PM
Reviewer
Konsole
Differential Revision
D18735: Improve built-in line/block characters drawing
Parents
R319:1c8ba770b176: Correct slot called for changing tab text color - not implemented
Branches
Unknown
Tags
Unknown