你可以用终端kitty来做测试,因为他这个包在终端里也是支持的。 下面是我对kitty部分字符的设定,你也可以参考:
symbol_map U+2E80-U+FA2D Sarasa Gothic SC Nerd Font
下面是安装我用的字体
yay -S ttf-sarasa-gothic-nerd-fonts
如果终端中的符号是正常的,你emacs里的符号不正常,那就说明你emacs关于字体的配置有问题。
你可以用终端kitty来做测试,因为他这个包在终端里也是支持的。 下面是我对kitty部分字符的设定,你也可以参考:
symbol_map U+2E80-U+FA2D Sarasa Gothic SC Nerd Font
下面是安装我用的字体
yay -S ttf-sarasa-gothic-nerd-fonts
如果终端中的符号是正常的,你emacs里的符号不正常,那就说明你emacs关于字体的配置有问题。
请问这个是 kitty 的配置吗?
symbol_map U+2E80-U+FA2D Sarasa Gothic SC Nerd Font
我没有太理解这个调试的思路?是说 kitty 有一个功能是将一些一些字符用特定字体(sarasa-gothic-nerd-fonts)展示,然后我安装这个特定字体来看看有没有用吗?那这个 sarasa-gothic-nerd-fonts 还是 nerd-fonts 吗?
不过如果不执行 symbol_map 这个指令,然后只用 kitty 并下载字体,似乎是可用的
请问这说明了什么呀?
我配置字体的代码如下,请问能看出什么问题吗?
(defun +setup-fonts ()
"Setup fonts."
;; JetBrainsMono 这个字体并不支持一些字符,好像 Sarasa Term SC 支持得更多一些,但是不知道 vscode 为啥可以
(set-face-attribute 'default nil :font (font-spec :family "JetBrainsMono Nerd Font" :size +font-en-size)) ; 设置英文字体
(set-fontset-font t 'han (font-spec :family "LXGW WenKai" :size +font-han-size))
(set-fontset-font t 'han (font-spec :script 'han) nil 'append) ; 设置中文字体 Sarasa Term SC LXGW WenKai
(set-fontset-font t 'unicode (font-spec :family "Noto Color Emoji") nil 'append)
;; (set-fontset-font t 'unicode (font-spec :family "Symbola") nil 'append)
)
那个配置是因为我只对部分字体做了配置,所以单独拿了出来,它不影响我英文字体。可以看的出来的是不可能是什么系统问题,如果有正确的字体,也能正常显示符号。所以你可以先把你的字体配置去掉。仅仅安装他的两个包,看看是不是就能正常显示了。同时你可以在那个不显示符号的位置执行describe-char来看看字体是否为nerd font。
即使 emacs -q 依然是这种失败的结果
另外如果使用 describe-char 描述这个错误字符,他会描述成一个 space,如下所示
position: 223 of 1111 (20%), column: 56
character: SPC (displayed as SPC) (codepoint 32, #o40, #x20)
charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x20
script: latin
syntax: which means: whitespace
category: .:Base, a:ASCII, l:Latin
to input: type "C-x 8 RET 20" or "C-x 8 RET SPACE"
buffer code: #x20
file code: #x20 (encoded by coding system utf-8-unix)
display: by this font (glyph code):
ftcrhb:-JB-JetBrainsMono Nerd Font-regular-normal-normal-*-20-*-*-*-m-0-iso10646-1 (#x04)
不过我用 describe 描述正常显示的图标,结果类似。
不需要emacs -q,那样你安装的包岂不是也没了,是把你字体的配置注释掉就好
确定这个竖线不是feature吗?因为竖线左边是文件的信息,右边是文件名,感觉像是故意做出来方便区分的
其实就蛮奇怪的,一般字符缺失不是像他那样的,而是也会显示一个符号,但不能正常显示。dired我没设置,是没有这个竖线的。
我确实没有表达清楚,我说的 emacs -q
就是没有其他配置,只有 nerd-icons 和 nerd-icons-dired 这两个包,就会出现这种“极高竖线”的情况。
此外如果使用 knosole 来运行 emacs -nw
,其效果如下,可以看到依然是没有这个字符的:
如果只去掉字体设置,其效果如下:
在极高线出 describe-char,其效果如下:
position: 1072 of 1111 (96%), column: 56
character: SPC (displayed as SPC) (codepoint 32, #o40, #x20)
charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x20
script: latin
syntax: which means: whitespace
category: .:Base, a:ASCII, l:Latin
to input: type "C-x 8 RET 20" or "C-x 8 RET SPACE"
buffer code: #x20
file code: #x20 (encoded by coding system utf-8-unix)
display: by this font (glyph code):
ftcrhb:-ADBO-Source Code Pro-regular-normal-normal-*-16-*-*-*-m-0-iso10646-1 (#x01)
不清楚是什么原因,非常感谢您的帮助。
应该不是 feature,可以参考我发的第一张图,里面有正常显示的图标,也有极高竖线。感谢您的帮助。
你先试试一个最小配置,先别配置其他东西,你再看看有没有问题
(use-package nerd-icons
:custom
(nerd-icons-font-family "Sarasa Term SC Nerd")
:ensure t)
(use-package nerd-icons-dired
:hook
(dired-mode . nerd-icons-dired-mode))
没有任何配置的情况下也有那个竖线吗?你确认nerd-icons-dired-mode是enable的吧?有点摸不到头脑了。。。
就是用的您上面给的那个配置呀,写在 init.el 里面(里面只有那俩包和 straight 启动部分),early-init.el 也清空了。确实是有这个竖线的,会不会是我的 emacs GUI 界面本身对于未找到的字符就是这个极高竖线?因为之前也出现过一些字符未找到,然后出现极高竖线的情况,比如我使用 JetBrainsMono Nerd Font 就没有办法渲染一些字符,如下所示:
emacs 版本是 29.1,操作系统是 manjaro 23.1
我的 emacs 配置在 GitHub - Thysrael/emacs.d: my emacs config 。
抱歉,我刚才(nerd-icons-font-family “Sarasa Term SC Nerd”)的位置多了个emacs,你再试试,固定下这个字体。
“多了个 emacs ”是指什么呀?
刚才写成了(emacs-nerd-icons-font-family “Sarasa Term SC Nerd”),好久之前写的,我也没检查,你先试试我改好的配置。
你可以换字体固定嘛,是nerd字体就好
我试了几款,似乎都会出现极高竖线,可能只有 Sarasa Term SC Nerd 不会。总之还是感谢了,不过我好像定位到了 bug,当我使用 nerd-icons-insert 插入字体的时候,会发现所有的 midicon 是插入后都是一条极高竖线