我的 GNU Emacs 配置在多台计算机之间共享(包括 FreeBSD、Ubuntu 和 Windows 7 的固定安装以及 USB 驱动器上 NT Emacs 和 Cygwin 的可移植安装)。我想定义 Emacs 将按顺序尝试的字体列表,直到找到已安装的字体(因为我并不总是具有可以安装字体的 root 访问权限)。通常,set-fontset-font
和 friend 就可以了;但是,当 Emacs 用作守护进程 (emacs --daemon
) 时,在打开框架之前不会创建普通字体集。由于这一切都需要作为我的 .emacs
的一部分运行,所以为时已晚。
(以防万一字体集创建问题是 FreeBSD 的 Emacs 端口或我的配置特有的问题, this is the output of make showconfig 。)
最佳答案
This question我大部分时间都到了那里;只要您只需要一种字体,建议的答案就有效。要拥有多种后备字体,您需要定义一个字体集并告诉 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"))
关于emacs - 在守护进程 Emacs 中使用字体列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17102692/