Add your own font

Split theme includes different fonts, as any Shopify theme, that can be selected from the  Theme Customizer > General > Typography ( screenshot). But if you decide to use a custom font, there are a few methods to do this:

1. Use the @font-face declaration (add your own font files)

Please start by uploading your new font into the assets folder of the theme - screenshot. The best font file format for compatibility with all browsers is the woff, or even better, woff2 format. 

Because Shopify made some recent changes in the way uploaded assets fonts are displaying, please add your font file in the Shopify > Settings > Files (updated august 2022). 

Open /snippets/head-variables.liquid and right at the top, remove these lines of code:

{%- assign headings_font = settings.headings_font -%}
{%- assign body_font = settings.body_font -%}

{%- unless headings_font.system? -%}
  <link rel="preload" href="{{ headings_font | font_url }}" as="font" type="font/woff2" crossorigin>
{%- endunless -%}

{%- unless body_font.system? -%}
  <link rel="preload" href="{{ body_font | font_url }}" as="font" type="font/woff2" crossorigin>
{%- endunless -%}

Now, go a bit further and identify the place where the current fonts are created, and delete those lines as well:

  {%- comment -%} Fonts {% endcomment %}
  {%- liquid 
    echo headings_font | font_face: font_display: 'swap'

    echo body_font | font_face: font_display: 'swap'
    assign body_font_bold = body_font | font_modify: 'weight', '+100' 

    if body_font_bold == blank 
      assign body_font_bold = body_font | font_modify: 'weight', '700' 
    echo body_font_bold | font_face: font_display: 'swap' 

    assign body_font_italic = body_font | font_modify: 'style', 'italic'
    if body_font_italic
      echo body_font_italic | font_face: font_display: 'swap'

Instead of the code you just deleted, paste this one:

@font-face {
  font-family: "MyFont";
  src: url('Your_font_file_URL') format("woff");

Add this declaration for all the fonts that you wish to use (if you want to change two fonts, one for headings, one for body, you'll need to font declarations, with the names you declare. If your font has style variations (italic, bold), you need to add font files for those as well, like this:

@font-face {
  font-family: "MyFont";
  src: url('{{ "MyFont-regular.woff" | asset_url }}') format("woff");
@font-face {
  font-family: "MyFont";
  font-weight: 500;
  src: url('{{ "MyFont-medium.woff" | asset_url }}') format("woff");
@font-face {
  font-family: "MyFont";
  font-weight: 700;
  src: url('{{ "MyFont-bold.woff" | asset_url }}') format("woff");
@font-face {
  font-family: "MyFont";
  font-weight: 400;
  font-style: italic;
  src: url('{{ "MyFont-italic.woff" | asset_url }}') format("woff");

Now that your font is ready to be loaded, go a bit further down and identify the font variables:

    /* Font variables */

    --font-stack-headings: {{ }}, {{ headings_font.fallback_families }};
    --font-weight-headings: {{ headings_font.weight }};
    --font-style-headings: {{ }};

    --font-stack-body: {{ }}, {{ body_font.fallback_families }};
    --font-weight-body: {{ body_font.weight }};
    {%- if body_font_bold -%}
      --font-weight-body-bold: {{ body_font_bold.weight }}; 
    {%- else -%}
      --font-weight-body-bold: 700;
    {%- endif -%}
    --font-style-body: {{ }};

You'll have to hard code your own font stack here replacing the original font values (that are set to load the fonts from theme customizer typography) with this code (for headings, body and/or menu, as needed):

/* Font variables */

--font-stack-headings: "MyFont", sans-serif;
--font-weight-headings: 400;
--font-style-headings: normal;

--font-stack-body: "MyFont", sans-serif;
--font-weight-body: 500;
--font-weight-body-bold: 700;
--font-style-body: normal;

--font-stack-menu: "MyFont", sans-serif;
--font-weight-menu: 400;
--font-weight-menu-bold: 500;
--font-style-menu: normal;

You can have three different fonts, or use the same font for all typography, just make sure that you add the source files properly for all the fonts that you wish to use.

2. Use Google Fonts 

After you select the font you need to use from Google fonts, a code will be generated for you to insert in the theme ( screenshot). 

Please embed the generated code in the  theme.liquid file, just before the </head> closing tag - screenshot

For example, for the Poiret One font the code generated by Google is:

<link href="" rel="stylesheet">

Then go back at STEP 1, and based on your theme version, apply the steps in order for the theme to use your font. Just skip the "@font-face" declaration, but the rest is the same.. You will be using the selected font from Google instead. So in all above examples, where we've used "MyFont", here it will be "Poiret One".

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.