• Mariusz Glebocki's avatar
    Improve built-in line/block characters drawing · 13132fc7
    Mariusz Glebocki authored
    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
    {F6602823}
    
    Font size: 11pt; character width: 9px
    {F6602824}
    
    Font size: 12pt; character width: 10px
    {F6602825}
    
    Font size: 13-14pt; character width: 11px; w/o antialiasing
    {F6602826}
    
    Font size: 13-14pt; character width: 11px
    {F6602827}
    
    Font size: 15pt; character width: 12px
    {F6602828}
    
    Font size: 6-7pt; character width: 5px
    {F6602829}
    
    Font size: 8-9pt; character width: 7px; w/o antialiasing
    {F6602830}
    
    Font size: 8-9pt; character width: 7px
    {F6602831}
    
    Alignment test (8pt)
    {F6602832}
    
    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 5062b40d).
    
    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
    13132fc7