令人沮丧的是,我无法在最新的 Ubuntu 22.04 上的任何终端中正确呈现表情符号。我让它们在浏览器(完全符合预期)、LibreOffice 甚至 Emacs shell 中工作,但在我的任何终端中都无法工作。我检查了语言环境(en_GB.UTF-8)、fc-list“MesloLGS NF Regular”(或任何其他使用 apt 安装的表情符号友好字体,如 fonts-noto-color-emoji 或 fonts-emojione),它们都检查无误。我重建了 fc-cache。
如果我在 emacs 中运行 shell 并在终端窗口中运行相同的命令,我会得到相同的答案,直到我尝试 cat 我的测试文件。在 Emacs shell 中我得到
Hello World
答案1
答案2
答案3
这是@dirtbkr 答案的更详细版本,对于评论或编辑来说太多了,但可以添加更多提示:
结论:您可能有重复的字体文件。使用此命令来找到它们:
find /usr/share/fonts/truetype -name Noto\*
如果您手动安装了字体,您可能已经在这个列表中认出了它们。删除重复项。您应该保留列表中的字体/usr/share/fonts/truetype/noto
- 这些应该是从包中安装的字体fonts-noto-color-emoji
。
如果这没有帮助,请继续阅读下面的长答案。
然后运行fc-cache -f -v
。
任何正在运行的进程可能仍会使用旧文件,因此请重新启动用于测试的程序(例如 Libre Office)。对于某些程序,您可能需要注销并重新登录(例如 Gnome 终端)。
较长的答案:
我用过这个脚本安装所有Google 字体事实证明,使用安装脚本而不是官方软件包存储库可能会造成破坏,即使只是字体文件。
就我而言,我只是删除了所有匹配的 Google 字体Noto*
。
以下命令列出全局字体目录中所有具有重复文件名的文件:
find /usr/share/fonts/ -type f -exec basename {} \; | sort | uniq -d
用于fc-list : file
查找其他字体目录 - 您可能需要扩大搜索范围。
为什么?
我搞不懂。我尝试删除软件包fonts-noto-color-emoji
、、fonts-noto-core
。fonts-noto-cjk
之后,没有安装其他字体/usr/share/fonts/truetype/noto
。所以我想我可以使用全部Google 字体并从那里使用表情符号。但是,这不起作用 - 在这种情况下没有显示表情符号。
也可以看看
答案4
字体文件夹中有“重复”文件会导致表情符号显示为空白。就我而言,我的文件夹中有NotoEmojiColor-Regular.ttf
和。只需删除其中一个文件即可解决问题。NotoEmojiColor.ttf
/usr/share/fonts/truetype/noto/