16:02:00 RRSAgent has joined #css 16:02:00 logging to https://www.w3.org/2022/06/15-css-irc 16:02:02 RRSAgent, make logs Public 16:02:03 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 16:02:10 present+ 16:02:14 present+ 16:02:16 https://developer.apple.com/documentation/safari-release-notes 16:02:22 present+ 16:02:31 present+ 16:02:47 masonf has joined #css 16:02:59 present+ 16:03:09 present+ 16:03:13 present+ 16:03:19 present+ 16:03:26 present+ 16:03:35 present+ 16:03:42 Scribenick: fantasai 16:04:00 futhark has joined #css 16:04:24 Vote link for "isVisible" naming: https://github.com/w3c/csswg-drafts/issues/7317#issuecomment-1154394479 16:04:26 present+ 16:05:32 present+ 16:05:41 present+ 16:05:49 Topic: Composition of Inset Shadows 16:05:51 Present+ 16:06:06 astearns: Some additional discussion and a few attempts at mockups 16:06:10 present+ 16:06:13 present+ 16:06:24 astearns: trying to figure out what to do wrt text-shadow inset and text decorations 16:06:51 github: https://github.com/w3c/csswg-drafts/issues/7251 16:06:52 github: https://github.com/w3c/csswg-drafts/issues/7251 16:07:06 Sebo: Discussing paint order and compositing fill/stroke/shadow 16:07:11 Sebo: lot of discussion around that 16:07:24 Sebo: My point of view was that composition should be done so that the inset shadow is between fill and stroke 16:07:35 present_ 16:07:38 Sebo: but fantasai said that this could lead to some perf issues ... 16:07:39 present+ 16:07:55 flackr has joined #css 16:08:05 bramus has joined #css 16:08:05 fantasai: not perf issue 16:08:41 present+ 16:08:58 q+ 16:09:17 fantasai: One issues is that the stroke comes between the text and the text-decoration, so if you have a strike through you are going to stroke text then strike-through, so if you want to shadow between text and fill you are going to also need to shadow the text decoration 16:09:38 ... the point of shadows is to create an inset / outset effect 16:09:51 bradk has joined #css 16:10:04 ... so you if you have text and decorations with their shadows it looks super weird 16:10:22 ... for text that's decorated makes more sense to shadow text + decoration at the same time 16:10:33 ... so you we can't shadow between fill and stroke 16:10:48 present+ 16:11:03 ... that is also an issue because if you don't strike together a semi-transparent shadow will look darker on the decoration 16:11:04 ack smfr 16:11:23 smfr: for outset shadows I agree we want to composite + shade text and decoration together 16:11:36 Issue link, please? Sorry, I arrived late 16:12:02 ... does any of the illustrations in the example match what fantasai is proposing? 16:12:05 Thanks 16:12:09 fantasai: I don't think any of them are 16:12:21 smfr: can we get an illustration of what the behavior should be? 16:12:21 https://github.com/w3c/csswg-drafts/issues/7251#issuecomment-1145287101 16:12:34 fantasai: if we ignore the stroke on the second one that's the effect you'd get 16:13:12 ... if you consider the stroke because the text decoration has its own independent stroke, but the shadow effect in that comment is what you'd get 16:13:24 smfr: so you want stroking behavior of first line and shadowing behavior of the second? 16:13:27 fantasai: yes 16:13:31 q+ 16:13:37 I think it would be weird to have a stroke on the decoration but no shadow cast by that stroke 16:13:45 fantasai: I think most cases would have either stroke or text-decor 16:13:57 ... the top rendering doesn't quite work 16:14:15 ... you still have two things that are cut out but flat 16:14:36 ... the second one seems like you pushed the text into the canvas which is somewhat consistent with the effect 16:14:45 ... it's also consistent between inset and outset shadows 16:15:11 ... there's cases where drawing the inset shadow between fill/stroke looks better but the effect is that when you have decorations it'd look wrong 16:15:28 smfr: if we stroke using top and shadow using the bottom one it's going to look very weird too 16:15:48 fantasai: let's say you have strokes that are similar color for shades of yellow/orange 16:16:04 ... you cut that out and shade it behind the canvas 16:16:22 smfr: maybe Sebo or fantasai can illustrate the behavior in a drawing tool 16:16:49 ... if it's hard to do in a drawing tool it's possibly hard to do programmatically too 16:17:10 astearns: hard to do for me in a drawing tool doesn't mean hard to do in a drawing tool :) 16:17:22 fantasai: we can try to work on that tomorrow 16:17:44 astearns: whenever we can have them it'd be great to have pictures of what fantasai is trying to express 16:17:52 GameMaker has joined #css 16:18:00 ack Sebo 16:18:00 ... I'm having a hard time following 16:18:01 q+ 16:18:13 ack smfr 16:18:22 present+ 16:18:37 smfr: one more q and one more statement. Inset shadows are going to require masking on the text, so lots of texts with inset shadows are going to get pretty expensive 16:18:51 ... and authors can have very small text with very large blur radius 16:19:05 ... so not sure we need some limits here 16:19:23 astearns: if you have a shadow with a big offset does it mean that the shadow appears in another line? That sounds tricky 16:19:29 smfr: potentially? Good point 16:20:00 topic: Is color-contrast() ready to ship? 16:20:13 github: https://github.com/w3c/csswg-drafts/issues/7310 16:20:23 We believe the color-contrast() function needs significant modification to make it future-compatible and to make it work as intended, and propose deferring this feature to CSS Color Level 6 so that we can work on it without holding back the rest of CSS Color 5. 16:20:32 scribe+ 16:20:49 chris: Had a breakout about color-contrast(), partly prompted by an FO about using WCAG2.1's algorithm 16:20:58 chris: That is known to give bad results frequently, particularly in dark mode 16:21:03 chris: figures of around 40% being wrong 16:21:15 chris: There's work to develop a new one, but not ready, not normatively referenced in WCAG3 16:21:21 chris: Also complaints about syntax and so on 16:21:45 chris: On the one hand browsers have it working reliably, on the other hand it often give sthe wrong answer 16:22:01 chris: We don't want to ship something that is interoperable, but is harmful to the Web platform 16:22:10 chris: So we want to shift this to the next level 16:22:12 q? 16:22:16 q+ 16:22:27 astearns: Any arguments for not deferring? 16:22:27 ack lea 16:22:34 lea: I completely agree with deferring it, unfortunately 16:22:43 lea: one thing from breakout we wanted feedback from implementers 16:22:50 lea: breakbout was me, Chris, Adam, and fantasai 16:23:10 lea: Would help if we could ship color-contrast() without a specified algorithm, could use the best available algorithm 16:23:22 lea: we're concerned that implementers would be against doing something that changed over time 16:23:37 https://github.com/w3c/csswg-drafts/issues/7361 16:23:38 this? https://github.com/w3c/csswg-drafts/issues/7361 16:24:16 fantasai: if we went this route, could ship a subset of functionality sooner 16:24:24 fantasai: but need to make some syntactic changes to make future-compatible first 16:24:30 q+ 16:24:42 q+ 16:24:46 astearns: I would worry slightly about defaulting to best available, and then ppl expecting current results, and then getting different results when have a better algorithm 16:24:50 lea: yes, that's the worry 16:24:59 chris: Yes, concern that it will continue to do what it did earlier 16:25:14 chris: Also the target contrast values have different meanings depending on the contrast algorithm 16:25:31 chris: so I don't think it makes sense to use a mystery algorithm that works differently later on 16:25:38 ack chris 16:25:39 chris: it's not small progressive change, it's a major change 16:25:40 ack smfr 16:25:45 smfr: I agree with those concerns 16:25:58 smfr: also don't want push the burden of choosing algorithms to web authors 16:26:02 bradk has joined #css 16:26:08 ack fantasai 16:26:28 fantasai: I think if we wanna push for something sooner we'd need to go for something very minimal 16:26:37 q? 16:26:48 q+ 16:26:55 ... if it solves things like github labels or so then good, but everything else would need to be deferred 16:27:33 ... if that's something that people thing it's important (having black / white text) maybe we can have a very minimal function 16:27:49 chris: even "black or white on this color", WCAG gets wrong substantially a lot of the time 16:27:53 chris: I don't think it's worth doing 16:27:58 ack jensimmons 16:28:01 q+ 16:28:17 jensimmons: it's very hard to teach authors that what they were doing with a thing earlier, and failing them, it's very hard to unteach that 16:28:30 jensimmons: we might have a year of it working poorly, ppl say "this sucks, don't use it" for the next 5 years 16:28:34 s/WCAG gets/WCAG 2.1 gets/ 16:28:36 jensimmons: super hard to get people to change their habits 16:28:40 ack lea 16:28:58 lea: I think the idea behind shipping minimal white/black is not that WCAG is good enough, but it is more likely to be able to change it 16:29:03 lea: I think that was the thinking behind it 16:29:22 fantasai: Yes, we would swap in better algorithm as soon as we have it 16:29:44 astearns: putting aside whether to do simple version at all, sounds like we generally agree that the more complex color-contrast() function needs to be deferred 16:29:48 astearns: can we resolve on that? 16:30:08 RESOLVED: Move color-contrast() to CSS Color Level 6 16:30:25 astearns: I think we could continue discussing possibility of smaller subset of functionality in an issue 16:30:40 astearns: but might be better to continue work on the function that we want, and put that out as quickly as we can 16:31:17 chris: Now that we've resolved that, my focus is on remaining bits in Interop 2022 16:31:22 chris: color-mix(), interpolation, etc. 16:31:26 chris: so let's move on to other issues 16:31:48 Topic: [css-color-5] Clarify serialization of color-mix() 16:31:55 github: https://github.com/w3c/csswg-drafts/issues/6206 16:31:58 I just shared a rendering that I **think** is what fantasai was proposing 16:32:15 Shared in WebEx 16:32:28 chris: agreement in general, remaining issue is should things like hsl come out as themselves, come out as rgb, or use the color() function which retains more precision 16:32:31 Ok 16:32:43 chris: Emilio said it would be harder to ship, but could see the value of it, so not sure where we are on that 16:32:56 emilio: That's still my opinion 16:33:09 bradk has joined #css 16:33:21 emilio: slight preference to serialize as input color 16:33:27 chris: I can see arguments both ways 16:33:37 chris: I have a slight preference for serializing as color() 16:33:48 jensimmons: any visual difference in the result? 16:33:52 chris: there could be, but very slight 16:34:09 chris: if only 8-bit, and do mix of a mix, lose some precision and could result in banding 16:34:15 emilio: that's also an implementation detail 16:34:25 emilio: no reason why colors can't be more precise than 8-bit 16:34:34 chris: that's not what implementations do 16:34:39 bradk has joined #css 16:34:45 chris: spec mandates are higher precision for newer color spaces 16:35:05 chris: of course can implement at higher precision 16:35:11 chris: but concerned we'll get some degradataion 16:35:23 jensimmons: screens are getting better, and color precision going better, seems we should go with higher precision 16:35:39 ack fantasai 16:36:21 qq+ 16:36:23 fantasai: can be confusing to give two hsl colors and get a different color 16:36:50 ... from the precision argument I don't see why we won't just encourage implementations to have more precision 16:37:07 ack chris 16:37:07 chris, you wanted to react to fantasai 16:37:07 ... I don't understand why you'd have different precision on color() vs rgb() 16:37:24 chris: not just giving two colors, you specified color space to mix in and you get back in that color space 16:37:29 chris: shouldn't be that surprising 16:37:35 q+ 16:37:37 chris: wrt precision, implementations have been stuck on 8-bit for a long time 16:37:57 chris: but we've also written for other color spaces need 10-bit or 12-bit, or 16-bit for xyz 16:38:06 chris: so implementations going into those color spaces need more precision 16:38:22 chris: we did say that if you're giving a 0255 value in rgb you can get ?? when you serialize 16:38:36 s/??/decimal places/ 16:38:46 chris: but saying hope that everyone upgrades from 8-bit... harder than requiring upgrade for new stuff 16:38:49 emilio: I agree with fantasai 16:38:54 emilio: we use 8-bit colors for space-efficiency 16:39:11 emilio: so you can store an RGB color in one integer 16:39:20 emilio: but if we need more precision for htis feature, we can increase 16:39:32 emilio: if we implement high-precision sRGB we would do it both for color() and rgb() 16:39:42 emilio: there's no point in having two different representations for the same color space 16:40:05 astearns: just having higher precision for rgb() and color() wouldn't be sufficient, because color() can give you color spaces that are higher precision 16:40:35 bradk has joined #css 16:41:09 fantasai: if I mix 2 rgb colors in xyz space, do I get a color in rgb or xyz space? 16:41:13 chris: xyz space 16:41:22 faceless: if I mix 2 rgb colors in rgb space, I get rgb space back right? 16:41:24 chris: yes 16:41:29 s/faceless/fantasai/ 16:41:41 [missed] 16:41:50 astearns: so that you can plug that function into a nother property and not lose precision 16:42:32 q+ 16:43:27 ack emilio 16:43:37 fantasai: if color(rgb) has a particular precision, no reason for rgb() to have different precision 16:43:41 emilio: ... 16:43:53 emilio: given you need to return a color in ?? color space, I don't think it we serialize as color() or rgb() 16:44:00 q? 16:44:01 emilio: maybe color() is more consistent with other colorspace outputs? 16:44:03 q+ 16:44:11 q- 16:44:13 emilio: I'd be fine serializing as color() if easier for e.g. WebKit, for us it would be the same 16:44:23 astearns: I'm hearing a lot of, yeah, either way is fine I gues 16:44:32 astearns: so should we pick serializing as a color() function? 16:44:48 chris: you're going to get color() function anyway in any of the other color spaces 16:44:58 chris: if you just happen to pick srgb, need to pick what to do there 16:45:05 chris: imho more consistent to say get a color() function back 16:45:12 astearns: so proposed resolution is to serialize as a color() function 16:45:17 +1 16:45:29 lea: It's not always [missed] 16:45:55 lea: it's not always possible to serialize everything as color() function, there are functions only available in their own function e.g. lab() lch() 16:46:04 chris: That's true, but you won't see them in rgb() form either 16:46:06 q+ 16:46:13 lea: so does proposed resolution affect only mixing in rgb()? 16:46:31 lea: because right now that is the only color available both in functional notation and a color() function, and these are distinct color formats 16:46:40 lea: color() function has 10-bit and I think it can go beyond the 0-1 range 16:46:52 lea: I'm not sure if browsers want to use 10-bit format every time someone mixes in sRGB 16:47:10 lea: want to get clarity if this resolution is only about sRGB or about every color space ... which is not even possible 16:47:23 chris: If you choose to mix in sRGB then you'll get in sRGB color space 16:47:32 lea: so interpolation token in sRGB, then ?? interchangeable? 16:47:36 lea: does the syntax allow both? 16:47:56 s/??/interpolation token/ 16:48:05 lea: You specify which color space you interpolate is "in ", in gradients or color-mix() or whatever 16:48:19 lea: does that mean that "in rgb" is same as "in sRGB" ? 16:48:23 chris: you can't say "in rgb" 16:48:30 chris: we don't have a color space called "rgb" 16:48:32 lea: are you sure? 16:48:33 chris: yes 16:48:54 -> https://www.w3.org/TR/css-color-4/ 16:48:54 ack emilio 16:49:06 emilio: is there any good reason why lab colors can't be specified in color() notation? 16:49:17 chris: because color() started out as predefined rgb spaces 16:49:27 chris: it's a lot shorter for lab/lch to have their own functions 16:49:36 chris: we do have an open issue about throwing everything into color() function 16:49:51 chris: but that would just take existing syntax and make it longer 16:49:59 emilio: benefit is that color-mix() would have consistent output 16:50:11 jensimmons: want to get through these issues so can start shipping 16:50:28 astearns: proposed resolution is that we serialize as a color() function for color-mix that is being mixed in rgb 16:50:41 lea: no rgb, only sRGB, so makes sense to return color() 16:50:48 astearns: any objections to this resolution? 16:51:01 RESOLVED: color-mix() returns color() for sRGB mixes 16:51:12 q+ 16:51:14 Topic: [css-color-5] What should the behavior of the CSS Color 5 color functions be when passed currentcolor as 16:51:21 github: https://github.com/w3c/csswg-drafts/issues/6168 16:51:31 ack chris 16:51:43 chris: I think we solved this in the issue, iterated the text with emilio 16:52:01 emilio: for context with the group, it behaves like calc() - doesn't go away in specified style 16:52:12 emilio: goes away in computed style if possible, but preserves currentColor 16:52:26 emilio: but this is only observable in typedOM because getComptedStyle returns resolved colors 16:53:20 RESOLVED: specified style maintains calculations, computed style computes everything as far as possible (but maintains currentColor's identity), resolved color resolves through to absolute color 16:53:33 chris: I believe this also resolves item 5 on the agenda, 16:53:40 https://github.com/w3c/csswg-drafts/issues/7302 16:54:00 Topic: Ready to Ship Color Stuff 16:54:17 chris: Would love to see the interpolation for gradients shipping, can we resolve and say it's ready to ship? 16:54:34 chris: color-mix(), relative color syntax, and interpolation of gradients in non-RGB color spaces 16:54:42 github: https://github.com/w3c/csswg-drafts/issues/7310 16:54:56 astearns: no more issues on color-mix()? 16:54:58 chris: no 16:55:02 q+ 16:55:03 astearns: relative color syntax? 16:55:10 chris: No, and ppl liked it. I talked about it last week 16:55:19 astearns: interpolation of gradients? 16:55:28 chris: Uses the same syntax as color-mix(), "in colorspace" 16:55:36 astearns: Any objections to marking these ready to go? 16:55:43 ack emilio 16:55:55 emilio: So, color-mix() I'm fine saying current spec is shippable. We've gone through it a lot 16:56:30 emilio: The gradient one is relatively straightforward, would love to sanity-check it but seems reasonable assuming interpolation token gets preserved everywhere and no fancy computed style shenanigans, just only affects rendering 16:56:44 emilio: about relative color syntax, less enthusiastic because only one implementation 16:57:12 emilio: and their implementation seems to have same interop concerns as color-mix() where we had differences between WebKit / gecko 16:57:23 emilio: so not so sure about it ready to ship 16:57:52 astearns: we should have a high bar to say ready to ship, regardless of where spec in the process 16:58:02 gtalbot has joined #css 16:58:07 [discussion about relative color syntax] 16:58:18 emilio: keep the token in specified and computed style, only affects rendering 16:58:22 emilio: if so, that seems reasonable 16:58:31 emilio: I think straigthforward enough, doesn't need super deep review 16:58:36 emilio: relative color syntax is trickier 16:58:50 chris: gradient is doing color-mix(), just doing it in all possible percentages. It's the same calculation 16:59:01 emilio: think it's probably fine. I would like more feedback on relative color syntax 16:59:07 emilio: but gradient interpolation seems straightforwad 16:59:11 ack fantasai 16:59:15 scribe+ 16:59:34 fantasai: happy with emilio's proposal to resolve on color-mix() + gradients but not yet on relative colors 16:59:46 astearns: declare color-mix() and non-rgb gradient interpolation as ready to ship 16:59:49 astearns: objections? 17:00:06 high five! 17:00:06 RESOLVED: color-mix() and gradient interpolation are ready to ship 17:00:08 RESOLVED: colr-mix() and gradient non-sRGB interpolation are "ready to ship", add to Snapshot 2022 17:00:20 Topic: Reminders 17:00:29 astearns: Reminder that we have a scroll animation call tomorrow 17:00:35 Meeting closed. 17:03:02 gtalbot has left #css 17:03:13 gtalbot has joined #css 17:03:26 zakim, end meeting 17:03:26 As of this point the attendees have been plinss, bkardell_, smfr, lea, chris, jensimmons, masonf, argyle, fantasai, dandclark, emilio, Sebo, chrishtr, futhark, tantek, dbaron, 17:03:29 ... jfkthame, miriam, flackr, bramus, GameMaker 17:03:29 RRSAgent, please draft minutes v2 17:03:29 I have made the request to generate https://www.w3.org/2022/06/15-css-minutes.html Zakim 17:03:31 I am happy to have been of service, astearns; please remember to excuse RRSAgent. Goodbye 17:03:35 Zakim has left #css 17:03:46 jfkthame has left #css 17:03:56 gtalbot has left #css 17:07:14 bradk has joined #css 17:41:58 jensimmons has joined #css 18:13:35 fantasai has joined #css 18:15:16 plh has joined #css 18:18:24 jamesn has joined #css 18:50:09 jensimmons has joined #css 19:22:33 jensimmons has joined #css 19:42:05 jensimmons has joined #css 21:21:08 GameMaker has joined #css