[CSSWG] Minutes Telecon 2021-05-05 [css-overflow] [css-box] [css-contain] [css-fonts]

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


CSS Overflow
------------

  - RESOLVED: Specify option 1; match FF current behavior [the
              baseline is calculated the same as for visible] (Issue
              #6212: Baseline of an inline-block with overflow:clip)

CSS Box
-------

  - There was a strong leaning on the call to address having issue
      #4708 (Increase pointer target size independently of element
      layout) solved by browser behavior rather than having an
      explicit property which can be set. Some more research needs to
      be done on cases where current hit testing has issues, such as
      buttons with rounded corners, before a decision can be reached.

CSS Contain
-----------

  - RESOLVED: Have container MQ not resolve when there is no ancestor
              container (Issue #6178: How does @container resolve when
              no ancestor containers have been defined?)
  - RESOLVED: If there is containment on body or root it stops
              propagation from body to root (Issue #5913: :root/body
              viewport propagation and containment)
  - Within issue #6213 (Need style containment for container queries)
      is a motivating use case to do style containment which was
      previously missing. Given this new use case to handle counters
      and quotations the issue of style containment will be brought
      back up with those who previously objected to see if there's now
      interest in addressing style containment.

CSS Fonts
---------

  - RESOLVED: Start with ex, cap, ic, and ch (Issue #6160: Extend
              font-size-adjust to take a pair of values: <metric>
              <number>)
  - A new issue will be opened to consider adding ascent and possibly
      descent to the above list.

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2021May/0001.html

Present:
  Rossen Atanassov
  Elika Etemad
  Simon Fraser
  Megan Gardner
  Daniel Holbert
  Dael Jackson
  Sanket Joshi
  Daniel Libby
  Ting-Yu Lin
  Peter Linss
  Ben Mathwig
  Cameron McCormick
  Myles Maxfield
  Morgan Reschenberg
  Florian Rivoal
  Devin Rousso
  Miriam Suzanne
  Alan Stearns

Regrets:
  Tab Atkins-Bittner
  Jonathan Kew
  Greg Whitworth

Scribe: dael

Future Meetings
===============

  astearns: While we wait does anyone have suggested changes to the
            agenda?
  Rossen: Do we have any TPAC related things to discuss with the group?
  Rossen: Joint meeting type things. It'll be sooner than later we
          need to decide. Especially meet before or after TPAC
  astearns: Nothing on the books. Suggestion from leaverou about both.
            One a few weeks before and one a few weeks after so we can
            prepare for joint meetings and then respond to anything
            coming out
  astearns: That makes sense to me. Other opinions?
  Rossen: Sounds good to me as well. Sandwiching TPAC. Hopefully won't
          touch with other WG meetings, TAG, AC, and other acronyms.
  astearns: Do you know TAG dates? We have a bunch of people on it
  Rossen: Try to do TPAC directly. One week before? Right around ABE
          time since want to have joint meeting
  astearns: We should get going. I'll put a proposal for TPAC and next
            long form meeting
  astearns: We'll see what people think on the list

CSS Overflow
============

