如何在emacs中管理字体?

时间:2015-02-10 09:40:08

标签: emacs

是否有任何标准技术,软件包等用于管理emacs中的字体设置?

我想在某处定义默认的固定和可变宽度字体,并使用这些默认值在模式中设置面的字体。例如,将org-mode的默认字体设置为可变宽度默认值,并将其代码面设置为固定宽度默认值。

3 个答案:

答案 0 :(得分:3)

这是我对系统的改编。我从默认使用固定音高,但这些调用将允许您使用模式挂钩定义用于模式的字体。

我打电话给方法'切换音高,以便在必要时动态切换固定和可变音高字体。

(set-face-font 'default "Source Code Pro Semibold-9")
(set-face-font 'variable-pitch "Segoe UI Semibold-9")
(copy-face 'default 'fixed-pitch)

;;============================================================
;; toggle between variable pitch and fixed pitch font for 
;; the current buffer
(defun fixed-pitch-mode ()
  (buffer-face-mode -1))

(defun variable-pitch-mode ()
  (buffer-face-mode t))

(defun toggle-pitch (&optional arg)
  "Switch between the `fixed-pitch' face and the `variable-pitch' face"
  (interactive)
  (buffer-face-toggle 'variable-pitch))

;; enable buffer-face mode to provide buffer-local fonts
(buffer-face-mode)

;; Set the fonts to format correctly
;(add-hook 'text-mode-hook 'fixed-pitch-mode)
;(add-hook 'dired-mode-hook 'fixed-pitch-mode)
;(add-hook 'calendar-mode-hook 'fixed-pitch-mode)
;(add-hook 'org-agenda-mode-hook 'fixed-pitch-mode)
;(add-hook 'shell-mode-hook 'fixed-pitch-mode)
;(add-hook 'eshell-mode-hook 'fixed-pitch-mode)
;(add-hook 'bs-mode-hook 'fixed-pitch-mode)
;(add-hook 'w3m-mode-hook 'variable-pitch-mode)
;(add-hook 'org-mode-hook 'variable-pitch-mode)
(add-hook 'eww-mode-hook 'variable-pitch-mode)

答案 1 :(得分:2)

设置面部非常有用的方法是使用M-x list-faces-display功能。此功能将弹出一个缓冲区,左侧是面部名称,右侧是一个示例。然后,此缓冲区允许您自定义任何面,并查看面定义。一个可能的'陷阱'是它只会在你运行该功能时显示它知道的面孔。这意味着,如果您还没有加载org-mode,则可能看不到任何组织模式的面定义。

定义面部时的一个有用选项是继承选项,它告诉面部继承另一个面部的设置。一些继承的值可以在' main'中被覆盖(例如面部颜色)。面部定义。

因此,在您的情况下,我会为默认的固定和可变宽度字体设置适当的值,然后设置其他面,即org-mode faces继承这些定义。

以这种方式做到shold消除了做任何add-hook jiggery pokery的需要

答案 2 :(得分:0)

我终于解决了这个问题:

首先设置固定音高和可变音高字体以供一般使用:

(custom-set-faces
 '(fixed-pitch ((t (:family "Input Mono Narrow"))))
 '(variable-pitch ((t (:family "Arial")))))

然后在您的模式的钩子中:

(add-hook 'org-mode-hook nil :inherit 'variable-pitch)