【问题标题】:How can I change font zoom progression in mintty如何在 mintty 中更改字体缩放进度
【发布时间】:2015-07-01 07:30:45
【问题描述】:

ctrl+/- 更改 mintty 终端上的字体大小。

但是,有些地方的台阶相当大。我可以更改进度以便更好地适应我的窗口吗?

【问题讨论】:

    标签: fonts cygwin mintty


    【解决方案1】:

    简短回答:不修改源就无法配置此行为。

    在引擎盖下

    由于 mintty 是免费软件 (GPL),我从 mintty GitHub repository 查看了它的源代码。它是用 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可以看出,初始字体大小取自~/.minttyrc中配置的FontHeight

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

    字体大小外观

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

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

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

    【讨论】:

    • 感谢您提供如此详细的答复。但是,我不认为它会上升 1。或者,如果是的话,其他东西也在发生变化。只需按一下 ctl+,我的“行”就突然环绕了它,它填充了 3/4 的词宽……你知道查询当前字体大小等的命令行方法吗?
    • @ManInMoon 我不知道有什么方法可以查询终端的当前字体大小。我根据对程序如何显示字体的理解更新了我的答案。如果您将 mintty 字体更改为 Lucida Console 或 Consolas 并且您的结果与我发布的屏幕截图大不相同,那么编辑您的答案以包含不同大小的屏幕截图(使用 mintty 的选项对话框设置)会很有用。
    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2010-09-20
    • 2020-02-15
    • 2014-03-01
    • 2019-10-11
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多