[CSSWG] Minutes Telecon 2015-04-08

Loading Fonts and Changes in Status
-----------------------------------

  - There was disagreement as to if the specific order of state
      changes is needed to prevent bugs or if it's an unnecessary
      step that slows performance.
  - TabAtkins will gather more cases and the e-mails that lead him
      to make the language more strict in order to further the
      conversation.

Media Queries
-------------

  - RESOLVED: Change the appropriate sentence in MQ to "User agents
              must re-evaluate <a>media queries</a> in response to
              changes in the user environment that they're aware
              of"

Font Loading Control
--------------------

  - RESOLVED: Remove the timeout portions from the proposed font
              loading control spec.
  - RESOLVED: Move Font Loading Control to the Font Loading spec.

Cursor Image Formats
--------------------

  - RESOLVED: We are recommending informatively .cur support.
              Normatively must support PNG and SVG and saying should
              support animated formats too.

text-combine-upright (TCY) on ::marker
--------------------------------------

  - RESOLVED: Accept fantasai's proposal to add text-combine-upright
              to ::marker.

===== FULL MINUTES BELOW ======

Present:
  Rossen Atanassov
  Tab Atkins
  David Baron
  Sanja Bonic
  Bert Bos
  Adenilson Cavalcanti
  Tantek Çelik
  Dave Cramer
  Alex Critchfield
  John Daggett
  Elika Etemad
  Daniel Glazman
  Tony Graham
  Koji Ishii
  Dael Jackson
  Toru Kawakubo
  Brad Kemper
  Chris Lilley
  Peter Linss
  Edward O'Connor
  Florian Rivoal
  Simon Sapin
  Alan Stearns
  Greg Whitworth
  Johannes Wilm
  Steve Zilles

Regrets:
  Simon Fraser
  Michael Miller
  Simon Pieters
  Anton Prowse
  Mike Sherov
  Lea Verou

  Scribe: dael

  glazou: Let's start.
  glazou: Any extra items?
  jdaggett: The font rendering proposal is something I'd like to
            discuss.
  glazou: We'll put that after item #1 since you're far away and
          time zones.
  jdaggett: We can hold off until TabAtkins is on the call.
  glazou: No problem. Anything else?

