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)},

字体大小外观

如何显示字体大小的差异取决于所选字体和字体渲染软件。

我附上了一张截图,展示了 Lucida Console 和 Consolas 如何在 Windows 7 中使用 DirectWrite 以不同的字体大小显示,DirectWrite 是随 Windows 7 发布的更新的字体渲染 API,用于替换旧的 GDI 渲染引擎。

以不同字体大小显示的字体

如您所见,字体渲染大小的变化与指定的字体大小并不完全成线性比例。我记得我花时间选择了一种在不同尺寸下都能很好显示的字体,而 Consolas(启用了 ClearType)给了我最好的结果。

于 2015-07-01T09:28:21.420 回答