How to Change Your Linux Console Fonts

I
try to be a peaceful soul, but some things make that difficult, like
tiny console fonts. Mark my words, friends, someday your eyes will be
decrepit and you won't be able to read those tiny fonts you coded into
everything, and then you'll be sorry, and I will laugh.
Fortunately, Linux fans, you can change your console fonts. As
always, the ever-changing Linux landscape makes this less than
straightforward, and font management on Linux is non-existent, so we'll
muddle along as best we can. In this article, I'll show what I've found
to be the easiest approach.

What is the Linux Console?

Let us first clarify what we're talking about. When I say Linux
console, I mean TTY1-6, the virtual terminals that you access from your
graphical desktop with Ctrl+Alt+F1 through F6. To get back to your
graphical environment, press Alt+F7. (This is no longer universal,
however, and your Linux distribution may have it mapped differently. You
may have more or fewer TTYs, and your graphical session may not be at
F7. For example, Fedora puts the default graphical session at F2, and an
extra one at F1.) I think it is amazingly cool that we can have both X
and console sessions running at the same time.
The Linux console is part of the kernel, and does not run in an X
session. This is the same console you use on headless servers that have
no graphical environments. I call the terminals in a graphical session X
terminals, and terminal emulators is my catch-all name for both console
and X terminals.
But that's not all. The Linux console has come a long way from the
early ANSI days, and thanks to the Linux framebuffer, it has Unicode and
limited graphics support. There are also a number of console multimedia
applications that we will talk about in a future article.

Console Screenshots

The easy way to get console screenshots is from inside a virtual
machine. Then you can use your favorite graphical screen capture program
from the host system. You may also make screen captures from your
console with fbcat or fbgrab. fbcat
creates a portable pixmap format (PPM) image; this is a highly portable
uncompressed image format that should be readable on any operating
system, and of course you can convert it to whatever format you want. fbgrab is a wrapper script to fbcat that creates a PNG file. There are multiple versions of fbgrab written by different people floating around. Both have limited options and make only a full-screen capture.fbcat needs root permissions, and must redirect to a file. Do not specify a file extension, but only the filename:

It would be nice to have a little padding on the left margin, so if
any of you excellent readers know how to do this, please tell us in the
comments.fbgrab has a few more options that you can read about in man fbgrab, such as capturing a different console, and time delay. This example makes a screen grab just like fbcat, except you don't have to explicitly redirect:

$ sudo fbgrab Pictures/myOtherfile

Finding Fonts

As far as I know, there is no way to list your installed kernel fonts other than looking in the directories they are stored in: /usr/share/consolefonts/ (Debian/etc.), /lib/kbd/consolefonts/ (Fedora), /usr/share/kbd/consolefonts (openSUSE)...you get the idea.

Changing Fonts

Readable fonts are not a new concept. Embrace the old! Readability
matters. And so does configurability, which sometimes gets lost in the
rush to the new-shiny.
On Debian/Ubuntu/etc. systems you can run sudo dpkg-reconfigure console-setup to set your console font, then run the setupcon command in your console to activate the changes. setupcon is part of the console-setup package. If your Linux distribution doesn't include it, there might be a package for you at openSUSE.
You can also edit /etc/default/console-setup directly. This example sets the Terminus Bold font at 32 points, which is my favorite, and restricts the width to 80 columns.

The FONTFACE and FONTSIZE values come from the font's filename, TerminusBold32x16.psf.gz. Yes, you have to know to reverse the order for FONTSIZE. Computers are so much fun. Run setupcon to apply the new configuration. You can see the whole character set for your active font with showconsolefont. Refer to man console-setup for complete options.

Systemd

Systemd is different from console-setup, and you don't need to install anything, except maybe some extra font packages. All you do is edit /etc/vconsole.conf
and then reboot. On my Fedora and openSUSE systems I had to install
some extra Terminus packages to get the larger sizes as the installed
fonts only went up to 16 points, and I wanted 32. This is the contents
of /etc/vconsole.conf on both systems:

KEYMAP="us"
FONT="ter-v32b"

Come back next week to learn some more cool console hacks, and some multimedia console applications.