私はUTF-8文字を出力として表示するスクリプトを作成中です。私のGnomeターミナルでは、きれいなカエデの葉(
答え1
端末で実行されているアプリケーションには、端末が描画したグリフがどのようなものか (あるいは、それが代替文字/プレースホルダー文字であるかどうか) を端末から知る方法がありません。
アプリケーションの一つできる端末が UTF-8 をサポートしているかどうか、またサポートしている場合は可変幅文字をサポートしているかどうかを確認します。方法は次のとおりです。
[
6
n
ESCと書いてESCを期待してカーソル位置を読み取る[
ライン;
コルR
- 2 バイトのシーケンスを書き込みます
"\xc2\xa0"
。端末が UTF-8 をサポートしている場合、これは単一の非改行スペースです。端末が UTF-8 をサポートしていない場合、これは不明ですが、おそらく 2 つの文字位置を占めます (Â
実際には、おそらく非改行スペースが続きます)。 - カーソルの位置を再度読み取り、カーソルが1つまたは2つ移動したかどうかを確認します。
端末が UTF-8 をサポートしている場合は、基本的に同じトリックを使用して、可変文字幅をサポートしているかどうかを確認できます。カーソル位置を読み取り、等幅フォントで 2 倍幅になるはずの文字 (「あ」など) を書き込み、カーソル位置を再度読み取ります。端末が 2 倍幅文字をサポートしていない場合、カーソルはおそらく単純に 1 位置だけ移動しているでしょう。