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

Table of contents
Quick Answer
Go to the stepsPackage fonts with PowerShell scripts as an Intune Win32 app. Install copies to C:\Windows\Fonts and registers in the registry.
- Create install, uninstall, and detection PowerShell scripts.
- Package with IntuneWinAppUtil.exe.
- Upload as Win32 app in Intune.
- Configure detection rules and assign to groups.
- Verify fonts appear on target devices.
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.
New-Item -Path 'C:\FontDeployment\fonts' -ItemType Directory -ForceExpected 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).
IntuneWinAppUtil.exe -c "C:\FontDeployment" -s "installfonts.ps1" -o "C:\FontDeployment\Output" -qExpected result: installfonts.intunewin created.
6Upload and configure the Win32 app
Create the Win32 app in Intune.
Apps > Windows > Add > Win32Upload 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.
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.
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.
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.
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.
Apps > Windows > Add > Win32 > upload .intunewin



