How to Install Microsoft TrueType Fonts on Fedora

Install Microsoft TrueType fonts on Fedora by running sudo dnf install mscorefonts from the RPM Fusion repository.

The missing font problem

You open a spreadsheet in LibreOffice Calc or load a client presentation in Firefox. The layout breaks. Columns overflow. Headings render in a blocky fallback typeface. The original document was built with Arial, Times New Roman, or Verdana. Your system substitutes a close match, but the spacing and line breaks do not align. You need the exact Microsoft TrueType fonts to preserve the document structure. Fedora does not include them in the default installation. You have to add them manually.

Why Fedora excludes proprietary fonts

Fedora ships with a carefully curated set of open-source typefaces. The Liberation family, DejaVu, and Noto cover the standard Latin character set and match the metrics of common commercial fonts. Microsoft's core fonts are proprietary. They require a separate end-user license agreement that Fedora cannot distribute by default. The fonts live in the RPM Fusion non-free repository. You need to enable that repository, download the package, and instruct the font configuration system to rebuild its cache.

The font configuration system on Fedora relies on fontconfig. It scans directories, builds a binary cache, and serves queries to applications. When you install a new font package, the package manager triggers a cache rebuild automatically. If the rebuild fails or runs in the background, applications will not see the new typefaces until you restart them or force a cache refresh.

How the font system actually resolves typefaces

Applications do not read font files directly. They send a query to fontconfig asking for a specific family name, weight, and style. The system checks its cache and returns the best match. If you request Arial and the system only has Liberation Sans, it returns the open-source substitute. The substitute looks similar, but the character widths and kerning tables differ. Documents that rely on exact pixel alignment will shift.

Font fallback chains solve this gracefully. When a requested font is missing, fontconfig walks through a priority list defined in /etc/fonts/conf.d/. The order matters. User fonts in ~/.local/share/fonts/ rank highest. System fonts in /usr/share/fonts/ rank next. Repository packages rank last. If you install the same font in two locations, the system picks the first match and ignores the rest. Conflicts appear as missing glyphs or duplicate entries in the cache.

Run fc-match Arial to see which file the system actually serves. The output shows the exact path and the priority score. Trust the package manager. Manual file edits drift, snapshots stay.

The standard installation path

Here is how to enable the RPM Fusion non-free repository and install the Microsoft core fonts package. The repository provides the legally compliant installer that downloads the original font files from Microsoft's servers during the package transaction.

# Enable both the free and non-free RPM Fusion repositories for your release
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# Install the Microsoft core fonts package from the newly enabled repo
sudo dnf install mscorefonts
# Force a font cache rebuild to guarantee all applications see the new files
fc-cache -fv

The mscorefonts package does not contain the actual font files. It contains a script that fetches them during installation. The transaction will pause and display the Microsoft End-User License Agreement. You must scroll to the bottom and type y to accept. The package manager will then download the .ttf files, place them in /usr/share/fonts/mscorefonts/, and trigger the cache rebuild.

Restart any open applications after the transaction completes. Firefox, LibreOffice, and GIMP read the font cache at startup. They will not pick up new typefaces until they reload their configuration.

Verify the fonts are active

Here is how to confirm the system recognizes the newly installed typefaces and serves them to applications.

# Query the fontconfig database for Arial and verify the path matches the system directory
fc-list | grep -i "arial"
# Check the full list of installed Microsoft fonts to ensure the package extracted correctly
fc-list | grep -i "times new roman"
# Display the cache status and confirm the rebuild completed without errors
fc-cache -v 2>&1 | tail -n 5

The output should list /usr/share/fonts/mscorefonts/arial.ttf and similar paths. If the command returns nothing, the cache did not update or the package failed to extract the files. Run the fc-cache -fv command again and watch for permission errors.

Common pitfalls and error messages

The installation process fails in three predictable ways. Each one has a direct fix.

The package manager refuses to proceed and prints Error: Nothing provides mscorefonts needed by the transaction. This means RPM Fusion is not enabled or the non-free repository is missing. Run the repository setup command again. Verify the repository is active with dnf repolist enabled | grep rpmfusion.

The transaction hangs at the license agreement screen. The terminal is waiting for input. Press the spacebar or page down key to scroll through the text. Type y and press Enter. The download will resume.

Applications still show fallback fonts after installation. The font cache is stale or the application cached its own font list. Close the application completely. Run fc-cache -fv as your regular user. Reopen the application. If the problem persists, check for user-level font overrides in ~/.local/share/fonts/. User fonts take precedence over system fonts. Remove conflicting files from that directory if you want the system package to win.

SELinux rarely blocks font installation, but it can prevent applications from reading newly placed files if the context is wrong. If you see access denied errors in the journal, restore the default context with sudo restorecon -Rv /usr/share/fonts/. Run journalctl -xe first. Read the actual error before guessing.

Managing font updates and conflicts

Font packages update alongside the rest of the system. When you run dnf upgrade --refresh, the package manager checks RPM Fusion for newer versions of mscorefonts. The update replaces the font files and rebuilds the cache automatically. You do not need to run manual cache commands after a standard upgrade.

Conflicts appear when you mix repository packages with manual downloads. If you previously copied Arial into ~/.local/share/fonts/, the system will prefer that copy over the RPM package. The cache will show two entries for the same family. Applications will pick the first one alphabetically. Delete the manual copy to restore consistency.

Fedora's release cadence is six months. The N-2 release goes end-of-life when N+1 ships. Plan your repository updates on that cycle. If you cross major releases with dnf system-upgrade, the RPM Fusion repository metadata updates automatically. The mscorefonts package remains compatible across releases. Do not conflate dnf upgrade --refresh with dnf system-upgrade. They handle different scopes.

When to use this approach versus alternatives

Use the RPM Fusion mscorefonts package when you need system-wide access to the standard Microsoft typefaces and want automatic updates through dnf. Use the ttf-mscorefonts-installer package when you are running Debian or Ubuntu and need the same legal compliance workflow. Use manual installation in ~/.local/share/fonts/ when you only need a single custom font for your own user account and do not want to touch system directories. Use the fontpackages collection from RPM Fusion when you need a broader set of commercial fonts beyond the core Microsoft set. Stay on the upstream Fedora defaults if you only work with open documents and do not need metric-perfect compatibility with Windows layouts.

Where to go next