在emacs中如何指定备用字体?

18
我刚刚从源代码安装了Emacs 24,并想安装一个主要字体以及一个备用字体,当主要字体不包含我需要的国际字符时使用备用字体。在Linux下,大多数环境都通过fontconfig来完成这个操作,但尝试通过

设置字体时遇到问题。
(set-default-font "Monospace 11")

我的代码无效,使用fontconfig的Monospace字体集合时,我看到的却是"Sans"。

要获取等宽字体,我需要进行类似以下的操作:

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

但不幸的是,它不包含我想要的字形。因此我的问题是,如果Emacs提供一种"fallback"机制,每当主要字体无法满足时,就会使用它。


3
是的,至少有一种可能性(我认为是正常的方式)是通过字体集来实现。 - Gilles 'SO- stop being evil'
2个回答

22

Gilles指出了解决方案,即使用字体集。我了解到字体集非常灵活,因此您可以针对不同的Unicode范围使用不同的字体。因此,要在希伯来语中使用Miriam Mono CLM字体,您可以输入以下配置选项:

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

5
需要指出的是,“fontset-default”是一个“fallback”(回退)字体集。我读了这个解决方案好几次,并且阅读了“set-fontset-font”手册,但实际上从没真正理解这个解决方案的含义。 - milkypostman
5
另外,您可以使用字符集(例如 unicode)替换范围 (#x5d0 . #x5ff),只有当字体无法呈现时才会回退到这些 Unicode 字符。 - milkypostman
3
仅供参考:您还可以使用(font-spec :size 50 :name "Miriam Mono CLM:bold")替换"Miriam Mono CLM:bold"。这样可以为备用字体设置不同的大小或粗细(以防它与您的标准字体看起来有太大的差异)。 - Malabarba

3

尝试

(set-fontset-font t nil (font-spec :size 20 :name "Unifont"))

或者

(set-fontset-font t nil (font-spec :size 20 :name "Symbola"))

这将对所有缺失字形定义的字符使用指定字体(以及大小)。您需要安装该字体,可以在网络上找到。
或者,从MELPA安装unicode-fonts包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接