[CSSWG] Minutes Telecon 2020-01-08 [css-color-4] [css-pseudo-4]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 Please respond by starting a new thread
   with an appropriate subject line.
=========================================


Upcoming F2F
------------

  - Members should tag any github issues that are for F2F discussion.
  - A private wiki page will be made by fantasai to coordinate travel.

Open Type
---------

  - Any group member with items that should be added to the list of
      topics to cover with Open Type should reach out to Chris.

CSS Color
---------

  - RESOLVED: Add lab keyword to color() function (Issue #4649: Should
              the color() function accept 'lab' as a color gamut
              keyword)
  - The quick answer to Issue #4647 (Do gradients/animations using lab/
      lch colors interpolate in the Lab colorspace?) is yes.
      - Going deeper into the issue the group decided that for
          transitions and gradients there should be a smart default
          that, if the colors use the same space, they're interpolated
          in that space. If they're not in the space they'll
          interpolate in Lab space. Gradients will have the ability to
          select a different space for interpolation.
  - Chris will add additional spec details to clarify how displays
      should render colors in wider color spaces in order to resolve
      Issue #4646 (Should lab() colors which are outside the sRGB
      gamut be rendered on capable displays?).
  - After looking into issue #4622 more (gray() function produces a
      warm, D50 white) it's not really a concern so Chris will close
      it no change.
  - RESOLVED: Drop gray() function (Issue #4621: Better name for
              gray()?)
  - RESOLVED: Update WD of css-color-4

CSS Pseudo L4
-------------

  - RESOLVED: Close no change (Issue #4626: Layering of highlight
              pseudo backgrounds)
  - fantasai introduced Issue #4579 (::selection vs
      ::inactive-selection) however there wasn't time to resolve
      during the call.

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2020Jan/0001.html

Present:
  Rachel Andrew
  Rossen Atanassov
  Tab Atkins
  Amelia Bellamy-Royds
  Christian Biesinger
  Oriol Brufau
  Tantek Çelik
  Dave Cramer
  Elika Etemad
  Simon Fraser
  Chris Harrelson
  Dael Jackson
  Brian Kardell
  Chris Lilley
  Anton Prowse
  Manuel Rego Casasnovas
  Florian Rivoal
  Devin Rousso
  Jen Simmons
  Alan Stearns
  Lea Verou

Scribe: dael

  Rossen: It is past the 2 minute mark. Let's get started
  Rossen: First, happy new year. Wishing you a great 2020
  Rossen: Looking forward to another great year of CSS success

  Rossen: As usual, I'll start by asking for additional agenda items
          or changes
  fantasai: I think some discussion about talking with the Fonts
            people at MPEG. Vlad asked us to draft a liaison statement
            for next week. May want to discuss
  Rossen: Okay. Anything else?

Upcoming F2F
============

  Rossen: I have two quick announcements
  Rossen: Upcoming F2F
  Rossen: In a couple weeks, please start adding agenda items and tag
          them as agenda F2F so we can have work to keep us occupied.

  Rossen: Other topic is about our CSSWG Wiki
  Rossen: I realized we accumulated a number of new members and we
          organize and post meetings, attendance, travel, etc. on the
          wiki
  Rossen: Want to remind everyone this is a public wiki. We can write,
          but everyone can read.
  Rossen: If adding contact info, flight, hotels, and whatnot keep in
          mind it's public. If you don't feel comfortable, just put
          your name for attendance.
  Rossen: Recently there were people tweeting about this and members
          felt uncomfortable because they thought this was private. It
          is public.

  TabAtkins: SC29 solved this by having a private repo. For exact
             meeting and travel details people post to the private
             wiki. That's how they get around.
  <chris> or we could use the member list
  fantasai: If we put logistics in a separate page we can lock that
            down
  TabAtkins: Really? Let's do that
  fantasai: It has per page or per section read/write permissions
  bkardell: Do you have to be CSS or W3C member?
  * bkardell thinks this makes sense - tc39 split... agenda and stuff
             is public, private stuff is member private
  fantasai: Wiki is a CSSWG account on plinss server. You have to
            register separately. If you need permissions let one of us
            know
  <tantek> I'm ok with making meeting logistics info (flight dates /
           housing) WG private
  fantasai: There's groups, public, WG member, and people not in WG
            but recognized so they have upgraded permissions
  Rossen: But for private travel info this is helpful to us.
  Rossen: I'm in favor of locking down travel details so we can share
          among ourselves
  <jensimmons> +1

  Rossen: fantasai if you're familiar?
  fantasai: Set it up, sure.
  Rossen: Thank you and thanks to folks who brought this up
  <tantek> can we agree on making travel details WG private? not just
           w3c member private?
  <tantek> I don't see a reason to show travel details to non-CSSWG
           members

