fontmatrix v0.9.0 — GPL v2 Licensed Oct 28, 2026

Fontmatrix

$ cat /etc/motd — A GPL'd font manager for Linux users

How to Install and Manage Fonts on Linux in 2026 – A Practical Guide to Fontconfig, Folders and Font Managers

Oct 28, 2026 · by Admin · How to
How to Install and Manage Fonts on Linux in 2026 – A Practical Guide to Fontconfig, Folders and Font Managers

Installing a font on Linux usually takes about ten seconds: copy the file into the right folder and refresh the font cache. Problems start when a font refuses to appear in an application, shows up under an unexpected name, renders poorly or conflicts with another version of itself. Almost all of these issues come down to one system component: fontconfig, the library most Linux desktops and applications use to find, match and configure fonts.

This guide explains where fonts live, how to install them for one user or for the whole system, how to check what fontconfig sees, and how a font manager such as Fontmatrix helps once your collection grows beyond a few dozen files.

Where Linux Looks for Fonts

User fonts

Fonts for a single user belong in:

~/.local/share/fonts/

This location follows the XDG base directory standard and works on modern GNOME, KDE Plasma, Xfce and most other desktops. The older ~/.fonts/ directory is still read by many systems, but it is deprecated, and new installations should use ~/.local/share/fonts/.

If the folder does not exist, create it:

mkdir -p ~/.local/share/fonts

System-wide fonts

Fonts available to every user are typically stored in:

  • /usr/share/fonts/ for fonts installed by the distribution’s package manager;

  • /usr/local/share/fonts/ for fonts you add manually as an administrator.

Do not copy files by hand into /usr/share/fonts/, because package updates may overwrite or conflict with them. Use /usr/local/share/fonts/ for manual system-wide installs.

Installing Fonts Manually

For your user only

  1. Download the font files (.ttf, .otf or .ttc).

  2. Copy them into a subfolder per family to keep things tidy:

mkdir -p ~/.local/share/fonts/Inter
cp Inter*.ttf ~/.local/share/fonts/Inter/
  1. Refresh the font cache:

fc-cache -f

Most applications detect new fonts after a restart. Some desktops pick them up automatically.

For all users

sudo mkdir -p /usr/local/share/fonts/Inter
sudo cp Inter*.ttf /usr/local/share/fonts/Inter/
sudo fc-cache -f

Graphical installation

GNOME’s font viewer and KDE’s font management module can install a font by double-clicking the file and choosing Install. Behind the scenes, they copy the file to one of the folders above and refresh the cache.

Installing Fonts From Your Distribution

Packaged fonts are the most reliable option, since they receive updates and are removed cleanly. Package names vary by distribution:

  • Debian and Ubuntu: packages usually start with fonts-, for example sudo apt install fonts-noto fonts-firacode.

  • Fedora: packages usually end with -fonts, for example sudo dnf install google-noto-sans-fonts.

  • Arch Linux: packages usually start with ttf- or otf-, for example sudo pacman -S ttf-dejavu.

Search your distribution’s repository before downloading fonts manually. Large families such as Noto, DejaVu, Liberation, Source Sans and Fira are widely packaged.

Microsoft core fonts

Some documents expect Arial, Times New Roman or Verdana. Debian and Ubuntu provide an installer package called ttf-mscorefonts-installer, which downloads the original freely distributed core fonts after you accept their licence. Metric-compatible alternatives such as Liberation and Carlito are often a better long-term solution: they preserve line breaks and layout without licensing restrictions.

Checking What Fontconfig Sees

List installed fonts

fc-list

This prints every font fontconfig knows about, with its file path, family and style. To filter:

fc-list | grep -i inter

To display only family names:

fc-list : family | sort -u

Find out which font is actually used

When an application asks for a font that is not installed, fontconfig substitutes another one. To see which:

fc-match "Helvetica"
fc-match sans-serif
fc-match monospace

This is the fastest way to understand why a document looks different on Linux than on another system.

Rebuild the cache verbosely

