境界線マップの作成および編集
TERCAP オプション 2 ("TERCAP ユーティリティ" を参照) では、境界線マップを定義できます。境界線マップはターミナルの説明の一部ですが、便宜上、完全に個別のオプションがあります。各境界線のスタイルについて、プログラマは、境界線の各文字を描画するために、ターミナルに送信される制御シーケンスを指定できます。
前提として、ターミナルでは最大 3 つの異なる文字セットまたはアルファベットから、境界線の文字を選択します。最初の文字セット (0) は既定であり、charset (0) には ASCII (場合によっては Latin 1 全体) が用意されています。他の 2 つ (1 および 2) は、セミグラフィック文字に使用されます。
スタイルごとに、そのスタイルの文字を含む文字セット (0、1、2) と、境界線の各文字にマッピングする文字セットのコードが求められます。3 つの文字セット間で選択する制御シーケンスは、オプション 1 のニーモニックのように入力されます。
ニーモニック |
元の文字セット |
結果として得られる文字セット |
---|---|---|
cs01 | 0 | 1 |
cs02 | 0 | 2 |
cs10 | 1 | 0 |
cs20 | 2 | 0 |
例 :
Digital Equipment Corporation (DEC) VT320 ターミナルの場合を考えます。/INIT コマンド時に、DEC 特殊グラフィック文字セット (境界線の文字を含む文字セット) を G1 として使用するようにターミナルを設定します。G0 は規定の Latin 1 です。G0 から G1 に切り替えるには、SO (shift out = ASCII 14) 制御を送信します。G1 から G0 に切り替えるには、SI (shift in = ASCII 15) 制御を送信します。そのため、以下の定義が適用されます。
cs01 = $c(14)
cs10 = $c(15)
左上隅 (upper left corner = UL) の文字が、DEC 特殊グラフィック文字セットの位置 108 を占めます。これは、TERCAP ユーティリティに提供される必要のあるコードです。Caché では、2 つの文字セットを切り替えたり、実際にターミナルに送られる制御シーケンスを最適化したりします。2 つ以上の境界線の文字が 1 行 (上下の境界線など) の連続する位置にある場合、最初に 1 つの SO が送信され、次に G1 の境界線のコード、最後に 1 つの SI が送信されます。
一般に、cs01、cs02、cs10、および cs20 は、マルチバイトの文字列になります。
境界線の文字とコード
Caché は、8 ビット または 16 ビット (Unicode) モードのいずれかでインストールできます。8 ビット・モードは、ISO Latin 文字セットの表示をサポートしていますが、16 ビット・モードでは、Unicode 2.0 文字セットを使用します。これらのセットは、グローバル、ローカル変数、およびウィンドウ構造で内部的にすべての文字を保存する場合に使用されます。既定では、Unicode の照合はストレージに使用されます。外部の表現は、入出力変換テーブルによって内部の文字セットに変換されます。
これらの内部の文字セットには、ウィンドウの境界線の描画に必要なセミグラフィック文字が含まれません。境界線の文字は対応する外部表現に後で変換されるため、内部で境界線の文字を表現する場合、任意のコードが選択されます。
以下のテーブルと TERCAP ユーティリティでは、省略形が使用されています。
-
UL — 左上隅
-
UR — 右上隅
-
LL — 左下隅
-
LR — 右下隅
-
TO — 上部の境界線
-
BO — 下部の境界線
-
LE — 左の境界線
-
RI — 右の境界線
通常、ウィンドウの境界線を完全に描画するには、これらの 8 つの文字が必要です。ただし、実際には、使用するターミナルや境界線のスタイルに応じて、その数を 6 つ、4 つ、または 1 つにまで減らすことができます。
ユーザが出力変換テーブルを独自に作成する場合、境界線の内部コードをまとめた以下のリストが役立ちます。
スタイル | 文字 | コード |
---|---|---|
1 | BO | 140 |
1 | LE | 138 |
1 | LL | 132 |
1 | LR | 134 |
1 | RI | 142 |
1 | TO | 136 |
1 | UL | 128 |
1 | UR | 130 |
2 | BO | 141 |
2 | LE | 139 |
2 | LL | 133 |
2 | LR | 135 |
2 | RI | 143 |
2 | TO | 137 |
2 | UL | 129 |
2 | UR | 131 |
3 | — | スタイル 3 (太線) は、"bold" 属性が強制されている場合、スタイル 1 (単線) のようになります。 |
4 | ALL | 158 |
5 | ALL | 157 |
6 | ALL | 156 |
7 | BO | 149 |
7 | LE | 150 |
7 | LL | 146 |
7 | LL | 147 |
7 | RI | 151 |
7 | TO | 148 |
7 | UL | 144 |
7 | UR | 145 |
8 | — | スタイル 8 (中間幅のバー) は、スタイル 7 (ライト・バー) と同じです。 |
9 | BO | 155 |
9 | TO | 154 |
9 | UL、LE、LL | 152 |
9 | UR、RI、LR | 153 |