次のテキストを含む一部のANSIテキストを表示しようとしています。Unicode専用エリア。この文字を含む2つのフォントがあります。 1つ目はPCF(ビットマップ)フォント、2つ目は最初のフォントから生成され、まったく同じ文字セットを含むTTFフォントです。
PCFフォントはDebianとUbuntuの「tv-fonts」パッケージで利用でき、「teletext」と呼ばれます。 TTFバージョンが利用可能ここ。
私のフォントの1つを使用するように端末を設定し、cat'ingしてこのテキストファイルを表示しました。このファイル。
これにより、端末ごとに異なる結果が生成されます。
XtermはPCFフォントのみを使用できます。xterm -fg white -bg black -fn teletext
正しい出力が表示されます。
ターミネータはPCFおよびTTFフォントを使用できます。 PCFフォントを使用すると、出力は正確です。
ただし、TerminatorにTTFフォントを使用するように指示すると、出力に大きな「BBC」ロゴの後に予期しない文字が含まれます。
問題の文字は、Unicode 0xee20です。 PCF フォントと TTF フォントの両方では、空のスペースです。
xfce4-terminalを使用しても結果は同じです。 Terminator と Xfce4 ターミナルの両方で libvte を使用します。
だから私の質問は次のようになります
- libvteが間違った文字の外観を表示するのはなぜですか?
- TTFとPCFが異なる動作をするのはなぜですか? (両方のフォントが同じグリフセットを含むことを覚えておいてください。)
アップデート:これは実際にはVTEとは関係ありませんが、GtkとX11自体とは関係があるようです。マウスパッドなどのテキストエディタでフォントを設定すると(GtkSourceViewを使用)、同じ結果が表示されます。
答え1
実際、xterm
(およびxfd
)はこのオプションを使用してTrueTypeフォントを使用できます-fa
。後者の場合、0xee20
フォントに欠けていることを確認できます。
これを考慮すると、xtermは欠けている文字の外観を表示します(1つのフォントのみを使用するため)。 vteはおそらく同じことをします。使用中の代替フォントのどれもこの特別なフォントを持っていないからです。使用パスワード。
xfd
比較のために、以下はPCFフォント(グリフを含む)を示すスクリーンショットです。
フォントが「同じ」かどうかは、フォントの作成(およびメンテナンス)方法によって異なります。 TrueTypeフォントのスクリーンショットには7つのグリフがありませんが、PCFフォントにはありません。