Emacs缓冲区本地字体

时间:2012-09-05 14:17:10

标签: emacs fonts

对于我的所有任务,我在Emacs中使用URW Chancery L字体。但对于某些任务, 像org-mode表,shell或者日出指挥官,我想设置单宽度字体。 所以,我的问题,我该怎么做?我发现的只有set-default-font,这不是我想要的。

3 个答案:

答案 0 :(得分:8)

Faces(即用于指定文本外观的对象,如字体,颜色等)在Emacs中大多是全局的,尽管它们也可以在帧的基础上设置,因此您可以通过创建单独的框架并更改要在该框架中使用的“默认”面。 这就是说,Emacs现在还可以通过面部重新映射来改变面部对特定缓冲区的外观。 E.g。

(face-remap-add-relative 'default '(:family "Monospace"))

应使当前缓冲区使用Monospace。因此,将上述内容添加到org-mode-hook可能只会解决您的问题。

答案 1 :(得分:0)

此代码段仅在C模式下设置“Arial”字体系列:

(defun set-my-font ()
  (overlay-put (make-overlay (point-min) (point-max) nil nil t)
               'face '(:family "Monospace")))

(add-hook 'org-mode-hook 'set-my-font)

org-mode-hook替换为所需的模式,它也可以正常工作。

此解决方案通过在整个缓冲区上设置覆盖的字体系列属性来实现缓冲区本地字体的创建。叠加层的face属性仅指定字体系列(Monospace),而Emacs重新显示足够智能,可将其与其他文本属性(例如font-lock指定的颜色)合并。

答案 2 :(得分:0)

您是否尝试自定义org-table

您可以使用org-menu > Customize > Customize > org-table

进行修改

或使用命令行

M-x set-face-font RET org-table RET -PfEd-DejaVu Sans Mono-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1

使用标签自动完成并查看其他可用字体

最后你也可以直接修改init.el以获得类似

的内容
(custom-set-faces
 '(org-table ((t (:foreground "LightSkyBlue" :family "DejaVu Sans Mono")))))