Fonts in EPUB Files
Embedding a font in an EPUB places the font file inside the archive so reading systems use it by default. Whether to embed — and which fonts to choose — depends on your book's genre, layout complexity, and your readers' devices. This guide covers the embed-or-not decision, font licensing, recommended typefaces for ebook reading, and how to declare fonts in the OPF manifest. For the CSS @font-face syntax that connects a declared font to your stylesheet, see the EPUB CSS for ebooks guide.
Should you embed fonts?
Embedding is not always the right choice. System fonts — the defaults built into Kindle, Apple Books, and Kobo devices — are optimized for their respective screens and are familiar to readers. Embedding adds file size and complexity. The decision depends on what you're publishing:
| Scenario | Recommendation | Reason |
|---|---|---|
| Fiction — prose body text | System fonts usually sufficient | Readers often override fonts anyway; embedding adds file size for minimal visual gain on plain prose |
| Non-fiction with brand identity | Embed a body + heading pair | Consistent look across platforms where system font availability varies between Kindle, Apple Books, and Kobo |
| Poetry or experimental layout | Embed and set in CSS | Line breaks and spacing are semantic; system font substitution can break intended layout |
| Children's or illustrated books | Embed display/heading font; system for body | Display typeface is part of the visual identity; body text is secondary |
| Academic with equations or symbols | Embed a math-capable font (e.g. STIX Two) | System fonts lack math glyph coverage on many e-readers |
Font licensing — what you can legally embed
Not every font can be embedded in a distributed document. Font files are licensed software, and embedding a font in an EPUB distributed to readers is considered a form of distribution. Check the license before including any font:
| License | Embedding | Notes |
|---|---|---|
| OFL (Open Font License) | ✓ Safe | Embedding always permitted. Most Google Fonts are OFL. Examples: Lora, Merriweather, EB Garamond, Source Serif 4, Literata. |
| Apache 2.0 | ✓ Safe | Embedding permitted. Some Google Fonts use Apache 2.0. |
| SIL OFL 1.1 | ✓ Safe | Identical to OFL for embedding purposes. |
| Commercial desktop license | ✗ Check | Desktop licenses typically prohibit embedding in distributed documents. Look for a specific ebook embedding license tier from the foundry. |
| Freeware / no stated license | ✗ Do not embed | No stated license = all rights reserved by default. Do not embed without explicit written permission from the creator. |
Recommended fonts for ebook reading
The best ebook fonts have generous x-height (legibility at small sizes), open apertures (letters that don't close up at low resolutions), and good spacing for reading long text. All of the following are available under OFL and safe to embed:
Serif — for body text in fiction and narrative non-fiction:
- Lora — warm and readable, good weight range, designed for screen
- Merriweather — slightly heavier, strong on low-resolution e-ink displays
- Literata — designed specifically for Google Play Books; well-hinted for small sizes
- Source Serif 4 — clean and modern with good italic support
- EB Garamond — classical proportions, lighter weight; best at larger text sizes
Sans-serif — for body text in non-fiction, technical, or business books:
- Source Sans 3 — designed for UI and long reading, excellent at screen sizes
- Open Sans — widely familiar, good glyph coverage across languages
- Lato — warm humanist sans, good for mixed text and headings
Avoid display or decorative typefaces for body text — they are designed to be read at large sizes on print, not at 12–16px on an e-ink screen. Use them only for chapter headings if at all.
Font subsetting
Font subsetting strips all glyphs not used in your book from the embedded font file. A full Latin font file might be 200–400 KB. A subsetted version for an English prose book — containing only Latin characters, punctuation, and numerals — is typically 20–50 KB. The reduction is significant for EPUB archive size, which affects upload time, download speed for readers, and KDP file size limits.
Most EPUB editors (Sigil, Vellum) support subsetting automatically. Standalone tools like pyftsubset (part of fonttools) can subset font files before you include them. Always subset embedded fonts before distributing your EPUB.
Declaring fonts in the OPF manifest
Every font file included in the EPUB archive must be declared in the OPF manifest. Use the correct media-type for each format:
<!-- In content.opf, inside <manifest> -->
<item id="font-body"
href="Fonts/Lora-Regular.ttf"
media-type="font/ttf"/>
<item id="font-body-italic"
href="Fonts/Lora-Italic.ttf"
media-type="font/ttf"/>
<item id="font-heading"
href="Fonts/Merriweather-Bold.ttf"
media-type="font/ttf"/>Common media-type values: font/ttf (TrueType), font/otf (OpenType), font/woff (WOFF), font/woff2 (WOFF2).
A font file not declared in the manifest is technically present in the archive but invisible to reading systems and may trigger a validation warning. For the CSS @font-face rule that connects the manifest font to your stylesheet, see the EPUB CSS for ebooks guide.
Frequently asked questions
Can readers override my embedded font on their device?
Yes, on most e-readers. Kindle, Apple Books, and Kobo all allow readers to switch to a built-in font from the reading settings — your embedded font is overridden for readers who change it. The EPUB specification provides no reliable way to prevent this, and attempting to force a font on all devices is not recommended. Design with the assumption your embedded font is the default, not a guarantee.
What is font subsetting and should I do it?
Font subsetting strips all glyphs not used in your book from the font file, dramatically reducing file size. A full Latin font might be 200–400 KB; a subsetted version for English prose is typically 20–50 KB. For an English book you need Latin characters, punctuation, and numerals — not Cyrillic, Greek, or extended Unicode blocks. Most EPUB editors and font tools support subsetting. Always subset before including a font in your EPUB to avoid unnecessarily large file sizes.
Which fonts work well for ebook body text?
Fonts designed for screen reading perform best — generous x-height, open apertures, and good spacing at small sizes. Open-licensed options safe to embed without additional cost: Lora (serif, warm and readable), Merriweather (serif, slightly heavier weight), EB Garamond (classical serif), Source Serif 4 (clean modern serif), and Literata (designed specifically for ebook reading). For sans-serif body text: Source Sans 3, Lato, or Open Sans. All are available under OFL.
Can I embed a Google Font in my EPUB?
Most Google Fonts are under OFL or Apache 2.0, both of which permit EPUB embedding. Download the font file from Google Fonts (the .ttf or .otf file) and include it in your EPUB's Fonts directory. Do not link to the Google Fonts CDN — e-readers have no internet connection while displaying a book, so any external URL reference fails silently and falls back to a system font. Check the specific font's license on the Google Fonts page before embedding; a small number of fonts in the catalog are under different terms.
Do I need to declare embedded fonts in the OPF manifest?
Yes. Every file in the EPUB archive — including font files — must be declared in the OPF manifest with the correct media-type. For TrueType: media-type="font/ttf". OpenType: media-type="font/otf". WOFF: media-type="font/woff". WOFF2: media-type="font/woff2". A font file not declared in the manifest is technically present in the archive but may be invisible to reading systems and can trigger a validation warning.
What is the difference between embedding a font and linking to it?
Embedding means the font file is physically inside the EPUB archive — included in the ZIP alongside your content files and images. Linking to an external URL (as you would in a web page) does not work in EPUB: e-readers have no internet access while displaying a book, so any external font URL fails silently. Always embed by including the font file in the EPUB archive, declaring it in the OPF manifest, and referencing it with @font-face in your CSS.
For the CSS @font-face rule syntax — how to link a manifest-declared font to your stylesheet — and the full table of CSS properties with per-platform support, see the EPUB CSS for ebooks guide. For EPUB metadata and OPF manifest structure, see the EPUB metadata guide.
For the full EPUB build workflow — TOC, metadata, chapter structure, images, and platform submission — see the EPUB formatting guide.
Generate ebook-safe CSS snippets — including @font-face declarations.
Pre-tested CSS for font embedding, paragraph styling, page breaks, and headings — no reading system guesswork.
Generate CSS Snippets →