I recently had performance issues on Google Lighthouse due to the fonts used on the website. The Google Fonts I used were classified as a render-blocking resource.
The best way to remove this would have been to revert to a standard web safe font, but I wanted to stick with the Google Fonts. If you hit the same issue here are two ways to help reduce/remove the issue
Both seem to work well, if you're using a lot of fonts/variations hosting them yourself may be the best option, as I was only using three weights of the same font, the first option worked well here.
Call the fonts yourself
By calling the fonts directly you skip the initial call to Google. This website uses three weights of Roboto Slab: 200, 400 and 700.
The code from Google to add the fonts looks like this:
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@200;400;700&display=swap" rel="stylesheet">
Instead of using the supplied <link> we can skip this call, take the contents, and call it directly
in our own CSS file or page <head>. Keep the fonts.gstatic.com preconnect link, this will help with
loading the fonts but the fonts.googleapis.com can be removed.
The resulting code will look something like this:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<style>
/* latin-ext */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 200;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 200;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufD5qW54A.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(https://fonts.gstatic.com/s/robotoslab/v23/BngMUXZYTXPIvIBgJJSb6ufN5qU.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
h1, h2, h3, h4, .subtitle, .intro, ul.nav li strong a, div.logo a strong, nav.mainmenu li a {
font-family: 'Roboto Slab', sans-serif;
}
</style>
I took the opportunity to remove Cyrillic, Greek and Vietnamese language packs which were automatically included and kept just the Latin and Latin Extended options.
Host the fonts yourself
Another option is to completely skip Google Fonts altogether by downloading the fonts and hosting them on your own website. These step by step instructions from Codeboosh will walk you through the process.
Latest posts
—
Core Web Vitals: Optimisation techniques
Google's Core Web Vitals have become the de facto standard for measuring user experience on the web. For years, developers have focused on the foundational trio: Largest Contentful Paint (LCP),…
Continue reading "Core Web Vitals: Optimisation techniques "
—
Web Safe Fonts: A Quick Explainer for Developers
If you've ever built a website and wondered why your carefully chosen typography looks completely different on someone else's screen, you've encountered the world of web safe fonts. Let's break…
Continue reading "Web Safe Fonts: A Quick Explainer for Developers "
—
Choosing the right content management system
Choosing the right content management system (CMS) is one of the most consequential early decisions when building a website The content management system shapes everything from how editors publish to…
Continue reading "Choosing the right content management system"
—
WYSIWYG or plain-text CMS editing?
Finding the Right Balance for Your CMS UsersWhen configuring a content‑management system (CMS), the choice between a WYSIWYG (What‑You‑See‑Is‑What‑You‑Get) editor and a plain‑text interface has far‑reaching implications for both usability…