Baseline of an inline-block with overflow:clip
----------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6212

  fantasai: 4 proposals in the issue as far as I can tell. 1. same as
            visible even if baseline of clipped text
  fantasai: 2. treat like overflow hidden and synthesize baseline
            regardless of what's inside
  fantasai: 3. use whatever visible text is there. If clipped or below
            clipping point stop at clipping point
  fantasai: 4. is same as 3 but instead of clamp to clipping area we
            clamp to border area because that's how hidden behaves
  iank: I think it's margin edge
  iank: Unique thing here is inline box us by default last baseline.
        Not like first for flex/grid. overflow:hidden if you didn't do
        end margin you'd get a funny box
  iank: Question is which. We treat like overflow hidden, Firefox
        treats as visible
  iank: [missed]
  iank: Basically, Chrome went way of overflow:hidden for that reason
        and adhering to css 3. Firefox went for overflow:visible
        behavior. Merits to both. Slightly prefer ours a little
        because if you have a lot of content and overflow:clip you'd
        have things way off in linebox
  fantasai: So long as there's visible content makes sense to align to
            that visible content. One of the intentions is to not
            trigger a bunch of layout. Line of content and extra room
            for floating stuff which you clipped. Want to keep
            alignment
  fantasai: Clamp to padding edge might make sense because else
            aligning to something can't see. overflow:clip to clip
            anything outside, if there's content visible want to align
            to that
  iank: This is also somewhat an issue for last-baseline
  fantasai: Also first-baseline
  iank: Yes, rare case, but yes
  fantasai: Makes sense for last and first baseline to be consistent.
            First we want to align to first-baseline when it's visible

  astearns: If we clamp to clip area or margin edge...if clip area
            doesn't that give you layout changes based on clipping?
  fantasai: We wanted to avoid it but idea you're aligning to
            something invisible we also want to avoid. Which to avoid
            more? clamping to visible makes sense
  astearns: Thinking of animated where revealing and aligning to what
            you can't see if what you want
  fantasai: But in that case usually won't get clipped. Usually
            overflowing content you want clipped or not overflow
  fantasai: Dynamic visibility you probably don't want to reveal
            content overflow
  astearns: So option 4 is calculate same as visible but clamp to
            margin edge?
  fantasai: Yeah. Margin edge is a little weird. Border edge makes
            more sense. Had an issue about margin or border earlier.
            PDF raster and browsers are inconsistent.
  fantasai: I would clamp to the clip edge which is padding edge

  iank: Any other opinions? I'm weak on my opinion
  florian: A little opinion. If we manage to get behavior that's
           really author friendly let's do that. If we're kind of
           author friendly but not really it's not worth another
           slightly different variant. If we can land exactly what you
           want you don't have to debug but elsewise concerned about
           subtleties of this being different than other similar
           properties
  iank: Discovered on Firefox issue tracker and issue thinking Firefox
        was wrong. One data point a webdev expected Chrome behavior.
        But that's only one data point
  fantasai: Pretty strong first baseline we should align to if
            visible, even if clip. Makes sense for last to follow that
            logic. If and where we clamp is more debatable
  iank: Prefer not the clamping behavior. Just pick the baseline, even
        if not visible or pick an edge
  iank: One thing is people see overflow:clip as a drop in for
        overflow:hidden. There's a weak argument to align to
        overflow:hidden

  smfr: Prefer a behavior such that baseline alignment is same as if
        inline block had clip-path: inset(000)
  fantasai: That's Firefox?
  smfr: That's clip to the box
  iank: Why?
  smfr: In terms of layout and rendering I consider overflow:clip as
        similar to clip-path. Doesn't have effects, but it's a clip
        where I don't expect layout implications
  fantasai: Fine with that
  Rossen: I wanted to pull back on smfr comment and get clearer
          picture in terms of behavior he would see in the attached
          example from emilio. Would that be, smfr, closer to FF or
          chromium?
  smfr: Didn't examine. People said it's more like Firefox
  Rossen: Which has layout implications
  iank: Which does not
  Rossen: I was on an older Firefox

  astearns: Suggest we resolve to spec option 1, Firefox behavior,
            since we have people in favor and iank only with weak
            objection. See if we can take that to the bug reporter and
            see if it makes sense to them
  astearns: Can also talk to PDF reactor about if clamping behavior is
            required or they could move to non-clamp
  astearns: Proposal: Specify option 1; match FF current behavior
  astearns: Objections?

  RESOLVED: Specify option 1; match FF current behavior

