我希望能够在Emacs中根据主模式和字符集设置字体。例如,当我打开一个org文件时,我希望看到ASCII字符显示为“Consolas”字体,中文或日文字符显示为“Microsoft Yahei”字体。
目前,我使用了一个名为“buffer-face-mode”的辅助模式,并且可以使字体更改与主模式相对应:
我查看了 这个页面,但似乎没有任何一个面的字符集属性可以设置或更改,因此我无法根据不同的字符集继续设置字体。
我知道还有另一个函数
那么,有没有办法使用
提前感谢您的帮助,
Kelvin
目前,我使用了一个名为“buffer-face-mode”的辅助模式,并且可以使字体更改与主模式相对应:
(add-hook 'org-mode-hook (lambda ()
(setq buffer-face-mode-face '(:font "Consolas-10.5"))
(buffer-face-mode)))
我查看了 这个页面,但似乎没有任何一个面的字符集属性可以设置或更改,因此我无法根据不同的字符集继续设置字体。
我知道还有另一个函数
set-fontset-font
可以根据字符集设置字体,但它只能应用于框架,而不能应用于缓冲区或模式。那么,有没有办法使用
buffer-face-mode
为不同的字符集设置不同的字体,或者找到一个解决方案来实现我的原始请求?提前感谢您的帮助,
Kelvin
(frame-parameter nil 'font)
,发现字体集仍然是默认值(而不是"fontset-consolas")。 - Kelvin Hudefault-frame-alist
的定义在我的.emacs
文件中完成,在启动后的第一个框架中生效,并且与模式无关。我不太熟悉 elisp,无法告诉如何使其随时有效并适用于特定模式。抱歉。 - Sekiswitch-to-buffer
的建议,并在那里更改字体大小/字族,但这也会改变框架大小。所以现在我想为所有缓冲区设置字体,虽然不完美,但也可以接受。无论如何,感谢您的答案。 - Kelvin Hu