doomemacs doom-font设置问题

在config.el里设置如下 ; font (setq doom-font (font-spec :family “AR PL UMing CN” :size 16 :weight 'light) doom-variable-pitch-font (font-spec :family “sans” :size 13))

现在问题是如果用emacs -daemon打开再执行emacsclient打开文本看到的不是想要的UMing CN字体,不确定是config.el没执行到还是配置后面又被更改?

用emacsclient打开文本的时候是执行如下脚本,会不会是和其中用的选项有关系?

#!/bin/bash -e

if [[ “$DISPLAY” ]]; then frame=emacsclient -a '' -e "(member \"$DISPLAY\" (mapcar 'terminal-name (frames-on-display-list)))" 2>/dev/null [[ “$frame” == “nil” ]] && opts=’-c’ # if there is no frame open create one [[ “${@/#-nw/}” == “$@” ]] && opts="$opts -n" # don’t wait unless we’ve asked to run in a terminal else opts=’-nw’ fi

exec emacsclient -a ‘’ $opts “$@”

///////////////////////////////////////////////////

如果用emacs直接打开文本,就能看到正确字体

发现确实和emacs启动模式有关系。

当使用“emacs -daemon”开启时就会有以上想要的字体没有正确用上的问题 当直接用“emacs”开启时字体是正确的

请问各位有没有相关线索可以进一步找原因的? 谢谢!

Emacs都是编辑纯文本文件的。对于纯文本文件,是没有字体这个概念的。Emacs的字体设置是在你显示的时候为你把文本呈现成什么样的字体,因此如果你使用daemon模式,这时并不会创建Emacs窗口(frame),因此字体设置是不会起作用的。

如果你一定要使用daemon,需要使用hook来手动设置字体。daemon模式提供了一个server-after-make-frame-hook,因此可以使用这个hook来设置。但此时不能再使用doom-font来设置了。

(if (daemonp)
   (add-hook! 'server-after-make-frame-hook
              '(lambda () 
                  (set-face-attribute 'default nil :font (font-spec :family "AR PL UMing CN" :size 13))
                  (set-face-attribute 'variable-pitch nil :font (font-spec :family "sans" :size 13)))))