libvteユニコードフォントの処理

ali1234

Unicodeの私用領域の文字を含むANSIテキストを表示しようとしていますこれらの文字を含む2つのフォントがあります。1つ目はPCF(ビットマップ)フォントで、2つ目はTTFフォントで、最初のフォントから生成され、まったく同じグリフのセットが含まれています。

PCFフォントは、DebianおよびUbuntuの「tv-fonts」パッケージで利用でき、「teletext」と呼ばれます。TTFバージョンはこちらから入手できます

このテキストファイルを表示するには、端末でフォントの1つを使用するように構成してから、このファイルをカタログ化します

これにより、端末ごとに異なる結果が生成されます。

XtermはPCFフォントのみを使用できます。xterm -fg white -bg black -fn teletext私は正しい出力を参照してください。

xterm pcf

ターミネーターはPCFフォントとTTFフォントの両方を使用できます。PCFフォントを使用すると、出力は正しくなります。

ターミネーターPCF

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

ターミネーターttf

問題の文字は、ユニコード0xee20です。これは、PCFフォントとTTFフォントの両方で空のスペースです。

xfce4-terminalを使用した場合、結果は同じです。ターミネーターとXfce4ターミナルはどちらもlibvteを使用します。

だから私の質問:

  • libvteが間違ったグリフを表示するのはなぜですか?
  • TTFとPCFで動作が異なるのはなぜですか?(両方のフォントに同じグリフのセットが含まれていることに注意してください。)

Update: It seems that this isn't actually related to VTE but to Gtk, and possibly X11 itself. The same results can be seen when setting the font in a text editor, such as mousepad (which uses GtkSourceView.)

Thomas Dickey

Actually, xterm (and xfd) can use TrueType fonts, using the -fa option. With the latter, you can see that 0xee20 is missing from the font:

ここに画像の説明を入力してください

Given that, xterm would show a missing glyph (because it uses only one font). Likely vte is doing the same because none of the fallback fonts which it may be using has this particular private use code.

For comparison, here is a screenshot with xfd displaying the PCF font (which does have the glyph):

ここに画像の説明を入力してください

フォントが「同一」であるかどうかは、フォントがどのように作成(および維持)されたかによって異なります。TrueTypeフォントのスクリーンショットに7つの欠落したグリフが表示され、PCFフォントには表示されません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonのデフォルトの文字エンコード処理

分類Dev

xtermユニコードフォント

分類Dev

フォントとユニコード-PythonのPIL

分類Dev

jsonユニコード値を他のフォントのユニコードに変換する方法は?

分類Dev

スクリプトコンポーネントによるssisユニコードフラットファイル処理

分類Dev

滑らかな2Dユニコードフォントの問題

分類Dev

keystonejsフォーム処理ドキュメントの場所

分類Dev

文字のアクセントをエンコードする複数のユニコード方法を検出/処理する方法

分類Dev

ユニットテストでの外部ページリダイレクトの処理-コードカバレッジのあるジャスミン

分類Dev

フォーマット例外は、C#のユーザーコードによって処理されませんでした

分類Dev

フォーマット例外は、C#のユーザーコードによって処理されませんでした

分類Dev

JasmineユニットテストでのAJAXPostRequestコールバックの処理

分類Dev

sudoコマンドのデフォルトユーザー

分類Dev

「デフォルトパラメータのオーバーライド」を処理する小さなコードのリファクタリング

分類Dev

Javascriptリファクタリング。リピートコードの処理

分類Dev

imapサーバーへの接続とルートフォルダーのコンテンツの処理

分類Dev

TreeViewのアイテムでコンテキストメニューコマンドを処理する方法

分類Dev

ARMCortex-Mプロセッサのハードフォールト処理における冗長コード

分類Dev

Windowsフォームコントロールのリストでイベントを処理する

分類Dev

テキスト処理のパフォーマンスの向上

分類Dev

フォームの子コンポーネントのボタンを処理する方法

分類Dev

ウィンドウフォン8.1のユーザーコントロール

分類Dev

フォントの個々のグリフをユニコード名でバッチでsvgファイルにエクスポートしますか?

分類Dev

プライベートデフォルトコンストラクターの処理

分類Dev

Pythonユニコードレンダリング:ユニコード文字がフォントにないかどうかを知る方法

分類Dev

スプリングレストコントローラーのエラー処理のユニットテスト

分類Dev

コード 0x017 は、未処理のページ フォールトを意味します

分類Dev

Symfony 5:1つのコントローラーで複数のフォームを処理する

分類Dev

Reactで制御されたフォームコンポーネントの変更を処理する

Related 関連記事

  1. 1

    Pythonのデフォルトの文字エンコード処理

  2. 2

    xtermユニコードフォント

  3. 3

    フォントとユニコード-PythonのPIL

  4. 4

    jsonユニコード値を他のフォントのユニコードに変換する方法は?

  5. 5

    スクリプトコンポーネントによるssisユニコードフラットファイル処理

  6. 6

    滑らかな2Dユニコードフォントの問題

  7. 7

    keystonejsフォーム処理ドキュメントの場所

  8. 8

    文字のアクセントをエンコードする複数のユニコード方法を検出/処理する方法

  9. 9

    ユニットテストでの外部ページリダイレクトの処理-コードカバレッジのあるジャスミン

  10. 10

    フォーマット例外は、C#のユーザーコードによって処理されませんでした

  11. 11

    フォーマット例外は、C#のユーザーコードによって処理されませんでした

  12. 12

    JasmineユニットテストでのAJAXPostRequestコールバックの処理

  13. 13

    sudoコマンドのデフォルトユーザー

  14. 14

    「デフォルトパラメータのオーバーライド」を処理する小さなコードのリファクタリング

  15. 15

    Javascriptリファクタリング。リピートコードの処理

  16. 16

    imapサーバーへの接続とルートフォルダーのコンテンツの処理

  17. 17

    TreeViewのアイテムでコンテキストメニューコマンドを処理する方法

  18. 18

    ARMCortex-Mプロセッサのハードフォールト処理における冗長コード

  19. 19

    Windowsフォームコントロールのリストでイベントを処理する

  20. 20

    テキスト処理のパフォーマンスの向上

  21. 21

    フォームの子コンポーネントのボタンを処理する方法

  22. 22

    ウィンドウフォン8.1のユーザーコントロール

  23. 23

    フォントの個々のグリフをユニコード名でバッチでsvgファイルにエクスポートしますか?

  24. 24

    プライベートデフォルトコンストラクターの処理

  25. 25

    Pythonユニコードレンダリング:ユニコード文字がフォントにないかどうかを知る方法

  26. 26

    スプリングレストコントローラーのエラー処理のユニットテスト

  27. 27

    コード 0x017 は、未処理のページ フォールトを意味します

  28. 28

    Symfony 5:1つのコントローラーで複数のフォームを処理する

  29. 29

    Reactで制御されたフォームコンポーネントの変更を処理する

ホットタグ

アーカイブ