
鉱山はxterm
Unicodeをサポートしています。たとえば、ユーロ記号が表示されます。
echo -e '\xe2\x82\xac'
ただし、特定の文字は表示されません。
PL_BRANCH=$'\ue0a0'
echo $PL_BRANCH
他の端末(ターミネーター)では、文字が正しく表示されます。両方の端末で同じフォント(Inconsolata)を使用しています。
原因は何ですか?解決策は何ですか?
答え1
文字が実際に指定したフォントではありません。次のコマンドを使用してこれを表示できますxfd
。
xfd -fa inconsolata
これは、最後のコードポイントがU + 2423であることを示しています。もう少し読んでみると、この文字がUnicodeになっていることがわかりました。使用地域、そして(事実にもかかわらず一部フォントで利用可能です)には標準的な意味はありません。
~から2018年末、xtermはさまざまなTrueTypeフォントをロードできますが、現在利用可能なフォントにはU + E0A0は含まれていません。
使用されている実際のフォントを識別できる場合は、誰かがそれを処理できるxtermバージョンを指摘できますか?
フォント検索に影響を与えるxtermと同じライブラリインタフェースを使用しないterminator
ことについてのコメントを解決するために(両方ともよく文書化されていません)。terminator
これを使用して、strace
実際にどのフォントファイルが開いているかを確認できます。
たとえば、を使用していくつかのナビゲーションを実行し、strace
私のDebian /テストでこの文字のOpenOfficeフォントの1つを開きます。konsole
pterm
2600 2600) = 3 2586 2601 2601)=4
(「OpenSymbol」シリーズのファイルです。)
一方、rxvt-unicode
複数の文字があり、その文字が表示されないことがわかりました。フォントスタイルこれらの問題を解決(試行)するために検索リストに追加されました(最終的にはフォント設定の問題を反映)。おそらく似たようなものが見つかるでしょう(しかしその他) konsoleとptermをサポートするライブラリにあります。
答え2
最新のターミナルアプリケーションは、文字が不明な場合はデフォルトフォント以外のフォントを使用します。しかし、xtermは単一のフォントのみを使用します(2バイト文字の特別な場合は除く)。
必要な文字はOpenSymbolフォントの一部であり、使用できますが、$'\ue0a0'
フォントにプレーン文字が含まれてecho $'\ue0a0'
いないためxterm
使用できないため、1つの解決策は必要な特殊文字を含むパッチフォントを使用して次のものを使用することです。
xterm -fa 'Inconsolata for Powerline'
次のようにフォントサイズを設定することもできます。
xterm -fa 'Inconsolata for Powerline' -fs 16
~/.Xresources
この設定は、システムに以下を追加するか、広範囲に適用して現在のユーザーに適用できます。/etc/X11/app-defaults/XTerm
XTerm*faceName: Inconsolata for Powerline