- From: Jason Pamental via GitHub <sysbot+gh@w3.org>
- Date: Wed, 07 Sep 2016 13:09:53 +0000
- To: public-css-archive@w3.org
jpamental has just created a new issue for
https://github.com/w3c/csswg-drafts:
== [css-fonts] Address missing aspect of Progressive Enhancement in
font loading ==
Not entirely sure if this is the right place to post, but @litherum
suggested this might be a place to start.
**The Issue**
Loading web fonts creates an uneven experience, either in waiting for
fonts to load and displaying fallbacks that don't exactly match
(width/height/etc) causing text reflow when the web fonts finally
load. Using `font-display` helps even out loading behavior, but that
only allows us to get fallback fonts in use faster; it doesn't let us
style them. That's the key to mitigating FOUT: style the fallback text
using `letter-spacing` `font-size` `line-height` etc so that the
difference when the web fonts finally load is minimized. Currently we
have to rely upon JS to switch classes, but if there were some way in
CSS to target the state when web fonts haven't loaded we could remove
the reliance upon JS and be more fully embracing the concept of
Progressive Enhancement (especially since support of JS and
`@font-face` are not necessarily tied).
For the most thorough PE approach, we should strive for:
1) No CSS, no JS, no web fonts: just the content
2) CSS loads, but no JS or web fonts: fallbacks should be styled to
minimize the difference between them and the eventual web fonts (this
is handled in my example below by scoping the fallback styles behind
the `wf-inactive` class)
3) CSS and web fonts: we get the design rendered as intended
(requiring that the `wf-inactive` class goes away)
4) CSS, JS & web fonts: we get the smoothest experience by having
control over those classes and can also use the session storage
variable to get the browser to render the web fonts with less
hesitation
`font-display` when supported helps _show_ the content in the fallback
fonts faster, but we’re still stuck relying on JS to either insert or
remove the CSS class that would control whether or not the web fonts
would be referenced and how we can target the CSS styling based on web
fonts being present or not at the time.
Example of using the loading class to style fallbacks:
```css
p {
font-family: 'Alegreya', Georgia, serif;
font-size: 1em;
}
.wf-inactive p {
font-family: Georgia, serif;
font-size: 0.975em;
letter-spacing: -0.4px;
}
```
Please view or discuss this issue at
https://github.com/w3c/csswg-drafts/issues/450 using your GitHub
account
Received on Wednesday, 7 September 2016 13:10:02 UTC