我正在尝试为 emacsclient 设置我的字体,如下所示:
(let ((default-font (cond
((member "Inconsolata" (font-family-list))
"Inconsolata 14")
(t
"monospace 20"))))
(set-default-font default-font)
(add-to-list 'default-frame-alist `(font . ,default-font)))
我C-x C-e
在cond
性交,它返回"Inconsolata 14"
。我C-x C-e
在let
性交和字体更新。
当我通过
$ emacs
它可以工作(字体设置为 Inconsolata 14)。
但是,当我通过启动应用程序时
$ emacsclient --alternate-editor="" --create-frame "$@"
字体改为等宽 20。
请指教。
编辑:
我发现通过包括
(message "%s" (font-family-list))
在emacsclient 启动时(font-family-list)
返回的我的 .emacs 文件中。nil
不幸的是,也在初始化期间:
;; Both also print `nil` to the `*Messages*` buffer.
(message "%s" (find-font (font-spec :name "inconsolata")))
(message "%s" (find-font (font-spec :name "Inconsolata")))
;; Throws "error: No fonts being used"
(message "%s" (describe-font "Inconsolata"))
我不知道如何检测初始化期间是否安装了字体。我的问题变成了:如何在 emacsclient 启动时可靠地检查字体是否可用?
编辑2:
在after-init-hook
, emacs-startup-hook
, window-setup-hook
,中回显before-make-frame-hook
,after-make-frame-functions
也会导致nil
.