一些终端无法正确显示表情符号

4
我安装了几个终端,但只有其中的一些能够正确显示所有Unicode字符。例如,不同的终端会以不同的方式显示经典Emoji符号:
Xterm xterm Urxvt(又名rxvt-unicode) urxvt Terminology terminology 如您所见,Terminology(还有gnome-terminal或st,它们在此处没有显示)可以正确显示Emoji符号,而urxvt和xterm则无法正确显示字符,而显示矩形。
为什么会这样呢?所有终端的locale都相同。字体显然已正确安装。xterm和rxvt-unicode应该支持Unicode(至少捷克语字符如ěščř可以毫无问题地显示),但是它们显然并没有完全支持。

3
xterm只使用一种字体(没有字体集),很可能表情符号不在xterm使用的字体中。 - Thomas Dickey
@ThomasDickey,所以有“多字体”终端和只能使用一个字体集的终端,对吗? - Michal Špondr
请注意,XTerm 的一个重要特点是您选择一个字体,然后 XTerm 仅使用此字体。这可能听起来有点混乱。其他一些终端的工作方式不同:您可以指定多个字体,按优先级排序。如果终端被要求显示主字体中不存在的字形,则尝试在次要字体中查找该字形,然后在第三字体中查找,以此类推。这就是所谓的“字体回退”或“回退字体”。 - Michal Špondr
另一方面,rxvt-unicode使用字体集。所以这本身并不能解释这个问题。 - Thomas Dickey
rxvt-unicode也存在显示过大字符的问题,可以通过在.Xdefaults中设置URxvt.letterspace: 2来解决,但这会占用太多空间,使得所有内容看起来都很丑陋。有关此问题的一些讨论可以在此处找到:https://github.com/powerline/fonts/issues/176 - Flammie Pirinen
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接