将 doom emacs 升级到最新版后,没有办法设置中文字体了

之前都是用 doom-unicode-font 来设置中文字体的,一直没有问题,今天升级了下 doom emacs,发现设置的中文字体没有生效,仔细看了下,似乎是说 doom-unicode-font 不支持了,建议使用 doom-symbol-font,不过用了 doom-symbol-font 之后也不管用,大家知道是怎么回事么?我现在用的配置代码如下:

(setq doom-font (font-spec :family "JetBrains Mono" :size 20)
      doom-serif-font doom-font
      doom-symbol-font (font-spec :family "Sarasa Fixed CL" :size 19)
      doom-variable-pitch-font (font-spec :family "Iowan Old Style" :weight 'extra-bold))

看起来 doom emacs 似乎根本就没有读 doom-symbol-font 这个变量的值,因为我即使把其中的 Sarasa Fixed CL 换成不存在的字体 abc,Emacs 都没有报错。

没有报错是因为 Doom 并不检查这个字体是否合法,只是单纯传递给 set-fontset-font,而这个函数也不会检查字体是否合法,如果不合法,就当作没设置,按照 fallback 字体来了。

我是这么设置中文的:

(dolist (characters '(han kana hangul cjk-misc bopomofo))
  (set-fontset-font t characters "LXGW WenKai"))

还是自己来设置比较好,这样不依赖 Doom 如何理解 symbol-font 或是 unicode-font。

1 个赞

用了你这段代码确实可以了,太感谢了!这个问题折腾了我好长时间。

Doom 最新版本貌似需要使用 unicode 模块来把中文映射到doom-symbol-font