How to Deploy Fonts on macOS Using Microsoft Intune
Microsoft Intune allows IT admins to remotely deploy fonts without requiring manual installation. In this post, I’ll walk through how to install fonts on macOS via Intune using a Bash script. Why Deploy Fonts via Intune Prerequisites Before proceeding, ensure you have: Step 1: Prepare the Deployment Script This guide can be used to deploy…

Microsoft Intune allows IT admins to remotely deploy fonts without requiring manual installation. In this post, I’ll walk through how to install fonts on macOS via Intune using a Bash script.
Why Deploy Fonts via Intune
- Ensure all Mac devices in your organization use the same fonts
- Automate font deployment without requiring user interaction
- Deploy fonts across multiple devices from Microsoft Intune
Prerequisites
Before proceeding, ensure you have:
- macOS devices enrolled in Intune
- Admin access to Microsoft Intune
Step 1: Prepare the Deployment Script
This guide can be used to deploy any fonts, but for this example, I’ll be deploying Roboto.
Use the following shell script to download and install Roboto fonts in /Library/Fonts (making them available to all users).
#!/bin/bash
# Logging to /var/tmp
log="/var/tmp/roboto-install.log"
exec >> "$log" 2>&1
echo "Starting Roboto font installation (system-wide) at $(date)"
# System-wide font directory
FONT_DIR="/Library/Fonts"
# Create the directory if it doesn't exist
mkdir -p "$FONT_DIR"
# Roboto font source
BASE_URL="https://github.com/google/fonts/raw/main/ofl/roboto/"
FONT1="Roboto%5Bwdth%2Cwght%5D.ttf"
FONT2="Roboto-Italic%5Bwdth%2Cwght%5D.ttf"
echo "Downloading Roboto fonts to $FONT_DIR..."
# Download Roboto fonts
curl -L -o "$FONT_DIR/Roboto[wdth,wght].ttf" "${BASE_URL}${FONT1}"
curl -L -o "$FONT_DIR/Roboto-Italic[wdth,wght].ttf" "${BASE_URL}${FONT2}"
echo "Roboto fonts installed successfully in $FONT_DIR"Step 2: Upload the Script to Microsoft Intune
- Go to Microsoft Intune
- Navigate to Devices > macOS > Scripts
- Click + Add
- Upload the script
- Name: macOS – Roboto Fonts
- Description: Deploys Roboto fonts to macOS devices
- Upload script:install_roboto_fonts.sh
- Configure Execution Settings
- Run script as signed-in user: No (This will install it as root)
- Hide script notifications: Yes (optional)
- Script frequency: Every 1 week (optional)
- Max number of times to retry if script fails: 3 times (optional)
- Assign to Target Mac Devices
- Assign to a test group first.
- Deploy to production devices once tested.
Step 3: Verify Installation
Once deployed, confirm the fonts are installed:
- Open LaunchpadorSpotlight and search for font.
- Select the Font Book app and verify that Roboto is in the font list.
Troubleshooting & Logs
If the fonts don’t install, check the install logs using:
cat /var/tmp/roboto-install.log | grep -i robotoFinal Thoughts
By using Microsoft Intune, you can automate font deployment across your macOS devices, reducing manual work for IT admins. This approach can be adapted to deploy any other fonts required by your organization.
Found this helpful? I share more tech tips and real-world automation on GitHub and here on the blog.
Related
Automatiser bilagsføring med Fiken API og Claude Code
Jeg videresendte kvitteringer til Fiken-inboksen og lot dem ligge. Så satt jeg en kveld i måneden og førte dem manuelt: finn leverandøren, velg konto, velg MVA-kode, last opp PDF-en. Fire klikk, tretten ganger. Så skrev jeg en Claude-skill som gjør det via Fiken API-et.
Build a Self-Healing AI Content Agent with Claude Agent SDK
Write a post, format it for X, reformat for Bluesky, render a video, upload to YouTube, cross-post to Instagram. Repeat daily. That was 2-3 hours of my day, so I built a self-healing AI content agent that does all of it. It runs 24/7 on a Mac…
Automate Your Blog Publishing in 2026: From Draft to Live in One Command
Blog automation saved me 15-20 minutes per post. The manual version went like this: write in your editor, open WordPress, paste and reformat, upload a featured image, configure SEO metadata, hit publish. Three or four posts a week adds up to hours of clicking. So I built a system that takes a markdown…