83
votes

I am using Emacs 23.3. How can I change the font size and font type?

9
A similar question about changing the default font size and saving it to .emacs: stackoverflow.com/q/294664/94687imz -- Ivan Zakharyaschev

9 Answers

80
votes

You can use the menu bar. Go to Options->Set Default Font....

After you choose a font, don't forget to press Options->Save Options—otherwise your new font will not be saved after you close Emacs.

120
votes

You can also do the following in your .emacs file.

Emacs 23.1

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

Older versions of Emacs

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

To get an extended list of customization use

M-x customize-face RET

6
votes

I have the below setting in init.el:

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

Note: If you have a preset for window size (width and height), the height attribute of the font is going to interfere with that layout.

4
votes

In my answer, I'll concentrate on setting the default font size through X resources. The use of X resources has already been mentioned in the answer mentioning ~/.Xdefaults; I'll give more details (the same which I have already described in https://unix.stackexchange.com/a/426914/4319. Apart from the height of the "default" "face" in Emacs, one can similarly set other font parameters.

To set a specific default font height for Emacs, I have put into /etc/X11/Xresources-site (/etc/X11/Xresources is also OK, though can be overwritten by your distro):

Emacs.default.attributeHeight: 94

This would affect also remote X clients which are Emacs (e.g., emacs started on a remote host via ssh).

/etc/X11/Xresources-site and /etc/X11/Xresources (and probably ~/.Xresources and ~/.Xdefaults) are usually read at the start of your X session; to affect your current X resources immediately, run something like xrdb -merge /etc/X11/Xresources-site. The X resources can be viewed by xrdb -query.

Actually, in my case, /etc/X11/Xresources-site is being read thanks to a line in /etc/X11/Xresources (which is read by the start scripts):

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

so /etc/X11/Xresources is the thing that is read for sure.

There are also some files with the same syntax which are read each time an X program like emacs starts. In my case, they are: ~/.Xdefaults-MY_HOST_NAME, /etc/X11/app-defaults/Emacs (only for emacs-athena, not for emacs-gtk3), /usr/share/X11/app-defaults/Emacs etc. (But I like the idea of loaded X resources more -- shown with xrdb -query; so that remote X clients read the same X resources.)

Other X resources which Emacs understands are described at https://www.gnu.org/software/emacs/manual/html_node/emacs/Table-of-Resources.html#Table-of-Resources.

Emacs 24.3 had a bug which made it not honor the attributes for the default face coming from the X resources, such as in my example above. This was fixed since 24.4.

4
votes

Emacs 25.1 on macOS has Menlo 12 as default. I wanted to increase the size.

C-x C-f ~/.emacs

Add this to end of the ~/.emacs file:

(set-default-font "Menlo 14")

To see the change take effect immediately while staying in ~/.emacs:

M-x eval-buffer [RET]

2
votes

If you use Linux/X11, you may need to set this in ~/.Xdefaults. I have set the font there since the other answers here have no effect.

I'm able to see available font settings by running in Emacs: helm-select-xfont

Then I start typing Conso and I see entries like:

-Consolas-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1
...

So then I put it into ~/.Xdefaults, setting size 12 as:

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

and restart Emacs.

1
votes

The Emacs way

  1. M-x customize-group
  2. Enter faces
  3. Click on "Basic Faces"
  4. Open / Expand "Default"
  5. Change the font name (like "Inconsolata") and deselect "foundry"
  6. Click "Apply and save"
0
votes

Simply press M-x, and then type in set-frame-font. All available fonts which exist in your machine will be displayed.

Choose the one you look for. I use this way to change font-type in my Emacs so simply; rather than altering the .spacemacs or .emacs file.