Tool

FontHelper — missing-font auto-installer

In-house Windows tool that scans the PSDs open in Photoshop for missing fonts, then finds, verifies and installs them from free sources — shipped to the art team as a single portable exe.

font sources chained
10
tests — fixture-based TDD
166
single portable exe
33 MB
admin rights required
0

Problem it solves

Open a shared PSD and half the text layers show the yellow missing-font warning. The usual fix is manual: read the font name, search the web, judge an unfamiliar site, download an archive, dig out the right file, install it — per font, per document, per artist. On a team that trades PSDs daily (and every time someone gets a new PC), that is a steady tax on production time. FontHelper turns the whole loop into one double-click.

How it works

Scan → diff → search chain → verify → install.

  1. Scan. Talks to the running Photoshop over COM and reads every open document — including fonts buried inside smart objects, recursively (embedded and linked PSD/PSB, plus a dependency-free scanner for .ai/.pdf/.eps vector smart objects).
  2. Diff. Parses the name tables of locally installed fonts and subtracts them — with an mtime/size cache that cuts the check from 0.23 s to 0.02 s on warm runs.
  3. Search chain. Each missing font walks ten free-font sources in priority order, from license-safe foundries down to last-resort mirrors, with a web-search button as the final human fallback.
  4. Verify. Downloads are opened and the font’s internal name is matched against the request — a lookalike with the wrong name is skipped instead of installed, and every failure surfaces its reason in the UI (login wall, empty archive, name mismatch).
  5. Install. Into the user font folder with per-user registry entries — no admin rights, safe on locked-down office machines.

License-aware by design

The result list is deliberately not one big “install all” button:

FontHelper — result list with the three row types

  • Safe sources get a one-click install.
  • Unclear-license sources require an explicit risk-acknowledgement checkbox and link back to the origin page — the tool refuses to make that judgement for you.
  • Adobe Fonts are detected but deliberately left alone — recent Photoshop auto-installs them from Creative Cloud, so the tool only points there instead of downloading anything.
  • A separate “install all safe fonts” bulk action exists precisely so the safe path stays one click without blurring the line.

Screenshot reproduced with a synthetic demo file — no production documents.

Engineering notes

Built test-first: 166 tests, with every site parser locked to real HTML fixtures so the suite runs offline and a source redesign shows up as a red test instead of a silent field failure. Ships as a single 33 MB PyInstaller exe — no Python, no installer, SmartScreen guidance included — with a rotating log in %APPDATA% so a coworker’s bug report can travel as one file. Photoshop connection falls back across COM ProgID versions, so multi-version and beta installs still connect. Distribution runs through GitHub Releases.

Why it’s here

Same pattern as the rest of this lab: find a repeating production task, build the tool, prove it on real work, hand it to the team. FontHelper is the non-generative end of that spectrum — spec-first design docs, AI-assisted implementation at high velocity, and a deliverable a non-technical artist can run without reading anything but a two-line SmartScreen note.