Emacs中的“中”字和“言”字显示奇怪

(defvar +prefer-fonts '("Fira Code" "SF Mono" "Source Code Pro" "Noto Mono" "Hack"
                        "Menlo" "Monaco" "DejaVu Sans Mono" "Consolas"))
(if IS-WINDOWS
    (add-to-list '+prefer-fonts "Sarasa Mono SC"))
(cl-loop for font in +prefer-fonts
         when (+font-installed-p font)
         return (setq doom-font (font-spec :family font)))

(if IS-WINDOWS
    ;; doom/core-ui.el set this(for all-the-icons), cause font display problem for cjk
    (setq doom-unicode-extra-fonts nil))

我的配置

抱歉挖坟来回答这个问题,做个记录吧。在https://github.com/hlissner/doom-emacs/issues/3250 中,其实就已经有方法了,我自己选用的字体是Noto Sans CJK SC。希望遇到同样问题的人看到这个设置方法。

1 个赞

挖坟没什么啊,感谢提供更多解决方案 :heart:

另外:最近更新之后这个变量被废弃,因此这个方法不能用了

我特别好奇这个「言」是有个字体里的「言」真长这样,还是 harfbuzz 里面有套机制自动用 ASCII 符号组合汉字⋯⋯

doom emacs 可以参考添加这段代码

(let ((font-chinese "PingFang SC"))
  (add-hook! emacs-startup :append
   (set-fontset-font t 'cjk-misc font-chinese nil 'prepend)
   (set-fontset-font t 'han font-chinese nil 'prepend)
   ;; (set-fontset-font t ?中 font-chinese nil 'prepend)
   ;; (set-fontset-font t ?言 font-chinese nil 'prepend)
   ))
6 个赞

挺管用的, 感谢

23年前来挖坟,因为很不幸的是没有用前面的方案解决,以下是我的设置:

(setq doom-font (font-spec :family "Fira Code" :size 18 :weight 'semi-light)
     doom-variable-pitch-font (font-spec :family "Fira Code" :size 18)
     doom-unicode-font (font-spec :family  "思源黑体 CN"))

通过M-x: describe-font命令,搜索框输入 cn 查看自己有什么中文字体,我有 “思源黑体 CN”

在config.el文件内修改字体的地方(上方代码) 中加入doom-unicode-font (font-spec :family “思源黑体 CN”) 言字就不会显示错误了。

5 个赞

这个方法有用,谢谢。