Files
konsole/doc/user/README.fonts
André Kugland 715da3c2b8 Updated DEC Line Graphics character set to use Unicode 3.2.0 characters where appropriate
Four characters in DEC Special Graphics (Line Drawing)[⁽¹⁾] charset were translated by Konsole into codepoints in private use area.

This patch uses the same code points that xterm uses.

| Index  | Previously | Should be |
| ------ | ---------- | ----------|
| `0x6F` | `U+F800`   | `U+23BA`  |
| `0x70` | `U+F801`   | `U+23BB`  |
| `0x72` | `U+F803`   | `U+23BC`  |
| `0x73` | `U+F804`   | `U+23BD`  |

The old behavior used the same mapping used by Linux consoles, as stated
in `unicode.txt`[⁽²⁾] in Linux's documents. This has been changed long ago
when Unicode 3.2.0 introduced the codepoints `U+23BA`, `U+23BB`, `U+23BC`,
`U+23BD`, as the following excerpt of `unicode.txt` says:

```
In addition, the following characters not present in Unicode 1.1.4
have been defined; these are used by the DEC VT graphics map.  [v1.2]
THIS USE IS OBSOLETE AND SHOULD NO LONGER BE USED; PLEASE SEE BELOW.

====== ======================================
U+F800 DEC VT GRAPHICS HORIZONTAL LINE SCAN 1
U+F801 DEC VT GRAPHICS HORIZONTAL LINE SCAN 3
U+F803 DEC VT GRAPHICS HORIZONTAL LINE SCAN 7
U+F804 DEC VT GRAPHICS HORIZONTAL LINE SCAN 9
====== ======================================

[...]

[v1.3]: These characters have been officially added to Unicode 3.2.0;
they are added at U+23BA, U+23BB, U+23BC, U+23BD.  Linux now uses the
new values.
```

[⁽¹⁾]: https://vt100.net/docs/vt220-rm/chapter2.html#T2-4
[⁽²⁾]: https://raw.githubusercontent.com/torvalds/linux/5bfc75d92efd494db37f5c4c173d3639d4772966/Documentation/admin-guide/unicode.rst
2022-05-30 07:10:03 +00:00

115 lines
3.8 KiB
Plaintext

[README.fonts]
Fonts need to suit the needs of X11, QT and konsole.
* the font has to be fixed width.
This requirement originate both from X11 and
the way QT and konsole uses it together with
the very idea of what a terminal emulation is
about.
Basically, a terminal emulation is to display
a character cell oriented screen, meaning that
all characters in the same column line up
properly under each other.
Though one could make this with a variable
width font (which are preferably used in text
processing) the outcome would look very poor,
since the glyphs would have to be placed into
a cell fitting the widest character in the
font, which is typically more than two times
wider than the narrowest glyph. Imagine a text
with l o t s o f s p a c e s
inserted between each character to get the idea.
Further, doing this with a variable width font
means to do some operations that slow down the
whole display refreshing dramatically. X11/QT
performs very poor when one draws characters
individually while additionally clearing
background regions instead of drawing a complete
string (as konsole does). If one draws a string
with a variable width font, it is of course
typeset by X11 variable width, not longer
conforming to the character cell model of a
terminal emulation.
So from both perspectives, variable width fonts
are unsuited for terminal emulation purposes.
* the font has to contain some graphical characters
Many full screen applications make use of these
characters to draw boxes, scroll bars and likely
pseudo graphical entities.
Using fonts without this capabilities means to
break the visual appearance of these products.
As a minimum the following glyphs have to be
included within a font to become usable:
- 0x0b U+2518 : BOX DRAWINGS LIGHT UP AND LEFT
- 0x0c U+2510 : BOX DRAWINGS LIGHT DOWN AND LEFT
- 0x0d U+250c : BOX DRAWINGS LIGHT DOWN AND RIGHT
- 0x0e U+2514 : BOX DRAWINGS LIGHT UP AND RIGHT
- 0x0f U+253c : BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- 0x10 U+23ba : HORIZONTAL SCAN LINE-1
- 0x11 U+23bb : HORIZONTAL SCAN LINE-3
- 0x12 U+2500 : BOX DRAWINGS LIGHT HORIZONTAL (scan line 5)
- 0x13 U+23bc : HORIZONTAL SCAN LINE-7
- 0x14 U+23bd : HORIZONTAL SCAN LINE-9
- 0x15 U+251c : BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- 0x16 U+2524 : BOX DRAWINGS LIGHT VERTICAL AND LEFT
- 0x17 U+2534 : BOX DRAWINGS LIGHT UP AND HORIZONTAL
- 0x18 U+252c : BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- 0x19 U+2502 : BOX DRAWINGS LIGHT VERTICAL
- 0x01 U+25c6 : BLACK DIAMOND
- 0x02 U+2592 : MEDIUM SHADE
- 0x1F U+00b7 : MIDDLE DOT
Also, the VT100 knows about the following glyphs,
though omitting them is unlikely to break anything.
- 0x07 U+00b0 : DEGREE SIGN
- 0x08 U+00b1 : PLUS-MINUS SIGN
- 0x1a U+2264 : LESS THAN OR EQUAL TO
- 0x1b U+2265 : GREATER THAN OR EQUAL TO
- 0x1c U+03c0 : GREEK SMALL LETTER PI
- 0x1d U+2260 : NOT EQUAL TO
- 0x1e U+00a3 : POUND SIGN
Additionally, digraphs are provided for some
of the control characters by VT100, too.
- 0x03 U+2409 : DIGRAPH HT
- 0x04 U+240c : DIGRAPH FF
- 0x05 U+240d : DIGRAPH CR
- 0x06 U+240a : DIGRAPH LF
- 0x09 U+240d : DIGRAPH NL
- 0x0a U+240b : DIGRAPH VT
The mapping of non-iso10646 fonts is extended by konsole
with the regular xterm fixed font placement of these
glyphs to 0x00-0x1f.
* Iso10646 fonts needs to have a fall back character
to be properly assigned.
Use the "DEFAULT_CHAR" property with bdf fonts
to do so. Other font representations provide
likely means. The unicode assignment is U+fffd.
If such a character isn't defined, X11 might
choose to void the character completely, causing
inconsistent appearance when refreshing the screen.
One may choose the space glyph to hide the flaw
or a box like one to exhibit it.