Loading Fonts and Changes in Status
-----------------------------------

  <glazou> https://lists.w3.org/Archives/Public/www-style/2015Mar/0536.html
  jdaggett: We should wait for TabAtkins.
  TabAtkins: Let's do this.
  jdaggett: The first item is, basically, the way the CSS Font
            Loading spec is written it sort of requires certain
            state changes to occur in a certain order.
  TabAtkins: Yes.
  jdaggett: It seems that's unnecessary.
  TabAtkins: We want to ensure state changes happen in a specific
             order. Otherwise people get bugs.
  jdaggett: The ordering is fine. If there's a guarantee at a
            certain point we should be careful. In this case a font
            could end up being loaded trivially.
  TabAtkins: Yeah. Let me link the e-mail. In these examples in the
             e-mail I think they're Chrome bugs. We shouldn't have
             behavior depending on implementation concerns. People
             depend on sync behavior in one browser and it doesn't
             work in another.
  <tantek> TabAtkins++ depending on implementation details of
           async/sync is a huge recipe for bugs
  jdaggett: You're forcing slow.
  TabAtkins: Forcing consistent.
  jdaggett: Consistent but slower.

  TabAtkins: Yes. I am requiring that because it's required for
             several cases. It's not obvious to me which should be
             sync. I don't think we should have an API that
             sometimes makes sync changes and sometimes makes async.
  jdaggett: I think when we implemented this in Gecko you have to
            introduce artificial states where you can load this and
            it's in a cache, whatever the reason is you end up
            having to put it into an extra state and spin the event
            loop and then set up something where it comes out at the
            next spin so you're doing the right thing.
  jdaggett: It seems like a lot of additional that's not that
            necessary.
  TabAtkins: I think having an API that can do sync or async
             depending, I think that's bad for browsers. They have
             to do odd things for some cases anyway. It requires you
             to say even though we're capable of doing it fast,
             we're going to wait for the next event loop.
  jdaggett: Maybe we need to hear back from the Chrome implementors
            because for us it creates artificial states.

  TabAtkins: That's, yes, if you do a URL and sometimes it's sync
             and sometimes async because sometimes it got loaded
             somewhere else, that will be a source of bugs for
             authors. This kind of unpredictably is always a problem.
  TabAtkins: It might happen because they've loaded in their test
             environment, but once you're public it won't be loaded
             yet.
  jdaggett: I think it's an artificial simplification of something
            that's already complex. I don't think you're introducing
            bugs when you say if it's simple if can change.
            Introducing artificial boundaries...this thing happens,
            then this etc. in all cases, you end up with sync cycles
            that aren't great for authors.
  TabAtkins: But doing anything else creates unpredictability. I'm
             going to object that to something that allows sync or
             async.

  jdaggett: Talking this over with Cameron, this doesn't make sense,
            but we need to talk to others. There's two
            implementations that feel like the right way, but the
            spec says something else.
  TabAtkins: I think that might be because I set status to loading
             and that's really bad. It might be we're taking
             advantage of that at the time of implementation, but
             we're being stricter because of feedback that I should
             be strict in async.
  jdaggett: It would help if you can post the downsides of changing
            this? I think examples of bad would be helpful.
  TabAtkins: And I can link back to the e-mails that caused me to
             change the text.
  dbaron: Also, when there's a callback there's a risk of authors
          expecting async and having that be a problem when it syncs.
  TabAtkins: Anything that keys off will be promise based. I'm
             worrying that authors will expect it to change sync-ly
             and it not changing sync-ly in other cases.

  glazou: So TabAtkins you'll accept an action to provide more
          information?
  jdaggett: And it might be useful to hear from other members of the
            Chrome team.

  ACTION TabAtkins to provide more info to jdaggett
  <trackbot> Created ACTION-679

