How To Change Fonts in Windows 11 (Safely): Step-By-Step + Intune Deployment


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)

  1. Settings > Personalization > Fonts.
  2. Drag-and-drop .ttf/.otf files, or Browse to install.
  3. 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

  1. Open Notepad.
  2. 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"
  1. Double-click the .reg file. Approve the UAC prompt.
  2. Sign out and sign in (or reboot).

3.2 Create the rollback file (restore default)

  1. Open Notepad.
  2. 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"=-
  1. 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/.otf and 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.ttf OR registry under
    HKLM\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"=-