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/fontsSystem-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
Download the font files (
.ttf,.otfor.ttc).Copy them into a subfolder per family to keep things tidy:
mkdir -p ~/.local/share/fonts/Inter
cp Inter*.ttf ~/.local/share/fonts/Inter/Refresh the font cache:
fc-cache -fMost 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 -fGraphical 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 examplesudo apt install fonts-noto fonts-firacode.Fedora: packages usually end with
-fonts, for examplesudo dnf install google-noto-sans-fonts.Arch Linux: packages usually start with
ttf-orotf-, for examplesudo 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-listThis prints every font fontconfig knows about, with its file path, family and style. To filter:
fc-list | grep -i interTo display only family names:
fc-list : family | sort -uFind 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 monospaceThis is the fastest way to understand why a document looks different on Linux than on another system.
Rebuild the cache verbosely
fc-cache -fvThe 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
.ttfor.otffrom 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
Check that the file is in a recognised folder and readable.
Run
fc-cache -f.Check
fc-list | grep -i fontname.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
Install base families from your distribution’s packages. Choose broad-coverage families such as Noto, plus a solid sans, serif and monospace.
Keep manually installed fonts in
~/.local/share/fonts/, one subfolder per family.Record licences. Store the licence file next to each family, especially for commercial fonts.
Avoid duplicates. Before adding a font, check with
fc-list.Use a font manager for large or project-specific collections. Activate only what each project needs.
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 runfc-cache -f.Install for all users: copy the files to
/usr/local/share/fonts/, then runsudo 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.