请问, NerdFonts 网站的某些图标无法在 emacs 中显示,应该如何正确设置才可以正常显示?

Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher 中的图标 copy icon to clipboard 后,黏贴到终端、vim 中都可以正常显示

但黏贴到 emacs 中,某些图标就不能显示,只显示 Unicode 16 的编码。



那么,在 emacs 中应该如何设置,才能够正确显示这些图标呢?

系统: Debian,Arch,Windows
字体: 系统字体和 emacs、vim 字体都是同一个 FiraCode Nerd Font

emacs的剪切板似乎也是有编码的 估计是拷贝剪切的时候,编码转换有问题。

具体可以看看

https://www.emacswiki.org/emacs/UnicodeEncoding

1 个赞

设置后,还是不行。从剪切板黏贴到 emacs 中,不正常显示。保存该文件后,在 vim 中打开却是正常的。

(保存的同一个文件,左边为 vim,显示正常。右边是 emacs)

是不是说明,拷贝到 emacs 的编码正确未改变,只是在 emacs 中不能正常显示?
虽然问题没有得到解决,但还是很感谢提供参考! :blush:

从结果上看是因为没有字体

             position: 57 of 60 (93%), column: 0
            character: 󰭈 (displayed as 󰭈) (codepoint 985928, #o3605510, #xf0b48)
              charset: unicode (Unicode (ISO10646))
code point in charset: 0xF0B48
               syntax: w 	which means: word
             category: L:Strong L2R
             to input: type "C-x 8 RET f0b48"
          buffer code: #xF3 #xB0 #xAD #x88
            file code: #xF3 #xB0 #xAD #x88 (encoded by coding system utf-8)
              display: no font available
1 个赞

应该是字体加载顺序有问题,要在所有自定义字体加载完之后再加载need icon不然会被覆盖掉。也可以试试在启动最后调一下 (nerd-icons-set-font)

2 个赞

:+1: :+1: :+1:
在字体设置的最后,加了 (nerd-icons-set-font) 后,显示就正常了。非常感谢!

1 个赞

加个尾部参数试试

;; 这不会覆盖之前的符号
(set-fontset-font t nil "Symbols Nerd Font Mono" nil 'append)
;; 这会覆盖之前的符号
(set-fontset-font t nil "Symbols Nerd Font Mono" nil 'prepend)

在找不到字体的时候可以考虑显示一个报错信息。例如,可以使用下面的函数加载字体:

(defvar my/fontset-config
  '((t 'han "LXGW Wenkai Mono")
    (t 'kana "LXGW Wenkai Mono")
    (t nil "Symbols Nerd Font Mono" nil 'append))
  "My preferred unicode fonts for specific fontsets.")

(defun my:setup-default-fontset (conf-list)
  "A helper for setup fontsets, CONF-LIST is a list of args for `set-fontset-font'."
  (dolist (conf conf-list)
    (condition-case nil
        (eval `(set-fontset-font ,@conf))
      (error (message "failed to apply set-fontset-font to %S" conf)))))
3 个赞

:handshake:好的,感谢提供解决方案。 已记录 :writing_hand: 保存为笔记了!