This article continues what was being discussed in the previous post
Licensing isn’t the filter here. Every family in the Google Fonts library is released under an open-source licence, mostly the SIL Open Font License, and is free for commercial use in websites, apps, print, logos and client work with no fees. The catalog currently holds around 1,911 families — 705 sans-serif, 343 serif, 464 display, 348 handwriting and 51 monospace. All of them are “safe” in the legal sense. So the useful question for your exporter isn’t which ones you’re allowed to use, it’s which ones will actually resolve.
The two things that break an export
A family name that isn’t in the catalog produces a stylesheet URL that 404s, and the browser silently falls back. And a weight that family doesn’t publish gets synthesised into a fake bold or oblique, which looks subtly wrong rather than obviously broken. Both fail quietly, which is the worst kind.
So don’t hardcode a list in assets.js. The catalog grows every year, and a stale list will reject fonts that now exist. The Developer API returns every family with its variants and subsets as JSON, though it requires an API key. The unfiltered response is about 1.5 MB. Since UXP plugins can’t reasonably ship a key, the sane pattern is to generate a name+variants list at build time from that endpoint (or from the google/fonts GitHub repo, which needs no key) and bundle it. Then buildGoogleFontsUrl checks the family against it and only requests weights that exist.
The Adobe Fonts trap
This is the one that’ll bite an InDesign exporter hardest. Fonts activated through Adobe Fonts — Myriad Pro, Minion Pro, Trajan, Proxima Nova, Brandon Grotesque and so on — are licensed for sync, not for redistribution or web serving. They aren’t on Google Fonts and you can’t embed them either. Only three Adobe families crossed over: Source Sans 3, Source Serif 4 and Source Code Pro.
Metric-compatible substitutes — the most valuable ones for you, because line breaks land in the same place
|
InDesign font |
Google Fonts |
Notes |
|
Arial |
Arimo |
Croscore |
|
Times New Roman |
Tinos |
Croscore |
|
Courier New |
Cousine |
Croscore |
|
Calibri |
Carlito |
derived from Lato, metric-compatible with Calibri |
|
Cambria |
Caladea |
crosextra pair with Carlito |
Carlito’s match isn’t perfect — there’s an open issue where a word fitting a Calibri text box wraps to the next line under Carlito — so it’s close, not exact.
Common design substitutions
|
InDesign / Adobe |
Google Fonts |
|
Helvetica, Helvetica Neue |
Inter, Archivo, Work Sans |
|
Myriad Pro, Frutiger |
Source Sans 3, Open Sans, Noto Sans |
|
Minion Pro |
Source Serif 4, Crimson Pro |
|
Futura |
Jost, Poppins |
|
Avenir, Avenir Next |
Nunito Sans, Jost |
|
Gill Sans |
Cabin, Lato |
|
Garamond |
EB Garamond, Cormorant Garamond |
|
Caslon |
Libre Caslon Text |
|
Baskerville |
Libre Baskerville |
|
Bodoni, Didot |
Bodoni Moda, Playfair Display |
|
Trajan |
Cinzel |
|
Franklin Gothic |
Libre Franklin |
|
Rockwell, Clarendon |
Zilla Slab, Roboto Slab, Bitter |
|
Impact |
Anton |
|
Helvetica Neue Condensed |
Archivo Narrow, Roboto Condensed |
Families I’d trust without checking, because they’re long-established, carry a full weight range with real italics, and won’t be renamed: Roboto, Open Sans, Lato, Montserrat, Inter, Poppins, Raleway, Nunito, Nunito Sans, Work Sans, Rubik, Karla, Mulish, Manrope, DM Sans, Noto Sans, Source Sans 3, Merriweather, Playfair Display, Lora, PT Serif, Libre Baskerville, EB Garamond, Source Serif 4, Roboto Slab, Bitter, Roboto Mono, JetBrains Mono, Fira Code, IBM Plex Sans, IBM Plex Serif, IBM Plex Mono, Space Grotesk, Oswald, Anton, Archivo.
One caution on the display and handwriting categories, which are more than 40% of the library: a great many are single-weight. If your exporter maps an InDesign bold to wght@700 on one of those, you’ll get a synthesised bold rather than the real thing. Reading the variants array from the catalog and requesting only what exists avoids it.