Media Queries
-------------

  glazou: So back to Microsoft. I think, gregwhitworth, you posted?
  gregwhitworth: I expressed our desire for it to be 'should' for
                 the pointer. I read Florian's feedback and I still
                 think it should be a 'should'. Especially for the
                 future because we don't know about MQ down the road.
  gregwhitworth: I've laid it out in the e-mails so I don't know if
                 you want to talk about this on the call.
  Florian: I'm not sure if it's on the call, but I don't understand
           your point. When it comes to future-proofing I think
           that's erroneous. If we find something that should be
           'should', we can change that. I don't think we should
           take future needs as a reason to not have it strict.

  Florian: As to pointers, If you disagree with my example I'd like
           to understand what I'm missing.
  gregwhitworth: Your scenario where we have a continuum model. The
                 surface where 90% of the time they're using in a
                 touch format. Then they take it to work and dock it
                 they have a mouse. So what you're saying the
                 primary is touch, but now it's mouse. So that's why
                 I think it should be a 'should'.
  TabAtkins: That seems irrelevant.
  Florian: So you're saying you don't think the primary pointer has
           changed. So you don't change it. But if it has changed,
           let the author know.
  TabAtkins: I don't see why if you think the pointer has changed
             you shouldn't change it.
  gregwhitworth: So I don't see why the OS...
  TabAtkins: Then you don't know it's changed. This is saying if you
             know the value has changed, let the browser know and
             that you must do that.
  Florian: So whatever happens in the environment causes it to
           change, then the browser should match. And I think it's
           straight forward for Windows because you have that in the
           OS.
  gregwhitworth: For example we have plug and play on the OS so we
                 know when something changes. But with a device that
                 doesn't have plug and play that's not possible.
  gregwhitworth: If we have a device that doesn't have the
                 capability, I'm questioning if we're talking about
                 a must or the end author. They're going to think I
                 said pointer is fine and they must reevaluate,
                 they're not going to take that browsers will change.
  Florian: But if you have a device that's not plug and play it
           wouldn't be primary.

  TabAtkins: Would it help if we add "that they're aware of"
  <ChrisL> +1
  gregwhitworth: That feels like a 'should'.
  Florian: What we want to avoid is UA knowing and not changing.
  dbaron: If you want exceptions for certain MQ characteristics, we
          should make those exceptions for just those. Don't weaken
          the spec for things like width.
  <fantasai> dbaron++
  <Florian> +1 to dbaron
  gregwhitworth: That's what I said in my e-mail. If we take MQ at a
                 granular level and things where there's
                 interoperability make it a 'must'. But I think for
                 pointer...TabAtkins, I think it's a good idea to
                 add that. But I'd rather get more granular. So
                 these 5 are 'must' and this one is 'should'.
  <ChrisL> let's go for the more granular and the "that they are
           aware of"

  Florian: So when a browser knows about the luminosity MQ, but the
           device doesn't actually have a light sensor... no author
           will expect it to change if the UA can not know about the
           change in the environment. I think we can add the
           phrasing, but I don't think it's significant. The other
           changes go under deciding what is the primary device.
  Florian: I'm okay with granular, but I'd want 'must' on everything
           we have.
  gregwhitworth: What's the point of granular then?
  Florian: Well, exactly.

  gregwhitworth: So we're at an impasse. I understand your point,
                 but if I'm Photoshop and I have a UI for touch and
                 one for website and have it where if you have a
                 pointer fine, they plug in the mouse and expect the
                 UA to adjust they should expect that. Then I see
                 that pop up and expect the mouse, but the UA thinks
                 the most used is touch.
  TabAtkins: You're still talking about the definition of the
             pointer MQ, not if you know it's changed. Let's not
             talk about if it should change. I haven't heard
             arguments for if the browser knows the MQ has changed
             it should change. I haven't heard any reason not to
             change to a 'must'.
  TabAtkins: I'm okay with the one change to make it clearer that it
             only expects to change things when it knows about it.
             I'm fine with that.
  gregwhitworth: Ultimately I'm fine with it being a must as long as
                 it's stated for authors to be aware of. I did get
                 hung up on the definition of a pointer, but that's
                 the one we worried about.
  TabAtkins: Okay, I'm making the change now.
  <TabAtkins> proposed resolution: Change the appropriate sentence
              in MQ to "User agents must re-evaluate <a>media queries
              </a> in response to changes in the user environment
              that they're aware of,"
  * fantasai suggests putting "that they're aware of" in parens
  * Florian fantasai: not sure it matters, why would you want
            parens?

  glazou: gregwhitworth are you okay with that?
  gregwhitworth: Yes.
  glazou: Objections?

  RESOLVED: Change the appropriate sentence in MQ to "User agents
            must re-evaluate <a>media queries</a> in response to
            changes in the user environment that they're aware of,"

