web-dev-qa-db-ja.com

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

現在の端末で斜体を正しく表示できるかどうかを確認したいのですが。

手動で確認するのは簡単です。

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

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

それを行うためのベストプラクティスは何ですか?


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

(これは元の質問の一部ではありません。ただし、曖昧すぎて、独立した質問として質問することは無意味です。)

6
polemon

それはいくつかの質問です:

  • Linuxコンソールがイタリックをサポートしている場合は、別のフォントを使用するか、文字を傾斜させてイタリックを模倣するなどの手法を使用します。
  • それが行われたと仮定すると、プログラムでこれを表示するには、コンソールに表示されているものの画像をダンプできるツールが必要になります。ただし、Linuxコンソールの画面ダンプではテキストのみが表示され、画像は表示されません。ダンプにはフォント情報がありません(太字や色もありません)。
  • settermscreendumpの両方が未加工のvcsaデバイスを開きます(ただし、代わりにscreendumpTIOCLINUXioctlのデフォルトを使用します。同じ内容です)
  • あなたcouldこの廃止されたioctl(つまり、カーネルが非常に古い)を使用して、色や太字が使用されたかどうかなどの属性をダンプする適切なツールを作成します:

    TIOCLINUX、サブコード=8
    画面の幅と高さ、カーソル位置、およびすべての文字と属性のペアをダンプします。 (カーネル1.1.67から1.1.91のみ。カーネル1.1の場合.92以降、代わりに/ dev/vcsa *から読み取ります。)

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

プログラム的にイタリックが実装されているかどうかを判断する解決策がないことに加えて、解像度を上げるための特別な機能を使用する以外に、Linuxコンソールフォントがイタリックで描画されることを期待する理由はほとんどありません。 Terminusフォントページ (これは、Linuxコンソールフォントと同じ効果をXで提供しようとするため、関連性があります)よくある質問セクションで次のように述べています。

Q.斜体バージョンですか?

A.いいえ。品質は大幅に低下します。フォント幅を維持するには、文字を重ねる必要がありますが、X11/Xftではうまく処理されません。とにかく、最新のGUIは自動傾斜をサポートしています。満足できない場合は、FreeBSDのmkitalicまたはDebianのbdfslantを試してください。

Q.スケーラブルバージョン?

A.簡単に言うと、平均ディスプレイ解像度が少なくとも150DPIになる場合です。できれば200。

参考文献:

3
Thomas Dickey

端末が実際にイタリックをサポートしているかどうかを確実にテストすることはできません。 tput sitmまたはtput ritmの出力をチェックすることにより、$TERMの値とそれに対応する端末の説明claimsがそれをサポートするかどうかをテストできますが、クレーム実際の動作は、どちらの方向でも簡単に同期しなくなる可能性があります。

Linuxコンソールが近い将来イタリックをサポートするか、サポートするかどうかは本当に疑わしいです。

3
egmont