Compliance & Tools

Scan, audit, and edit text components across your project

Font Scanner

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.

FontOps
F
🔍
Aa
FONT SCANNER TEXT AUDITOR TEXT EDITOR PALETTE EXTRACTOR
SCAN ALL FONT ASSETS ACROSS THE ENTIRE PROJECT SCAN ALL FONTS
8TOTAL
4GOOGLE
1PACKAGE
3CUSTOM
0DUPLICATES
Found 8 font asset(s) in 5 folder(s).
▼ FOLDERS(5)
Assets/Fonts/Roboto 2 file(s) GOOGLE
Assets/TextMesh Pro/Fonts 1 file(s) CUSTOM
Packages/com.unity.collab-proxy/Editor/Assets/Fonts 1 file(s) PACKAGE

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.

Text Auditor

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.

FontOps
F
🔍
Aa
FONT SCANNER TEXT AUDITOR TEXT EDITOR PALETTE EXTRACTOR
SCAN PROJECT
PALETTE:
NewFontPalette (Font Pal...)
0COMPLIANT
1NON-COMPLIANT
0IGNORED
ALL (1) NON-COMPLIANT (1) COMPLIANT (0) IGNORED (0) ALL PREFABS SCENES
Compliance: 0% (1 components)
SampleScene 0/1 compliant OPEN EDIT
Canvas / Text (TMP) Roboto Slab-100 SDF 36 EDIT IGNORE

Filter Pills

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.

Hierarchy View

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.

Click any asset group header to expand and see individual text components.

Text Editor

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.

FontOps
F
🔍
Aa
FONT SCANNER TEXT AUDITOR TEXT EDITOR PALETTE EXTRACTOR
← BACK SampleScene/Canvas/Text (TMP)
REVERT SAVE SELECT
COMPONENTS
Canvas / Text (TMP)
SCENE → SampleScene/Canvas/Text (TMP) Font: Roboto Slab-100 SDF Size: 36  |  Style: Normal ✗ Non-compliant
CURRENT
New Text
PALETTE ROLES — click to apply
HEADER — · 32px · Bold
New Text
BODY — · 16px · Normal
New Text
CAPTION — · 12px · Italic
New Text

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.

Palette Extractor

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.

FontOps
F
🔍
Aa
FONT SCANNER TEXT AUDITOR TEXT EDITOR PALETTE EXTRACTOR
5PATTERNS
23COMPONENTS
3FONTS
ALL PREFABS SCENES ← BACK TO ASSETS
Set role name
Roboto · 32px · Bold 8 uses REMOVE
The quick brown fox
Set role name
Roboto · 16px · Normal 12 uses REMOVE
The quick brown fox
Set role name
Open Sans · 12px · Italic 3 uses REMOVE
The quick brown fox
Extracted Palette
COPY AS PROMPT IMPORT JSON CREATE PALETTE

Two-Phase Workflow

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.

Pattern Cards

Each pattern card shows the font metadata, a styled preview, and the number of components that share this pattern. You can:

Copy as Prompt

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.

Import JSON

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.

Create Palette

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.

Ignoring Components

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.

Compliance Workflow

The recommended end-to-end workflow for achieving full typographic compliance:

  1. Select or create a Font Palette with the roles your project requires.
  2. Run the Text Auditor scan.
  3. Review non-compliant components using the filter pills.
  4. Fix each component by applying a role card or editing fields directly.
  5. Ignore intentional exceptions and document the reason.
  6. Re-scan to verify — aim for 100% on the progress bar.