Custom fonts
Pick any font from Bunny Fonts or Google Fonts, copy the code the page builds for you, and paste it into Ghost. Nothing to edit.
Signal ships with Fraunces for headings and Schibsted Grotesk for everything else. Want a different look for your show? Pick a font below, copy the code this page writes for you, and paste it into Ghost. That's it.
Try Ghost's own font picker first
Ghost has a Heading font and Body font picker under Design & branding → Brand: 21 fonts, no code. Signal follows it. This page is for a font that isn't on that list.
Choose your fonts
Type a font name into either box and pick it from the list. Change just the headings, just the body text, or both. Leave a box empty to keep Signal's own font for that part. Not sure which to choose? Browse fonts.bunny.net or fonts.google.com first; every family on either site is in the list here.
Under each font you'll see it rendered, with the words Regular, Bold, Italic in that font. If a word doesn't change, that font doesn't have that style, and a note under the box says so. Signal's headings are semibold, so check that Bold really looks bold before you pick a heading font. The Copy button sits in the top corner of the code.
Paste the code into Ghost
In Ghost Admin, go to Settings → Code injection.
Click into the Site header box and paste. If there's already code there, paste yours on a new line at the end.
Click Save.
Save and look
Open your site in a new tab and hard-refresh it (Cmd/Ctrl + Shift + R). Your headings, or your body text, or both, are now in the font you chose: the homepage, every episode page, the player, show notes, guest cards and the footer.
Check one episode while you're there: the title, a paragraph of show notes, a bold word and an italic one. If any of those looks off, the answers are just below.
Something not right?
Good to know
Code injection
Restyle any part of Signal with a few lines of CSS in Ghost's Code injection. Learn the stable data-* hooks, what's safe to target, and how to scope rules.
Hook reference
Every stable data-* selector Signal exposes for Code injection — regions, components, variants, and parts — plus the protected names you must not rename.