Why aren't custom fonts displaying on mobile?

Topic summary

Issue: Custom fonts (specifically Cera Pro font family) display correctly on desktop but fail to render properly on mobile devices, defaulting to serif or system fonts instead.

Affected Users: Multiple store owners using Shopify’s Impulse theme report the same problem across different iPhone models and browsers (Safari, Chrome).

Attempted Solutions:

  • Replacing OTF files with EOT format
  • Creating custom fonts.css.liquid stylesheet with @font-face declarations
  • Uploading multiple font formats (TTF, OTF, WOFF, WOFF2, SVG)
  • Adding font files to both Shopify Files and theme Assets
  • Adjusting asset URL paths in base.css

Key Technical Details: One user shared their @font-face code implementation and noted discrepancies between files appearing in Shopify’s Files section versus the theme’s Assets folder. Images show the font rendering correctly in Shopify preview but not on actual mobile sites.

Current Status: Unresolved. One commenter suggested ensuring all font formats are present, but another user confirmed having all formats without success. The discussion remains open with offers of assistance but no confirmed solution.

Summarized with AI on October 25. AI used: claude-sonnet-4-5-20250929.

I’ve been browsing the forums and looking for answers, but I just can’t figure out what’s wrong.

Website: www.breakfastballapparel.com

Theme: Impulse

Fonts: Cera Pro font family and Bring Heart Regular (Bring Heart Regular is the script font and is working on mobile)

Our IT guy loaded up the fonts originally, but I’ve since been updating the code myself (with just a little bit of understanding of it). Originally, he uploaded OTFs, but I just replaced them with .eot, hoping that would fix things. The code below was taken from the .eot zip folder. I referenced the style sheet in the theme.liquid, not the theme.css.liduid. I tried going through theme.liquid to see if there was something I needed to change in there, but I wasn’t certain.

I created a style sheet, fonts.css.liquid ;

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Italic.eot’);
src: local(‘Cera Pro Italic’), local(‘CeraPro-Italic’),
url(‘CeraPro-Italic.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Italic.woff’) format(‘woff’),
url(‘CeraPro-Italic.ttf’) format(‘truetype’);
font-weight: normal;
font-style: italic;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Regular.eot’);
src: local(‘Cera Pro Regular’), local(‘CeraPro-Regular’),
url(‘CeraPro-Regular.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Regular.woff’) format(‘woff’),
url(‘CeraPro-Regular.ttf’) format(‘truetype’);
font-weight: normal;
font-style: normal;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-BlackItalic.eot’);
src: local(‘Cera Pro Black Italic’), local(‘CeraPro-BlackItalic’),
url(‘CeraPro-BlackItalic.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-BlackItalic.woff’) format(‘woff’),
url(‘CeraPro-BlackItalic.ttf’) format(‘truetype’);
font-weight: 900;
font-style: italic;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Light.eot’);
src: local(‘Cera Pro Light’), local(‘CeraPro-Light’),
url(‘CeraPro-Light.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Light.woff’) format(‘woff’),
url(‘CeraPro-Light.ttf’) format(‘truetype’);
font-weight: 300;
font-style: normal;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-BoldItalic.eot’);
src: local(‘Cera Pro Bold Italic’), local(‘CeraPro-BoldItalic’),
url(‘CeraPro-BoldItalic.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-BoldItalic.woff’) format(‘woff’),
url(‘CeraPro-BoldItalic.ttf’) format(‘truetype’);
font-weight: bold;
font-style: italic;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Black.eot’);
src: local(‘Cera Pro Black’), local(‘CeraPro-Black’),
url(‘CeraPro-Black.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Black.woff’) format(‘woff’),
url(‘CeraPro-Black.ttf’) format(‘truetype’);
font-weight: 900;
font-style: normal;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Medium.eot’);
src: local(‘Cera Pro Medium’), local(‘CeraPro-Medium’),
url(‘CeraPro-Medium.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Medium.woff’) format(‘woff’),
url(‘CeraPro-Medium.ttf’) format(‘truetype’);
font-weight: 500;
font-style: normal;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-Bold.eot’);
src: local(‘Cera Pro Bold’), local(‘CeraPro-Bold’),
url(‘CeraPro-Bold.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-Bold.woff’) format(‘woff’),
url(‘CeraPro-Bold.ttf’) format(‘truetype’);
font-weight: bold;
font-style: normal;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-MediumItalic.eot’);
src: local(‘Cera Pro Medium Italic’), local(‘CeraPro-MediumItalic’),
url(‘CeraPro-MediumItalic.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-MediumItalic.woff’) format(‘woff’),
url(‘CeraPro-MediumItalic.ttf’) format(‘truetype’);
font-weight: 500;
font-style: italic;
}

@font-face {
font-family: ‘Cera Pro’;
src: url(‘CeraPro-LightItalic.eot’);
src: local(‘Cera Pro Light Italic’), local(‘CeraPro-LightItalic’),
url(‘CeraPro-LightItalic.eot?#iefix’) format(‘embedded-opentype’),
url(‘CeraPro-LightItalic.woff’) format(‘woff’),
url(‘CeraPro-LightItalic.ttf’) format(‘truetype’);
font-weight: 300;
font-style: italic;
}

1 Like

@breakballgolf

We have checked for this issue in real system and browserstack but it is working ok. In which system configuration or browser you are checking?

This is from my phone, iPhone 13, up to date, using safari and google. It does this on my work phone and my coworkers phone and work phone.

The primary issue is under the ‘Golf is hard’ part where it’s a serif font. The sans serif that’s used throughout the site in this photo is also not correct, but I’m not extremely upset about it because it’s at least a sans serif and similar.

1 Like

@breakballgolf

sorry but the font type missing

is required below all

custom font all font type = TTF, OTF, WOFF, WOFF2, SVG

I’m not sure what you mean by that? Are you saying that I need to add, ‘custom font all font type = TTF, OTF, WOFF, WOFF2, SVG’ somewhere in the code?

I have all of those font types and I’m also having the same issue. Adding new font types isn’t fixing the issue. That seems to be the case for every thread I’ve read around the issue of getting custom font to show up properly on mobile. It previews correctly from the shopify site, but when I go to the actual mobile site it’s using some sort of default font.

Wondering if this was resolved for anyone, as I’m having the same issue…

Will you mind if I help with solving it?

I can help resolving it, will you drop your store link and lemme check it out

I’d be delighted if you could!

I’ve added in all the font file types to Files (in Shopify) and Assets in the Code Editor – as they don’t seem to match up!

Everything works perfectly on desktop – mobile is the only issue….

https://admin.shopify.com/store/fe0ab9-94/

No I meant link like your Domain or if you’re yet to buy a domain, the link thay ends with myshopify.com, that’s the link that’ll work

I’m really sorry, but I don’t know you at all, so I don’t feel comfortable giving you access to make changes to my website.

https://pochette.ie/ is my website.

These do NOT appear in my assets, so I uploaded them there to see would that help…

Added this to base.css:

I had originally pointed the asset URL to https://cdn.shopify.com/s/files/1/0840/0873/0951/files/Tirelessly_Love_You.woff2?v=1727435712

I’m then using the custom CSS to place where I want it e.g.

If you have any ideas, I’d be most grateful!

It’s not coding, it’s a technical issue, I got your concern…

You can contact who you think you trust then…

I’m not hacking your store, you’ll control my access to the online store do I can do it… I just wanna do it for free so…

You can contact whom you know, I understand