问题 如何在emacs中指定后备字体?


我刚刚从源代码安装了Emacs 24,并且当主要字体不包含我需要的国际字形时,我想安装主要字体和后备字体。在Linux下,这是由大多数环境通过fontconfig完成的,但是尝试设置字体

(set-default-font "Monospace 11")

不起作用,而不是fontconfig Monospace集合,似乎我得到“Sans”。

要获得等宽字体,我需要做类似的事情:

(set-default-font "Dejavu Sans Mono 11")

但不幸的是它不包含我想要的字形。所以我的问题是,如果emacs提供了一种“后备”机制,只要主要字体不能使用它就会使用它


4087
2018-05-21 18:05


起源

是的,至少有一种可能性(我认为通常的方式)是通过字体集。 - Gilles


答案:


吉尔斯向我指出了使用字体集的解决方案。我了解到字体集足够灵活,因此您可以为不同的unicode范围使用不同的字体。因此,要将Miriam Mono CLM用于希伯来语,您可以输入以下配置选项:

(set-fontset-font "fontset-default" '(#x5d0 . #x5ff) "Miriam Mono CLM:bold")

16
2018-05-21 20:14



我认为需要指出“fontset-default”是一个 倒退 字体集。我多次阅读此解决方案并阅读手册 set-fontset-font 但从未真正理解这个解决方案的含义。 - milkypostman
此外,您可以替换范围 (#x5d0 . #x5ff) 有一个字符集 - 像 unicode  - 只有当字体无法呈现时,它才会回退到那些unicode字符。 - milkypostman
只是为了信息:您也可以替换 "Miriam Mono CLM:bold" 同 (font-spec :size 50 :name "Miriam Mono CLM:bold")。这允许您为后备字体设置不同的大小或重量(如果它看起来与您的标准字体太不相同)。 - Malabarba