(add-hook! 'rime-mode-hook :append
(set-fontset-font t 'han (font-spec :family "Sarasa UI J"))
(set-fontset-font t 'cjk-misc (font-spec :family "Sarasa UI J"))
(set-fontset-font t '(#xf0000 . #xf0142) (font-spec :family "98WB-0")))
如果我需要显示中文,那么我一定会输入中文,而且一定会使用Emacs内部的输入法实现……Anyway,现在只要发现了中文显示有问题,那么就C-\ C-\
两下就好了,不用再想办法和Doom Emacs的字体部分的代码还有Emacs的字体显示原理搏斗了。
原生 Emacs 就不需要考虑弯弯绕问题,我的字体配置只有这几行:
(set-face-attribute 'default nil
:family "Sarasa Mono SC Nerd"
:height 140
)
2 个赞
doom 是这样的,他主要先考虑的是拉丁字母,然后考虑的是all-the-icons
,最后才想到非拉丁语系用户。所以为什么Doom Emacs里面“中”字和“言”字老是出问题,因为用到了weather-icons
的字体了……
我也用的 doom. 之前看站里推荐的霞鹜文楷等宽. 中英文都换成了这个. 然后就没什么可抱怨的了.
1 个赞
sarasa和LXGW都用过,虽然都挺好,但是如果人就是这么喜欢折腾,突然觉得IBM Plex Mono好了,更加主要的因素还有现在主要用英文做笔记,这两款为了等宽等高而让拉丁字母过高了。
加到 emacs-startup-hook
里,我这儿中文就再没出现过问题:
(add-hook! 'emacs-startup-hook :append
(dolist (script '(han kana hangul cjk-misc bopomofo))
(set-fontset-font t script font-chinese)))
确实不用,我 emacs 打开至少几天不关,没有用 emacsclient 的需求
我发现这样设置也可以
(setq doom-font (font-spec :family "Hack"))
(setq doom-unicode-font (font-spec :family "LXGW WenKai Screen")) ;; “中”、“言”字测试
这样设置会导致emoji等unicode字符显示不了(在不勾选init.el中的emoji时)
Doom自身设置完字体后会执行 after-setting-font-hook,在那里设置中文字体即可。
(setq doom-font (font-spec :family "Iosevka" :weight 'medium :size 13.0))
(defun my-cjk-font()
(dolist (charset '(kana han cjk-misc symbol bopomofo))
(set-fontset-font t charset (font-spec :family "Sarasa Mono SC"))))
(add-hook 'after-setting-font-hook #'my-cjk-font)
2 个赞
又涨知识了,还不知道有这个 hook ,之前我是放在 emacs-startup-hook 里的