Custom fonts in generated PDFs
Upload a brand font, and see that font in the PDF
JetPage accepts TTF, OTF, and TTC font files uploaded directly in the app, with a licence acknowledgement step, and every uploaded font is validated by the same engine that renders the finished PDF. Across the rest of the market, adding a brand font is a support request or a task for your own infrastructure: PDF Generator API asks customers to email support to have a font added, CraftMyPDF asks customers to host font files on a CDN they operate themselves, Carbone requires a commercial licence or a rebuilt Docker image, and APITemplate and PDFMonkey hand the problem back as a CSS font-face rule. JetPage treats brand fonts as a normal part of designing a document rather than an exception handled by a person.
This page covers how JetPage handles fonts inside one workspace. For platforms generating documents on behalf of many customers, where each customer brings a different brand font, see multi-tenant PDF generation with per-workspace font libraries.
Why brand fonts break in generated PDFs
JetPage validates an uploaded font with the same engine that renders the document, so a font that uploads is a font that renders
Silent font fallback is the classic failure of generated documents. A tool accepts a font file, checks it with one library, then renders with a different one, and the renderer quietly substitutes something else when the two disagree about a weight, a style, or a script. Nobody sees the substitution until a customer receives an invoice set in the wrong typeface. Carbone inherits exactly this class of problem through LibreOffice conversion, where reviewers report silent fallback shifting layouts.
A designer choosing JetPage learns about a font problem while uploading the font, which is the only moment when fixing it is cheap.
JetPage shows the uploaded font in the editor and in the PDF, down to the stretch axis
An editor that previews with a web font and renders with a print font produces two different documents, and the difference usually shows up as a line that wraps in one and not the other. This is the same preview fidelity problem that separates a typesetting engine from a headless browser, and fonts are where it bites first, because a fallback font has different metrics from the font it replaced.
What a JetPage user sees while positioning text in a brand font is what the recipient of the PDF sees.
JetPage guarantees no tofu boxes through an explicit fallback chain
Every font covers some characters and not others. When a document contains a character the chosen font lacks, a PDF pipeline either draws a replacement box, commonly called tofu, or falls back to another font. A pipeline with no defined fallback order produces tofu in front of a customer, and a pipeline with an undocumented fallback order produces surprises.
A JetPage document containing an unexpected character renders that character in a real typeface instead of a box.
What JetPage does with a font after upload
JetPage subsets fonts automatically at export, so a brand font does not inflate every PDF
A full font file carries thousands of glyphs, and a typical invoice uses perhaps eighty of them. Embedding the whole file in every generated document multiplies storage and download cost across an entire batch run. Subsetting, which embeds only the glyphs a document actually uses, is standard practice in professional typesetting and absent from most template-to-PDF products.
A team generating documents in bulk with JetPage pays for the glyphs each document uses rather than for the entire font family, on every document.
JetPage deduplicates and compresses font delivery, measured at 15 MB across 94 requests reduced to 1.05 MB across 4 requests
Font delivery inside the editor is a separate cost from font embedding inside the PDF. An editor that reloads every font file on every session makes the builder slow to open, which is one reason competing editors are described as sluggish on complex templates. JetPage addresses delivery with content-hash deduplication, so an identical font uploaded twice is stored and served once, and with Brotli compression served under immutable caching.
A JetPage workspace carrying a large brand font library still opens the builder quickly, because the fonts arrive once and stay cached.
JetPage accepts TTF, OTF, and TTC files, and states that limit plainly
Font formats are not interchangeable. Desktop and print workflows are built on TTF, OTF, and TTC files, while WOFF and WOFF2 are web delivery formats produced by compressing one of the others. A product that is vague about accepted formats sends its customers to discover the answer during onboarding.
A team evaluating JetPage can check its font licence against a named format list before signing up rather than after.
JetPage records a licence acknowledgement with every font upload
Embedding a font in a distributed PDF is a licensing act, and commercial font licences differ on whether embedding is permitted. Carbone makes this explicit by requiring a commercial licence for custom fonts. A product that stays silent leaves the question with a customer who may not know it exists.
A JetPage workspace answering to a brand or legal team has a record of font licence confirmations rather than an assumption.
How the PDF generation market handles custom fonts
| Capability | PDF Generator API | CraftMyPDF | APITemplate.io | Carbone | PDFMonkey | JetPage |
|---|---|---|---|---|---|---|
| Adding a font | Email support to add one | Host the file on your own CDN | CSS font-face rule only | Google Fonts; custom needs a licence or on-premise build | Font URLs, paid plans only | Self-serve upload in the app |
| Validation at upload | Not documented | Not documented | None | Not documented | None | By the same engine that renders |
| Script coverage check | No | No | No | No | No | Yes, probed at upload |
| Variable fonts | Not documented | Not documented | Browser dependent | Not documented | Browser dependent | Yes |
| Automatic subsetting at export | Not documented | Not documented | Not documented | Not documented | Not documented | Yes |
| Editor and PDF use the same font | Proprietary engine, not stated | Proprietary engine, not stated | Browser preview, browser render | No pixel-exact preview | Browser preview, browser render | Yes, same engine and same files |
| Per-tenant font libraries | No, account-global via support | No | No | No | No | Yes, isolated per workspace |
Competitor rows summarise the JetPage competitive analysis of August 2026, which draws on vendor documentation and pricing pages and on published G2, Capterra, and Trustpilot reviews. "Not documented" means the vendor publishes no statement on that capability, not that the capability is absent.
Frequently asked questions
Can JetPage use my own brand font in generated PDFs?
Yes. A JetPage user uploads a TTF, OTF, or TTC file in the app, confirms the licence, and the font becomes available to templates in that workspace. No support request and no CDN of your own is involved.
Does JetPage accept WOFF or WOFF2 fonts?
No. JetPage font upload accepts TTF, OTF, and TTC files, including variable fonts. WOFF and WOFF2 are web delivery formats, and a foundry licence covering desktop or embedding use normally supplies a TTF or OTF file, which is the format JetPage takes.
Will the font in the JetPage editor match the font in the PDF?
Yes. The JetPage canvas registers each uploaded font as a real FontFace including its stretch value, and the JetPage preview and the JetPage PDF come from the same engine reading the same font files.
What happens when a document contains a character the font does not cover?
JetPage resolves the character through a defined fallback chain rather than drawing a replacement box. The script coverage probe run at upload time reports in advance which scripts an uploaded font covers.
Does JetPage support right-to-left scripts or emoji?
Not currently. JetPage supports left-to-right scripts, and the visual regression suite covers Cyrillic among other coverage scenarios. Right-to-left scripts and emoji are not supported today.
Does embedding a custom font make every generated PDF larger?
Only by the glyphs each document uses. JetPage subsets embedded fonts automatically at export, with no configuration, so a document embeds the characters it contains rather than the whole family.
Upload your brand font and render a real document
JetPage is free to try without a credit card, and font upload is part of the product rather than a paid tier or a support request. Bring the font your brand guidelines specify and see it in a finished PDF.