For coaches who want to create and sell online courses, but struggle with the technical aspects


Linux TTY Console Font Too Small?

I’m not talking about the Terminal (many names for it, all appear as an X-window session in your main screen). I’m talking about the Ctrl-Alt-F1 TTY Console (a text screen, not a window in a graphical screen). You can also access it by booting your computer and interrupting to get to grub or booting into text mode.

In Linux Mint, you by default have 6 Consoles, Ctrl-Alt-F1 through F6; you press Ctrl-Alt-F7 to get back to your normal graphical screen.

Many thanks to https://www.linux.com/topic/desktop/how-change-your-linux-console-fonts/ which gave me what I needed to learn.

What Fonts Do You Have?

To list the fonts you have, designed for use on your Console:
ls /usr/share/consolefonts/

But mostly you want to look at the UTF-8 codeset. Uni3- fonts support most of the Latin and Cyrillic languages, so
ls /usr/share/consolefonts/Uni3*

Uni1 (512 glyphs) – most Latin languages, Slavic Cyrillic languages, Hebrew and barely Arabic

Uni2 (512 glyphs) – most Latin languages, Slavic Cyrillic languages and Greek

Uni3 (512 glyphs) – most Latin and Cyrillic languages

Can you convert other fonts for your Console?

TrueType or OpenType or Postscript fonts are fundamentally different than bitmap fonts which a TTY uses. TTY can not handle fractional pixels, anti-aliasing, hinting, kerning. Converting a scalable font to a TTY size will likely look terrible.

Just be glad there are a few fonts designed for TTY use, already installed on your Linux system. If you want a special font, use the Terminal in your windowed environment. My favorite font for my text editor, programming editor (Visual Studio Code), Terminal and LibreOffice Spreadsheet, is Fira Code (on Google Fonts).

If you really want more TTY fonts, search online for TTY fonts. You might be able to find .psf fonts (PC Screen Font format), used by the Linux kernel or console fonts.
Perhaps zap-light from https://www.zap.org.au/projects/console-fonts-zap/ which goes from 8×16 pixels to 16×32 pixels.

Specify your TTY Console font

To set your console font, run
sudo dpkg-reconfigure console-setup 

Use the tab key to move from the selection box to the OK button. Use the arrow keys to select your preference.

For encoding, always pick UTF-8 (unless you know you need different for some special case).

“Guess optimal character set” is probably best, or in USA or Western Europe select “Latin1 and Latin5 – western Europe and Turkic languages”.

(Apparently, all modern versions of Linux use framebuffers.)

Font for the console: Terminus (you can experiment with others if you like).

Font size: “11×22 (framebuffer only)”, this is the smallest that, on my 1920×1080 14″ notebook, is still easy to read. Once you have this set up, you can easily experiment with different fonts to find what you like best; I’ll say how later.

It will take a few minutes, let it finish.

Then press Ctrl-Alt-F1 to go to your Console

Run this to activate the changes:
sudo setupcon

Editing console-setup

You can also edit /etc/default/console-setup directly.
sudo nano /etc/default/console-setup

Here is mine:

# CONFIGURATION FILE FOR SETUPCON

# Consult the console-setup(5) manual page.

ACTIVE_CONSOLES="/dev/tty[1-6]"

CHARMAP="UTF-8"

CODESET="Lat15"
FONTFACE="Terminus"
FONTSIZE="11x22"
SCREEN_WIDTH="120"
VIDEOMODE=

# The following is an example how to use a braille font
# FONT='lat9w-08.psf.gz brl-8x8.psf'

I find that having lines too long makes them harder to read, so 120 characters is enough. Here is how it looks on my Console (click to expand to full size):

Linux TTY Console font Uni3-Terminus22x11

Screen Capture your TTY

How did I make a screenshot of my Console? There is a command for that, of course. sudo fbgrab /home/YOURNAME/Pictures/your-file-name.png and you can even use one console to take a picture of another console: fbgrab -c N (where N is the number of the Console) lets you “Grab the /dev/ttyN virtual terminal.”

Making the New Font the Default

Once you have picked which font you like, e.g.
setfont /usr/share/consolefonts/Uni3-Terminus24x12.psf.gz
then to make the current setting the default (with a capital oh)
setfont -O default

Once you have the default set, change to the default from whatever font you tried with simply
setfont

Here is the Terminus 28×14 font (click to expand to full size)

Linux TTY Console font Unie-Terminus28.14

Want to see the original?

It is hard to read, see for yourself: