【发布时间】:2016-11-14 10:15:59
【问题描述】:
我安装了几个终端。但只有其中一些可以正确显示所有 Unicode 字符。例如,经典的表情符号 ????在不同终端显示不同:
如您所见,术语(还有 gnome-terminal 或 st,此处不存在)可以正确显示表情符号。 urxvt,xterm 不能显示矩形而不是正确的字符。
为什么会这样?所有终端的语言环境都相同。字体显然安装正确。 xterm 和 rxvt-unicode 应该支持 Unicode(至少像 ěščř 这样的捷克字符显示没有问题),但它们显然不支持 100%。
【问题讨论】:
-
xterm 使用单一字体(无字体集),并且表情符号可能不在 xterm 使用的字体中。
-
@ThomasDickey 所以有“多字体”终端和只能使用一种字体集的终端,对吧?
-
我在uninformativ.de/blog/postings/2015-10-04/0/POSTING-en.html 上找到了这个:关于 XTerm 需要注意的重要一点是,您选择了一种字体,然后 XTerm 只使用这种字体。这听起来可能有点令人困惑,是的。其他一些终端的工作方式不同:您可以指定几种字体,按优先级排序。如果终端被要求显示主要字体中不存在的字形,它会尝试在辅助字体中查找该字形,然后在第三字体中查找,依此类推。这称为“字体后备”或“后备字体”。
-
另一方面,rxvt-unicode 使用字体集。因此,仅此一项并不能解释问题。
-
rxvt-unicode 也有一个显示太大字符的问题,这可以通过在 .Xdefaults 中设置 URxvt.letterspace: 2 来解决,但它会因为占用太多空间而使一切变得丑陋。一些讨论是例如这里:github.com/powerline/fonts/issues/176