DEC Special Graphics(DEC特殊グラフィック)

LinuxなどのTUI(Text User Interface)では、罫線などの文字をDEC Special Graphics(DEC特殊グラフィック)として送出することがあります。

DEC Special Graphicsは、<ESC>(0 という特殊なエスケープシーケンスで定義されており、 0137(0x5f,'_') 〜 0176(0x7e) にアサインされています。
受信コードがISO8859-1など日本語以外の時、G1にDEC Special Graphicsが指示されているので、SO(0x0e)でDEC Special Graphicsを表示することができます。

Tera Termは独自のフォント(ファイル名 "TSPECIAL1.TTF", フォント名 "Tera Special")を使用してDEC Special Graphicsを表示することができます。
Tera Specialの文字幅はすべて1cellです。

DEC Special Graphicsの表示例:

echo -e "_abcdefghijklmnopqrstuvwxyz\x7b\x7c\x7e\r\n\x1b(0_abcdefghijklmnopqrstuvwxyz\x7b\x7c\x7e\x0f\x1b(B"
echo -e "_abcdefghijklmnopqrstuvwxyz\x7b\x7c\x7e\r\n\x0e_abcdefghijklmnopqrstuvwxyz\x7b\x7c\x7e\x0f\x1b(B"

使用フォント: Tera Special, Myrica
SO(LS1(Locking Shift 1)) (0x0e)
GL に G1 を呼び出し
SI(LS0(Locking Shift 0)) (0x0f)
GL に G0 を呼び出し
ESC ( 0 (0x1B 0x28 0x30)
G0 に DEC Special Graphics を指示, GL に G0 を呼び出し
ESC ( B (0x1B 0x28 0x42)
G0 に ASCII を指示, GL に G0 をに呼び出し

SO(0x0e,LS1(Locking Shift 1))で、DEC Special Graphicsを表示しない場合は、 ISO2022ShiftFunctionの設定を 変更してください。

次のwebの情報も参照ください。

CJK(日本語)環境ではTera Termは罫線や一部の記号を2カラム幅で表示します。 (文字の幅は設定で変更できます。Additional settings / "Encoding" タブ, Ambiguous Characters widthを参照ください。)

しかし、ホスト側のアプリケーションによってはUTF-8エンコーディング時にはこれらの文字が1カラム幅で表示されると期待した出力を行う物があり、その結果画面出力が崩れる場合があります。
また英語環境では罫線を+-|を使って表示したり、対応していない文字を??と表示したりします。
Tera Termでは、これらの文字でDEC Special Graphicsに近い物がある物は、それを使って表示するようにする事ができ、それによって表示の崩れを軽減する事ができます。 Additional settings / "Encoding" タブ, DEC Special Graphicsで設定できます。
ただし、マウスで選択した時にクリップボードにコピーされる文字が本来とは別の文字になってしまうという副作用があります。

DEC Special GraphicsをUnicodeへ置き換え、VTウィンドウのフォントを使用して表示することもできます。
フォントを選択することで、ユーザーの好みのデザインの文字を表示することができます。
しかし、フォントにグリフに入っていない(SCAN LINE(0x6f...0x73)など)、デザインがおかしい、文字幅が合わないことがあります。

DEC Special Graphic - Unicode convert table

code Unicode
-----+----------------------------------------------
0x5f U+00A0 NO-BREAK SPACE
0x60 U+25C6 BLACK DIAMOND
0x61 U+2592 MEDIUM SHADE
0x62 U+2409 SYMBOL FOR HORIZONTAL TABULATION
0x63 U+240C SYMBOL FOR FORM FEED
0x64 U+240D SYMBOL FOR CARRIAGE RETURN
0x65 U+240A SYMBOL FOR LINE FEED
0x66 U+00B0 DEGREE SIGN
0x67 U+00B1 PLUS-MINUS SIGN
0x68 U+2424 SYMBOL FOR NEWLINE
0x69 U+240B SYMBOL FOR VERTICAL TABULATION
0x6a U+2518 BOX DRAWINGS LIGHT UP AND LEFT
0x6b U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
0x6c U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
0x6d U+2514 BOX DRAWINGS LIGHT UP AND RIGHT
0x6e U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0x6f U+23BA HORIZONTAL SCAN LINE-1
0x70 U+23BB HORIZONTAL SCAN LINE-3
0x71 U+2500 BOX DRAWINGS LIGHT HORIZONTAL
0x72 U+23BC HORIZONTAL SCAN LINE-7
0x73 U+23BD HORIZONTAL SCAN LINE-9
0x74 U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0x75 U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
0x76 U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
0x77 U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0x78 U+2502 BOX DRAWINGS LIGHT VERTICAL
0x79 U+2264 LESS-THAN OR EQUAL TO
0x7a U+2265 GREATER-THAN OR EQUAL TO
0x7b U+03C0 GREEK SMALL LETTER PI
0x7c U+2260 NOT EQUAL TO
0x7d U+00A3 POUND SIGN
0x7e U+00B7 MIDDLE DOT

次のページも参照ください。