doom emacs下中文字体的设置

doom

#1

我目前在使用doom emacs, 我想单独为中文设置字体, 相关片段如下:

(setq face-font-rescale-alist `((“STkaiti” . ,(/ 16.0 13))))

(set-fontset-font t 'han (font-spec :family “STKaiti” :size 16))

(set-fontset-font t 'cjk-misc (font-spec :family “STKaiti” :size 16))

尝试了以下做法:

  1. 在~/.doom.d/config.el中插入上述片段, 发现无效; 原因我猜是doom在doom-after-init-modules-hook中加入了doom|init-fonts;
  2. 将上述代码用lambda函数加入到 doom-after-init-modules-hook末尾, 此时会报错: Invalid function: (set-fontset-font t (quote han) (font-spec :family "STKaiti" :size 16))

真心请教一下doom emacs下如何单独为中文设置字体

Update: 上述代码片段是没有问题的, 在启动emacs之后, 拷贝到scratch buffer 然后 evaluate之后, 能够让设置生效.


#2

哇,没人用doom吗


#3

我用了cnfonts


#4
(defun custom-font()
;; your settings
)

(add-hook 'after-make-frame-functions #'custom-font)

#6

cnfont 有一些问题, 在doom中使用cnfont之后, modeline的字体会出现问题. 所以我没有用cnfont了


#7

非常感谢您的回复, 但是这样还是不起作用


#8
(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中用起来一切正常。


#9
(when IS-WINDOWS
  (when (display-graphic-p)
    (defun set-font (english chinese english-size chinese-size)
      (set-face-attribute 'default nil :font
                          (format   "%s:pixelsize=%d"  english english-size))
      (dolist (charset '(kana han symbol cjk-misc bopomofo))
        (set-fontset-font (frame-parameter nil 'font) charset
                          (font-spec :family chinese :size chinese-size))))
    (set-font "Source Code Pro" "simsun" 12 14)
    ))

#10

谢谢您的回复, 这段代码是work的, 确实写得逻辑完备, 学习了~谢谢


#11

谢谢回复, 这段代码也可以~