Open Type
=========

  Rossen: Other extra item was from fantasai. Is Vlad on?
  chris: I'm the SC29 rep so I can help drafting
  Rossen: Okay. Do we want to have WG opinion on creating the liaison?
  fantasai: Vlad asked us to review any or overview any issues we're
            aware of that interact with opentype. I have a handful
            which were mostly in what was sent. I wanted to ask WG if
            there's any issues they're aware of to put in this
            statement where we need opentype to work on or interact
            with
  florian: I think the list is good. I agree we should have one. If
           that's the way it's supposed to be then that's how.
  chris: florian I can fill you in on details of how it works after
         call
  Rossen: Anyone aware of open type issues could help putting details
          into chris draft please contact him this week. We're looking
          to wrap up this week
  fantasai: They wanted it this week because they have F2F next week

CSS Color
=========

Should the color() function accept 'lab' as a color gamut keyword
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4649

  smfr: I filed for completeness. It seemed like it should be an
        option, no strong opinion
  chris: Can, it's just that there's a shorter way to do same
  * bkardell thinks it seems good for completeness
  smfr: Can make same argument for sRGB
  chris: Yes, but that's for legacy. Happy to add if it's helpful,
         just an alias
  <bkardell> +1 to alias
  florian: Why not?
  AmeliaBR: Only concern is if we don't define to include it there
            might be compat issues later if we want to include it but
            people have used it for their own custom colors
  chris: That is true, yes

  leaverou: Does that mean we add all the other color spaces as well?
  AmeliaBR: Assume if we make a color function we'd want to be
            consistent
  <bkardell> it's good to be able to reason across the platform
             consistently
  smfr: HSL is in sRGB color space. This was more about being
        inclusive of different color spaces. lab, lch, and gray all
        use the color space.
  chris: Yes, makes sense
  leaverou: Fair enough
  chris: Should we resolve then?
  Rossen: Any other opinions?
  Rossen: Objections to add lab keyword to color() function?

  RESOLVED: Add lab keyword to color() function

Do gradients/animations using lab/lch colors interpolate in the
   Lab colorspace?
