Skip to content
anavem.com logoanavem.com logo
Microsoft IntuneTutorials

How to Deploy Custom Fonts to Windows Devices Using Microsoft Intune

Deploy custom fonts to Windows 10/11 devices using Intune Win32 packages. Covers PowerShell install scripts, registry registration, detection rules, and deployment verification.

Difficulty
Intermediate
Time required
30-45 minutes
Steps
8
Platform
Microsoft Intune
Custom font deployment to Windows devices through Microsoft Intune, with font files, Win32 app packaging.
View full image
Table of contents

Quick Answer

Go to the steps

Package fonts with PowerShell scripts as an Intune Win32 app. Install copies to C:\Windows\Fonts and registers in the registry.

  1. Create install, uninstall, and detection PowerShell scripts.
  2. Package with IntuneWinAppUtil.exe.
  3. Upload as Win32 app in Intune.
  4. Configure detection rules and assign to groups.
  5. Verify fonts appear on target devices.
Admin path
Apps > Windows > Add > Windows app (Win32)

Expected result: Fonts installed system-wide, visible in all applications after restart.

Key takeaways

  • How to package custom fonts as an Intune Win32 app with install/uninstall scripts, detection rules, and deployment monitoring.
  • Custom fonts maintain brand consistency. Without centralized deployment, IT teams must manually install fonts on every device.
  • Use Win32 app method with SYSTEM context. Test scripts locally. Some apps need a restart for new fonts.

Introduction

Intune has no native font deployment feature. The standard approach is to package font files with PowerShell scripts as a Win32 app using the Microsoft Win32 Content Prep Tool.

The install script copies .ttf/.otf files to C:\Windows\Fonts and registers them in the registry under HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts. Detection verifies both file and registry presence. This provides full lifecycle management.

This tutorial covers the complete workflow from script creation to deployment verification.

Who this is for: Intune administrators deploying corporate fonts (.TTF/.OTF) to managed Windows 10/11 devices.

Before you start

Access
Intune Administrator role.
Required roles
  • Intune Administrator
Required licenses
  • Microsoft Intune Plan 1 or Microsoft 365 E3/E5
Environment
Windows 10/11 devices enrolled in Intune. IntuneWinAppUtil.exe from Microsoft GitHub.
Vendor
Microsoft
  • Administrator permissions required

Script creation 15-20 minutes. Packaging and config 15-25 minutes.

Warning: Test scripts locally before packaging

Test install and detection scripts on a local machine before creating the Win32 package. Script errors cause deployment failures on all targeted devices.

1Prepare font files and folder structure

Organize fonts and scripts.

Create a FontDeployment directory with a fonts subfolder. Copy your .ttf and .otf files into the fonts subfolder. You will create three scripts in the root: installfonts.ps1, uninstallfonts.ps1, and DetectionCheck.ps1.

PowerShell
New-Item -Path 'C:\FontDeployment\fonts' -ItemType Directory -Force

Expected result: Directory structure with font files.

2Create the install script

Write a script that installs fonts system-wide.

Create installfonts.ps1 that iterates .ttf/.otf files in the fonts subfolder, copies each to C:\Windows\Fonts, and creates a registry entry under HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts with the font name and TrueType or OpenType suffix.

Include try/catch error handling, logging to C:\Windows\Temp\FontInstall.log with Start-Transcript, and a success marker file for detection. Exit 0 on success, 1 on failure.

Expected result: installfonts.ps1 copies fonts and creates registry entries.

Note

Test the script locally on a test machine before packaging. Verify fonts appear in C:\Windows\Fonts and the registry after running.

3Create the uninstall script

Write a script that removes deployed fonts.

Create uninstallfonts.ps1 with a hardcoded array of your custom font filenames. For each, remove the file from C:\Windows\Fonts and delete the matching registry entry. Remove the success marker file.

Expected result: uninstallfonts.ps1 removes fonts and registry entries.

Note

Hardcode filenames rather than scanning C:\Windows\Fonts to avoid accidentally removing system fonts.

4Create the detection script

Build detection for Intune.

Create DetectionCheck.ps1 that checks two conditions for each font: the file exists in C:\Windows\Fonts and a matching registry entry exists. Exit 0 if all pass, exit 1 if any fail.

Expected result: Exit 0 when all fonts installed, exit 1 when any missing.

Note

Keep it lightweight. Alternatively, use file-based detection checking for the success marker.

5Package with Win32 Content Prep Tool

Create the .intunewin package.

