set-default-font
by default sets the font for current frame only from the documentation C-hfset-default-font
RET (emphasis mine)
(set-default-font FONT &optional KEEP-SIZE FRAMES)
This function is obsolete since 23.1; use `set-frame-font' instead.
Set the default font to FONT. When called interactively, prompt for
the name of a font, and use that font on the selected frame. When
called from Lisp, FONT should be a font name (a string), a font
object, font entity, or font spec.
If KEEP-SIZE is nil, keep the number of frame lines and columns fixed.
If KEEP-SIZE is non-nil (or with a prefix argument), try to keep the
current frame size fixed (in pixels) by adjusting the number of lines
and columns.
If FRAMES is nil, apply the font to the selected frame only. If FRAMES
is non-nil, it should be a list of frames to act upon, or t meaning
all existing graphical frames. Also, if FRAMES is non-nil, alter the
user's Customization settings as though the font-related attributes of
the `default' face had been "set in this session", so that the font is
applied to future frames.
So the solution is to do
(set-default-font "Inconsolata-20" nil t)
Also please note that this function is obsolete since emacs 23.1. Use set-frame-font
instead, the API is same
Additional methods for setting font
For sake of completeness I am mentioning additional methods for setting default font
Customizing default-frame-alist
, mentioned by @Drew
(add-to-list 'default-frame-alist '(font . "Inconsolata-20"))
Customizing the default
face, mentioned by @wasamasa, by doing something like the following
(set-face-font 'default "Inconsolata-20")
Alternately you can use the customize
interface, mentioned by @VitoshKa, M-xcustomize-face
RETdefault
RET.