---------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4647

  smfr: Thinking was if you specify lab colors you want uniform
        lightness. If you specify gradient with same lightness you
        would expect intermediate to have same lightness. There's an
        image in the thread with lab interpolation that looks nice
  smfr: Someone would be looking for lightness behavior so makes sense
        to interpolate in lab space, but opens questions about if you
        have different spaces.
  chris: Should be option to say what color space. We should have good
         defaults so it works how expected
  leaverou: Bigger problem is most lab not in sRGB gamut so results
            would be horrible. I think makes sense if two colors in
            same space you interpolate in that space. Else we use lab
            which is all visible color
  florian: Agree with leaverou on the defaults.
  <bkardell> agree with lea as well
  leaverou: Also preserves web compat so sRGB is in sRGB

  AmeliaBR: Nice to be able to upgrade so you can use colors you have
            and say have transitions prettier
  florian: Need syntax of that
  chris: Working color space thing
  leaverou: My heuristic only need one color to be lab to get lab
            interpolation. Relativizing you wrap one in lab and get
            all lab

  myles: What's the relationship between this and SVG
         `color-interpolation` property?
  chris: In svg we have one for filters and one for everything else.
         svg had linearized sRGB. In practice we want to regard those
         as legacy. We can map to new, but not a great model going
         forward
  myles: Why is it not a good go forward?
  chris: You might want multiple backgrounds each with a gradient and
         in different spaces. One property means you control
         everything but more likely to want per gradient or per
         property
  leaverou: Might have a gradient background you define and a
            transition from a library you use and filter from
            something else
  chris: In other words want to avoid changing stuff people depend on
         and have unrelated things change under them
  AmeliaBR: My main concern is people change color interpolate
            property for pretty color and then be surprised by other
            aspects of color
  AmeliaBR: Related is we have inconsistent implementation on which
            browser effects which property every with limited switch
            options it has
  florian: leaverou's approach solves this. If you want interpolation
           in right space wrap one color in lab

  dbaron: Wanted to ask how clearly defined it is to interpolate
          across any color space given proposal is if colors are in
          same space you interpolate in that space
  chris: Clearly defined but most rgb space is gamma corrected.
  TabAtkins: Clearly defined means canonical representation as number
             vector
  AmeliaBR: Worth asking because >1 way to vectorize each color space.
            If we're able to interpolate in hsl the numeric vectors
            are different from RGB, even though both use sRGB space.
            Similarly lab has lch which is same space different vector
  AmeliaBR: Is need to interpolate in other numbers?
  chris: That was a default. There's an opt in to other space
  dbaron: Interpolate at least for transitions and animations for
          gradients is derived from computed values. There is a
          section that already computes away distinction in forms of
          specifying. I think it needs to be clearly defined what
          values you're working with. We allow @color profile rules. I
          don't know a huge amount, but can you derive unique rules
          from color profile?
  chris: Yes, you can determine vectors and then profile interprets to
         colors.
  dbaron: Spec should spell it out
  chris: There's a few things raised by smfr that are obvious to me
         but not others so I plan an editing pass

  TabAtkins: What things are we interpolating in. There's gradient,
             compositing, transitions/animations. Gradients easy
             implementation-wise. We already do it fake because ska
             doesn't pre-multiply colors. I think transitions/
             animations are driven manually so similarly fine to
             switch.
  TabAtkins: No idea about implementation difficulty to switch
             compositing. Seems deeply tied to library
  leaverou: Also filters
  TabAtkins: Yes
  AmeliaBR: Filters would be tied into deep graphics code
  chris: Most likely. Compositing I think most 3D engines do linear
         light compositing
  smfr: Apple it's non-trivial to change compositing. I think we'll
        get into that with working color spaces. I don't think need to
        worry when doing intepolation for gradients
  florian: My impression as well. Not sure where filters falls, though

  myles: chris you said there's an escape hatch. If I have two
         gradients I can use both?
  chris: Working color space. Maybe want to use keywords too. Maybe
         something like the / to separate alpha.
  fantasai: Could do that "in <colorspace-keyword>"
  AmeliaBR: Yeah. At front of gradient we define geometry and add an
            optional one that says do it in lab or sRGB
  <florian> +1
  myles: Have manual control and if you don't include it the system
         guesses sounds like a good solution.

  Rossen: Where are we with getting to resolution
  TabAtkins: Transitions and gradients in different color spaces we
             use a default rule where if in same space do it there,
             mixed is lab. Make sure it's explained properly. With
             gradients have an explicit opt in to change the space.
             Not touching compositing until we figure out working
             color space. Need to think about filters
  chris: Filters is in linear sRGB so we can leave as is
  AmeliaBR: It's a mix. CSS filters are sRGB and manual SVG are linear
            RGB but you can change it to sRGB. It's a mess, don't need
            messier until we figure out working color space
  chris: I think we have enough to close and move to needs edits
  Rossen: With resolution?
  chris: Title is does it happen in lab. Answer is yes. The specific
         question is answered
  Rossen: Don't need resolution
  chris: Don't think so

  Rossen: One ask; can you ask if you can use the illustration in
          issue in the spec? It's great and would be super helpful
  chris: Agree
  <AmeliaBR> +1 to figures and examples!
  chris: That use case is fairly pdf specific, but I have been meaning
         to add some gradient examples

Should lab() colors which are outside the sRGB gamut be rendered on
    capable displays?
-------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4646

  smfr: Apple display supports P3 which is wider. Makes sense to allow
        an author to get brighter colors. An author working on a lower
        gamut display may spec colors outside sRGB and they don't
        know it.
  leaverou: That can happen. There are monitors smaller than sRGB.
            Current colors have this problem
  chris: smfr I assumed question was rhetorical and you're saying
         chris please document this
  smfr: I wanted to it be clear we're not using lab as a way to spec
        things immediately converted to sRGB
  chris: Yes. Thank you
  AmeliaBR: Suggestion is that the default behavior is use max gamut
            available on device and if you want clamping you need to
            use working color space
  leaverou: Could wrap in rgb func
  chris: Mainly needs to say use widest gamut possible and therefore
         clamp as late as possible

  dbaron: Should space say how to deal with displays with narrower
          gamuts?
  dbaron: Rendering intent in SVG
  chris: Yes, exactly. I plan to use that because currently have
         horrible per component clamping. As you say there's this
         metric that's much more intended
  myles: Is this tested?
  chris: Reference modes, yeah
  <TabAtkins> Hm, testing is interesting here. Does the output's gamut
              affect computed values?
  <TabAtkins> I don't think it does, so this would be purely visual.

  florian: Follow up. When you say gamut is smaller I suspect displays
           less then sRGB we pretend is sRGB?
  chris: Yes. Highly sub sRGB probably don't have color profiles so
         you get what you get.
  Rossen: Anything else on this?

