libvte Unicodeフォントの処理

libvte Unicodeフォントの処理

次のテキストを含む一部の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正しい出力が表示されます。

xterm PCF

ターミネータはPCFおよびTTFフォントを使用できます。 PCFフォントを使用すると、出力は正確です。

ターミネーターPCF

ただし、TerminatorにTTFフォントを使用するように指示すると、出力に大きな「BBC」ロゴの後に予期しない文字が含まれます。

ターミネーター.ttf

問題の文字は、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フォントにはありません。

関連情報