ctrl+/- 更改 mintty 终端上的字体大小。
但是,有些地方的台阶相当大。我可以更改进度以便更好地适应我的窗口吗?
简短的回答:如果不修改源,就无法配置此行为。
由于 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)给了我最好的结果。