私は、アルファベット文字を使用して非常に平滑なグラフィックを作成するncursesアプリケーションを作業しています。グラフィックのレンダリング方法を変更して(正方形が常に正方形のように見えるように)、フォント文字の外観のサイズ(特にアスペクト比)を検出できるようにしたいです。
使えます
void getmaxyx(WINDOW *win, int y, int x);
ncursesの関数は画面/ウィンドウのサイズを取得できますが、多くのウィンドウのサイズを自由に調整できるため、信頼できません。フォントサイズを検索する同様の機能(または外部メカニズム)がありますか?
答え1
互換性xterm
または提供されたフォント操作エスケープシーケンスが無効になっていません。
$ xtermcontrol --get-font
DejaVu Sans Mono
その後、<ESC>]50;?<ESC>\
エスケープシーケンスが送信され、端末が応答します<ESC>]50;font-name<ESC>\
。バラより引用する。
したがって、次のようにクエリすることもできますzsh
。
$ IFS=$';\e' read -rsd'\' -t0.2 $'font?\e]50;?\e\\' font font rest
$ typeset font
font='DejaVu Sans Mono'
allowFontOps
ただし、通常はデフォルトで無効になっています。*allowFontOps: true
リソースを有効にするか無効にすることをお勧めしますが、*disallowedFontOps: SetFont
許可しますGetFont
が、許可しないように設定できますSetFont
。
寸法の場合は、以下を設定します。
*disallowedWindowOps: 1,2,3,4,5,6,7,8,9,11,13,19,20,21,GetSelection,SetSelection,SetWinLines,SetXprop
GetWinSizeChars
リソース、つまりGetWinSizePixels
以下を除くすべてのリソースは許可されませんzsh
。
$ IFS=';t' read -rsdt -t0.2 $'x?\e[18t' cy cx rest
$ IFS=';t' read -rsdt -t0.2 $'x?\e[14t' y x rest
$ echo ${x}x${y} ${cx}x${cy}
1916x1012 147x38
\e[18t
\e[14t
以下を使用してセルサイズを取得できるように、セル数とピクセル数でウィンドウサイズを要求します。
$ printf '%gx%g\n' '1.*x/cx' '1.*y/cy'
13x26
答え2
こんにちは、日当たりの良いアテネから来ました。 Font_sizeやさまざまなフォントなどのようなものは、残念ながらハードウェア用のグラフィックドライバをロードしてグラフィック環境に適用することに関連しています。 Linuxのグラフィック環境ではなく、Linuxのグラフィック環境を使用している場合にのみ可能です。その時のみロードされます。いずれの場合も、コンソール(英数字モードのみ)またはCTRL + Tを使用してWindowsセッション中に端末を有効にします。さまざまなフォントサイズを使用できる唯一の方法はncursesですが、POSIX標準によるとこれは不可能です。どのような状況でも、さまざまなフォントサイズを適用するには、さまざまな環境があります。処理javaサポート、これは解決策を提供します。アテネからご挨拶 コスタス・ベルギディス