cnfonts 在 org-mode 下英文字体一直是 Helvetica

不管 profile 里设置的是什么字体,英文字母的字体都是 Helvetica ,期望的字体是 LXGW WenKai Mono 。别的任何 mode (包括把当前的 org buffer 切换为别的 major mode )、 mini buffer 、 tab 的字体都是正常的。

不太知道怎么 debug ,我的感觉是因为某些原因 fallback 到了这个字体,但我没有 debug 的头绪,还请论坛里的大佬帮帮忙。

Debug可以将光标移动至Helvetica的字体然后M-x describe-face查看信息。

可能是fixed-pitchvariable-pitch没设置好。

十分感谢回复!

因为我还是Emacs新手,对字体也不太了解,经过你提供的思路和一些尝试,我发现似乎是 minor mode 不对引起的。具体来说是 Buffer-Face mode 。当我 M-x variable-pitch-mode 之后一切显示就正常了( Buffer-Face mode 关闭了)。

经过检查配置发现是以下配置的问题:

(add-hook 'org-mode-hook
          (lambda ()
            (variable-pitch-mode 1))

这也就解释了为什么只有org-mode有问题。

但我 还有个问题 是,似乎默认应该是启用 variable-pitch-mode 的,当禁用 variable-pitch-mode 时才会启用 Buffer-Face mode ,按照我的理解,这个配置应该会启用 variable-pitch-mode 才对,为什么反而导致其禁用了呢?

variable-pitch-mode不是默认启用的,这个mode应该是开启使用variable-pitch这个face的buffer face mode,会让Buffer中的所有文字用variable-pitch设置的字体。

所以实际上我正常工作的情况是关闭 buffer-face mode ,因为启用了 variable-pitch-mode 所以启用了 buffer-face mode ,从而导致了问题。因为我使用cnfonts配置的字体,所以可能会有一些冲突(我也是猜测)。