我想根据Emacs中的主要模式和字符集设置字体,例如,当我打开一个组织文件时,我希望看到ASCII字符显示字体“Consolas”,并显示中文或日文字符字体“Microsoft Yahei”。
目前我使用名为buffer-face-mode
的次要模式,可以使字体更改对应主要模式:
(add-hook 'org-mode-hook (lambda ()
(setq buffer-face-mode-face '(:font "Consolas-10.5"))
(buffer-face-mode)))
我查看this page但似乎没有任何我可以设置或更改的字符的charset属性,所以我无法继续根据不同的字符集设置字体。
我知道还有另一个函数set-fontset-font
可以根据charset设置字体,但它只能应用于帧,而不是缓冲区或模式。
那么,有没有办法通过buffer-face-mode
为不同的字符集设置不同的字体,或者实现原始请求的解决方法?
提前致谢,
开尔文
答案 0 :(得分:0)
以下是搜索的一些线索:直到Emacs22我用来定义一些个人字体集,我不确定这仍然是一种有效的方法。
default-frame-alist
一起使用,我不知道如何仅将其与特定模式相关联(create-fontset-from-fontset-spec
"-*-consolas-*-*-*-*-12-*-*-*-*-*-fontset-consolas,
ascii:-*-consolas-*-*-*-*-12-*-*-*-*-*-iso8859-1,
latin-iso8859-1:-*-consolas-*-*-*-*-12-*-*-*-*-*-iso8859-1,
latin-iso8859-15:-*-consolas-*-*-*-*-12-*-*-*-*-*-iso8859-15")
(setq default-frame-alist '((width . 100)
(height . 44)
(top . 50) ;pixels
(left . 50) ;pixels
(font . "fontset-consolas")
))
这里我总是为多个编码关联相同的字体,但你可以使用不同的字体。