C-x C-+
and C-x C--
gives you only part of the answer: text scaling a buffer.
You can change the font size for a given frame (across all windows/buffers in that frame), or you can change the (apparent) font size for a given buffer (across all windows/frames).
The latter is called text scaling, and it is what vanilla Emacs C-x C-+
and C-x C--
give you.
Library zoom-frm.el
gives you both kinds of zooming with the same command. Bind the same command, zoom-in/out
, to both C-x C--
and C-x C-+
. It zooms either the frame or the buffer, in and out. A plain prefix arg toggles between zooming frames and zooming buffers. Bind it also to mouse keys (I use S-mouse-1
(in) and C-S-mouse-1
(out) and to the mouse wheel (in/out).
Library face-remap+.el
fixes text scaling so that the window size shrinks or grows to accommodate the changing text size, which can free up screen real estate.
This EmacsWiki page has more info about this frequently asked question.