How To Change Fonts In Windows 11: A Step-By-Step Customization Guide
Before you start
- Check the font’s license if it’s for work.
- Create a restore point or have a rollback plan.
- Note: changing the system UI font is unsupported by Microsoft and can cause odd icons or spacing. Have a revert file ready.
1) Install new fonts (safe, UI method)
- Settings > Personalization > Fonts.
- Drag-and-drop
.ttf/.otffiles, or Browse to install. - Fonts also live in
C:\Windows\Fonts. Double-click a font to Install.
Tips
- Toggle “Hide fonts based on language settings” if you don’t see your font.
- For dev/console: consider Cascadia Code, Fira Code, or Consolas.
2) Make text easier to read (no system font change)
- Text size: Settings > Accessibility > Text size (slide to increase).
- Display scaling: Settings > System > Display > Scale.
- ClearType: Start > type Adjust ClearType text > run the tuner.
- Language fonts: Settings > Time & language > Language & region > add language features if glyphs are missing.
3) Change the system UI font (advanced; registry)
This swaps “Segoe UI” with your chosen font. Example uses Inter. Replace "Inter" with your font’s exact family name.
3.1 Create the change file
- Open Notepad.
- Paste this and save as
ChangeSystemFont.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Segoe UI"="Inter"
"Segoe UI Variable"="Inter"
- Double-click the
.regfile. Approve the UAC prompt. - Sign out and sign in (or reboot).
3.2 Create the rollback file (restore default)
- Open Notepad.
- Paste this and save as
RestoreDefaultUIFont.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Segoe UI"=-
"Segoe UI Variable"=-
- Import it, then sign out/in.
If icons look wrong after a swap, roll back.
4) Change fonts per-app (safer)
- Notepad: Format > Font…
- Windows Terminal: Settings > your Profile > Appearance > Font face.
- VS Code: Settings > search “font family” or add to
settings.json:"editor.fontFamily": "Cascadia Code, Consolas, 'Courier New', monospace", "editor.fontLigatures": true - Microsoft Word/Office: Home > Font dialog > Set As Default.
- Edge (Immersive Reader): Enter Reader > Text preferences > choose font.
- Outlook (new): Settings > Compose and reply > default message font.
5) Troubleshooting
- Boxes/□ or missing characters: your font lacks glyphs. Pick a font with full Unicode coverage or reinstall language features.
- Blurry text: re-run ClearType, check Scale, ensure display is at native resolution.
- UI misalignment/emoji issues: revert the registry change (section 3.2).
- Policy reverts your change: check Intune/GPO settings that manage fonts or shell experience.
6) Deploy fonts at scale with Intune (for admins)
6.1 Package and deploy the font(s)
Option A — Win32 app
- Bundle
.ttf/.otfand a PowerShell installer with Microsoft Win32 Content Prep Tool. - Install command (example):
powershell.exe -ExecutionPolicy Bypass -File install-fonts.ps1 - Detection rule: check file exists in
C:\Windows\Fonts\YourFont.ttfOR registry underHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts.
Sample install-fonts.ps1
$FontSource = "$PSScriptRoot\Fonts" # folder inside your package
$Fonts = Get-ChildItem $FontSource -Filter *.ttf
foreach ($font in $Fonts) {
$dest = Join-Path "$env:WINDIR\Fonts" $font.Name
if (-not (Test-Path $dest)) { Copy-Item $font.FullName $dest -Force }
$family = [System.IO.Path]::GetFileNameWithoutExtension($font.Name)
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" `
-Name "$family (TrueType)" -Value $font.Name -PropertyType String -Force | Out-Null
}
# Optional: broadcast font change (requires user session); safest is to reboot after deployment.
Option B — PowerShell script deployment
- Devices > Scripts > upload a similar installer.
- Run as System. Reboot if you also change the system UI font.
6.2 (Optional) Swap the system UI font via Intune
Deploy a small script as a device PowerShell script (run as System). Example sets Inter; add your font first.
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" -Force | Out-Null
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" `
-Name "Segoe UI" -Value "Inter" -PropertyType String -Force | Out-Null
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" `
-Name "Segoe UI Variable" -Value "Inter" -PropertyType String -Force | Out-Null
# Consider scheduling a restart or prompting sign-out.
Rollback script
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" -Name "Segoe UI" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" -Name "Segoe UI Variable" -ErrorAction SilentlyContinue
Notes
- There’s no native Settings Catalog knob to change the global UI font. Use scripts.
- Test on a pilot group first. Watch for icon/font fallback issues.
- Include a detection rule and a rollback assignment.
7) Quick FAQ
Can I change only title bar or menu fonts?
Not in a supported, granular way on Windows 11. Use per-app settings.
Will this break emojis or symbols?
It can. Your replacement may not have those glyphs. Keep rollback handy.
Does this survive feature updates?
Usually, but big upgrades can reset parts of the UI. Re-apply via Intune if needed.
Copy-ready files
ChangeSystemFont.reg – set Inter:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Segoe UI"="Inter"
"Segoe UI Variable"="Inter"
RestoreDefaultUIFont.reg – revert to Segoe:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Segoe UI"=-
"Segoe UI Variable"=-


