CSS3 @font-face browser support table 2012
It’s time to update the CSS3 @font-face browser support table. It documents specifically how browsers act when either the whole font family is specified (regular, italic, bold, bold-italic & small-caps) or only the regular version of the font is specified. The test-case that this based on uses the ideal, easiest (laziest) implementation and can be found on its own page here.
This is a robustness test. What happens if some font variants don’t load? What if there’s only one variant to begin with? Will information be lost? Those questions can be answered with this test.
Here’s the results of how browsers in 2012 render the test case, compared to the reference rendering. Mobile browsers have been added too.
Can the browser pick up the style natively?
Firefox 14 | Safari 5 | Chrome 19 | Opera 12 | IE 10 cp | |
---|---|---|---|---|---|
Normal (regular) | Yes | Yes | Yes | Yes | Yes |
Italic | Yes | Yes | Yes | Yes | Emulates |
Bold | Yes | Yes | Yes | Yes | Emulates |
Bold-Italic | Yes | Yes | Yes | Yes | Emulates |
Small-Caps (regular) | Emulates | Emulates | Emulates | Emulates | Emulates |
Small-Caps Italic | Emulates | Fallback to regular Small-Caps | Emulates | Emulates [3] | Emulates |
Small-Caps Bold | Emulates | Fallback to regular Small-Caps | Emulates | Emulates [3] | Emulates |
Small-Caps Bold-Italic | Emulates | Fallback to regular Small-Caps | Emulates | Emulates [3] | Emulates |
Extras? | Ligatures![1] | - | - | Ligatures![1] | Ligatures![1] |
How are mobile browsers with native variants?
iOS 5.1.1 | Opera Mobile 12 | Google Nexus One (Android 2.1) | Samsung Galaxy Tab (Android 2.2) | HTC Evo 3D (Android 2.3) | |
---|---|---|---|---|---|
Normal (regular) | Yes | Yes | Yes | Yes | Yes |
Italic | Yes | Yes | Yes | Yes | Yes |
Bold | Yes | Yes | Yes | Yes | Yes |
Bold-Italic | Yes | Yes | Yes | Yes | Yes |
Small-Caps (regular) | Emulates | Emulates | Emulates | Emulates | Emulates |
Small-Caps Italic | Fallback to regular Small-Caps | Emulates | Emulates | Emulates | Emulates |
Small-Caps Bold | Fallback to regular Small-Caps | Emulates | Emulates | Emulates | Emulates |
Small-Caps Bold-Italic | Fallback to regular Small-Caps | Emulates | Emulates | Emulates | Emulates |
Conclusion: Many browsers (Chrome, Opera) have made tremendous progress. Only Safari is still lacking in its implementation, in the edge case where Small-Caps text has added emphasis. IE 10 goes the curious route of emulating all variants and styles from the regular version.
Can the browser emulate from the regular version?
Firefox 14 | Safari 5 | Chrome 19 | Opera 12 | IE 10 cp | |
---|---|---|---|---|---|
Normal (Regular) | (implied) | (implied) | (implied) | (implied) | (implied) |
Italic | Yes | Fallback to regular-style | Yes | Yes | Yes |
Bold | Yes | Fallback to regular-style | Yes | Yes | Yes |
Bold-Italic | Yes | Fallback to regular-style | Yes | Yes | Yes |
Small-Caps (regular) | Yes | Yes | Yes | Yes | Yes |
Small-Caps Italic | Yes | Fallback to regular Small-Caps | Yes | Emulates [3] | Yes |
Small-Caps Bold | Yes | Fallback to regular Small-Caps | Yes | Emulates [3] | Yes |
Small-Caps Bold-Italic | Yes | Fallback to regular Small-Caps | Yes | Emulates [3] | Yes |
Extras? | Ligatures![1+*] | - | - | Ligatures![1+*] | Ligatures![1+*] |
Do mobile browsers emulate properly?
iOS 5.1.1 | Opera Mobile 12 | Google Nexus One (Android 2.1) | Samsung Galaxy Tab (Android 2.2) | HTC Evo 3D (Android 2.3) | |
---|---|---|---|---|---|
Normal (Regular) | (implied) | (implied) | (implied) | (implied) | (implied) |
Italic | Fallback to regular-style | Fallback to regular-style | Yes | Fallback to regular-style | Fallback to regular Small-Caps |
Bold | Fallback to regular-style | Fallback to regular-style | Yes | Fallback to regular-style | Fallback to regular Small-Caps |
Bold-Italic | Fallback to regular-style | Fallback to regular-style | Yes | Fallback to regular-style | Fallback to regular Small-Caps |
Small-Caps (regular) | Yes | Yes | Yes | Yes | Yes |
Small-Caps Italic | Fallback to regular Small-Caps | Fallback to regular Small-Caps | Yes | Fallback to regular Small-Caps | Fallback to regular Small-Caps |
Small-Caps Bold | Fallback to regular Small-Caps | Fallback to regular Small-Caps | Yes | Fallback to regular Small-Caps | Fallback to regular Small-Caps |
Small-Caps Bold-Italic | Fallback to regular Small-Caps | Fallback to regular Small-Caps | Yes | Fallback to regular Small-Caps | Fallback to regular Small-Caps |
Conclusion: Safari and most mobile browsers still fall back to regular style. This means web developers can not use web fonts for body text if they have only one (regular) variant natively available to them.
The most up to date support table, with pretty colours, can always be found on its own page alongside the test case. It also has more notes on ligatures and small-caps support.
Why is falling back to regular style so bad?
It makes sentences full of expression look like sentences full of expression. It removes part of the typographical elements of a text, which is ironic, given that @font-face is meant to embellish it typographically. At its core, falling back to regular style removes information.
So what does this mean we should do?
Browser developers:
- Safari devs: please work on emulating bold, italic, bold-italic, etc. when they’re not present. Browsers do this already when it comes to system-fonts, which means web developers expect this to work.
- Also give some thought to picking up “font-variant:small-caps;” in your @font-face code. It’s the only way to ensure proper fall-back. Emulating, (like
Firefox & Operayou all now do!) is a step forward, but it’d be a pity to stop there. - If HTML 5 has taught us anything, it’s that browsers should be more bulletproof, not web designer’s code. Also: asking web developers to specify as little as possible is a better.
Web designers:
- Using @font-face when you only have the regular version of a font at your disposal is not a good idea. Especially for body text. In safari. And on nearly all mobile platforms.
- Using a (less lazy, less practical) more bulletproof way of specifying your @font-face fonts is recommended (alas) for now.
« IMAGINE XII. Fix you.
Jason Brooks for Fierce Angel — Thunder Disco Angel 2006 »
Possibly related content
- CSS3 @font-face browser support table 2010
- CSS3 Fonts: The ideal implementation
- Jason Brooks for Hed Kandi — Back to Love Wallpaper
- Jason Brooks for Hed Kandi — Back to love 26
- Full page zoom (update)