Scan, audit, and edit text components across your project
The Font Scanner discovers every font asset in your project — TTF, OTF, and TMP SDF — and classifies each by its source: Google Fonts, Package, or Custom. It detects duplicate files via MD5 hashing so you can clean up redundant assets, and can create missing TMP SDF assets for any raw font that lacks one.
After scanning, each font is listed with its file path, source badge, and any duplicates highlighted.
You can ignore individual fonts (persisted via EditorPrefs) or batch-create TMP assets
for fonts that are missing them.
The Text Auditor scans every scene and prefab in the project for text components —
both TMP_Text and legacy UnityEngine.UI.Text —
and compares each component against the roles defined in the currently active palette.
The result is a compliance report that tells you exactly which components match a role
and which ones need attention.
The first row of pills filters by compliance status: ALL, NON-COMPLIANT, COMPLIANT, or IGNORED. The count next to each label updates after every scan. The second row filters by asset scope: ALL, PREFABS, or SCENES. Combine both rows to narrow results — for example, show only non-compliant prefabs.
Results are grouped by asset (scene or prefab). Each group header shows the asset name and a ratio like 2/3 compliant, so you can immediately see which assets need work. A PASS badge means every component in that asset matches a role; PARTIAL means some do not.
Clicking EDIT on any component in the auditor opens the Text Editor tab. The left side lists every text component in the selected asset; the right side shows editable fields for the active component.
The left panel lists all text components in the selected asset. The right panel shows the current component's info, a live preview, and role comparison cards for each palette role. Click any role card to apply that role instantly. Use SAVE to write changes back, or REVERT to discard.
The Palette Extractor scans your project for existing text components, groups them by font, size, and style into patterns, and helps you build a Font Palette from what your project already uses. It's the fastest way to go from an unmanaged project to a structured typographic system.
The extractor works in two phases. Phase 1 scans your project and lists every scene and prefab that contains text components. You can IGNORE assets you don't want included (e.g. third-party UI). Then click EXTRACT PATTERNS to move to Phase 2, where components are grouped into pattern cards by font, size, and style. Font sizes are rounded to the nearest 0.5px, so minor variations are merged into a single pattern.
Each pattern card shows the font metadata, a styled preview, and the number of components that share this pattern. You can:
Can't decide on role names? Click COPY AS PROMPT to generate a structured markdown prompt that describes every pattern and its usage locations. Paste it into an AI assistant (ChatGPT, Claude, etc.) and it will analyze your component hierarchy to suggest semantic role names. The prompt asks the AI to return a JSON block that you can import directly.
Click IMPORT JSON to load a .json file and create a
Font Palette asset in one step. The expected format:
{
"paletteName": "My Palette",
"description": "Brief description",
"roles": [
{
"roleName": "Header",
"fontSize": 32,
"fontStyle": "Bold",
"color": [1, 1, 1, 1]
}
]
}
This is the same format the AI prompt asks for, so the round-trip from COPY AS PROMPT → AI → IMPORT JSON is seamless.
Once you're happy with the patterns and role names, type a palette name in the bottom
bar and click CREATE PALETTE. FontOps will save a new
FontPaletteAsset with all the extracted roles, ready to use in the
Text Auditor for compliance checking.
Some text components are intentionally non-compliant — debug overlays, placeholder text, third-party UI, etc. You can exclude any component from compliance checks by clicking IGNORE in the auditor.
This adds a FontComplianceIgnore MonoBehaviour to the GameObject.
An optional reason field lets you document why the component is excluded.
To bring it back into compliance tracking, click the RESTORE button,
which removes the FontComplianceIgnore component.
FontComplianceIgnore is a lightweight runtime component. It has no performance impact.
The recommended end-to-end workflow for achieving full typographic compliance: