How do I add custom fonts?

Our support for this feature is limited to this tutorial. It requires some coding knowledge of Shopify themes. We suggest hiring a Shopify Expert if you don't feel comfortable proceeding with the following tutorial.

With some custom code you can add your own fonts to our themes. These fonts will not appear in the theme editor as a dropdown option, but instead override the values directly in the stylesheet.

1. Generate your font and style files

Upload your custom font files to Font Squirrel with this tool. TTF file types have the best success. Then click the Download your kit button to get a zip file with the required files.

Fonts must have a valid license to use on the web

2. Add the font files to your theme

First, open up your theme editor (navigate to /admin/themes, click Actions on your copy of Impulse, and then click Edit code. Click on Add new asset in your assets folder and upload the fonts that you just got in the zip file above.

3. Remove the unwanted fonts

Look for and open critical-css.liquid inside your snippets folder. 

Delete the following lines that previously loaded the fonts from the Theme Editor:

{{ header_font | font_face: font_display: 'block' }}
{{ base_font | font_face: font_display: 'block' }}

{{ base_font_bold | font_face }}
{{ base_font_italic | font_face }}
{{ base_font_bold_italic | font_face }}

Now look for and delete any line that starts with font-familyfont-weight, or font-style. They will look similar to this:

font-family: {{ }}, {{ settings.type_base_font_family.fallback_families }};
font-weight: {{ settings.type_base_font_family.weight }};
font-style: {{ }};

4. Add your new fonts

In critical-css.liquid inside your snippets folder. After the {% style %} tag (line 7), add this code:

@font-face {
  font-family: "MyFont";
  src: url('{{ "font_myfont.woff2" | asset_url }}') format("woff2"),
       url('{{ "font_myfont.woff" | asset_url }}') format("woff");

Change the values in bold to what matches the files you generated earlier.

Now your fonts are loaded and the ones from the theme settings are not, so you're ready to integrate the new font. 

At the bottom of critical-css.liquid, before the closing {% endstyle %} tag, set your new body font with this code:

select {
  font-family: "MyFont", sans-serif;

And your header font with:

h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6,
.spr-header-title.spr-header-title {
  font-family: "MyFont", sans-serif;

Use sans-serif or serif as the fallback depending on your font style. You can set both lines to use the same font-name if you only add one.