xtermにUnicode補足多言語平面(平面1)文字を表示しようとしています。これらの文字形状は U+010000..U+01FFFF(https://unifoundry.com/pub/unifont/unifont-15.0.01/unifont_plane1-15.0.01.bmp)。
フォントはunifont-15.0.01.hexとunifont_upper-15.0.01.hexのマージバージョンで、bdfに変換され、私の.Xresourcesファイルを介してロードされます。
*locale: true
*ut8: true
xterm*font: -*-merged-*-*-*-16-*
平面 0 (U+0000..U+FFFF) 文字の外観が機能します。
この投稿に似たロケールの問題かもしれないと思います。xtermはubuntu 18.04で8ビット文字を表示できません。。
私は試しましたがLANG=en_US.UTF-8
成功LANG=en_US
しませんでした。
編集:LANG=en_US.UTF-8
Unicode補足多言語平面(平面1)を設定すると、xtermの文字の外観が「奇妙な四角形」として表示されます。 en-US ロケールで xterm を起動すると、LC_ALL=en_US LANG=en-US xterm
フラット 1 文字が表示されないか、誤ってエンコードされます。
別のロケールを使用する必要がありますか?それでは、どれが、どのように?また、「unifont_upper」をマージするのではなく、代替アイテムとして定義する方が良いですか?
答え1
ビットマップフォントはXライブラリインタフェースを使用します。XDrawString16
(望むよりソースコード)は、名前が示すように、16ビットフォントインデックスに制限されています。
可能XmbDrawString
この制限を超えることが可能です(ただし、これはおおよそのマンページでは手がかりを提供しないので、ソースコードを調べると確認できます)。ご覧のとおり、これは単なる交換ではありません。この議論。
行きたいなら骨形態発生タンパク質、TrueTypeフォントを使用する必要があります。
答え2
xFFFFを超える範囲に問題があるので、echo -e "\u1234"
?を使用してこのエスケープコードを印刷する簡単な方法があるようです。
- \ u1234 - 0000-ffffの範囲のUnicodeシンボルを印刷します。
- \ U12345678 - 00000000-ffffffff範囲のUnicodeシンボルを印刷します。