Update Inter font and set `display: swap` (#2000)

The version of Inter is updated to use a variable font, which is supported widely among modern browsers.

Using `display: swap` means that the browser will render the text of the spec even before Inter is loaded, making the website appear to load faster on mobile.

Allow the browser to use the local Inter font if it exists.
pull/1915/merge
Kévin Commaille 5 days ago committed by GitHub
parent 9882d95775
commit 0ce83512fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -2,167 +2,62 @@
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-cyrillic-ext-normal-300.woff2); font-display: swap;
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; src: local('Inter'), url(../../fonts/Inter-cyrillic-ext-normal.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
} }
/* cyrillic */ /* cyrillic */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-cyrillic-normal-300.woff2); font-display: swap;
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; src: local('Inter'), url(../../fonts/Inter-cyrillic-normal.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
/* greek-ext */ /* greek-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-greek-ext-normal-300.woff2); font-display: swap;
src: local('Inter'), url(../../fonts/Inter-greek-ext-normal.woff2) format('woff2');
unicode-range: U+1F00-1FFF; unicode-range: U+1F00-1FFF;
} }
/* greek */ /* greek */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-greek-normal-300.woff2); font-display: swap;
unicode-range: U+0370-03FF; src: local('Inter'), url(../../fonts/Inter-greek-normal.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
} }
/* vietnamese */ /* vietnamese */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-vietnamese-normal-300.woff2); font-display: swap;
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; src: local('Inter'), url(../../fonts/Inter-vietnamese-normal.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
} }
/* latin-ext */ /* latin-ext */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-latin-ext-normal-300.woff2); font-display: swap;
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; src: local('Inter'), url(../../fonts/Inter-latin-ext-normal.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} }
/* latin */ /* latin */
@font-face { @font-face {
font-family: 'Inter'; font-family: 'Inter';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 100 900;
src: url(../../fonts/Inter-latin-normal-300.woff2); font-display: swap;
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; src: local('Inter'), url(../../fonts/Inter-latin-normal.woff2) format('woff2');
} unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
/* cyrillic-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-cyrillic-ext-normal-400.woff2);
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-cyrillic-normal-400.woff2);
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-greek-ext-normal-400.woff2);
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-greek-normal-400.woff2);
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-vietnamese-normal-400.woff2);
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-latin-ext-normal-400.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: 'Inter';
font-style: normal;
font-weight: 400;
src: url(../../fonts/Inter-latin-normal-400.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;
}
/* cyrillic-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-cyrillic-ext-normal-700.woff2);
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-cyrillic-normal-700.woff2);
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-greek-ext-normal-700.woff2);
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-greek-normal-700.woff2);
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-vietnamese-normal-700.woff2);
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-latin-ext-normal-700.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: 'Inter';
font-style: normal;
font-weight: 700;
src: url(../../fonts/Inter-latin-normal-700.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;
} }

@ -3,7 +3,7 @@
## Inter.css ## Inter.css
`Inter.css` is a local copy of `Inter.css` is a local copy of
https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,700,700i, modified to pull https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,100..900&display=swap, modified to pull
font files (`.woff2`) from local sources. It was created font files (`.woff2`) from local sources. It was created
using `download_google_fonts_css.py`. using `download_google_fonts_css.py`.
@ -15,7 +15,7 @@ load them. Example call:
```sh ```sh
python3 download_google_fonts_css.py \ python3 download_google_fonts_css.py \
"https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,700,700i" \ "https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,100..900&display=swap" \
../../../static/fonts \ ../../../static/fonts \
../../fonts ../../fonts
``` ```

@ -84,7 +84,6 @@ new_css_file_lines = []
font_lang = None font_lang = None
font_family = None font_family = None
font_style = None font_style = None
font_weight = 0
for line in original_contents: for line in original_contents:
# Check if this line contains a font URL # Check if this line contains a font URL
match = re.match(r".*url\((.*)\) format.*", line) match = re.match(r".*url\((.*)\) format.*", line)
@ -96,16 +95,17 @@ for line in original_contents:
resp = requests.get(font_url) resp = requests.get(font_url)
if resp.status_code == 200: if resp.status_code == 200:
# Save the font file # Save the font file
filename = "%s-%s-%s-%d.woff2" % ( filename = "%s-%s-%s.woff2" % (
font_family, font_lang, font_style, font_weight font_family, font_lang, font_style
) )
font_filepath = font_output_dir + filename font_filepath = font_output_dir + filename
with open(font_filepath, "wb") as f: with open(font_filepath, "wb") as f:
print("Writing font file:", font_filepath) print("Writing font file:", font_filepath)
f.write(resp.content) f.write(resp.content)
# Replace google URL with local URL # Replace google URL with local URL and allow the browser to load the
line = re.sub(r"url\(.+\)", f"url({css_font_path + filename})", line) # local font if it exists.
line = re.sub(r"url\(.+?\)", f"local('{font_family}'), url({css_font_path + filename})", line)
else: else:
print("Warning: failed to download font file:", font_url) print("Warning: failed to download font file:", font_url)
@ -121,9 +121,6 @@ for line in original_contents:
font_style_match = re.match(r".*font-style: (.+);$", line) font_style_match = re.match(r".*font-style: (.+);$", line)
if font_style_match: if font_style_match:
font_style = font_style_match.group(1) font_style = font_style_match.group(1)
font_weight_match = re.match(r".*font-weight: (.+);$", line)
if font_weight_match:
font_weight = int(font_weight_match.group(1))
# Append the potentially modified line to the new css file # Append the potentially modified line to the new css file
new_css_file_lines.append(line) new_css_file_lines.append(line)

@ -0,0 +1 @@
Update the Inter font and allow the browser to render the page before it is loaded
Loading…
Cancel
Save