在我从 F22 升级的 Feodora 23 系统上,U1F32D 符号在终端中显示得很好,但在我从头安装的系统上,我得到了带数字的占位符。我刚刚检查了一下,我在系统上有大约 60 个字体包不起作用,而在它起作用的地方有 200 多个。如果不手动检查每个字体,有没有办法确定我需要添加哪种字体?
这个答案已经谢天谢地了一个新的选择被取代的fc-list
命令,:charset=1F32D
给出在这里,并且可以从91年2月11日的版本(2014,12月下旬)。感谢@scruss 提供此更新。
如果你发出命令
fc-list -v
Run Code Online (Sandbox Code Playgroud)
它应该为每种字体列出charset
属性,该属性是字体中存在的字符代码的位掩码。例如,对于像fc-list -v 'Courier 10 Pitch'
它这样有线条的简单字体:
charset:
0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: 00000000 00020000 000c0006 61000003 00040000 00000000 00000000 00000000
...
00fb: 00000006 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Run Code Online (Sandbox Code Playgroud)
取第一列中的十六进制数,就像最后一行一样00fb
,将其左移 8 位。它是 unicode 值的开始。位掩码 00000006 表示代码 1 和 2 ( 6 = 2+4 = 1<<1 | 1<<2
)存在一个字形,您将其添加到第一列以获得00fb01
和00fb02
。(例如,这些字形是拉丁文小连字 fi。)
因此,如果U1F32D
您需要 grep01f3:
并查找2d
在该行中的 index 处设置的位,即00000000 00002000 ...
(可能!)。注意这里的 0 只显示 2 的位置。实际值可以是任何十六进制数字。(grep 模式可能是01f3: ........ ....[2367abef]
)。前面的file:
条目应该引导您到包 (use rpm -qf filename
)。
但我相信一定有更好的方法来搜索字形。