Font Loading Control
--------------------

  <jdaggett> http://tabatkins.github.io/specs/css-font-rendering/
  jdaggett: Back in March TabAtkins put together a better version of
            the old proposals for what's being called the font
            rendering property but it's more like a font load
            control property. It's giving the author control over
            the intermediate presentation when downloadable fonts
            are used. Different browsers have different behaviors
            around what's displayed when the pages loads and the
            font is available.
  jdaggett: Some display nothing, some do a fallback, for Chrome and
            FF they do a bit of both. Nothing at first, fallback if
            it takes too long. IE always does fallback, Safari will
            always show a blank page until the font loads.
  jdaggett: The proposal is for a property that lets you set the
            timeout. I don't think this is a great idea. I'm not
            sure what the right way to put a handle on this, but I
            think the idea of a low-level timeout is a bad thing to
            give to an author.
  jdaggett: It's going to be variable, what you give them. The way
            fonts are downloaded is via the content of the page and
            when exactly that mode starts will vary from
            implementation to implementation and how long it takes
            will depend on what else is loading at the same time. So
            a 2 sec timeout you set may have no relation to the same
            timeout on another browser.
  jdaggett: I also don't feel like authors should be able to say I
            never want to show content until this font loads. I
            think that's poor design. A lot of people complain about
            where you're looking at a page and the content has
            loaded, but you won't see anything.

  glazou: I received a lot of complaints asking if it's a CSS
          problem.
  jdaggett: I can see that it's reasonable to say let's have a hint
            like this font is important and load it first, but
            explicit timeouts isn't interoperable.

  Florian: I'm not entirely sure the current design is right, but
           having the property is a good idea. Both users and
           authors have preferences, but there are disagreements as
           to if you should have fallback or just wait, so this is
           something where people like the control.
  Florian: If this should be expressed in terms of timeout, I have
           less of an opinion, but having a way for authors and
           users to switch between behaviors is something I'm in
           favor of.
  jdaggett: User and author wants can be conflicting.
  jdaggett: It's primarily a mobile problem, so there's no user
            stylesheet.
  dbaron: I don't htink it's a problem of lousy UAs, I think we want
          to find a solution for all users, not the small number of
          users that can edit their stylesheet.
  <dbaron> ... or go in to the preferences ui
  <glazou> dbaron++

  TabAtkins: The big issue is most browsers do the block for a
             couple seconds and then show the fallback. The fact
             that it's uncontrollable is what I'm trying to address.
             The point is to let authors control if you swap in at
             some point. So discussion on allowing people to block
             seems backwards because today everyone blocks. So
             unless we're saying UAs can't ever block, saying we
             don't want to let authors control blocking isn't
             relevant.
  jdaggett: But people are fiddling around to finagle around that.
  TabAtkins: I don't want hacks around to be a fix for a thing. This
             property might not be ideal, but I'm trying to make the
             crazy hacks not be necessary.
  <Florian> Totally agree with Tab
  glazou: Most people that complained about Safari don't know what
          local storage is. This kind of work around, they just
          don't know.
  jdaggett: I'm fine with wording saying don't do what Safari is
            doing, but I do think the way the property is structured
            with explicit timeouts, you allow authors to say never
            display until it's pure. That's a problem for someone
            that makes a UA. I want to be able to give the users
            something they want so I don't think respecting a
            forever timeout is good.
  glazou: You're trying to move the responsibility for showing
          things to the UA. This will be self-controlled; users will
          go away if it's mis-used.
  TabAtkins: I do think it's bad if people are doing heavy blocking
             and I'd be okay with allowing UA to have a max timeout.
             That could be user controlled or set as a default.

  jdaggett: This may seem orthogonal but I think it's important to
            put in hints to initiate to load ASAP because that's the
            underlying reason.
  TabAtkins: It is orthogonal. If you're using the font right away
             you still have to deal with the download times. That
             still needs to be controlled.
  jdaggett: The reason you get that is the font load is initiated
            late. If you have something initiate the font load
            you're less likely to get the behavior.
  TabAtkins: I can get the font information in the first network
             packet and still have to wait the few seconds due to UA
             behavior. This is to let that be fixed and have better
             rendering.

  Florian: There's 3 useful values. Auto is the browser does
           whatever it wants to do. Another is show it immediately
           even if you don't have the font and refresh when you get
           it. The third is show the content immediately and don't
           refresh when you get the font, but still initiate the
           download, so you can use it next time you reload. If
           it's useful to be able to set explicit times I'm not
           convinced of, but being able to say show immediately
           is important.
  <fantasai> Florian++
  jdaggett: I'd have less problem with that.
  TabAtkins: Those are the three planned values. If we want to allow
             the explicit timeouts on the keywords, we can do that
             later.
  jdaggett: The keywords are different. The property is much finer
            grained.
  TabAtkins: No.
  TabAtkins: They are they same three keywords.

  <tantek> do we have any examples of *good* behavior with non-
           blocking webfont loading?

  Florian: I think those three are sufficient. What jdaggett objects
           to is the timeout.
  glazou: This is only a draft. We can keep stuff people disagree
          with and it will be eventually removed if we don't get the
          2 implementations.
  dbaron: I don't think that's a reason to put things in we don't
          want.
  glazou: So we have two options. Keep stuff and remove later or if
          we have a compromise, get rid of it.
  fantasai: I think if we don't agree on something and we don't have
            a clear path of working on it towards consensus it
            should be dropped and keep what we have consensus on.
  Florian: I think the property is important and I would suggest
           removing the parts jdaggett objects to and putting them
           back later.
  TabAtkins: I'm okay with moving them from the main spec and
             discussing it later.
  glazou: So the parts of having a duration?
  jdaggett: It's the timeout aspect of it.
  glazou: So are there objections to removing the timeout portions
          from the font loading?
  <ChrisL> yes
  <fantasai> fantasai: I agree with John, I'm in favor of dropping
             timeout and keeping the rest

  RESOLVED: Remove the timeout portions from the proposed font
            loading control spec.

  TabAtkins: So can I put it as an ED?
  <astearns> +1 to publish as a font loading spec
  jdaggett: We can, but we need to have an issue that it needs
            another name.
  <ChrisL> yeah the name is poor
  glazou: Okay, so we need to change the name and we need a short
          name.
  fantasai: Font Loading
  TabAtkins: We have it. The Font Loading API
  <ChrisL> font-loading-declarative
  glazou: font loading control
  <astearns> font loading level 2?
  <BradK> Font-not-loading
  jdaggett: font loading control isn't bad.
  <ChrisL> font-ld
  glazou: Okay. Font Loading Control. Done.

  <fantasai> Can we just add it to the font loading module???
  * fantasai thinks font-loading property should either be in
             css-font-loading or css-fonts
  * fantasai thought we had an outstanding action to create Fonts
             Level 4??
  * fantasai jdaggett ^
  <jdaggett> fantasai: yes, back in the oct f2f i asked permission
             to start one
  <fantasai> jdaggett, Could we put font-loading in that?
  <fantasai> I feel like having a pile of one-property specs isn't
             really helpful to people trying to find things and
             understand how they fit together
  <jdaggett> fantasai: i think font loading spec would be better
  <fantasai> :)
  <fantasai> jdaggett: http://www.w3.org/TR/css-font-loading/ ?
  <jdaggett> yes
  <fantasai> That works for me, too
  <jdaggett> fantasai: font loading is more about the font loading
             algorithm, since script is involved
  * fantasai nods
  <jdaggett> so having a property in there isn't bad
  <fantasai> I'm okay with either

