guide · static export
PC · fonts

Install a Font for Every User and Fix Missing Fonts

A font installed by right-click lands in one profile only, so every other account and half your apps never see it. The all-user route is a registry entry next to the file.

by@guidox updated:10/31/26 time:20 min level:Beginner tested on:Windows 11 24H2 works on:Windows 10, Windows 11, Windows Server 2019 tools:PowerShell as administrator, The font file
TL;DR

Copy the file into **C:\Windows\Fonts** and add a value under **HKLM\...\CurrentVersion\Fonts**. Right-click install only writes to **%LOCALAPPDATA%\Microsoft\Windows\Fonts** for the current account.

Before you start

Requirements

  • Admin rights
  • The font file
  • 20 minutes
Step by step

Instructions

01

Know which of the two stores you are using

Per-user fonts live under **LocalAppData** and are invisible to other accounts; system fonts live in **C:\Windows\Fonts**. Reading both paths tells you why a font works for you and not for a colleague.

Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Windows\Fonts" | Select-Object Name,Length
Get-ChildItem C:\Windows\Fonts -Filter *.ttf | Measure-Object | Select-Object Count
02

Install it for every user in two steps

Copying the file is not enough — Windows lists fonts from the registry. The value name is the display name plus the type, the data is the file name.

Copy-Item .\MyFont-Regular.ttf C:\Windows\Fonts\ -Force
$key = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
New-ItemProperty -Path $key -Name 'MyFont Regular (TrueType)' -Value 'MyFont-Regular.ttf' -PropertyType String -Force
03

Verify before you open an application

Read the registry and the folder back. If the value exists but the file does not, applications show the font as installed and render a fallback.

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' |
  Select-Object -Property * | Select-String 'MyFont'
Test-Path C:\Windows\Fonts\MyFont-Regular.ttf
tipOpen a new program window after installing. Apps that were running enumerate fonts once at start.
04

Rebuild the font cache when fonts vanish

The cache lives in a service profile and can hold stale entries. Stop the service, clear the cache folder, start it again, and reboot once.

Stop-Service FontCache -Force
Remove-Item "$env:WINDIR\ServiceProfiles\LocalService\AppData\Local\FontCache\*" -Force -Recurse -ErrorAction SilentlyContinue
Start-Service FontCache
shutdown /r /t 0
⚠ warningClearing the cache is safe, but the first sign-in afterwards is slow while Windows rebuilds it.
05

Find the half-installed font

A registry entry that points at a missing file is the usual reason an app reports a missing font. Compare both sides and remove the orphan value.

$key = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'
$props = Get-ItemProperty $key
$props.PSObject.Properties |
  Where-Object { $_.Name -notlike 'PS*' } |
  Where-Object { -not (Test-Path (Join-Path C:\Windows\Fonts $_.Value)) } |
  Select-Object Name,Value
06

Remove a font cleanly

Delete the file and the registry value together. System fonts that ship with Windows are protected and cannot be removed this way, which is the correct behaviour.

Remove-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts' -Name 'MyFont Regular (TrueType)' -Force
Remove-Item C:\Windows\Fonts\MyFont-Regular.ttf -Force
⚠ warningRemoving a font that documents use makes them fall back to a default. Restore it from the installer before you reopen the files.
Troubleshooting

Common issues

The font is installed but an app does not list it

Restart the app, and check whether it was installed per user. Apps running as another account or as SYSTEM only see the machine-wide fonts.

Copying the file fails with access denied

The Fonts folder needs elevation for writes even though it is readable. Run the copy from an elevated PowerShell window.

The file was copied but the font still does not appear

The registry value is missing or has the wrong extension in the data field. The value name needs the (TrueType) suffix and the data the file name only.

Two accounts disagree about the font

One installed per user, the other expects machine-wide. Install it under HKLM for all accounts and remove the per-user copy.

FAQ

Frequently asked

Do I need a font manager?

No for installing. A manager helps when you need to activate hundreds of fonts temporarily, which is rare on Windows.

Why are some fonts impossible to delete?

Windows protects the fonts its own UI depends on. The delete fails by design, not because of a bug.

How to undo this

Delete the registry value and the file from C:\Windows\Fonts, then restart the FontCache service. Per-user fonts are removed from %LOCALAPPDATA%\Microsoft\Windows\Fonts or through Settings > Personalisation > Fonts.

Changelog · 1 entry
  1. 2026-10-31
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress