Fonts
With the release of Publii version 0.39.0, there has been a significant change in our themes regarding the way fonts are loaded. Previously, the Google font loaded directly from its CDN. However, since most browsers have blocked resource-caching from transferring across domains, users must re-download the font files for every site they visit that uses the same font, regardless of whether it was downloaded and cached previously from another site. Even more importantly, the EU court has deemed that Google Fonts (loaded directly from its CDN) are not compliant with the GDPR, which requires consent to be sought before any personally identifiable information can be collected and stored.
Due to these changes, all fonts provided by Publii will, from now on, be loaded locally (self-hosting), which confers a few benefits to our earlier solution:
- Avoids an Extra DNS Lookup
- Removes Non-Minified CSS
- Provides Better Control over Cache Settings
- Complies with the GDPR
Variable fonts
To reduce the number of font files and provide greater control over them, our themes come with variable fonts only. With variable fonts, instead of loading a normal and bold version of the font, Publii will only load a single file. This is important because Publii allows for two different fonts to be loaded; if both a standard and bold version of each of these fonts were included on the site, the total weight (that is, download size) of the files would be too much and could negatively affect load times.
Another advantage of using variable fonts is that now we can manipulate their size across the full range; instead of only being able to choose between displaying the font at 400 (normal) or 700 (bold), we can choose to display a given font at a seemingly random size such as 436, which affords us even greater control when customizing the style of our site.
Pretty great, isn't it?
One more thing to be aware of; you may have noticed that we have omitted some trendy fonts like “Open Sans” or “Noto Sans” from the fonts included in Publii. We decided not to include these fonts as their weight (size) is too big, which is unacceptable when building a lightweight static website such as the Publii CMS is designed for.
Explore the fonts used in official Publii themes
If you’d like to see how each typeface looks in action, click the button below to open a curated Google Fonts collection. This preview showcases all font families included across Publii themes, allowing you to explore their styles, weights, and overall appearance directly on the Google Fonts platform.
The list of available fonts with their specification
Below is the list of all fonts used in our themes, including their typeface, weight, or size.
| Name | Weight range | Size |
|---|---|---|
| Serif | ||
| Aleo | 100 - 900 | 66 KB |
| Aleo Italic | 100 - 900 | 67 KB |
| Andada Pro | 400 - 840 | 106 KB |
| Andada Pro Italic | 400 - 840 | 111 KB |
| Besley | 400 - 900 | 49 KB |
| Besley Italic | 400 - 900 | 52 KB |
| Bitter | 100 - 900 | 108 KB |
| Bitter Italic | 100 - 900 | 112 KB |
| Bodoni Moda | 400 - 900 | 73 KB |
| Bodoni Moda Italic | 400 - 900 | 83 KB |
| Brygada 1918 | 400 - 700 | 89 KB |
| Brygada 1918 Italic | 400 - 700 | 94 KB |
| Cinzel | 400 - 900 | 48 KB |
| Danfo | 400 - 400 | 34 KB |
| Domine | 400 - 700 | 40 KB |
| Faustina | 300 - 800 | 49 KB |
| Faustina Italic | 300 - 800 | 52 KB |
| Frank Ruhl Libre | 300 - 900 | 78 KB |
| Grenze Gotisch | 100 - 900 | 79 KB |
| Imbue | 100 - 900 | 90 KB |
| Kalnia | 100 - 700 | 55 KB |
| Kreon | 300 - 700 | 33 KB |
| Labrada | 100 - 900 | 86 KB |
| Labrada Italic | 100 - 900 | 87 KB |
| Lora | 400 - 700 | 83 KB |
| Lora Italic | 400 - 700 | 90 KB |
| Manuale | 300 - 800 | 76 KB |
| Manuale Italic | 300 - 800 | 85 KB |
| Petrona | 100 - 900 | 86 KB |
| Petrona Italic | 100 - 900 | 94 KB |
| Playfair Display | 400 - 900 | 106 KB |
| Playfair Display Italic | 400 - 900 | 104 KB |
| Red Rose | 300 - 700 | 48 KB |
| Roboto Slab | 100 - 900 | 117 KB |
| Rokkitt | 100 - 900 | 53 KB |
| Rokkitt Italic | 100 - 900 | 55 KB |
| Yrsa | 300 - 700 | 90 KB |
| Yrsa Italic | 300 - 700 | 108 KB |
| Sans Serif | ||
| Advent Pro | 100 - 900 | 66 KB |
| Advent Pro Italic | 100 - 900 | 120 KB |
| Albert Sans | 100 - 900 | 51 KB |
| Albert Sans Italic | 100 - 900 | 56 KB |
| Antonio | 100 - 700 | 37 KB |
| Archivo Narrow | 400 - 700 | 37 KB |
| Archivo Narrow Italic | 400 - 700 | 40 KB |
| Asap | 400 - 700 | 57 KB |
| Asap Italic | 400 - 700 | 181 KB |
| Assistant | 200 - 800 | 37 KB |
| Bitcount | 100 - 900 | 31 KB |
| Cabin | 400 - 700 | 45 KB |
| Cabin Italic | 400 - 700 | 65 KB |
| Cairo | 200 - 1000 | 74 KB |
| Comme | 100 - 900 | 45 KB |
| DM Sans | 100 - 1000 | 87 KB |
| DM Sans Italic | 100 - 1000 | 110 KB |
| Dosis | 200 - 800 | 47 KB |
| Doto | 100 - 900 | 9 KB |
| DynaPuff | 400 - 700 | 95 KB |
| Exo | 100 - 900 | 54 KB |
| Exo Italic | 100 - 900 | 58 KB |
| Familjen Grotesk | 400 - 700 | 33 KB |
| Familjen Grotesk Italic | 400 - 700 | 36 KB |
| Figtree | 300 - 900 | 29 KB |
| Figtree Italic | 300 - 900 | 28 KB |
| Finlandica | 400 - 700 | 46 KB |
| Finlandica Italic | 400 - 700 | 50 KB |
| Fredoka | 300 - 700 | 84 KB |
| Funnel Display | 300 - 800 | 23 KB |
| Gantari | 100 - 900 | 50 KB |
| Gantari Italic | 100 - 900 | 55 KB |
| Glory | 100 - 800 | 42 KB |
| Glory Italic | 100 - 800 | 44 KB |
| Handjet | 100 - 900 | 48 KB |
| Heebo | 100 - 900 | 41 KB |
| Host Grotesk | 300 - 800 | 31 KB |
| Host Grotesk Italic | 300 - 800 | 33 KB |
| Inclusive Sans | 300 - 700 | 45 KB |
| Inclusive Sans Italic | 300 - 700 | 48 KB |
| Instrument Sans | 400 - 700 | 49 KB |
| Instrument Sans Italic | 400 - 700 | 95 KB |
| Jura | 300 - 700 | 78 KB |
| Karla | 200 - 800 | 42 KB |
| Karla Italic | 200 - 800 | 48 KB |
| Kumbh Sans | 100 - 900 | 61 KB |
| League Spartan | 100 - 900 | 40 KB |
| Lexend | 100 - 900 | 74 KB |
| Lexend Deca | 100 - 900 | 70 KB |
| Libre Franklin | 100 - 900 | 44 KB |
| Libre Franklin Italic | 100 - 900 | 49 KB |
| Manrope | 100 - 900 | 53 KB |
| Maven Pro | 400 - 900 | 42 KB |
| Merriweather Sans | 300 - 800 | 93 KB |
| Merriweather Sans Italic | 300 - 800 | 90 KB |
| Montserrat | 100 - 900 | 125 KB |
| Montserrat Italic | 100 - 900 | 130 KB |
| Mulish | 200 - 1000 | 76 KB |
| Mulish Italic | 200 - 1000 | 82 KB |
| Nunito | 200 - 1000 | 100 KB |
| Nunito Italic | 200 - 1000 | 110 KB |
| Orbitron | 400 - 900 | 16 KB |
| Oswald | 200 - 700 | 66 KB |
| Outfit | 100 - 900 | 44 KB |
| Oxanium | 200 - 800 | 19 KB |
| Parkinsans | 300 - 800 | 40 KB |
| Plus Jakarta Sans | 200 - 800 | 61 KB |
| Plus Jakarta Sans Italic | 200 - 800 | 65 KB |
| Pontano Sans | 300 - 700 | 35 KB |
| Public Sans | 100 - 900 | 40 KB |
| Public Sans Italic | 100 - 900 | 44 KB |
| Quicksand | 300 - 700 | 52 KB |
| Radio Canada Big | 400 - 700 | 27 KB |
| Radio Canada Big Italic | 400 - 700 | 29 KB |
| Raleway | 100 - 900 | 128 KB |
| Raleway Italic | 100 - 900 | 132 KB |
| Red Hat Display | 300 - 900 | 41 KB |
| Red Hat Display Italic | 300 - 900 | 41 KB |
| Red Hat Text | 300 - 700 | 39 KB |
| Red Hat Text Italic | 300 - 700 | 42 KB |
| REM | 100 - 900 | 76 KB |
| REM Italic | 100 - 900 | 81 KB |
| Roboto Flex | 100 - 900 | 78 KB |
| Rubik | 300 - 900 | 77 KB |
| Rubik Italic | 300 - 900 | 116 KB |
| Ruda | 400 - 900 | 38 KB |
| Smooch Sans | 100 - 900 | 41 KB |
| Sora | 100 - 800 | 48 KB |
| Spartan | 100 - 900 | 44 KB |
| Stick No Bills | 200 - 800 | 79 KB |
| Teachers | 400 - 800 | 32 KB |
| Teachers Italic | 400 - 800 | 34 KB |
| Tektur | 400 - 900 | 59 KB |
| Tourney | 100 - 900 | 47 KB |
| Tourney Italic | 100 - 900 | 52 KB |
| Urbanist | 100 - 900 | 38 KB |
| Urbanist Italic | 100 - 900 | 41 KB |
| Varta | 300 - 700 | 49 KB |
| Wix Madefor Text | 400 - 800 | 43 KB |
| Wix Madefor Text Italic | 400 - 800 | 29 KB |
| Workbench | 400 - 400 | 5 KB |
| Work Sans | 100 - 900 | 131 KB |
| Work Sans Italic | 100 - 900 | 124 KB |
| Yanone Kaffeesatz | 200 - 700 | 53 KB |
| Zalando Sans | 200 - 900 | 113 KB |
| Zalando Sans Italic | 200 - 900 | 119 KB |
| Zalando Sans Expanded | 200 - 900 | 53 KB |
| Zalando Sans Expanded Italic | 200 - 900 | 55 KB |
| Cursive | ||
| Big Shoulders | 100 – 900 | 82 KB |
| Comfortaa | 300 - 700 | 80 KB |
| Dancing Script | 400 - 700 | 59 KB |
| Gluten | 100 - 900 | 79 KB |
| Lemonada | 300 - 700 | 81 KB |
| Playwrite US Modern | 100 - 400 | 110 KB |
| Playwrite US Traditional | 100 - 400 | 114 KB |
| Monospace | ||
| Geist Mono | 100 - 900 | 60 KB |
| Google Sans Code | 300 - 800 | 58 KB |
| Google Sans Code Italic | 300 - 800 | 63 KB |
| JetBrains Mono | 100 - 800 | 71 KB |
| JetBrains Mono Italic | 100 - 800 | 76 KB |
| Red Hat Mono | 300 - 700 | 29 KB |
| Red Hat Mono Italic | 300 - 700 | 32 KB |
| Source Code Pro | 200 - 900 | 85 KB |
| Source Code Pro Italic | 200 - 900 | 71 KB |
| SUSE Mono | 100 - 800 | 34 KB |
| SUSE Mono Italic | 100 - 800 | 35 KB |
| Victor Mono | 100 - 700 | 64 KB |
| Victor Mono Italic | 100 - 700 | 83 KB |
How to Add a Custom Font
Since official Publii themes work best with variable fonts, ensure you have one in the woff2 format. It's not worth supporting other formats as all modern browsers support woff2, which provides the best compression.
To add the variable font to your theme, follow these steps:
- Go to this location:
/Documents/Publii/sites/Your_site/input/themes/Your_theme/ - Copy your font file,
your_font.woff2, to the folder/assets/dynamic/fonts/your_font/ - Open the
config.jsonfile and add the name of your font in two sections:fontBodyandfontHeadings, then save the changes.{ "name": "fontBody", "label": "Body font", "group": "Fonts", "value": "system-ui", "type": "select", "options": [ { "label": "Your Font Name", "value": "your-font-name", "group": "Serif" }, ... { "name": "fontHeadings", "label": "Headings font (H1-H6)", "group": "Fonts", "value": "system-ui", "type": "select", "options": [ { "label": "Your Font Name", "value": "your-font-name", "group": "Serif" }, ... - Then open the
theme-variables.jsfile and add your font in the fontParams section, specifying the font family and weight, and save the changes.var generateThemeVariables = function (params) { let fontParams = { your-font-name: { name: 'Your Font Name', family: '\'Your Font Family\', serif', weight: '100 900' }, ...
Important: We recommend creating file overrides to avoid losing your changes during theme updates unless it's a custom theme. You can learn more about overriding Publii themes in this guide.
That's it; now you should be able to select the font from the theme options and use it on your site.