如何更改Emacs的默认字体大小和字体类型?

96

我正在使用Emacs 23.3版本。如何改变字体大小和字体类型?


关于更改默认字体大小并将其保存到.emacs的类似问题:https://dev59.com/5HVC5IYBdhLWcg3wcgmd - imz -- Ivan Zakharyaschev
9个回答

145
你也可以在.emacs文件中执行以下操作。

Emacs 23.1

(set-frame-font "Inconsolata 12" nil t)

Emacs的早期版本

(set-default-font "Inconsolata 12" nil t)

19
(set-default-font Fontname-Size) 已经过时,现在应使用 (set-frame-font Fontname-Size)。请注意不改变原意,使翻译更加通俗易懂。 - Napoleon
2
你还应该将 FRAMES 参数设置为 t,以影响所有帧,而不仅仅是当前帧。(set-frame-font Fontname-Size nil t) - Nick McCurdy
你也可以运行 describe-font 命令来确定当前字体(例如,如果它是通过自定义设置的)或查找“全名”选项的可能选项。 - kolen

96
你可以使用菜单栏。前往选项->设置默认字体...
选择字体后,别忘了按选项->保存选项——否则当你关闭Emacs之后,新的字体将不会被保存。

14
这个不起作用(也许过去有用过?)它只会更改当前框架中的字体,而且不会保存到未来的会话中。请参考这个答案提供的可行方法。 - alexis
1
@alexis:在Emacs-24.2上,它对我仍然有效。这是一个截图。(抱歉字体选择太丑了 :P)当我重新启动Emacs时,它也正确保存了。也许你的配置有所不同或者其他原因呢? - Tikhon Jelvis
5
我的版本差别很小:我在OS X上装的是GNU Emacs 24.3.1,但它无法工作。 显然有些不同,但请参阅我所链接的答案中的问题和讨论。那种方法拯救了我的一天。 我想结论是“你的情况可能会有所不同”。 - alexis
1
在OS X 10.10.5上,Emacs 24.4也无法工作。但是直接更改~/.emacs文件可以解决问题。 - Fonzie
9
如果您隐藏了菜单栏但仍希望使用带有预览的图形用户界面字体选择器,您可以使用命令 M-x menu-set-font - Vladimir Panteleev
显示剩余5条评论

12

通过以下方式获取当前字体:

M-x describe-font

(如果看到 Font name (default current choice for ASCII chars): ,请按下 Enter)

这将显示可以在 init.el 中设置的属性列表。查看属性值后,通过按下 C-x 1 最小化消息缓冲区。

现在执行 M-x customize-face 并:

  1. 滚动到“Default”部分
  2. 更改“Font Family”的值
  3. 更改“Height”的值
  4. 按下“State”,然后按下1 = Save for Future Sessions的Enter键

或者在 init.el 中添加类似以下内容:

(set-face-attribute 'default nil :font "Monospace" :height 160)

注意:如果您有窗口大小的预设(宽度和高度),则字体的height属性将干扰该布局。


1
在Ubuntu 20.04.2上,使用emacs 27.2示例:(set-face-attribute 'default nil :font "Ubuntu Medium" :height 160)。使用M-x menu-set-font获取弹出窗口并查看安装的可用字体。 - Richard Logwood

8

要获取更多自定义选项,使用

M-x customize-face RET

注:该命令为Emacs编辑器中的一个命令,用于自定义界面元素的外观。

4
在我的回答中,我会集中讨论如何通过X资源设置默认字体大小。在提到~/.Xdefaults的回答中已经提到了使用X资源的方法;我将提供更多细节(这些细节已经在https://unix.stackexchange.com/a/426914/4319中进行了描述)。除了Emacs中“默认”“face”的高度之外,还可以类似地设置其他字体参数。
要为Emacs设置特定的默认字体高度,我已经放入了/etc/X11/Xresources-site/etc/X11/Xresources也可以,但可能会被您的发行版覆盖):
Emacs.default.attributeHeight: 94

这也会影响到远程的X客户端,例如通过ssh在远程主机上启动的Emacs。

/etc/X11/Xresources-site/etc/X11/Xresources(以及可能的~/.Xresources~/.Xdefaults)通常在您的X会话开始时被读取;要立即影响当前的X资源,请运行类似于xrdb -merge /etc/X11/Xresources-site的命令。可以使用xrdb -query查看X资源。

实际上,在我的情况下,/etc/X11/Xresources-site正在由/etc/X11/Xresources中的一行读取(该文件由启动脚本读取):

#include "/etc/X11/Xresources-site"

所以,/etc/X11/Xresources是一定会被读取的文件。

还有一些具有相同语法的文件,每次启动像emacs这样的X程序时都会被读取。在我的情况下,它们是:~/.Xdefaults-MY_HOST_NAME/etc/X11/app-defaults/Emacs(仅适用于emacs-athena,而不适用于emacs-gtk3),/usr/share/X11/app-defaults/Emacs等等。(但我更喜欢已加载的X资源的想法——使用xrdb -query显示;这样远程X客户端读取相同的X资源。)

Emacs理解的其他X资源在https://www.gnu.org/software/emacs/manual/html_node/emacs/Table-of-Resources.html#Table-of-Resources中有描述。

Emacs 24.3存在一个错误,导致它不遵守来自X资源的默认面属性,例如上面的示例。这个问题在24.4之后得到了修复


4
在macOS上,Emacs 25.1默认使用Menlo 12字体。我想要增加字体大小。
使用C-x C-f命令打开~/.emacs文件。
~/.emacs文件末尾添加以下内容:

(set-default-font "Menlo 14")

为了立即看到更改效果并保持在~/.emacs中:
使用M-x eval-buffer [RET]命令。

2
这适用于我在启动emacs时打开的第一个文件,但随后的缓冲区再次使用较小的字体。 - HaPsantran

2
如果您使用Linux/X11,可能需要在~/.Xdefaults中设置此项。我已经在那里设置了字体,因为这里的其他答案没有效果。
通过在Emacs中运行helm-select-xfont,我可以查看可用的字体设置。
然后我开始输入Conso,我会看到类似以下的条目:
-Consolas-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1
...

然后我把它放到~/.Xdefaults中,并设置字体大小为12

Emacs.font: xft:-*-Consolas-normal-normal-normal-*-12-*-*-*-m-0-iso10646-1

并重新启动Emacs。


2

只需按下M-x,然后键入set-frame-font。您机器上存在的所有可用字体都将显示出来。

选择您想要的字体。我使用这种方法来简单地更改我的Emacs中的字体类型;而不是更改.spacemacs.emacs文件。


2

Emacs的方式

  1. M-x customize-group
  2. 输入faces
  3. 点击"基本面"
  4. 打开/展开"默认"
  5. 更改字体名称(如"Inconsolata")并取消选择"铸造厂"
  6. 点击"应用和保存"

1
特别是什么使它成为Emacs的方式? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接