Linux仮想端末でUnicodeを表示する方法は?


19

Unicodeでデータを読み取ると、Linuxターミナル(Xウィンドウなしで開く仮想ターミナル)に正しく表示されません。

私はここJFBTERMなどのプログラムをインストールするという議論を読みましたが、それは機能するので、余分なソフトウェアなしでUnicodeを適切に処理するように端末を構成する方法(コンソールフォント?)がないのではないかと思いました。

Windows端末(gnome-terminal、xtermなど)では、次のようになります。

gnome-terminal

仮想端末では、次のようになります。

vt

JFBTERMを使用した仮想端末では、次のようになります。

jbfterm

以下の出力のスクリーンショットですlocale

ロケール

出力はshowconsolefont次のとおりです。

showconsolefont

デフォルトの仮想端末だけで同じことを達成できるかどうか誰もが知っていますか?

回答:


5

コンソールフォントは、最大512個(と思う)の異なるグリフまでフォントをロードできます。ただし、通常は256個のグリフのみです。

ラテン語、キリル語、または200未満の非複雑な記号を使用する他の言語を表示することは問題ありません。

ただし、複雑なスクリプト、または多くの異なる記号(日本語など)を必要とするスクリプトの場合は、特別なレイアウトを使用して処理する以外に方法はありません。

ASCIIと両方のかなセットに対して512の制限で十分な場合、幅の問題があることに注意してください。

CJKとKanaは正方形にフィットし、ラテン文字の2倍の幅です。これは、コンソールがすぐに処理できるものではありません。

古くてい「半角カタカナ」に頼ることも(あるいは、そのような古いフォントを見つけることもできます)、コンソールを40カラム幅に設定し、ラテン文字をカナと同じ幅にすることができます。

Kanaでこのようなコンソールフォントを知らない。独自に描画する必要があります(そうするためのツールがあり、ビットマップの日本語フォントのドットをコピーすることができます。

また、iconv仮名をASCIIに音訳するために使用できます。


3

実際にこれらの文字を含むフォントが必要です。例えばArch Linuxはを推奨しLat2-Terminus16ます。

試すには、仮想コンソールで次のコマンドを発行するだけsetfont Lat2-Terminus16です:

残りに関しては、ほとんどの最新のディストリビューションは既にそれをサポートしています。


2

に加えてLANG/LC_ALLstty iutf8何をすべきかを端末に伝えるために必要です。setfontその後、有用なフォントとマッピングをロードする必要があります。それでも問題が解決しない場合CONFIG_NLS_xxは、カーネル構成の設定を確認し、modprobe nls_utf8自動的にロードされない場合に必要になる場合があります(ただし、これはUnicodeファイル名にのみ必要です)。

一部のLinuxディストリビューションにはunicode_startunicode_stopこれを自動化するスクリプトとスクリプトが用意されています。

場合lessの原因の問題は、それが環境変数を必要とするかもしれないLESSCHARSET(それは間違っている場合または設定解除)に設定します。

Markus KuhnのUnix / Linux向けUTF-8およびUnicode FAQは非常に貴重です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.