Providers

Three font catalogs, one editor window. Browse, preview, and install from Google Fonts, Fontshare, and Fontsource without leaving Unity.

Overview

Provider Families Licenses surfaced Delivery API key
Google Fonts ~1,700 OFL 1.1 / Apache 2.0 / UFL 1.0 Per-variant TTF (Google CDN) Optional
Fontshare (OSS) ~150 OFL 1.1 only Per-family ZIP (extracted once) Not needed
Fontsource 2,077 OFL 1.1 / Apache 2.0 / MIT / UFL 1.0 Per-variant TTF (jsDelivr) Not needed
Cross-source dedup: In the ALL view, when the same family appears in multiple catalogs, the highest-priority source wins and losing catalogs stack as extra badges on the card. When Fontsource is a losing source, its explicit per-font license overrides the winner (Fontsource is the only catalog we ingest with a structured license field).

Browsing

The Search tab is the main entry point. Source pills switch between ALL and each provider; category pills narrow by classification; sort pills re-order by popularity, release date, or alphabetically.

Google Fonts

The largest of the three catalogs. Full text search across ~1,700 families, per-variant TTF downloads, optional API key for higher rate limits.

API key setup (optional)

FontOps can hit the Google Fonts API unauthenticated, but shared anonymous rate limits throttle heavy browsing. Adding a key removes that restriction.

  1. Open the Google Cloud Credentials page and click Create Credentials → API Key.
  2. Copy the generated key.
  3. In Unity, open FontOps → Settings and paste the key into the API Key field.
  4. Click VALIDATE to confirm the key works.
The API key is stored locally via EditorPrefs and only transmitted to Google's API.

Licensing

Google Fonts' license label is read from the authoritative fonts.google.com/metadata/fonts/{family} JSON endpoint (after stripping the XSSI )]}' prefix). No HTML scraping — which is why Chewy, Coming Soon, and similar fonts that had been mis-flagged as OFL for months are now correctly surfaced.

Fontshare (OSS subset)

Indian Type Foundry's fontshare.com exposes a mix of OFL fonts and closed-source ITF FFL fonts. FontOps ingests only the OFL subset so nothing in the tool can install a font with a non-redistributable license.

DetailValue
Filter rule license_type == "sil_ofl" — applied at catalog-fetch time
Download shape One ZIP per family; extracted once to Temp/FontManager/fontshare/{slug}/ and reused for installs + previews
Variant resolver Deterministic camel-case suffix match (-Italic, -BoldItalic, -ExtraLight, …). No more fuzzy token scoring — fixes mis-shipped italics
License file OFL.txt auto-dropped alongside installed TTFs (first install per family)
API key None required
Fontshare also publishes closed-source ITF FFL fonts through the same API. FontOps deliberately filters those out at ingest — FFL forbids third-party redistribution, and our pipeline downloads + extracts + imports the TTFs (which is redistribution). If you want an FFL font, install it directly from fontshare.com and FontOps' scanner + palette system will still pick it up.

Fontsource

The largest OFL/Apache/MIT catalog we integrate — 2,077 families, a strict superset of Google Fonts plus 126 unique families. Served from jsDelivr with no ZIP step: one direct TTF per variant.

DetailValue
Allowed licenses OFL 1.1, Apache 2.0, MIT, UFL 1.0 (any other license rejected at ingest)
Download shape Direct per-variant TTF from cdn.jsdelivr.net/fontsource/fonts/{id}@latest/{subset}-{weight}-{style}.ttf
License source Per-font license field in the bulk /v1/fonts catalog, normalised to canonical labels
Version Lazy-fetched from /v1/fonts/{id} on first card / specimen render (the bulk feed omits version)
License file LICENSE.txt pulled once per family on first install
API key None required

Install workflow

Clicking ↓ INSTALL on a font card (or variant row) performs the same steps regardless of source:

  1. Download the TTF into the provider's configured folder (e.g. Assets/Fonts/GoogleFonts/, Assets/Fonts/Fontshare/, Assets/Fonts/Fontsource/).
  2. Drop the license file alongside (OFL.txt / LICENSE.txt) on first install per family.
  3. Write a .fontops.json manifest sidecar so variant labels survive any future rescan.
  4. If Auto-create TMP Font Asset is on, generate a TMP_FontAsset.
  5. If Generate Atlas is also on, bake an SDF atlas at the configured Atlas Size.

Settings that affect installs

Setting Default Effect
Download folder (per provider) Assets/Fonts/{Provider} Where TTFs are saved. Each provider has its own folder; change any of them in Settings
Auto-create TMP On Generate a TMP_FontAsset after download
Generate Atlas On Bake an SDF atlas alongside the font asset
Atlas Size 1024 × 1024 Width/height of the generated SDF atlas
Settings live at FontOps → Settings (gear icon in the sidebar). Changes autosave — no Save button.

Font Previews

Cards show a plain-text placeholder until previews are loaded. Clicking Load Previews (down-arrow in the toolbar) downloads lightweight preview fonts and renders sample text directly in the editor.

Troubleshooting

Problem Fix
Google Fonts rate-limit errors Add an API key in Settings, or wait a few minutes and retry
Google Fonts: "Invalid API key" Verify the key in the Google Cloud Console and ensure the Fonts Developer API is enabled
Fontshare ZIP fails to extract Check the Unity Console for the raw ZIP path. Re-fetch the catalog (Settings → Force Refresh) and retry
Fontsource version shows "—" in the specimen Version is lazy-fetched on demand. Give it a second after opening the card. If it persists, check for network errors in the Console
TTF imports but no SDF atlas Enable Generate Atlas in Settings. Also import TMP Essential Resources (Window → TextMeshPro)
Wrong glyphs showing under a correct-looking filename Known pre-v1.0.0 Fontshare bug — fixed in b32d5c4. If you're on the current version and still seeing it, delete the family folder and re-install