ターミナルグリフがフォントで定義されているのか、それとも独自のソースコードで直接定義されているのかを尋ねる質問はありますか?

ターミナルグリフがフォントで定義されているのか、それとも独自のソースコードで直接定義されているのかを尋ねる質問はありますか?

多くの最新の端末エミュレータには、独自のソースコードに直接ブロック図の文字の外観の定義が含まれており、ディスプレイをレンダリングするときにフォントが提供するバージョンを無視します。このようにレンダリングされた文字の外観を検出するために端末で実行されるプログラムの普遍的な方法はありますか?特に、プログラムが広くサポートされていない追加のボックス文字の外観を使用している場合、その文字が利用可能であることを確認するための最良の方法は何ですか?おそらくterminfo

現在のユースケースは、ncursesグラフィックコンポーネントのためにPythonで書かれた小規模なプライベートユースプロジェクトなので、そのコンポーネントとうまく連携することは利点ですが、すべてのソリューションに興味があります。


編集:たとえば、kitty;ソースコードのコメントは、電力線統合のためのものであることを示します。

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

ただし、Konsoleで同じ文字をレンダリングしようとすると、次のような結果が得られます。

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

Kittyが表示する文字は端末自体によって定義され、Konsoleが表示する文字は使用するように構成されたフォントで提供されます。前者や後者のようなものを見るかどうかを検出するために、すべての端末で実行されるプログラムのための普遍的な方法はありますか?

答え1

明らかに、あなたが使用している文字は、Unicode 1.0.1個人使用領域の一部です。ブロックダイアグラム文字はこの領域では実際に標準化されていませんが、エディタ、一部のシェル、およびその他のコマンドラインツール用のプラグインで使用されますpowerlinevim

バラよりSuperuser.SEに関するこの質問より多くの情報を知りたいです。

KiTTY開発者はこれらのプラグインのユーザーでありpowerline、端末エミュレータで直接ブロック図文字のサポートを実装したようです。

私が知る限り、ブロック図文字の可用性をテストする標準的なプログラミング方法はありませんpowerline。ターミナルエミュレータの機能の一覧を確認し、直接サポートがpowerline含まれていない場合は、powerlineパッチ付きフォントを使用する必要があります。

Unixスタイルの端末(および端末エミュレータ)で線画を使用する古典的な方法は、用語情報/smacs値に依存します。線画モードに切り替えて使用する文字を説明する制御コードです。一部のソフトウェアでは、PCのデフォルトコードページ#437のブロックダイアグラム文字を使用することもできますが、一般的にはフォント切り替え機能と正しい文字セットを持つフォントが必要です。rmacsacscsmacsrmacsacsc

現代的なアプローチは、0x2500-0x257fの範囲のUnicode標準ブロック図文字を使用することです。フォントを介して提供されるのか、端末エミュレータから直接提供されるのかは、アプリケーションにとって意味のない実装の詳細でなければなりません。


個人的には、私はpowerlineこのようなターミナル構成ハックが開発のいくつかの段階でUnix / Linux上級ユーザーにとって一般的だと思います。幼虫の段階専門用語ファイルに記載されているプログラマー。

システム管理者チームが数十または数百のシステムを維持する必要がある現実にさらされると、端末環境を強力にカスタマイズしたいという欲求が消え、標準または工場出荷時の設定をシームレスに使用できる機能に置き換えることがよくあります。最もよく接するシステムです。人々は依然として好みの特定のカスタマイズを持っているかもしれませんが、華やかな外観を犠牲にして重要な機能の中心にしか縮小されない傾向があります。

おそらく、これは何人かの人々がpowerlineこのような素晴らしいターミナルディスプレイを非常に重要だと思わない理由を理解するのに役立ちます。

関連情報