fc-cache -fv

The verbose output shows which directories are scanned and how many fonts are cached in each. It is useful when a font does not appear.

Font Formats: What to Install and What Not To

  • TrueType (.ttf) and OpenType (.otf) are the standard desktop formats and work everywhere.

  • TrueType Collections (.ttc) bundle several fonts in one file and are supported by fontconfig.

  • Variable fonts contain a range of weights or widths in a single file. Modern Linux desktops and browsers support them, but older applications may show only the default instance.

  • WOFF and WOFF2 are web formats designed for browsers. They are not meant to be installed as desktop fonts. If you need a font from a website, get the original .ttf or .otf from the designer or foundry.

  • Type 1 (.pfb, .pfa) is a legacy PostScript format. Support has been removed from several modern libraries, so converting or replacing these fonts is recommended.

Common Problems and Fixes

The font does not appear in an application

  1. Check that the file is in a recognised folder and readable.

  2. Run fc-cache -f.

  3. Check fc-list | grep -i fontname.

  4. Restart the application, or log out and back in.

The font appears under a different name

Fonts carry internal family names that may differ from the file name. Use fc-list to see the real family name, and select that name in the application.

Duplicate fonts

Installing the same family twice, for example once from a package and once manually, can cause applications to pick the wrong version or show duplicate entries. Search with fc-list | grep -i family and remove the manual copy.

Flatpak and Snap applications

Sandboxed applications usually read fonts from the host’s standard directories, including ~/.local/share/fonts. If a font is missing in a Flatpak app, check that it is installed in a standard location rather than in a custom folder, then restart the app.

Blurry or uneven rendering

Rendering depends on hinting, antialiasing and subpixel settings. Desktop environments expose these in their appearance settings. Advanced users can override them in ~/.config/fontconfig/fonts.conf. Change one setting at a time and compare the results.

Configuring Default Fonts With Fontconfig

Fontconfig lets you choose which fonts are used for the generic families sans-serif, serif and monospace. A minimal user configuration in ~/.config/fontconfig/fonts.conf might look like this:

xml

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>sans-serif</family>
    <prefer><family>Inter</family></prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer><family>Fira Code</family></prefer>
  </alias>
</fontconfig>

After saving, run fc-cache -f and check the result with fc-match sans-serif.

When You Need a Font Manager

A handful of system fonts needs no special tools. Designers, typesetters and developers often end up with hundreds or thousands of fonts, and plain folders stop working well at that scale. A font manager adds:

  • Previews and comparison. Viewing many fonts side by side with your own sample text.

  • Organisation. Tagging fonts by project, client, style or licence, instead of relying on folder names.

  • Activation and deactivation. Keeping large collections available without loading every font into every application’s menu.

  • Inspection. Viewing glyphs, character coverage and font metadata before you commit to a typeface.

Fontmatrix was created for exactly this workflow on Linux: a free, open-source font manager released under the GPL that focuses on browsing, comparing and organising font collections. Installation instructions for Linux and Windows are available in the installation sections of this site.

A Simple Workflow for a Clean Font Collection

  1. Install base families from your distribution’s packages. Choose broad-coverage families such as Noto, plus a solid sans, serif and monospace.

  2. Keep manually installed fonts in ~/.local/share/fonts/, one subfolder per family.

  3. Record licences. Store the licence file next to each family, especially for commercial fonts.

  4. Avoid duplicates. Before adding a font, check with fc-list.

  5. Use a font manager for large or project-specific collections. Activate only what each project needs.

  6. Clean up regularly. Remove fonts you no longer use and rebuild the cache.

Quick Reference

  • Install for one user: copy the files to ~/.local/share/fonts/, then run fc-cache -f.

  • Install for all users: copy the files to /usr/local/share/fonts/, then run sudo fc-cache -f.

  • List fonts: fc-list.

  • See the substitute font: fc-match "Font Name".

  • Set default families: ~/.config/fontconfig/fonts.conf.

  • Large collections: use a font manager such as Fontmatrix.