- From: Zack Weinberg <zackw@panix.com>
- Date: Thu, 30 Oct 2014 12:58:36 -0400
- To: www-style list <www-style@w3.org>
This is related to, but abstractly independent of, the font-timeout behavior proposal being discussed in another thread. I like that proposal, but I think there's an additional, independent high-level knob that could be very useful to authors. Right now, @font-face { ... } often doesn't trigger an immediate fetch, because browsers are optimizing for minimal network traffic, on the assumption that they're not going to need any particular font until layout tells them otherwise. In the increasingly common case where sites want to specify exact fonts for everything, this is the wrong move; browsers ought to kick off loads immediately upon encountering the @font-face. On the other hand, sometimes a site might want to specify a whole bunch of @font-face rules in a site-wide CSS file, that may or may not be relevant on any given page; the example that comes to mind is Wikipedia, on which any given page *might* include a few words in some script other than that used for the primary language, and they'd like not to have to worry about whether the reader's OS shipped fonts for that script. This is orthogonal to the 'font-rendering: optional/swap/mandatory' mechanism because a font might be mandatory *if used on a particular page*, but unnecessary to download until it's known to be needed -- math and icon fonts, or those alternate-script fonts (for which one would probably use local() to further hint that system fonts will do if available). Conversely, a font used for body copy on every page, but chosen for design reasons, would probably be 'optional' or 'swap' but the author would like to tell the browser that it really should start loading it now because it WILL be used. I can imagine heuristics that would do a reasonably good job of inferring whether a load should start immediately from things like presence or absence of 'unicode-range', whether the font is being applied to high-level structuring elements (<body>, <main>, etc), and like that, but they are probably too heavyweight to apply for prefetching. It might even be nice to be able to hoist font-prefetch hints out of the style sheet into <link> tags, so those loads can proceed concurrently with the load of the style itself! (N.B. FF doesn't parse style incrementally and it would be a major overhaul to change that.) Concrete suggestion: in @font-face, prefetch: auto | true | false 'auto', the default, means whatever happens now; 'true' means browsers SHOULD load this font immediately, and 'false' means they SHOULD NOT. (Can we stop adding redundant 'font-' prefixes to @font-face descriptors where not necessary for parallel structure with font-* properties in style rules, please?) zw
Received on Thursday, 30 October 2014 16:59:00 UTC