【问题标题】:Some terminal can't display emoji correctly某些终端无法正确显示表情符号
【发布时间】:2016-11-14 10:15:59
【问题描述】:

我安装了几个终端。但只有其中一些可以正确显示所有 Unicode 字符。例如,经典的表情符号 ????在不同终端显示不同:

Xterm

Urxvt(又名 rxvt-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

标签: unicode terminal emoji


【解决方案1】:

我会自己回答。 :-) 有一种叫做fallback fonts的东西。当您的主字体集中不存在特定字形时,将使用这些字体。 只有部分终端支持后备字体

请参阅本文上方的段落https://www.uninformativ.de/blog/postings/2015-10-04/0/POSTING-en.html,以及如何通过 fontconfig 设置后备字体:http://www.omgubuntu.co.uk/2016/03/enable-color-emoji-linux-svg-font

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2021-01-19
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多