W3C home > Mailing lists > Public > www-style@w3.org > August 2015

Re: [css-font-loading] Timing clarification of ready attribute/promise

From: Tab Atkins Jr. <jackalmage@gmail.com>
Date: Wed, 5 Aug 2015 16:33:10 -0700
Message-ID: <CAAWBYDDp+wN=+giNCT3B99Jaox1e3h7PbFsupfWtM39HdFRd0w@mail.gmail.com>
To: Dominik Röttsches <drott@google.com>
Cc: www-style list <www-style@w3.org>
On Mon, Aug 3, 2015 at 2:00 AM, Dominik Röttsches <drott@google.com> wrote:
> Hi,
>
> I am trying to get a clearer picture on the exact timing of the ready
> promise getting resolved:
>
> >From https://drafts.csswg.org/css-font-loading/#font-face-set-ready :
> "The ready attribute contains a Promise which is resolved when the
> document is done loading fonts"
>
> And further down, in the non-normative note:
> "The ready promise is only fulfilled after layout operations complete
> and no additional font loads are necessary."
>
> What I noticed in Chrome, while working on a larger font-loading
> related test case:
> Depending on machine performance, there is a small delay <100ms
> between the promise getting resolved, and the fonts actually being
> used for rendering. And I am curious whether this - in the spirit of
> the spec - a bug or acceptable behaviour.
>
> Does the "after layout operations complete" note imply that the fonts
> that just completed loading are used for rendering and the screen is
> updated with those?
>
> Could the timing of this promise-resolution be made more exact and and
> moved from the note to a normative statement?

The spec defines that the ready promise isn't fulfilled until the
browser is no longer "pending on the environment"
<https://drafts.csswg.org/css-font-loading/#pending-on-the-environment>.
The (normative) third bullet point for that is "the document has
pending layout operations which might cause the user agent to request
a font".

This is definitely *supposed* to imply that any font-dependent layout
has finished, so that when the ready promise is fulfilled, JS can go
and measure things in the DOM and be sure that there won't be anything
jumping around due to font loads (until the next time something
triggers a load, of course).

If this isn't happening, it's definitely a bug, either in the impl or
the spec (or both).  Do you think the current spec line isn't
sufficiently clear?  If so, I can try to tighten the language.

~TJ
Received on Wednesday, 5 August 2015 23:34:00 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 5 August 2015 23:34:00 UTC