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

Dov*_*eld 13 emacs

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

(set-default-font "Monospace 11")
Run Code Online (Sandbox Code Playgroud)

不起作用,而不是fontconfig Monospace集合,似乎我得到"Sans".

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

(set-default-font "Dejavu Sans Mono 11")
Run Code Online (Sandbox Code Playgroud)

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

Dov*_*eld 19

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

(set-fontset-font "fontset-default" '(#x5d0 . #x5ff) "Miriam Mono CLM:bold")
Run Code Online (Sandbox Code Playgroud)

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