画面を通しても私の端末がサポートするUnicodeの量を検出します。

画面を通しても私の端末がサポートするUnicodeの量を検出します。

問題は、私の端末が一目でわかり、時には色や他の下線などの特定の文字を使用するために適切なUnicodeを使用できるかどうかを知ることができることです。

すべての種類の仮想端末でまともなフォントが得られたため、動機付けられましたが、デフォルトのLinuxコンソールには256または512の同時記号の文字セットがあるため、フォント全体のサポートが期待できないことがわかりました。

最初は、$TERMまたはttyを使用できると思いましたが、問題は次のとおりです。 byobuも使用しているので、$TERM常に「screen.linux」です。 ttyの出力は/dev/pts/<some number>「実際」でも仮想でもありません。

$BYOBU_TTY/dev/tty1たとえば、++でセッションを開くと文字は表示されませんが、一部のX用語で同じセッションに接続すると正しく表示されますが、まだ表示されないため役に立ちません。変わらない。また、byobuが存在するかどうかを想定せずにそれを検出できることを願っています。CtrlAltF1$BYOBU_TTY

さらに、ロケールはすべての場合にen_US.UTF-8を表示します。

ただし、どういうわけかbyobu内でも、byobuセッションに接続されている端末によって異なる出力が使用されます(これを検出した特定のツールの名前を指定するため)。

端末とttyがあまりにも一般的な検索語であるようで、Googleを使用するのに苦労しています。私が思いつくことができる最高のものは推奨されるソリューション$TERMまたはttyソリューションです。

ベストアンサー1

さて、まず、最近、ほとんどすべての端末があなたが意味する意味で「仮想」であることを指摘したいと思います。端末が実際のシリアルポートの反対側にあっても同じです。私の言葉は、その時代だった。VT-100S、知恵ターミナルと他の「物理的」、「実際の」ターミナルはほとんど消えました!

他にも、端末がサポートするUnicodeを検索したいとしましょう。 isにテスト文字を作成し、何が起こるかを確認します。 (テスト文字を作成した後に消去しようとすることはできますが、ユーザーにはまだしばらく表示されるか、消去が最初に正しく機能しない可能性があります。)

アイデアは、端末にカーソルの位置を知らせるように要求し、テスト文字を出力し、端末に再び位置を知らせるように要求し、2つの位置を比較して、端末のカーソルがどれだけ移動したかを確認することです。

端末の場所を問い合わせるには、次を参照してください。ここ。基本的に:

echo -e "\033[6n"; read -d R foo; echo -en "\nCurrent position: "; echo $foo | cut -d \[ -f 2

「é」を出力してみてください。この文字はUTF-8で2バイトを占めますが、画面では1列にのみ表示されます。 「é」を出力すると、カーソルが2位置移動することを検出すると、端末がUTF-8をまったくサポートしておらず、おそらく一種のゴミを出力している可能性があります。カーソルがまったく動かない場合、端末はおそらくASCII専用です。 1桁移動するとおめでとうございます。フランス語の単語が表示されることもあります。

「あ」を出力してみてください。この文字はUTF-8で3バイトを占めますが、画面では2つの列としてのみ表示されます。カーソルが0または3だけ動くと、上記のような悪いニュースがあります。 1ずつ移動すると、端末がUTF-8をサポートしているように見えますが、ワイド文字(固定幅フォント)については認識しません。 2つの列を移動すると、すべてが正常です。

有用な情報をもたらす他のプローブキャラクターを送ることができると確信しています。このタスクを自動的に実行できるツールはありません。

おすすめ記事