对于我的所有任务,我在 Emacs 中使用 URW Chancery L 字体。但是对于某些任务,比如 org-mode 表、shell 或 sun-commander,我想设置单宽字体。所以,我的问题,我该怎么做?我发现的只是set-default-font
,这不是我想要的。
3 回答
Faces(即用于指定文本外观的对象,例如字体、颜色等)在 Emacs 中大部分是全局的,尽管它们也可以基于框架进行设置,因此您可以通过创建单独的框架和更改在该框架中使用的“默认”面。这就是说,Emacs 现在还可以通过face- remapping 更改特定缓冲区的面部外观。例如
(face-remap-add-relative 'default '(:family "Monospace"))
应该使当前缓冲区使用等宽。因此,添加上述内容org-mode-hook
可能会解决您的问题。
此片段仅在 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 redisplay 足够聪明,可以将它与其他文本属性合并,例如 指定的颜色font-lock
。
您是否尝试自定义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")))))