为什么使用 Xft 字体时 xterm 不支持双倍大小的字符?

为什么使用 Xft 字体时 xterm 不支持双倍大小的字符?

每当我配置xterm使用核心 X11 字体

*.vt100.renderFont:             False
*.vt100.locale:                 False
*.vt100.font:                   -monotype-courier new-medium-r-normal--*-120-*-*-m-*-koi8-r

它呈现双倍大小的字符适当地:

在此处输入图片描述

但是当我将其配置为使用客户端字体时:

*.vt100.renderFont:             True
*.vt100.faceName:               Courier New:antialias=false
*.vt100.faceSize:               12
*.vt100.utf8:                   1
*.vt100.utf8Fonts:              True
*.vt100.utf8Title:              True

它无法渲染双倍大小的字符,可以通过以下方式确认vttest公用事业:

在此处输入图片描述

两个都油灰(在视窗) 和konsole 使用客户端字体并仍然正确呈现双倍大小的文本。

我是否错误地配置了我的xterm,或者这是一个已知问题?

答案1

这是一个已知的限制,(见变更日志)已于 2019 年末得到解决。从补丁 #350 开始,绘制 VT100 样式双倍字符的能力是默认编译的功能。配置选项总结一下:

  --disable-doublechars 禁用对双倍字符的支持

    不要编译支持字体操作的代码
    实现 vt100 风格的双倍大小字符。

而补丁#349的变更日志与这个问题相关:

重新组织文本绘制,以便能够研究使用 Xft 实现 VT100 样式的双倍字符。在执行此操作时,针对明显的 Xft 错误找到了解决方法,该错误在从 132 列切换到 80 列时会丢失其可绘制状态。

手册页说(请注意省略TrueType来自讨论的字体):

           Although xterm attempts to derive a bold font for other
           font selections, the font server may not cooperate.  Since
           X11R6, bitmap fonts have been scaled.  The font server claims
           to provide the bold font that xterm requests, but the
           result is not always readable.  XFree86 introduced a feature
           which can be used to suppress the scaling.  In the X server's
           configuration file (e.g., “/etc/X11/XFree86” or
           “/etc/X11/xorg.conf”), you can add “:unscaled” to the end of
           the directory specification for the “misc” fonts, which
           comprise the fixed-pitch fonts that are used by xterm.  For
           example

               FontPath                 "/usr/lib/X11/fonts/misc/"

           would become

               FontPath                 "/usr/lib/X11/fonts/misc/:unscaled"

           Depending on your configuration, the font server may have its
           own configuration file.  The same “:unscaled” can be added to
           its configuration file at the end of the directory
           specification for “misc”.

           The bitmap scaling feature is also used by xterm to
           implement VT102 double-width and double-height characters.

使用以下方法处理双倍宽度/双倍高度字符TrueType字体的实现方式不同,它使用双倍大小的字体一次绘制/剪切一个字符。当然,使用字体配置的度量(通常会忽略标称边界框),不能保证结果看起来不错。

不管怎样,PuTTY 和 konsole 在这个测试中也存在各自的问题:

PuTTY,相同测试,但下一页……

Konsole 也一样

XTerm,相同测试

PuTTY 无法处理测试中的线条绘制部分,而 Konsole 通常会产生一些奇怪的窗口大小。此外,如果仔细观察,你会发现单倍宽度文本和双倍宽度文本的对齐方式存在细微差异(ymmv)。

相关内容