这个问题让我了解了大部分情况。只要您只需要一种字体,建议的答案就有效。要拥有多种备用字体,您需要定义一个字体集并告诉 Emacs 将该字体集用于框架。首先,定义要使用的字体列表:
;; Fill in your list of fonts here
(setq my-fonts '("-xos4-terminus-medium-*-*-*-16-*-*-*-*-*-iso10646-1" ...))
然后,将这些字体放入标准字体集中:
;; NOTE: only works if you don't use --daemon
(dolist (font (reverse my-fonts))
(set-fontset-font "fontset-standard" 'unicode font nil 'prepend))
(add-to-list 'default-frame-alist '(font . "fontset-standard"))
只要您从不将 Emacs 作为守护进程启动,这将可以正常工作;如果你这样做,你会被告知
error: Fontset `fontset-standard' does not exist
为了解决这个问题,我们需要在添加字体之前创建标准字体集。Emacs 定义standard-fontset-spec
为标准字体集初始化的值;我们可以通过create-fontset-from-fontset-spec
先调用自己来完成:
(create-fontset-from-fontset-spec standard-fontset-spec) ;to make --daemon work
(dolist (font (reverse my-fonts))
(set-fontset-font "fontset-standard" 'unicode font nil 'prepend))
(add-to-list 'default-frame-alist '(font . "fontset-standard"))