尝试在doom上配置中文字体,从帖子上看到过两种办法:
(defun +my/better-font()
(interactive)
;; english font
(if (display-graphic-p)
(progn
(set-face-attribute 'default nil :font (format "%s:pixelsize=%d" "Fira Code" 17)) ;; 11 13 17 19 23
;; chinese font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset
(font-spec :family "Sarasa Mono SC")))) ;; 14 16 20 22 28
))
(defun +my|init-font(frame)
(with-selected-frame frame
(if (display-graphic-p)
(+my/better-font))))
(if (and (fboundp 'daemonp) (daemonp))
(add-hook 'after-make-frame-functions #'+my|init-font)
(+my/better-font))
或者
(defun +my/better-font()
(interactive)
;; english font
(if (display-graphic-p)
(progn
(set-face-attribute 'default nil :font (format "%s:pixelsize=%d" "Fira Code" 17)) ;; 11 13 17 19 23
;; chinese font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font)
charset
(font-spec :family "Sarasa Mono SC")))) ;; 14 16 20 22 28
))
(defun +my|init-font(frame)
(with-selected-frame frame
(if (display-graphic-p)
(+my/better-font))))
(if (and (fboundp 'daemonp) (daemonp))
(add-hook 'after-make-frame-functions #'+my|init-font)
(+my/better-font))
但有个共同问题:doom默认字体是monaco-12。我如果把英文字体设成一样的monaco 12,这行代码doom就完全不读了,我需要手动C-x C-e
才行。如果设置的不是monaco-12,那就完全没问题。
有没有人可以指教下这个问题的原因?
比如第一段代码里上面那个Fira Code 17替换成Monaco 12
Nasy
2021 年3 月 31 日 04:36
4
改成
... :font (font-spec :family "Monaco"
:weight 'normal
:size 12))
而不是 format 形式呢?
手动运行一直都是没问题的。C-u C-x
显示的是英文 Monaco-normal-normal…12
中文是STKaiti-bold-normal-normal…14
Nasy
2021 年3 月 31 日 04:50
8
手勭沒問題那就沒問題了呀
儞可以手勭加上 hook,有三个
(add-hook #'after-init-hook #'+my|init-font)
(add-hook #'after-make-frame-functions #'+my|init-font)
(add-hook #'server-after-make-frame-hook #'+my|init-font)
原来的代码里最后一段有个add-hook,是after-make-frame-functions的,你的另外两个要放到和他平行的位置嘛
试了下,还是不行。后面我再想想办法看看是什么原因吧。
刚又试了试,还是不行。
整段代码手动C-x C-e
的没任何问题的。但无论怎么加hook,emacs启动的时候就是不运行。非要手动不可。
但只要English font不是Monaco-12,他就自己运行。
。。。。。。
Nasy
2021 年3 月 31 日 15:19
13
那就手动吧(
另外你可以启动 emacs 的时候加上 -e ‘(+my/better-font)’
比如
emacsclient -nc -e ‘(+my/better-font)’
为啥大家都没提 doom emacs 默认就是配置妥当的,并不需要调整。。。
我只是把默认的 monaco 换成 menlo 了:
~/.doom.d/config.el:
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
;; are the three important ones:
;;
;; + `doom-font'
;; + `doom-variable-pitch-font'
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;;
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
;; font string. You generally only need these two:
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
(setq doom-font (font-spec :family "Menlo" :size 12 :weight 'semi-light)
doom-unicode-font (font-spec :family "monospace"))
其实是因为想换个中文字体。问题就在于如果不改英文字体或大小,单写什么设中文字体的命令都没用。
zzndb
2021 年5 月 7 日 02:56
17
doom 的话,像 doom-init-ui-hook
之类的也能用吧。
现在我 gui 用 doom-init-ui-hook
,daemon 用 server-after-make-frame-hook
看起来已经达到目的了。
可能是中文weight的问题,你改成light试试?
感觉好像是(set-face-attribute 'default nil :font (format “%s:pixelsize=%d” “Fira Code” 17))这句话,如果这里面的字体不变的话,后面咋变都没用。按说c-x c-e也不行,我是放在了(add-hook! 'doom-load-theme-hook xxx)这个hook里面。