How to Add Custom Fonts with CSS⚓
Summary⚓
This article will explain how to serve custom fonts to my blog and MkDocs. This is largely documented in an article on how to style my blog, although I'm going to add a bit more to it at the end.
Files to Modify⚓
In order to update aspects of the theme, the following files need to be modified:
- _base.scss
- _variables.scss
Font⚓
Fonts must first be imported into the _base.scss
file. This can be done by adding the following to the top of the _base.scss
file:
@import url("https://fonts.gstatic.com");
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Serif&family=Lora&display=swap');
- Navigate to
themes -> hugo-coder -> assets -> scss
- Open _variables.scss
- Update
$font-family:
Additional Options⚓
Additionally, fonts can be added directly by using the @font-face
CSS rule. For my blog, this is done as follows:
@font-face {
font-family: 'DomaineText-Regular';
src: url('../fonts/domaine-text-web-regular.eot');
src: url('../fonts/domaine-text-web-regular.eot?#iefix') format('embedded-opentype'),
url('../fonts/domaine-text-web-regular.woff') format('woff'),
url('../fonts/domaine-text-web-regular.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
This references the appropriate font(s) and each file's relative path.
Another way to do this is to upload the font files to a server and reference the web address instead of the relative path. An example of this is how I serve the 'DomaineText-Regular' font to Bookstack...
@font-face {
font-family: 'DomaineText-Regular';
src: url('https://cdn.levine.org/uploads/fonts/Klim+Fonts/domaine-text/web-fonts/domaine-text-web-regular.eot');
src: url('https://cdn.levine.org/uploads/fonts/Klim+Fonts/domaine-text/web-fonts/domaine-text-web-regular.eot?#iefix') format('embedded-opentype'),
url('https://cdn.levine.org/uploads/fonts/Klim+Fonts/domaine-text/web-fonts/domaine-text-web-regular.woff') format('woff'),
url('https://cdn.levine.org/uploads/fonts/Klim+Fonts/domaine-text/web-fonts/domaine-text-web-regular.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
MkDocs⚓
To serve web fonts in MkDocs, the following steps should be taken...
- Copy the web font files to
theme -> assets -> webFonts
- Add the CSS file to
theme -> assets
- Open
mkdocs.yml
- Reference the
font-family
name underfont -> text
(ex. DomaineText-Regular). - Copy the relative path of the CSS file and add it to the
extra_css
section.
The respective sections in the mkdocs.yml
file should look like the following:
extra_css:
- assets/extra-75bc45e106.css
- assets/domaine-text-font.css
- assets/ligalex-mono-font.css
References⚓
https://www.pagecloud.com/blog/how-to-add-custom-fonts-to-any-website