Cursor Image Formats
--------------------

  Florian: So there were two different issues on this.
  Rossen: The first issue, like gregwhitworth pointed out, we're
          still waiting. On the technical side as to if we can
          support other image formats, we should be able to. If
          we'll do it is a different question. Technically there are
          no limitations.
  Rossen: Obviously if other browsers support the different cursor
          formats, there's nothing holding us back.
  Rossen: It has to be differentiated in impl follow-up. But we
          should be able to support it.
  ChrisL: If it helps I made some tests. It was one test for each
          format that was proposed. That's sitting there.
  Rossen: Sorry, you were breaking up, were you asking if we should
          review all the different formats?
  ChrisL: No, I'm saying I've got some tests that lets us see what
          browsers support it. I've also got tests for PNG.
  Rossen: So the low-level cursor API supports a bitmap and an alpha
          channel map. Anything can become a bitmap and then used as
          a cursor. Besides performance I don't think there will be
          technical reasons. This is about the can we, we can, there
          are no implementations promises.

  <tantek> I'd like to move forward with: Informative note that
           browsers support .cur, and Normative must requirement of
           PNG / SVG
  <ChrisL> plus one to what tantek just typed
  Florian: tantek I agree with your point. [reads from IRC]
  glazou: That was the original proposal.
  Florian: It went a bit further. It was you must support anything
           you do through the image value type.
  glazou: Anyway, the proposal is an informative note about support
          for .cur and normative for PNG/SVG
  tantek: More than that.
  Florian: There was a should where if you support something
           animated you should support it in the cursor as well.
  <ChrisL> yes, should is appropriate for animated at this time

  glazou: So opinions and objections please?
  tantek: This is one of the two outstanding issues on CSS3 UI so
          I'd really like it resolved.
  <ChrisL> (no objections)
  glazou: There seems to be consensus.
  Rossen: I wouldn't object to this. I'm not sure about the animated
          part.
  Florian: That's why it is 'should'. And IE supports animated. It
           does it though .ani
  Rossen: Yes. The usefulness if questionable.
  fantasai: Recommend or require?
  Florian: Recommend.
  fantasai: I'm okay with that,

  tantek: So Microsoft, any objections?
  Rossen: No.

  RESOLVED: We are recommending informatively .cur support.
            Normatively must support PNG and SVG and saying should
            support animated formats too.
  Florian: And the <image> will normatively require SVG and PNG
  glazou: Okay.

  <tantek> RESOLVED: Informative note about browsers .cur support.
           Normatively MUST support PNG, SVG, and any other static
           <image> formats your UA supports elsewhere. SHOULD
           support any other animated <image> formats your UA
           supports elsewhere.
  <tantek> ^^^ all, please double-check that resolution.
  <tantek> the details are important
  <ChrisL> tantek yes that is what we agreed
  <tantek> Thanks ChrisL, I wanted to get the exact thing in the
            minutes.
  <Florian> tantek: Almost. change second sentence to: Normatively
            require any supported static <image> formats, and
            normatively required that <image> supports at least PNG
            and static secure SVG.
  <tantek> what is static secure SVG?
  <Florian> (this makes no difference to cursor, but it makes PNG
            and SVG mandatory for <images> in general as well)
  <Florian> tantek: https://svgwg.org/specs/integration/#secure-static-mode
  <tantek> svgwg.org?!?
  <tantek> ok I'll find a normative w3.org ref