scrollbar-gutter should not do anything for non-scrollable boxes
----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6028

  astearns: Discussed a few weeks ago. Hoping to see more on this
            issue in GH. Do we think we can get to a resolution?
  florian: We can try
  fantasai: I think comments in other issue (Issue #4674) interrelate
  astearns: Do the other first?
  florian: I think largely same thing from different angle
  fantasai: Is leaverou on?
  astearns: I don't think so. Nor chrishtr
  fantasai: Might make sense to defer until they can attend
  astearns: Let's skip 2 and 4

CSS Box
=======

Increase pointer target size independently of element layout
------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4708#issuecomment-588369114

  fantasai: Posted a link to the comment with follow-up
  fantasai: Last time had a question for the commenter about it being
            a length or larger/normal/smaller
  <fantasai> https://github.com/w3c/csswg-drafts/issues/4708#issuecomment-588451067
  fantasai: Commenter responded ^
  fantasai: Example of 2 buttons side by side and explaining author
            would not be able to know distance. Not specify a length
            larger. If we made it up to UA maybe there would be overlap
  fantasai: That was a concern by the poster. Related, plinss
            commented explaining what happens with 2 JS elements with
            extended hit area. Don't want to cover another element.
            Need more sophisticated logic than extending the hit area
  fantasai: These points were brought up. Figured bring back to the
            group for discussion on how to move forward

  smfr: Question if we need this. Mobile browsers have something we
        call area hit testing. When you hit test you look in area
        around target that respond to events. One answer is UA should
        do it automatically somehow
  florian: Tempted to agree because how big hit area needs to be is
           not something author can know. Depends on type of thing
           used to click, finger or stylus. Ratio between css pixels
           and layout. It's guesswork
  florian: Probably UA is in better position
  myles: Similar. If you pinch zoom finger to page changes. Anything
         that's fixed is not right tool
  iank: Trying to remember if we had this conversation. We had people
        asking for this a while ago. Might be on us to circle back
        with what they were after
  astearns: Do you mean automatic for "this"
  iank: Not auto. A fixed length. I think chrishtr was more involved.
        I'm digging from my memory. But I don't think there's more we
        can do

  florian: Do all browsers do area hit testing or is it apple specific?
  smfr: Pretty sure it's all mobile browsers. We do it on mobile WK. I
        think Android has
  iank: I believe we have similar. Not area of expertise

  <fantasai> https://cloudfour.com/thinks/jagged-little-pill-issues-with-rounded-buttons/
  fantasai: Illustration from issue ^ Someone writing about rounded
            corners on buttons reducing click area and they wanted it
            fixed. That's another consideration
  fantasai: If we're seeing a lot of people doing this with hacks we
            should build in. If browsers can do it automatically and
            we don't need hacks that's idea
  iank: Potential for that. I have heard border radius reducing hit
        test. Argument for authors to opt out, particularly with large
        rounded corner. Unlikely there will be other elements
  iank: We likely should move on. Not sure how much more we can do on
        this today
  plinss: I'm in favor of leaving to UA. Might be worth specifying an
          algorithm to get interop
  astearns: That would start with defining hit testing
  florian: I believe there's an action on me for years ago to put
           something in spec. I don't think there's a good definition
           of it, so it's not in spec
  astearns: iank if you can dig up the request that would be great to
            add to the issue

CSS Contain
===========

How does @container resolve when no ancestor containers have been
    defined?
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6178

  miriam: Initial proposal was if not container as explicitly defined
          we'd fall back. Root element or viewport. Some sort of
          fallback for container queries so they always resolve
          against something
  miriam: Not convinced. When writing a container query assuming it's
          close to actual size. Fallback to full viewport will be
          dramatically wrong in a lot of cases. If authors are using
          current best MQ best practice for smaller layouts inside
          they get smaller fallback
  <iank> a fallback to something random seems pretty bad to me.(?)
  miriam: If can have containment on root you can make the choice
          yourself. Popular to do, but risky fallback
  miriam: We should not try and salvage container queries when there
          is no container
  iank: Agree. Sounds pretty hostile to fallback to something
        unexpected
  astearns: I voted for root in twitter but you have convinced me I
            was wrong
  astearns: Proposal is have MQ not do anything if no container to
            measure against
  miriam: Correct
  florian: Reasonable
  astearns: Objections to have container MQ not resolve when there is
            no ancestor container

  RESOLVED: Have container MQ not resolve when there is no ancestor
            container

:root/body viewport propagation and containment
-----------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/5913

  miriam: Not the one that raised this but Rune isn't here. Can't
          speak for browser engineers. Seems like users that would
          want to do containment at root. Would not like to disallow,
          but he has a few other proposals
  miriam: No strong feelings
  iank: There's 3 solutions from propagating direction writing modes.
  iank: The first is the giant hammer no one wants which is disallow
        on body
  iank: Second is when container queries apply we stop body
        propagating up to viewport
  iank: Third option is to do propagation but don't let it change
        after that. Stuck at initial value
  iank: Means if you have container query on html element and spec
        body under 500px changes writing mode wouldn't work
  iank: I think I prefer the 2nd option. When we have containment
        applied we don't form propagation. However, 2 valid solutions
  florian: Agree with iank. Propagating from body is for compat
           reasons. In general containment is not an operation that
           changes nothing. It changes layout because contains things.
           Saying it contains propagation it's fine. If you need it on
           the root, set it there
  iank: Not allowing you to dynamically change those properties inside
        container queries seems bad to 2nd
  fantasai: 2nd is if you apply containment to root or body we don't
            do body propagation but do from html root element
  florian: If you do on body doesn't prop to root but can't contain
           root
  florian: No containment on root. On body is possible, but stops
           propagate from body
  fantasai: Does contain apply to root general?
  florian: Not defined
  fantasai: If it does it would make sense that would also block
            propagation.

  iank: Problematic case is html element then body. Put a container
        query and the body can change style and propagate to root
  fantasai: Yes, not allowed. Containment on root or body should block
            body from propagation.
  fantasai: Nothing should block root from propagating
  fantasai: Assuming containment on root can be done. If it does not
            apply if it blocks body no strong opinion
  florian: Don't recall talking about containment on root.
  miriam: It is a use case people want. Might be able to get close
          with body containment. People are wanting the ability
  florian: Can you explain why root?
  miriam: I don't know people have thought through body or root. Main
          case is you could adjust body based on root query. There is
          a case to use a container query instead of MQ for viewport
          because container lets you respond to actual font size and
          dimensions rather than browser or user font size.
  iank: Once people get their hands on container queries they won't
        think about viewport MQs much anymore. They'll attach
        container query to root to adjust viewport
  fantasai: Given we're expecting containment to apply to root with an
            effect of some kind it should also block body from
            propagating
  fantasai: Proposal: containment does not block root from
            propagating, but it does block body
  florian: Containment to the body makes sense. Still confused on root
  fantasai: If containing the body and prevents propagation, why
            wouldn't containing and ancestor block?
  florian: Doing it on outer edge of thing being container. Means root
           doesn't effect parent. Doesn't change how things inside are
           effected. Might be useful
  fantasai: Containment means child doesn't interact with ancestors,
            right?
  florian: Yeah, okay. I can see it
  <miriam> +1 fantasai
  fantasai: Interface of container some things apply and some don't,
            but child shouldn't interact with grandparent
  florian: Body to root maybe should be blocked.
  fantasai: Body to root? Does that happen?
  iank: Root is HTML element?
  florian: Yes
  iank: Containment applies to html element fine.

  astearns: Proposal: If there is containment on body it stops
            propagation from body to root?
  florian: On body or root
  astearns: Proposal: If there is containment on body or root it stops
            propagation from body to root

  RESOLVED: If there is containment on body or root it stops
            propagation from body to root

Need style containment for container queries
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6213

  iank: Rune constructed some cases, linked in issue, with counters
        which would cause circularity
  iank: Way counters work is they walk all over dom tree. With this
        example constructed a circularity. We think style containment
        is required for container queries to work
  iank: Didn't read example in depth to explain how it's circular. If
        people are happy with Rune expertise.
  astearns: We can believe him
  florian: No problem believing him. But I think we had said style
           containment was odd and need to get back to it
  iank: I think style containment main use case is scoping counters
  florian: Yes, and quotations
  iank: I think, even that statement that counters can propagate
        outside the subtree it's clear you get circularities

  astearns: Is style containment impl?
  florian: Yes in Chrome
  florian: Can't remember if FF impl
  dholbert: Not in FF. Work in progress patch where emilio had
            objections about usefulness being debatable. I'd lean to
            wait until emilio is on. I can point him to the issue
  dholbert: I think he has strong opinions. Maybe he wanted a
            motivating use case. Perhaps this is the one
  iank: Agree with emilio. This is use case that makes it useful. We
        could tentatively resolve now or wait for emilio on next call
  florian: Either way, not last time we'll talk. Given objections from
           emilio we stopped on style containment and kept going on
           the rest. If we start requiring it we'll look closer and
           find other things to change
  astearns: Understand complexity to impl. Seems like one of the
            objections to style containment is why would anyone use
            it. Wonder if it makes sense to fold in effect of style
            containment to existing contain values because gets better
            containment and avoid circularity. Or a specific value for
            container queries that has this contained

  <miriam> https://github.com/w3c/csswg-drafts/issues/6174
  miriam: That gets to issue 6174
  miriam: Not on the agenda, but if we need style containment it's
          more argument to come up with new syntax. Happy to work with
          anybody that wants to work on it
  iank: Maybe path is ask emilio if he objects to style containment as
        a concept given these examples and then separate discussion
        about what sort of short hand do we want with miriam issue
        about container query style containment
  astearns: Anything else before we kick it back to issue?

CSS Fonts
=========

Extend font-size-adjust to take a pair of values: <metric> <number>
-------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6160

  fantasai: I think we can conclude on key parts. Added ability for
            font-size-adjust to take metric name and then target
            ratio. Question is what are initial keywords
  fantasai: Propose add ex, cap, ic, and ch
  fantasai: Jonathan Kew agreed. Wanted to discuss ascent and descent.
            I would suggest for now adopt the initial set and if we
            want to discuss additional do so in separate issue

  astearns: Suggesting the short names?
  fantasai: Yeah, to match units. And because operate in correct axis
            which may be height or width depending on writing mode
  fantasai: If we want independent of writing mode would need to add
            variants. We can start with this set

  myles: Feel like we should add ascent to the set. Cases where it
         might give you confusing results. If someone applies more
         likely to do good. Valuable to have
  fantasai: I think cap will be better in most cases
  fantasai: ascent and descent metrics are pretty wild when fonts are
            outside of latin. This applies to fallback and system
            fonts. You'd get something that works well until it really
            doesn't. I think that's a serious concern we don't have a
            way to address. Can keep talking. I think this is a good
            initial set
  astearns: Given that are you okay to start with these 4 myles?
  myles: fantasai are you saying you think ascent is harmful?
  fantasai: Yes. Someone will use it expecting reasonable and it will
            fallback to a system font on someone's machine that is
            very different
  florian: Arial and Arial Unicode MS are wildly different, to give an
           example
  fantasai: You'll end up with a font that's much too small
  fantasai: Slide 23 on the deck in the issue show and example of
            wildly different
  myles: I think it will be good in more cases then bad. For metrics
         that don't have units I think we should use longer names.
         Value of shortnames is proportional to number of times typed.
         For the lengths type a lot, but without it's only this one
         property. Longer names to make it clear is valuable
  fantasai: ic and ch they should respond to writing mode and text
            orientation so they could be width or height. We can't use
            a longer name for those. If ic and ch have shortnames it
            makes sense for ex and cap to also match shortnames
  myles: Point I was making about metrics that don't have units that
         match
  fantasai: We don't have those yet
  myles: With ascent we would
  fantasai: Yes. But for ones with a unit; 2 have to match because
            can't add height or width. Others might as well because
            why be different

  astearns: Proposal: Add these four to start with. After that we can
            add more
  astearns: Objections?

  RESOLVED: Start with ex, cap, ic, and ch

  astearns: myles, can I ask you to add a new issue for ascent and
            possibly decent?
  myles: You could

  astearns: Thanks everyone for calling in. We'll talk next week

Received on Thursday, 6 May 2021 20:35:43 UTC