1

ctrl+/- mintty 端末のフォント サイズを変更します。

ただし、場所によってはステップがかなり大きいです。ウィンドウにうまくフィットするようにプログレッションを変更できますか?

4

1 に答える 1

2

短い答え: ソースを変更せずにこの動作を構成する方法はありません。

フードの下

mintty はフリー ソフトウェア (GPL) であるため、mintty GitHub リポジトリからソース コードをチェックアウトしました。これは C で書かれており、コードはかなり読みやすいことがわかり (私はシステム管理者であり、プログラマーではありません)、関連するコードの一部をここにコピーしました。

次のコードwininput.cから、現在のフォント サイズに追加される 1 (フォント サイズの増加) または -1 (減少) の個別のステップでズームが発生し、サイズを制御するために構成設定が使用されていないことがわかります。ステップ。

// Font zooming
if (cfg.zoom_shortcuts && mods == MDK_CTRL) {
  int zoom;
  switch (key) {
    when VK_OEM_PLUS or VK_ADD:       zoom = 1;
    when VK_OEM_MINUS or VK_SUBTRACT: zoom = -1;
    when '0' or VK_NUMPAD0:           zoom = 0;
    otherwise: goto not_zoom;
  }
  win_zoom_font(zoom);
  return 1;
  not_zoom:;
}

関連する関数は で定義されていwintext.cます。

void
win_set_font_size(int size)
{
  size = size ? sgn(font_size) * min(size, 72) : cfg.font.size;
  if (size != font_size) {
    win_init_fonts(size);
    win_adapt_term_size();
  }
}

void
win_zoom_font(int zoom)
{
  win_set_font_size(zoom ? max(1, abs(font_size) + zoom) : 0);
}

このwin_adapt_term_size関数は、新しいフォント サイズの単位で行と行を表示するようにウィンドウ サイズが適応するようにします。

sgnは数値の符号 (整数として表される) を返すマクロであることに注意してください。からstd.h:

#define sgn(x) ({ typeof(x) x_ = (x); (x_ > 0) - (x_ < 0); })

から、初期フォント サイズが で設定config.cされたものから取得されていることがわかります。FontHeight~/.minttyrc

{"FontHeight", OPT_INT, offcfg(font.size)},

フォントサイズの外観

フォント サイズの違いがどのように表示されるかは、選択したフォントとフォント レンダリング ソフトウェアの両方によって異なります。

以前の GDI レンダリング エンジンを置き換えるために Windows 7 でリリースされた新しいフォント レンダリング API である DirectWrite を使用して、Windows 7 で Lucida Console と Consolas が異なるフォント サイズで表示される様子を示すスクリーンショットを添付しました。

さまざまなフォント サイズで表示されるフォント

ご覧のとおり、フォントのレンダリング サイズの変化は、指定されたフォント サイズに正確に比例するわけではありません。さまざまなサイズで適切に表示されるフォントを選択するのに時間を費やしたことを覚えています。Consolas (ClearType が有効になっている) が最良の結果をもたらしました。

于 2015-07-01T09:28:21.420 に答える