Additional settings / "coding" タブ ([Setup] メニュー)
Ambiguous Characters width
1 Cell または 2 Cell を選択します。
Override Emoji Characters width
チェックすると、絵文字属性のある文字は East_Asian_Width特性を置き換えて文字幅を設定します。
- コードポイント U+1F000 以上の絵文字は常に2Cell(全角)として扱います。
- コードポイント U+1F000 未満の絵文字は
- 2callが選択されたとき
- 2Cell(全角)として扱う
- 1callが選択されたとき
- 1Cell(半角)として扱う
DEC Special Graphics
DEC Special Graphics(DEC特殊グラフィック)の
表示方法を指定します。
- UnicodeをDEC Special Graphicsへマッピングする
-
UnicodeをDEC Special Graphicsへ置き換え、"Tera Special" フォントを使用して表示します。
DEC Special Graphicの文字幅は1cell(half-width)となります。
変換する文字種を指定できます。
UnicodeからDEC Special Graphicsへのマッピングを設定するも参照してください
- 罫線素片(U+2500-U+257F)
- Punctuation, Block Elements, Shade
- 中点(U+00B7,U+2024,U+2219)
- DEC Special GraphicsをUnicodeへマッピングする
-
DEC Special GraphicをUnicodeへ置き換え、VTウィンドウのフォントを使用して表示します。
Unicodeで表示する文字の文字幅は、文字毎に異なり
Ambiguous Characters width 設定で変化します。
簡単な設定の方法
- 中国語,日本語,韓国語(CJK)で使用する場合
-
Japanese/UTF-8 など、"Japanese/" などがついたコーディングを選ぶ
→Ambiguous Characters Width が 2Cell となる
→Override Emoji Characters Width 有効となり 2Cell となる
表示される文字について
Tera Term のリポジトリにテスト用テキストがあるので表示してチェックできます。
- 漢字の文字幅
"wget https://ja.osdn.net/projects/ttssh2/scm/svn/blobs/head/trunk/tests/unicodebuf-east_asian_width.txt?export=raw -O -"
- 絵文字の文字幅
"wget https://ja.osdn.net/projects/ttssh2/scm/svn/blobs/head/trunk/tests/unicodebuf-text-emoji.txt?export=raw -O -"
次のことに注意してください
- フォントはそのまま、または、拡大/縮小して表示されます。
フォントの設定を参照ください
- Tera Termの扱う文字幅と、ホストが意図している文字幅が異なることがあります。
プログラム、ライブラリ例
- テキストエディタ(vim,emacs,nanoなど)
- ビュア(more,less,lvなど)
- bashなどに組み込まれているreadlineライブラリ(行編集ライブラリ)
- aptitudeなどに組み込まれているcursesライブラリ(端末制御ライブラリ)
- 指定フォントに表示したい文字が収納されていないかもしれません。
- 表示する文字(指定文字のグリフ)が存在しない場合
OSのよって黒い点「・」(例)が描画されます。OSのバージョンによっては他の表示になるかもしれません。
- OSのバージョンによっては、自動的に他のフォントを使って描画されます。
この機能をフォントリンクと呼びます。
East_Asian_Width特性とセル数について
East_Asian_Width特性(東アジアの文字幅)として、
各文字には特性が割り当てられています。
この特性は5種類存在し、各々の文字幅が決められています。
また、文字幅の解釈には次の2種類があります。
- 東アジアの従来文字コードの文脈の場合
- 東アジア以外の従来文字コードの文脈の場合
これを表にすると次のようになります。
cells数(2=全角/1=半角)
| | 東アジアの | 東アジア以外の |
| 特性 | 従来文字コードの文脈 | 従来文字コードの文脈 |
| F(Fullwidth,全角) | 2 | 2 |
| H(Halfwidth,半角) | 1 | 1 |
| W(Wide,広) | 2 | 2 |
| Na(Narrow,狭) | 1 | 1 |
| A(Ambiguous,曖昧) | 2 | 1 |
| N(Neutral,中立) | 1 | 1 |
CJK環境では、Ambiguousの文字幅を 2Cell にしたほうが自然です。
また、日本語フォントでは 2Cell でデザインされていることがほとんどだと思われます。
Neutralには絵文字が入っていて、1cellで描画すると日本では不自然な表示となります。
絵文字の時の文字幅を変更することで自然な表示とすることができます。
- 例
- U+263A WHITE SMILING FACE
- U+2764 HEAVY BLACK HEART
- Unicode その他の記号 (Miscellaneous Symbols) について(Wikipedia)
次のデータをもとに属性を決定しています。
http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt
絵文字について
絵文字属性は East Asian Width の特性とは別の文字特性です。
CJK環境では、East_Asian_Width特性と同様、
従来の文字コードで1byteで表現できない文字は
2Cell で扱うほうが自然です。
非CJK環境では、従来の文字コードでは全角は存在しなかったので、
多くの文字を半角として扱うのが自然です。
顔の絵文字など(コードポイントU+1F000以上)はUnicode以降の文字なので、全角としてあつかってよさそうです。
次の情報をもとに絵文字の判定を行っています。
https://www.unicode.org/Public/emoji/12.1/emoji-data.txt
ただし、コードポイントU+0080未満は絵文字として扱いません。