gray() function produces a warm, D50 white
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4622

  chris: When I wrote the topic I thought it was worse than it is. The
         thing you get is round off error which is as TabAtkins said
         one part in a million. I should close. I think I was
         unnecessarily worried
  smfr: Agree. All references use D50 so not using would cause
        confusion
  chris: If it's ICC workflow it would cause confusion. ICC5 allows
         more but not widely deployed
  chris: I'll close no change

Better name for gray()?
-----------------------
  github:  https://github.com/w3c/csswg-drafts/issues/4621

  leaverou: gray 100% is white and gray 0% is black. Everyone agreed
            different name
  leaverou: It's been a long time. I asked on twitter and my blog back
            then. I linked to the results.
  leaverou: Seems most people don't find it intuitive.
  leaverou: People voted for single argument RGB and gray isn't
            defined in RGB terms
  leaverou: Not sure how much we should take it into account.
  leaverou: I still stand by gray isn't a good name. White or black
            might be better. white 100% could make sense
  leaverou: It's being implemented so change is now or never
  <bkardell> should we try to do a post and evangelize with a good
             explanation along with the poll, just to check?
  AmeliaBR: Agree it's surprising at 100 but gray(70%) to talk about a
            gray is something I've seen in design forums. If we are
            switching I would argue L or lightness instead of white or
            black because then we have same confusion that 0% white is
            black
  leaverou: L is good. lightness sounds like a filter, but not strong
            opinion
  AmeliaBR: I have same, lightness is close to brightness. L would be
            happy for me
  bkardell: Won't people ask what L means?
  smfr: Can't google L
  <tantek> what does the L in HSL stand for then?
  florian: Not sure it's needed, but argument against gray is that in
           photographic field people speak as 18% as a middle gray and
           they mean 50% in lab. That's the standard gray in
           photography
  chris: They're talking about luminance
  florian: Right so if gray 18% means something else it's not nice

  fantasai: White and black are not much better than gray
  <chris> monochrome?
  Rossen: If we did white or black are we signing up for both?
  myles: 0 means none of it. For black(0) would mean same as
         black(100) and so that's why I'm for white
  chris: What about monochrome? Makes hueless
  leaverou: So long
  florian: Any color is monochrome
  TabAtkins: leaverou hit nail on head. Most suggestions will be
             longer than lab(% 0 0) which is what gray does. gray
             isn't much of a savings. I prefer stick with gray or drop
             function
  <chris> lab(foo% 0 0)

  <tantek> this sounds like a bunch of new bikeshedding and multiple
           options being considered that should first be added to the
           list in the GitHub issue comment thread rather than a phone
           call

  AmeliaBR: Any syntactic problem with making 2nd and 3rd value of lab
            optional?
  TabAtkins: I don't think there's precedent for that
  florian: I like it
  chris: I think will be confusing
  leaverou: Why privilege one coordinate?
  AmeliaBR: Then I would argue drop gray. As florian pointed out
            gray(50%) isn't want people think of as 50% in design due
            to color space the shorthand isn't helpful
  chris: Fine with that
  myles: lab seems worse for people that don't know colors. What does
         lab mean?
  leaverou: rgb is no more intuitive it's just been used for years
  AmeliaBR: But people are familiar with it I'd be happy to have a one
            function rgb. But let's not have gray function that
            doesn't do what people expect
  Rossen: Are we saying gray won't work as intended and will be
          unintuitive?
  Rossen: If we discount that half the people voted for rgbx which
          worked at the time everyone else voted gray
  florian: We're defining it to work on l of lab and people mean 50%
           gray in sRGB space. gray 15% in sRGB is what people would
           see with 50% in lab
  <bkardell> what about just mono?

  fantasai: If using % in lab people will think of it as the gray
            function no matter the name. Calling it lightness or gray
            or whatever will not change the effect if they're thinking
            in sRGB. Why not call it gray?
  florian: Call it gray in do it in sRGB
  fantasai: gray makes it obvious the midpoint. That's useful. People
            that work with gray understand white and black and near
            and far ends. Whatever we call it people will be
            disappointed because not in the color space they want
  myles: Maybe take an optional param
  fantasai: Or we do single value lab and rgb functions. This is
            syntactic sugar. Want to make most common thing work

  chris: A gray thing with an optional param to say warmer or cooler
  <AmeliaBR> I'd argue for both `rgb(18%)` expanding to
             `rgb(18% 18% 18%)` and for `lab(50%)` expanding to
             `lab(50% 0 0)`. Don't use `gray()` because it's not clear
             which one it would be.
  Rossen: Since people are starting to impl let's get to a resolution
          or live with gray. Strong candidate names over gray?
  bkardell: monochrome was too long, would mono work?
  TabAtkins: Don't generally go for shortening words as makes it hard
             to understand

  chris: 3 options. Drop function. Keep as gray. Rename it now. smfr
         is implementing so can't mess around with name
  florian: Which gray is it?
  chris: L as currently spec
  Rossen: Can we live with dropping?
  Rossen: I will take silence as a yes
  bkardell: It's less important than lab.
  chris: You're not losing anything
  Rossen: Objections to drop gray() function?

  RESOLVED: Drop gray() function

  <bkardell> we can always bring it back up
  Rossen: We can go back to these arguments if we re-introduce

  fantasai: Should we take up single value lab or rgb as equating to
            gray?
  <chris> noooooo
  TabAtkins: I don't think it's worthwhile enough to take up.

