# 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の情報も参照ください。

- Digital Equipment Corporation. Table 3-9 Special Graphics Characters. VT100 User Guide.
- Digital Equipment Corporation. Table 2-4 DEC Special Graphics Character Set. VT220 Programmer Reference.
- Designate Character Set, Console Virtual Terminal Sequences. microsoft.com(en-us).
  文字セットの指定, コンソールの仮想ターミナル シーケンス. microsoft.com(ja-jp).
- DEC Special Graphics. Wikipedia(en).
- Box-drawing character. Wikipedia(en). / 罫線素片. Wikipedia(ja).
- ISO/IEC 2022. Wikipedia(en). / ISO/IEC 2022. Wikipedia(ja).

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

しかし、ホスト側のアプリケーションによってはUTF-8エンコーディング時にはこれらの文字が1カラム幅で表示されると期待した出力を行う物があり、その結果画面出力が崩れる場合があります。
また英語環境では罫線を+-|を使って表示したり、対応していない文字を??と表示したりします。
Tera Termでは、これらの文字でDEC Special Graphicsに近い物がある物は、それを使って表示するようにする事ができ、それによって表示の崩れを軽減する事ができます。 Additional settings / "coding" タブ, 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

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

- Q & A集
- UnicodeからDEC Special Graphicsへのマッピングを設定する