端末がイタリック体をサポートしているかどうかをプログラムで確認するには?

端末がイタリック体をサポートしているかどうかをプログラムで確認するには?

現在の端末でイタリック体を正しく表示できることを確認したいと思います。

手動検査は簡単です。

echo -e "\e[3mfoo\e[23m"

出力foo、端末(エミュレータ)はイタリック体をサポートしています。しかし、.zshrcプログラムでイタリック体がサポートされているかどうかをテストしたいと思いました。

これを行うための最良の方法は何ですか?


可能であれば、標準のLinuxコンソールでもイタリック体を使用できたらと思います。問題は手動テストが失敗することです。イタリック体を可能にする方法についてのアイデアはありますか?

(これは元の質問の一部ではありませんでしたが、独立した質問で尋ねることはあまりにもあいまいで意味がありません。)

ベストアンサー1

これにはいくつかの問題があります。

  • Linuxコンソールがイタリック体をサポートしている場合は、別のフォントを使用するか、イタリック体文字を模倣する技術を使用してください。
  • これを行うと仮定すると、プログラムに表示されるようにコンソールに表示される画像をダンプするためのツールが必要です。ただし、Linuxコンソールの画面ダンプはテキストのみを提供し、画像は提供しません。ダンプには利用可能なフォント情報はありません(太字または色も含む)。
  • 両方ともrawデバイスをsetterm開きます(代わりにioctlのデフォルト値を使用すると同じ内容を持ちます)。screendumpvcsascreendumpTIOCLINUX
  • あなたできるこの古いioctlを使用して、色や太字を使用するかどうかなどの属性をダンプするのに適したツールを作成します(つまり、カーネルが非常に古い)。

    TIOCLINUX、サブコード=8
    画面の幅と高さ、カーソル位置、およびすべての文字プロパティのペアをダンプします。 (核心 1.1.67 渡す91.1.1ただ。カーネル 1.1.92 以降の場合は、代わりに /dev/vcsa* でお読みください。 )

  • つまり、Linuxコンソール画面の内容を見つけるためのサポートされたメカニズムはありません。

他に解決策はありません。プログラム的にイタリック体を実装するかどうかを決定するときに解像度を向上させるためにいくつかの特殊機能を使用することに加えて、Linuxコンソールフォントがイタリック体で描画されると期待する理由はほとんどありません。これターミナルフォントページ(これはXのLinuxコンソールフォントと同じ効果を提供しようとするためです。)よくある質問部分:

Q:イタリック体のバージョンですか?

答え:いいえ。品質が著しく低くフォント幅を維持するには、文字を重ねる必要がありますが、X11 / Xftはこれをうまく処理できません。とにかく、最新のGUIは自動チルトをサポートします。気に入らない場合は、FreeBSDでmkitalicを使用するか、Debianでbdfslantを使用してみてください。

Q: 拡張版ですか?

答え:簡単に言えば、平均表示解像度が少なくとも150 DPIに達した場合です。 200がベストです。

追加資料:

おすすめ記事