The fonts a row's "replace with…" can offer: every LOADED font with a uuid, except the row's own
family, one per family. Theme handles first (FONT_1, FONT_2, …), then the rest by name.
⚠️ Loaded only. canvas's substitute_font() refuses a target it cannot resolve, and the text is set
in the target's face, so a theme's FONT_4 can be a target only once the theme's manifest has been
applied and its file has loaded. A theme font the browser never loaded is simply not in the list.
The fonts a row's "replace with…" can offer: every LOADED font with a uuid, except the row's own family, one per family. Theme handles first (FONT_1, FONT_2, …), then the rest by name.
⚠️ Loaded only. canvas's substitute_font() refuses a target it cannot resolve, and the text is set in the target's face, so a theme's FONT_4 can be a target only once the theme's manifest has been applied and its file has loaded. A theme font the browser never loaded is simply not in the list.