Download IntuneWinAppUtil.exe from the Microsoft GitHub repository. Run it with -c (source folder), -s (setup file), -o (output directory), -q (quiet mode).

Cmd
IntuneWinAppUtil.exe -c "C:\FontDeployment" -s "installfonts.ps1" -o "C:\FontDeployment\Output" -q

Expected result: installfonts.intunewin created.

6Upload and configure the Win32 app

Create the Win32 app in Intune.

Admin path
Apps > Windows > Add > Win32

Upload the .intunewin file. Set install command: %windir%\sysnative\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "installfonts.ps1". Set uninstall similarly. Install behavior: System. No restart required.

Expected result: Win32 app configured with install and uninstall commands.

Note

Use %windir%\sysnative to force 64-bit PowerShell. The -WindowStyle Hidden flag prevents a visible window.

7Configure detection rules

Set up Intune detection.

On Detection rules, select Use a custom detection script. Upload DetectionCheck.ps1. Set Run as 32-bit to No. Or use file-based detection checking for C:\Windows\Temp\FontInstallSuccess.txt.

Expected result: Detection rule verifies font installation status.

8Assign and verify deployment

Target devices and verify deployment.

Assign to a pilot device group under Required. Review and create. Monitor under Apps > Windows > your app > Device install status. Force sync on target devices via Settings > Accounts > Access work or school > Sync.

Verify fonts in C:\Windows\Fonts and in the Word font dropdown on target devices. Some apps require a restart to detect new fonts.

Expected result: Fonts deploy to devices. Status shows Installed.

Note

Communicate to users that a restart may be needed for fonts to appear in Office applications.

How to Confirm Fonts Are Deployed

Verify fix

Sync the device via Settings > Accounts > Access work or school > Sync. Check C:\Windows\Fonts for your font files. Open Word and verify fonts appear in the dropdown. Some apps need a restart.

In Intune, check Apps > Windows > your app > Device install status.

Normal result: Font files in C:\Windows\Fonts. Registry entries exist. Fonts visible in applications.

Abnormal result: Check install log at C:\Windows\Temp\FontInstall.log. Verify detection script filenames match.

Successful

Installed status, fonts in apps

Fonts deployed and registered.

Detection mismatch

Not installed despite files present

Filenames in detection script do not match.

Access denied

Installation failed

Verify SYSTEM context and sysnative path.

Troubleshooting

Fonts installed but not visible in apps

Note

Cause: Applications cache font list at startup.

Restart the application or sign out and sign back in. Some apps require a full reboot.

Related step 8: Assign and verify deployment

Access denied during installation

Warning

Cause: Script not running in SYSTEM context or missing sysnative path.

Verify install command uses %windir%\sysnative path and Install behavior is set to System.

Related step 6: Upload and configure the Win32 app

Detection reports not installed after successful install

Warning

Cause: Detection script filenames do not match actual font filenames.

Verify exact filename matching between detection script and files in C:\Windows\Fonts.

Related step 7: Configure detection rules

Fonts disappear after Windows update

Note

Cause: Windows feature updates can reset non-system fonts.

The Win32 app will automatically reinstall when detection reports fonts missing after an update.

Related step 7: Configure detection rules

Frequently asked questions

Can I deploy multiple font families in one package?

Yes. Place all files in the fonts subfolder. The install script processes all .ttf and .otf files. Keep package under 8 GB.

Why not use a platform script instead of Win32?

Win32 apps provide detection rules, uninstall capability, and deployment reporting that platform scripts lack.

Why do fonts not appear in apps after install?

Some applications cache the font list at startup. A restart or sign-out/sign-in is required for Office apps to detect new fonts.

Can I deploy fonts per-user instead of system-wide?

Yes, but user-context fonts install to %LOCALAPPDATA%\Microsoft\Windows\Fonts and are only available to that user. System-context makes fonts available to all users.

How do I update deployed fonts?

Create a new version of the Win32 package with updated font files. Intune reinstalls when detection reports the change.

Conclusion

Package fonts with PowerShell scripts as a Win32 app. Install copies to C:\Windows\Fonts and registers in the registry. Detection verifies both.

Use Win32 app method with SYSTEM context. Test scripts locally. Some apps need a restart for new fonts.

Main path
Apps > Windows > Add > Win32 > upload .intunewin
Reader actions
Was this helpful?
Rate this articleRate
14 readers viewed this article

Reader reviews

Rate this articleBe the first to rate
No written reviews yetRate the article above, or be the first to share your experience.