CSS Pseudo L4
=============

Layering of highlight pseudo backgrounds
----------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4626

  fantasai: Confirming we want them to stack and layer. If yes we'll
            close no change
  AmeliaBR: Makes sense for a selection on top of a spelling error
  AmeliaBR: Looks as a highlight on top of what you've got
  fantasai: It's on top of what you've got in element tree. It's
            multiple highlights
  AmeliaBR: If you do red for spelling and transparent yellow for
            selection makes sense to stack
  dbaron: Fine as long as spec which is on top
  fantasai: Yep.
  bkardell: Is that a question we can ask devs what they expect?
  fantasai: Seems everyone agrees we should layer. If there's an
            argument to not we can discuss
  smfr: Apple requires layer
  fantasai: Objections?
  Rossen: Objections to close no change?

  RESOLVED: Close no change

::selection vs ::inactive-selection
-----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4579

  fantasai: Relationship between them. It's implemented that
            ::selection applies to active selection. If your window is
            inactive you still have color. Two ways for them to
            interact. One is inactive selection is another highlight
            and layers on top. Alternative is the cascade together and
            one only applies sometimes.
  fantasai: Given previous resolution if you're using semi-transparent
            for selection and inactive selection and inactive goes on
            top of active so we have to cascade
  fantasai: Want to know if there's other thoughts
  fantasai: If we cascade might want to switch syntax so ::selection
            has a function name

  AmeliaBR: Is there a compat need to make selection and inactive
            selection to be cumulative and not exclusive? Default
            behavior is there's different styles
  dbaron: Possible to get inactive behavior with selection combined
          with other selectors?
  fantasai: Based on inactivity of window. Don't have a way to select
  dbaron: Make one?
  fantasai: Maybe with a MQ?
  myles: That's significantly more powerful then what we agreed. Is
         there a reason to make more powerful? That's exposing more
         info to websites
  dbaron: One level think it's more powerful. Another thing it might
          be easier to impl because don't have to impl cascading
          pseudo elements
  fantasai: I think there's a number of websites that would want to
            know if cage is active. Is it exposed and do we want to?
  florian: Sniff from selection?
  fantasai: No

  Rossen: Out of time.
  Rossen: I propose we leave this open until next time and resolve then
  <AmeliaBR> Firefox has a inactive-window pseudoclass:
             https://developer.mozilla.org/en-US/docs/WebecauseSS/:-moz-window-inactive
  fantasai: Okay

  Rossen: Thanks everyone

CSS Color
=========

  RESOLVED: Update WD of css-color-4 (approved by Rossen after the
            call)

Received on Thursday, 9 January 2020 00:38:36 UTC