Icon fonts not loading in IE11

54,448

Solution 1

Ran into a similar problem, and from your screenshot above, the response has a Cache-Control header of 'no-store'. IE seems to have issues with caching and fonts.

Removing both the 'Cache-Control: no-store' and the "Pragma: no-cache" headers worked for us to get icon fonts to show up again.

https://github.com/FortAwesome/Font-Awesome/issues/6454

Solution 2

After investigating the very same issue, and going through various solutions posted online, I've created the following troubleshooting list, which covers most potential causes:

  1. Font downloads are disabled in IE, under Internet Options / Security / Custom Level / Font Downloads enable /disable. They might be disabled by your network admin, in which case you would not be able to see nor change this setting.
  2. Your HTTP headers prevent IE from storing the font file locally. To fix, remove any Cache-Control: no-store, no-cache or Pragma: no-cache headers, or any Expires header with a date in the past. Also the Vary header has its tricks in IE, if set to anything other than Accept-Encoding, User-Agent, Host or Accept-Language then IE will not cache anything, unless an ETAG header is also present (see this MSDN blog post).
  3. You don't set the correct MIME types for the font download. For example Jetty 9 will set by default Content-Type: text/plain for the usual font types (eot, woff, woff2). See this answer for the proper content types to use.
  4. Make sure to use display: block or display: inline-block for your icon element.
  5. Finally, make sure to go through the troubleshooting guide over at FontAwesome.

Solution 3

I faced similar problem but with Bootstrap font icons (Glyphicons). You can try if this works:

(Generally on Windows 10) the IE-11 settings have been changed to not download any external fonts and use only the fonts available in windows. This is the default behavior.

However we can change this setting in IE to enable it to download external fonts. Following are the steps to be taken in IE- Go to: Settings >> Internet Options >> Security enter image description here

Click on “Internet” (or any zone that you may be using) >> “Custom level…”
Next in the ‘security settings’ – Enable ‘Font Download’. By default it would be disabled. enter image description here

Refresh the Page

Solution 4

I had a similar problem and it seems to be caused by IE having difficulty with certain display and position settings in combination with iconfonts.

It should usually work using:

element:before {
     display:block;
     position: absolute;
     ... your styles ...
}

Solution 5

In my case, it was corrupted .eot font file. I had generated new one ( + new .css styles) and it fixed the problem. Try it.

PS. Make sure you support EOT for IE at @font-face, for example:

@font-face {
  font-family: "fontName";
  src:url("../../src/theme/fonts/fontName.eot");
  src:url("../../src/theme/fonts/fontName.eot?#iefix") format("embedded-opentype"),
  url("../../src/theme/fonts/fontName.woff") format("woff"),
  url("../../src/theme/fonts/fontName.ttf") format("truetype"),
  url("../../src/theme/fonts/fontName.svg#fontName") format("svg");
  font-weight: normal;
  font-style: normal;
}
Share:
54,448
Theron Luhn
Author by

Theron Luhn

Updated on August 10, 2020

Comments

  • Theron Luhn
    Theron Luhn almost 4 years

    We're using icomoon for our icon fonts, and they work fine in Chrome and Firefox, but won't display in IE11... Sometimes. It seems to work on the first page load, but not on subsequent page loads. Clearing the cache doesn't seem to reset it. This issue may be present in other IE versions, right now we're just focusing on IE11.

    Here's our @font-face:

    @font-face {
    font-family: 'icon';
    src:url('fonts/icon.eot?-3q3vo5');
    src:url('fonts/icon.eot?#iefix-3q3vo5') format('embedded-opentype'),
        url('fonts/icon.woff?-3q3vo5') format('woff'),
        url('fonts/icon.ttf?-3q3vo5') format('truetype'),
        url('fonts/icon.svg?-3q3vo5#rezku') format('svg');
    font-weight: normal;
    font-style: normal;
    }
    
    [class^="icon-"], [class*=" icon-"] {
    font-family: 'icon';
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    
    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    }
    .icon-alphabet:before {
    content: "\e600";
    }
    /* etc etc etc */
    

    But here's where it gets weird. Looking at the developer tools, an HTTP request for the fonts is being sent, but only a few hundred bytes are being received (probably just the headers).

    Network panel

    But the HTTP response lists the content length correctly as several kilobytes.

    Response headers

    The "Response body" tab just says "No data to view."

    You can see in the Network Panel screenshot that the Google Fonts aren't behaving like this.

    Pasting the URL in the location bar results in the full file being downloaded.