Vintage X Bitmap Font "VT100 graphics characters"

In an old "5x9" bitmap font a friend gave me I was puzzled about the chacters in positions 1..31, normally used as control characters.

It turns out these are the "VT100 graphics characters", and the xfonts-utils program ucs2any can optionally put specific Unicode code points in these spots:

/* DEC VT100 graphics characters in the range 1-31 (as expected by some old xterm versions and a few other applications) */
#define decmap_size 31
static int decmap[decmap_size] = {
        0x25C6, /* BLACK DIAMOND */
        0x2592, /* MEDIUM SHADE */
        0x2409, /* SYMBOL FOR HORIZONTAL TABULATION */
        0x240C, /* SYMBOL FOR FORM FEED */
        0x240D, /* SYMBOL FOR CARRIAGE RETURN */
        0x240A, /* SYMBOL FOR LINE FEED */
        0x00B0, /* DEGREE SIGN */
        0x00B1, /* PLUS-MINUS SIGN */
        0x2424, /* SYMBOL FOR NEWLINE */
        0x240B, /* SYMBOL FOR VERTICAL TABULATION */
        0x2518, /* BOX DRAWINGS LIGHT UP AND LEFT */
        0x2510, /* BOX DRAWINGS LIGHT DOWN AND LEFT */
        0x250C, /* BOX DRAWINGS LIGHT DOWN AND RIGHT */
        0x2514, /* BOX DRAWINGS LIGHT UP AND RIGHT */
        0x253C, /* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
        0x23BA, /* HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */
        0x23BB, /* HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */
        0x2500, /* BOX DRAWINGS LIGHT HORIZONTAL */
        0x23BC, /* HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */
        0x23BD, /* HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */
        0x251C, /* BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
        0x2524, /* BOX DRAWINGS LIGHT VERTICAL AND LEFT */
        0x2534, /* BOX DRAWINGS LIGHT UP AND HORIZONTAL */
        0x252C, /* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
        0x2502, /* BOX DRAWINGS LIGHT VERTICAL */
        0x2264, /* LESS-THAN OR EQUAL TO */
        0x2265, /* GREATER-THAN OR EQUAL TO */
        0x03C0, /* GREEK SMALL LETTER PI */
        0x2260, /* NOT EQUAL TO */
        0x00A3, /* POUND SIGN */
        0x00B7  /* MIDDLE DOT */

Apparently on a real VT100 these are printed by sending various escape codes that cause them to be mapped at character values 95..126. various escape sequences.

Entry first conceived on 26 July 2024, 0:17 UTC, last modified on 26 July 2024, 13:18 UTC
Website Copyright © 2004-2024 Jeff Epler