Skip to content

Commit

Permalink
Removes support for EOT and browsers older than IE8
Browse files Browse the repository at this point in the history
Embedded Open Type (.eot) is a proprietary format, which no other browsers use apart
from IE8 and older. As v2 font is so similiar to Arial, we have decided
to remove EOT format. This means that IE8 and older will not be downloading
any custom fonts like v1 and v2 of Transport but will instead use Arial by
default.

This commit also fixes an existing issue with IE 9-11 using EOT format
by default instead of WOFF. This is because the browser
would only look for and use the first format it finds that it supports.

Thanks goes to Matthew Hobbs (@Nooshu)[https://github.com/Nooshu] for this
recommendation.

An extract of Matt's recommendation can be found below and at this link:
#1356 (comment)

I'd recommend removing the EOT versions of the fonts from the `@font-face` declaration.
Only IE support this font format (including IE11). All but IE8 also support other font
formats that are available. According to the last 30 days GOV.UK analytics, IE8 has had
9,054 "users" out of 50,566,007 (0.018%).

EOT files can be compressed with Gzip (or Zopfli for 5% better compression),
but even with this compression we are asking old browsers on legacy devices
to download a fairly large amount of data (60KB) for unhinted versions of the
font ([only Vista and XP require hinted versions](https://docs.google.com/spreadsheets/d/1l2SKP9D3Fm5EVk10j9K1CUSg_jCkW7Pef60TzK0ZKlI/edit#gid=0)).
These browsers and devices are the least equipped to manage these assets.

Font | Size (bytes) | Saving (bytes) | Saving (%)
------------ | ------------- | ------------- | -------------
Bold EOT uncompressed | 58932 | 0 | 0
Bold EOT gzipped | 30366 | 28566 | 48.4
Bold EOT zopfli | 28115 | 30817 | 52.3
Light EOT uncompressed | 58708 | 0 | 0
Light EOT gzipped | 29885 | 28823 | 49.1
Light EOT zopfli | 27589 | 31119 | 53

**Totals**: Uncompressed download - 118KB, Compressed (gzip) - 60KB, Compressed (Zopfli) - 56KB.

I'd say it's a better strategy for this small number of devices is to use
the fallback font of Arial, and not have them require to download the
additional EOT assets. Since the new font now corrects the glyph placement
in the bounding box, the fallback will render correctly without the need for
additional adjustments to the vertical placement.

If it is we decide to keep the EOT files in the `@font-face` declaration
it's worth noting the container order will prevent IE9-11 from receiving
the WOFF version of the font. Browsers pick the first font format it supports
from the list. It will ignore any declarations after, (even if they are
also supported). In the current setup IE9, 10 and 11 will download the
EOT format even though they all support WOFF.

Since WOFF files are already compressed using Gzip compression, developers
don't need to worry about enabling compression on the server. If developers
forget to enable Gzip compression on the server for EOT files (since we
can't provide compressed versions of the EOT files) these users will be
downloading 118KB vs 83KB (WOFF). Due to [all the hacks required](https://www.paulirish.com/2009/bulletproof-font-face-implementation-syntax/)
to make fonts work properly in older versions of IE there looks to be no
way around this. This seems like another good reason to remove the EOT
sources from the declaration.

Recommended declaration
```css
@font-face {
    font-family: "nta";
    src: govuk-font-url("light-68f0c84f0e-v2.woff2") format("woff2"),
         govuk-font-url("light-222368e53d-v2.woff") format("woff");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "nta";
    src: govuk-font-url("bold-9561e2d007-v2.woff2") format("woff2"),
         govuk-font-url("bold-5d3836b441-v2.woff") format("woff");
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}
```
  • Loading branch information
aliuk2012 committed Jun 7, 2019
1 parent 20cff08 commit aaadfa4
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 12 deletions.
Binary file removed src/assets/fonts/bold-a7fa10839b-v2.eot
Binary file not shown.
Binary file removed src/assets/fonts/light-df2b968d71-v2.eot
Binary file not shown.
16 changes: 6 additions & 10 deletions src/helpers/_font-faces.scss
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,20 @@

@font-face {
font-family: "GOVUKTransport";
src: govuk-font-url("light-df2b968d71-v2.eot");
src: govuk-font-url("light-df2b968d71-v2.eot?#iefix") format("embedded-opentype"),
govuk-font-url("light-68f0c84f0e-v2.woff2") format("woff2"),
govuk-font-url("light-222368e53d-v2.woff") format("woff");
src: govuk-font-url("light-68f0c84f0e-v2.woff2") format("woff2"),
govuk-font-url("light-222368e53d-v2.woff") format("woff");
font-weight: normal;
font-style: normal;
font-display: fallback;
font-display: swap;
}

@font-face {
font-family: "GOVUKTransport";
src: govuk-font-url("bold-a7fa10839b-v2.eot");
src: govuk-font-url("bold-a7fa10839b-v2.eot?#iefix") format("embedded-opentype"),
govuk-font-url("bold-9561e2d007-v2.woff2") format("woff2"),
govuk-font-url("bold-5d3836b441-v2.woff") format("woff");
src: govuk-font-url("bold-9561e2d007-v2.woff2") format("woff2"),
govuk-font-url("bold-5d3836b441-v2.woff") format("woff");
font-weight: bold;
font-style: normal;
font-display: fallback;
font-display: swap;
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/settings/_typography-font-families.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ $govuk-font-family-govuk-transport: "GOVUKTransport", Arial, sans-serif;
///
/// @type List
/// @access public
/// @deprecated Will be removed once support for govuk template/elements is dropped
/// @deprecated Will be removed once support for GOV.UK Template/Elements is dropped

$govuk-font-family-nta: "nta", Arial, sans-serif;

Expand All @@ -27,6 +27,6 @@ $govuk-font-family-nta: "nta", Arial, sans-serif;
///
/// @type List
/// @access public
/// @deprecated Will be removed once support for govuk template/elements is dropped
/// @deprecated Will be removed once support for GOV.UK Template/Elements is dropped

$govuk-font-family-nta-tabular: "ntatabularnumbers", $govuk-font-family-nta;

0 comments on commit aaadfa4

Please sign in to comment.