Font Loading Control
--------------------

  fantasai: jdaggett and I were discussing the font loading and
            we're suggesting it moves to the font loading spec
            instead of being on it's own. Is that okay?
  fantasai: It would be nice to have it with the font loading API.
  glazou: Objections?

  RESOLVED: Move Font Loading Control to the Font Loading spec.

text-combine-upright (TCY) on ::marker
--------------------------------------

  <glazou> https://lists.w3.org/Archives/Public/www-style/2015Apr/0043.html
  fantasai: It's a text level property and I was suggesting we
            include it in ::marker because that's common and not a
            layout thing.
  fantasai: So it should be okay to add and we can mark as at risk,
            but it's an important use case.
  Rossen: Is this level 3?
  <jdaggett> really?!? hmmm
  fantasai: pseudo-elements level 3 for ::marker

  glazou: What do you think?
  Rossen: I don't have an objection. You mentioned it's common?
  fantasai: It's for when you have upright and vertical text. I
            don't have an example off the top of my head. Let me see
            if I have any scans I can find quickly.
  <jdaggett> i'm skeptical that TCY is used in ::marker

  <dbaron> koji asked if writing-mode is ignored in ::marker
  fantasai: Right now ::marker doesn't accept writing mode or any
            other layout.
  koji: Having the numbers in writing mode is often used. So I
        question if it's common.
  Rossen: It's fine as long as there's a good use case for it.
  Rossen: Would also that apply to content?
  fantasai: It already does.
  Rossen: Okay, then I believe ::marker should be the same.

  glazou: Is there any objections against fantasai proposal?
  jdaggett: I'm skeptical, but if there's an example to demonstrate
            it's useful, okay.
  fantasai: Any case where the entire number is a single unit.
  fantasai: There's a lot of cases where twelve is written 1 2 with
            both upright.
  Rossen: I'm fine with adding this as at risk and then moving on.
  glazou: Objections?

  RESOLVED: Accept fantasai proposal to add text-combine-upright to
            ::marker

  glazou: It's the top of the hour. Thank you very much and talk to
          you next week.

Received on Thursday, 9 April 2015 09:14:51 UTC