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
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
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
← 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.

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.