13:10:14 RRSAgent has joined #css 13:10:18 logging to https://www.w3.org/2025/04/01-css-irc 13:10:18 RRSAgent, make logs Public 13:10:19 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 13:11:00 present+ 13:11:15 ScribeNick: TabAtkins 13:11:16 present+ 13:11:39 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11824 13:11:40 Topic: [css-color-adjust-1] Forced Colors Mode Webdriver Emulation 13:11:40 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11824. 13:12:19 alisonmaher: this proposal is to add a new webdriver extension that keeps track of forced-color-mode emulation state, proposed light/dark 13:12:34 alisonmaher: it forces forced-color-mode if it's not none, and update the ysstem color mappings 13:12:41 alisonmaher: so it's a consistent experience across browsers 13:12:53 alisonmaher: put up a PR, using windows colors currently but we can do whatever 13:13:09 alisonmaher: so do we want to pursue? and not sure about process, if we need webdriver approval or just css 13:13:29 astearns: any webdriver already in? 13:13:42 alisonmaher: none in yet, but the multi-screen stuff has a proposal. i think this'll be the first. 13:13:56 astearns: anyone know how the webdriver folks like to have proposals put together? 13:14:08 alisonmaher: not sure. i looked at other webdriver specs, seemed better to put it in the sepc itself 13:14:12 alisonmaher: we can check 13:14:22 https://drafts.csswg.org/css-viewport/#automation is the webdriver part for viewports 13:14:30 TabAtkins: we took a resolution to put webdriver stuff in our specs a while back 13:14:37 ack fantasai 13:14:39 ...suggest we go with this for now and then check with webdriver folks 13:14:52 fantasai: tangential - how are we planning to test the final hookups to ensure it's working? 13:15:07 alisonmaher: when we test this we make the call to set one of the emulation states 13:15:22 alisonmaher: so the expectation would test the emulation's forced colors 13:15:51 alisonmaher: so we coudl use none to check it's not applied, then verify non-none works with different colors 13:16:17 fantasai: slightly different question acutally. we're gonna test this emulation, we can tell things are working as expected. 13:16:42 fantasai: but if you have a browser that supports teh webdriver emulation but doesn't acutally support asking the OS about the light/dark status, they should presumably fail *something* 13:16:48 lea has joined #css 13:16:55 alisonmaher: suppose could be thru the media query 13:17:04 fantasai: how do we test the MQ then? 13:17:21 q+ 13:17:39 astearns: your question is valid, but there's nothing in WPT that lets us close that final gap. it'll have to be something in the browser's own infrastructure that'll verify it work 13:17:52 fantasai: yeah my point is just that we should have some form of test that'll verify this 13:18:09 florian: as much as we like automated tests, i think there are some things that are impractical to test, and this might be one of them 13:18:13 ack emilio 13:18:35 emilio: similar. this feels like you'd need to tweak an OS setting, assume the browser wants to pay attention to that. 13:18:35 Even the browser's own testing infrastructure will be an emulation layer 13:18:44 present+ 13:18:48 emilio: like, firefox lets you force colors regardless of the OS, that's similar to what we're using in wpt 13:19:03 emilio: so wpt can test that there's a switch and that it works correctly, but it can't test when the browser decides to trigger that 13:19:16 fantasai: yeah, that just seems to be a hole in our testing plan 13:19:25 jensimmons has joined #css 13:19:25 alisonmaher: that seems to apply to testing system colors in general 13:19:33 alisonmaher: but this'll cover the rest of the space past that 13:19:41 fantasai: right, i think this is definitely an improvement. 13:19:44 present+ 13:19:52 fantasai: just be sure not to represent that this covers the whole space 13:19:59 astearns: so are we looking for a resolution to add this? 13:20:08 alisonmaher: yes, and i can do the extra work to double check with the webdriver folks 13:20:12 astearns: and would be easier with a spec in place 13:20:28 astearns: proposed resolution is to accept the PR, and go check with webdriver folks for approval 13:20:30 astearns: objections? 13:20:42 RESOLVED: Accept the PR, check with webdriver folks for approval 13:20:43 s/impractical to test, and this might be one of them/impractical to test automatically, and this might be one of them. We should still have shared tests but they'll have to involve manual steps 13:21:01 fantasai: process - forced colors is in CR, so we shoudl make edits in ED, ping webdriver, and then publish an updated CR 13:21:30 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11462 13:21:30 Topic: [css-align] `justify-items` and block splitting inline 13:21:30 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11462. 13:22:21 oriol: when justify-self:auto, spec says it should resolve to the value of justify-items of the parent box 13:22:33 oriol: there's one exception - when finding the position of an abspos item 13:22:42 oriol: this implies that "parent box" means containing block 13:22:56 oriol: with one exception - a block inside an inline. the inner block splits the inline 13:23:04 oriol: and the inline does not establisha containing block 13:23:12 oriol: so from which element should we take justify-items, if any? 13:23:22 oriol: taking it from parent inline seems weird to me 13:23:27 oriol: so not fond of the current spec text 13:23:34 oriol: another otpion is taking it from the CB 13:23:57 oriol: or Ian mentioned saying that, currently jsutify-items applies to all elements, we can say it doesn't apply to inline elements 13:24:12 oriol: so if the parent is inline, we'd treat justify-self:auto on the child as "normal" 13:24:20 oriol: no strong opintion, i think spec just didn't consider the case 13:24:23 ack fantasai 13:24:29 fantasai: you're right the spec didn't consider this case 13:24:36 fantasai: i think the intent of "look at the parent" was to do something simple 13:24:41 fantasai: which is why we didn't look at the CB 13:24:54 fantasai: two things that shoudl remain true are... 13:25:02 fantasai: i think we need to ignore anonymous boxes for this purpose 13:25:13 fantasai: for flex and grid they need to look at their parent, for abspos they dont' look at anything 13:25:22 fantasai: for here, probably shoudl do whatever is simplest 13:25:40 fantasai: whether it's look at parent element (doable during style resolution) or look at something else 13:25:42 flackr has joined #css 13:25:43 q+ 13:25:46 present+ 13:25:50 ack TabAtkins 13:25:54 TabAtkins: agree with fantasai , we should do the simple thing 13:25:59 TabAtkins: block-splitting-inlines are weird 13:26:09 TabAtkins: I would compute to normal, i.e. it doesn't take from it's parent if its parent is inline 13:26:19 TabAtkins: seems like easiest thing to do 13:26:25 q+ 13:26:39 ack florian 13:26:44 florian: in agreement, the msot intuitive thing is to walk up the tree until you find a block 13:26:55 florian: but this is a weird situation and doesn't really matter, so going to "normal" seems fine too 13:27:07 schenney has joined #css 13:27:16 i'd prefer "normal" 13:27:16 present+ 13:27:19 astearns: so proposed resolution from Tab is to have "auto" compute to "normal" if the parent is inline 13:27:43 oriol: i'm fine. not sure if it's actually simpler or not, in Servo we have the style fo the CB but not necessarily the parent. This sounds good to me tho 13:28:00 astearns: and interpreting Ian's comment as agreeing with TAb 13:28:02 astearns: objections? 13:28:28 florian: so this happens at style resolution time, right? so the fact that the inlne box isn't a parent of the block box at tree-building time doesn't matter, correct? 13:28:54 present+ 13:29:17 iank_: incorrect, i think we're the only one that *does* respect the parent/child relationship (we get filters correct, for example) 13:29:26 iank_: but i don't think it actually matters that much for this 13:30:10 astearns: so objections again? 13:30:26 RESOLVED: if parent is inline, then justify-self:auto computes to normal 13:30:42 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11460 13:30:42 Topic: [css-inline-3] Requiring authors to declare two values for `text-box-edge` is a mistake 13:30:42 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11460. 13:31:08 jensimmons: right now, t-b-e requires an author to specify both values 13:31:24 jensimmons: if they just say "cap" not "cap auto"/etc, then it's supposed to be invalid, but there's not interop 13:31:45 jensimmons: i think that's a mistake, i was writing an article in december and foudn it hard to teach because i had to teach the whol elinebox model 13:31:53 jensimmons: i think we should allow declaring just one and make some assumptions 13:32:05 https://github.com/w3c/csswg-drafts/issues/11460#issuecomment-2769319469 13:32:05 jensimmons: if they declare cap/edge/alphabetic, we assume the other is auto 13:32:44 The whole model is indeed complex to understand. I support making easy things easy, and letting authors get what they want without needing to understand the whole thing if we can. 13:32:49 jensimmons: there's a question about.... shouldn't we try to do something more magic for authors? like if you are trimming the cap edge you probably want to also trim the alphabetic edge. this started from an author request to trim both with just one value 13:33:26 jensimmons: but when i was makign demos, i foudn there are plenty of times you do want to trim to both cap and alphabetic, but there are plenty of times you want to do something different too. so i think we should just default "auto" for the missing one 13:33:36 +1 to this proposal from me, I think it makes sense to default to auto 13:33:45 s/default/default omitted values/ 13:33:52 s/what they want without/what they probably want without 13:33:59 astearns: any concern that each individual value expands to the correct two values differently? 13:34:16 astearns: is that hard to teach, or is it more like any partiuclar author is only using a few of these, and our default expansion for that value is probably what they want 13:34:38 jensimmons: i think for "text" becoming "text text"/etc I think it's pretty obvious, tho I'd be interested in hearing if someone thinks differently 13:34:59 jensimmons: you don't in one rule that "ideographic" and "cap". you might mix them on one page, but they'll be on different elements 13:35:13 ack fantasai 13:35:31 fantasai: we have a bunch of places where if you *can* duplicate the value, we do, and we do something else if we can't 13:35:37 dholbert has joined #css 13:35:46 present+ 13:35:52 astearns: yeah, this is just a little more complex, since you have "auto" sometimes in first, sometimes in second 13:36:17 fantasai: you're basically default the "other" value. it's like background-position, if you say "left" you get "center left", if you say "top" you get "top center" 13:36:29 q+ 13:36:35 jensimmons: question is just if someone is doing ideographic a lot, is "ideographic" alone implying doubled? 13:36:49 florian: doing it both ways makes the most sense by defualt. i agree with the proposal 13:37:04 florian: just give people what they likely want by default without having to udnerstand the whole model 13:37:14 ack kizu 13:37:23 jensimmons: yeah, just should have a default rather than the current bheavior which is invalid, which doesn't do anything 13:37:34 s/doing it both ways/doing ideographic both ways 13:37:59 kizu: as an author, if we could have alphabetic/ideographic as shorter keywords, a bit long to write when we have other shorthands like "cap" 13:38:13 kizu: like "cap a" instead of "cap alphabetic" 13:38:23 astearns: probably fair, but a separate issue 13:38:38 +1 to the proposal 13:38:49 astearns: comments? objections? 13:39:14 RESOLVED: Allow text-box-edge to take a single keyword, expanding as specified in Jen's final comment 13:39:28 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11472 13:39:28 Topic: [css-inline-3] text-box accumulation unexpected behavior 13:39:28 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11472. 13:39:44 fantasai: probably helpful to look at the issue examples 13:39:57 fantasai: an author was playing with text-box-trim and was surprised when it cut into a button he'd styled 13:40:32 fantasai: reason is because, normally if you have padding/etc we dont' trim thru the padding/border. but the button was an inline block, so it sits on a line, and we ignore the contents of lineboxes when trimming. we just trim to the root inline box no matter what's on the line. 13:40:53 fantasai: it seems like this is something that people will trip over as well. there are workarounds, but there are reasons the author might have wanted to use inline-block specifically 13:41:03 fantasai: so options are we could make authors work around this 13:41:28 fantasai: or we could make a rule that says if you have an inline-block on a line, that pushes out the text edge to the margin edge of that block. (rather, any atomic inline, not just inline-blocks) 13:41:50 fantasai: so the rule for text trim would introspect into the linebox content, and if it finds an atomic inline it would push the edge out 13:41:56 fantasai: so wanted to check the wg's opinion 13:42:04 jensimmons: if we made the second change... 13:42:24 jensimmons: i could also see this author applying text-box-trim to the button itself to get the text vertically centered 13:42:28 jensimmons: will that get screwy? 13:42:43 fantasai: no, because it'll push to the amrgin edge fo the box *after* the box's position ahs been computed 13:43:05 q+ 13:43:10 fantasai: if they were using text-box-trim on the button itself that'll change the button's sizing. then if it's on the paragraph too, we don't care about *how* the atomic inline figured out its margin box, we'll just use that 13:43:14 ack dbaron 13:43:24 are you sure you want margin-box and not border-box? e.g. margins on inline-blocks are typically used to pad the line-box. 13:43:34 dbaron: i think from a high level persepctive the result you want makes sense. 13:43:38 iank_, yes I'm sure 13:43:49 dbaron: tryign to remember how text-box-edge works, waiting for the spec to load 13:44:05 iank_, I think if the author asked for that extra space, we should give it to them 13:44:12 ack florian 13:44:15 florian: maybe a silly question 13:44:29 florian: would it be an option to go with border edge rather than margin edge? or am i missing something? 13:44:31 iank_, ... although I suppose maybe it's similar to margin collapsing 13:44:37 iank_, hmmm 13:44:42 q+ 13:44:49 dbaron: i think we're reasonably consistent that waht matters for atomic inlines is their margin edge 13:45:16 iank_: i ahd the same question. margins are typically used to simulate the same metrics as the text around it. so if margins are used that way it makes sense to trim to the border box, i think 13:45:32 iank_: becuase if they're being used to simulate a descent, and you're trying to trim the descent 13:45:33 ack kizu 13:45:59 kizu: if we want this behavior, we need a way for an element to opt out, if it *wants* to hang from the line you're trimming to 13:46:23 kizu: if we use margin box you could use negative margin to bring it back down (unless we do something magic there to not consider negative margin for text-trim) 13:46:47 astearns: similar question. first option was make the author fix it. if we change the default behavior, can they fix our choice? 13:47:09 fantasai: i think roman's point is correct. if we use the margin edge, author can use negative margin to shift that edge inward 13:47:16 fantasai: but if we use the border edge, author has no control 13:47:52 fantasai: so proposed reoslution is text-box-trim does not trim further into the linebox than the outermost margin edge of any atomic inlines in the linebox 13:48:03 astearns: and that's sufficient to solve this author's issue? 13:48:06 fantasai: i believe so 13:48:12 astearns: objections? 13:48:26 RESOLVED: text-box-trim does not trim further into the linebox than the outermost margin edge of any atomic inlines in the linebox 13:48:40 (I presume this affects how text-box-trim affects block containers.) 13:48:43 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11365 13:48:43 Topic: [css-inline-3] -top/-bottom vs -over/-under 13:48:43 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11365. 13:49:05 fantasai: in 10713 we resolved to add reorderable kewyrods to text-box-edge 13:49:12 fantasai: i didn't edit that into the spec yet because i ran into this issue 13:49:16 fantasai: what keywords do we actually want 13:49:30 fantasai: in horizontal text top/bottom are pretty obvious. we ahve text-top/text-bottom etc 13:49:35 fantasai: when you have vertical it's more interesting 13:49:43 s/kewyrods/keywords 13:49:56 fantasai: in our specs, and in things like ruby-position, we use the terms over/under to refer to "above the baseline" and "below the baseline" 13:50:19 fantasai: so what keywords do we want to use for text-edge? top/bottom, or over/under, or a mix? text-top and ideographic-over? 13:50:35 fantasai: murakami-san proposed we be consistent with top/bottom keywords we have already. 13:50:45 fantasai: i don't have a strong opinion, we just need to resolve on that 13:51:53 florian: so that would be consistent with the opentype naming? 13:52:06 fantasai: so over is sometimes top, sometimes left, sometime sright, depending on WM 13:52:14 fantasai: top in CSS, aside from vertical-align, is always page top 13:52:22 fantasai: but in vertical-align it's the over/udner side 13:52:30 fantasai: which can be left/right 13:53:08 TabAtkins: i was just confused, i thought florian was saying the opentype "top" wasn't always the css "over" 13:53:12 fantasai: no, it's always the same 13:53:24 jensimmons: so everyone's consistent that "top" isn't always top 13:54:08 astearns: and we can always go with top/bottom for now and always add over/under in the future as aliases if we need to 13:54:10 fantasai: yeah we could 13:54:15 florian: don't expect we'll need to tho 13:54:26 astearns: so proposed resolution is we stay with text-top/text-bottom? 13:54:36 fantasai: -top and -bottom for all keywords in this property 13:54:39 astearns: objection? 13:55:04 RESOLVED: use -top and -bottom as the direction suffix for all keywords in this property (referring to over/under) 13:55:25 github-bot, take up https://github.com/w3c/csswg-drafts/issues/10713 13:55:25 Topic: [css-inline-3] Allow re-ordering of keywords 13:55:25 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/10713. 13:55:43 fantasai: I think the last issue is what was blocking this issue, so assuming we're still fine with the reordering I'll make these edits 13:55:55 fantasai: #11365 13:56:34 github-bot, take up https://github.com/w3c/csswg-drafts/issues/2528 13:56:34 Topic: [css-fonts-4] Feature for making text always fit the width of its parent 13:56:34 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/2528. 13:56:40 kizu: i have some slides 13:57:27 kizu: [presents slides] 13:57:40 kizu: this issue was opened back in 2018 13:57:59 kizu: therea re many libraries that try to do this effect 13:58:09 kizu: lots of typography examples in the real world, but it's not on the web 13:58:27 kizu: i wrote two articles about some pure-css techniques 13:58:42 kizu: these were my most popular articles, so clearly people want these features 13:59:00 kizu: here's an example of text sizing to fit its container 13:59:21 kizu: here's another example, obviously it's "fit to inline space", not necessarily width 13:59:43 kizu: fitting text is complicated, this is why we didn't ahve it for a long time 13:59:50 kizu: my workarounds are hacky, as usual 13:59:57 kizu: but it's possible. 14:00:02 kizu: there are no loops, it works 14:00:11 kizu: want to talk about some complexities 14:00:19 kizu: first issue is optical sizing 14:00:43 kizu: generally when we size text the size is proportional to its font-size, but opsz also lets the font respond to its size 14:01:04 kizu: see in this example, the change is non-linear. can even change the glyphs itself 14:01:15 nigel has joined #css 14:01:35 kizu: another example, in cSS there can be fixed-size elements on the line, margins or letter-spacing, etc. 14:01:44 kizu: so just getting text width and calcualting a ratio doens't work 14:01:58 kizu: there are some cases you can't solve 14:02:22 kizu: but we don't necessarily need to solve these, okay for them to be broken. i have some ideas to minimize issues tho 14:02:39 kizu: one idea is when we first size the text, we freeze some values 14:02:54 kizu: this is the most complex part, but i don't think obscure cases should prevent us from solving common ones 14:03:05 kizu: common cases are straightforward, and fixed-size elements are solvable 14:03:14 kizu: i wont' go thru full details but here are a few 14:03:16 kizu: timing 14:03:43 kizu: i think it should happen when you first render text at normal font size, apply wrapping and balancing, then before justification alignment, we try to fit the text 14:03:47 kizu: this could be configurable 14:04:08 kizu: with freezing... 14:04:18 kizu: might need to render the text up to four times, but not more, to handle frozen sizes and optical sizing adjustments 14:04:48 kizu: in the first step we render as normal, then freeze the nonlinear dependencies. later renderings we use those frozen sizes 14:05:33 kizu: this allows us to know some variables in the algo, next time we can account for static space without freezing, then we can freeze them again in the final size. will make optical sizing approximately right, even if not exactly correct. looks good in my experiments 14:05:40 kizu: for the API, a few options 14:05:48 kizu: think we should start from font-size 14:06:03 kizu: font-size is our minimum size. this lets us do wrapping and balancing. 14:06:40 kizu: gives us better fallback too, if a browser doesn't support the resizing it'll be rendered as normal at the specified font size 14:06:53 kizu: and it's more accessible, font can't get too small to read 14:07:04 kizu: so no scaling down 14:07:22 kizu: a proposed proeprty is text-grow: || 14:07:33 kizu: = none | consistent | per-line 14:08:02 kizu: consistent is we consider all lines to have the same size. easier to implement, we just find the longest line box and then apply the font size to everything 14:08:11 kizu: per-line change each line independently, after wrapping 14:08:14 q+ to ask about mixed font sizes 14:09:01 kizu: for , i think we want it. if you don't have this the font can become too large. maybe a default of 100vb 14:09:12 I might suggest vmin 14:09:34 kizu: there's a codepen with a custom element that implements this algo 14:09:43 q+ 14:09:45 kizu: all css, just some js to update a cq inside 14:09:53 q+ 14:09:55 kizu: all examples from this presentation are in the codepen 14:10:24 kizu: thanks to adam argyle for checking if this is viable in chrome, thanks to penelope who asked questions on bluesky, and thanks to roel nieskens 14:10:37 astearns: mixed font-sizes 14:10:41 q+ 14:10:48 astearns: similar to the case with non-text elements that are static 14:10:56 astearns: if the content itself has multiple font sizes on a line, how is that handled 14:10:58 ack astearns 14:10:58 astearns, you wanted to ask about mixed font sizes 14:11:07 kizu: if font-size is in 'em' it works as expected 14:11:24 kizu: they'll scale with the rest of the text 14:11:42 kizu: there are some examples of that in my examples 14:12:10 astearns: i think for some, maybe most calculations that's the way to go 14:12:36 astearns: worried about specified font-size that has a calculation with min/max, want to make sure the result doesn't go over the specified max for the font-size calc *or* the resizing calc 14:13:00 kizu: there are some edge caess to consider. i think using the initial font-size for anything complex works for 99% of cases 14:13:19 kizu: if an author wants to do something complicated, i think they can work around it. 14:13:20 ack florian 14:13:27 q+ 14:13:28 florian: i agree this is very desired 14:13:37 florian: and if we need to cut corners in some cases it'll be okay, people will work around 14:13:44 Algorithm: https://www.tldraw.com/f/_sxU8eCZDcHbLvnDPMk4P 14:13:44 CodePen: https://codepen.io/kizu/pen/QwWVXxQ 14:13:44 My slides: https://drive.google.com/drive/folders/1og8QAU1m0QSaqxNGX6rSYUvQhfTy3PIq?usp=sharing (with videos, so not hosted on my site, will later make a pdf) 14:13:47 ntim has joined #css 14:13:58 florian: one question, i think there are two cases (maybe more) where the avaialble inline-size for the line changes based on the height of the line 14:14:03 florian: floats and [another case] 14:14:04 present+ 14:14:17 florian: maybe it's in the algo, but not mentioned in the presentation. what happens if growing the height makes it narrower? 14:14:34 kizu: my example uses CQ so it requirest containment. could require that if we need to. 14:14:48 kizu: don't think we'd actually have a case where containment doesn't work but you want to fit a space 14:14:49 s/[another case]/fragmentation/ 14:14:59 kizu: i think more complicated case is maybe initial-letter 14:15:03 ack jensimmons 14:15:17 jensimmons: thanks for bringing this to the agenda, been talked about a long time 14:15:29 jensimmons: definitely something authors want, provides beautiful possibilities for headlines/etc 14:15:31 +1 14:15:46 jensimmons: it seems like your whole thing assumes the way you want to grow is to increase font-size. 14:15:53 jensimmons: think that's common, but not necessarily only way 14:16:07 q- (same point as jen) 14:16:08 jensimmons: maybe people want to keep the font-size but increase a font axis, like make it bolder 14:16:10 q- 14:16:28 jensimmons: should maybe design it to do font-size scaling by default, but another control that lets you specify another control 14:16:32 jensimmons: probably just one, to keep it simple 14:16:37 q+ to agree with jen 14:17:05 jensimmons: a lot of examples you showed are classic, but something in those examples is a lot of variation - one line super big, etc 14:17:28 jensimmons: interesting you broke it down between "consistent" and "per-line", but in your per-line it doesn't look like those posters 14:17:48 q+ 14:17:50 jensimmons: the amount of variation ends up pretty subtle, not as aesthetically pleasing 14:17:54 jensimmons: so something to think about 14:18:11 jensimmons: authors could force breaks, of course, making the worse rag ever before scaling 14:18:19 +1 to having authored forced breaks for larger variation per line 14:18:21 jensimmons: authors would also possibly want to change the font per line 14:18:54 jensimmons: because we're thinking thru the order of operations, think there could be a spot, just before things are made bigger, you've got some pseudo-elements where you could set the font to something else 14:19:13 jensimmons: so then you'd linebreak, swap out fonts at the last minute, then scale to fit 14:19:33 jensimmons: i think if you want to emulate those classic layouts you have to think about this 14:20:04 kizu: for other axises - i was thinking about it, but couldn't come up with an algorithm that worked and was simple 14:20:15 kizu: increasing font-size is just increasing proportional to the available space, with some wrinkles 14:20:27 kizu: some fonts i saw coudl use optical sizing to achieve this effect. 14:20:35 kizu: but don't think we can generally substitute 14:20:47 kizu: other example, like increasing sapcing or using width axis, would be nice 14:20:58 kizu: i think we can start with width and then see if there's any other axises we can depend on 14:21:15 kizu: problem is axises aren't linear. not possible without looping 14:21:38 kizu: we can maybe start with just consistent version and then see if people need the per-line version 14:21:53 kizu: people can split the lines themselves for now, use a wrapper to apply different fonts 14:21:58 kizu: not sure what the blockers are for nth-line 14:22:17 q? 14:22:20 jensimmons: yeah, i get that what you've figured out so far doens't allow the other things to work, but we should think about it 14:22:27 jensimmons: stretch and weight are most important 14:22:38 jensimmons: optical sizing isnt' the way to pursue, i think. it's meant to be a tweak. 14:22:42 jensimmons: and should peg to font-size 14:22:58 jensimmons: but stretch and weight are two important options to make it bigger without changing font-size 14:23:04 q? 14:23:31 kizu: yeah would be nice to have other controls, maybe possible to adjust the algorithm 14:23:54 kizu: but i think when you want to use other controls, having an ability to stretch just font-size would already be very helpful. eliminates one fo the things you need to tackle 14:24:06 q+ 14:24:09 kizu: can just adjust your spacing initally, then have the browser auto-adjust the font-size to fit 14:24:34 jensimmons: right, just that variable fonts have already been invented, shoudl push ourselves to make sure it's possible to handle and we're not boxed out of handling that in the future 14:24:56 jensimmons: for second point, your reaction that it could be hard and we should maybe only do consistent, i think that's wrong. we should go for it. 14:25:05 jensimmons: this is something people have been thinking about since the days of cufon 14:25:06 each line is the more important version, imo 14:25:16 jensimmons: we should be ambitious and figure it out 14:25:53 jensimmons: especially in the era of responsive design, using manual spans is a hack. letting wrapping happen then embiggening each line by itself is very attractive. just think we need to take it further 14:26:15 ack iank_ 14:26:33 iank_: one use-case we want to cover is shrinking, down to a minimum 14:26:56 iank_: say you're on a small-screen device, have a heading at a particular size, want to shrink down to a reasonable minimum size 14:27:06 iank_: think there's details to work out on how the actual scaling works 14:27:15 iank_: just optical sizing doesn't cover all the degenerate cases 14:27:29 iank_: one algo we might land on is effectively doing a transform, no additional glyph selection 14:27:43 iank_: don't want this to be restricted to varaible fonts that do support this feature 14:28:05 iank_: i just don't want us to get into a situation where we're bisecting the inline-size 14:28:34 iank_: i don't think we need to worry about containment here, like what florian brought up. floats are fine, we can just always move forward in the layout. 14:28:45 kizu: for transforms, was wondering if we wanted to do it this way 14:28:49 [walking forward seems reasonable] 14:28:59 kizu: but if there are non-text elements inside, like px margins, scaling might not look right 14:29:17 iank_: i mean could scale the individual text segments, not necessarily the atomic inlines 14:29:31 kizu: yeah could be good. would ahve to account for optical sizing 14:30:27 I have made the request to generate https://www.w3.org/2025/04/01-css-minutes.html fantasai 14:30:35 TabAtkins: Ian, I think you've been confused here - optical sizing isn't part of the proposal. it's just something that applies *when* you scale the size, if a font doesn't use it there's no issue 14:30:50 kizu: my proposal does a few passes, applies optical sizing at one point then freezes it. 14:31:03 kizu: currently four layouts, can skip them if there's no optical-sizing/etc 14:31:03 teams just crashed for me - but i don't think that all the cases are covered by the number of passes. 14:31:16 Yes, optical sizing just goes along for a ride when font sizing is made bigger or smaller. And it should do so here. Optical sizing is not designed to be _the mechanism_ for making a font bigger / smaller (in general, not just for this purpose). 14:31:43 ChrisL: agree with Jen, but i'd like to elaborate 14:31:55 ChrisL: given we already have variable fonts and they're becoming widespread, we shoudl design this primarily for variables 14:32:06 ChrisL: many things you can do with varaible that you can't do with, like, only 3 fonts 14:32:18 ChrisL: should just give reasonable results where you dont' have a variable font 14:32:30 ChrisL: agree that size is one thing authors want to change, but the width and weight are other things 14:32:36 ChrisL: not sure they'd want to just pick one 14:32:41 ChrisL: can imagine setting breakpoints 14:32:55 \me fantasai unfortunately the way that it was set up with the mics, it wasn't possible, but even so, the video camera in the room only shows people in the chairs closest to the front of the room 14:33:01 q+ 14:33:03 ack ChrisL 14:33:03 ChrisL, you wanted to agree with jen 14:33:03 ChrisL: in terms of capabilities, people ahve wanted this for ages, convinced we should add but not sure exactly the details 14:33:18 ChrisL: this isn't bisection, just accounting for changes, optical-sizing when applied can adjust the size a little again 14:33:29 ChrisL: limited number of passes, not infinite looping 14:33:29 Yeah, maybe we don't want to limit it to one variable axis. Perhaps we could add a mechanism for setting a ratio between them — 33% font-stretch + 66% font-weight 14:33:43 or whatever the author wants, their ratio 14:33:44 kizu: might want to think further about variable axis, but maybe could be a seaprate feature 14:33:58 qq+ 14:34:08 kizu: could say in css "for this font, from Xpx to Ypx change this axis in this way". used similar to optical sizing 14:34:22 kizu: i think this might just be a separate feature then 14:34:44 astearns: time check, we're supposed to be on a break now. emptying queue 14:34:48 ack ChrisL 14:34:48 ChrisL, you wanted to react to ChrisL 14:35:04 ChrisL: that feature does exist on opentype, a "composite" axis you declare in the font 14:35:04 I disagree with what Roman just said, that everything should be tied to font size & we grow/shrink font-size in order to change the axis 14:35:04 ChrisL: %s of various other features 14:35:19 ChrisL: you can expose controls you want users to have, the width/etc are low-level. 14:35:21 ack noamr 14:36:00 noamr: i wonder how much of this is seeking something more like svg scaling, just scaling the path as-is 14:36:15 noamr: svg text can fit to width, just icky right now 14:36:30 noamr: so i wonder if these are separate features so you don't need to deal with all the font complications 14:36:53 ack florian 14:36:56 kizu: i'm not familiar with how it works in svg, can't answer 14:37:01 dholbert has joined #css 14:37:06 florian: folloiwng up, agree size isn't the only thing we want to vary 14:37:16 florian: okay with starting on size as long as th eproperty opts in 14:37:31 florian: in the example, max-font-size looks a bit special, we'll need other min/maxes 14:37:43 florian: so we should design the syntax so we can give constraints on everything we want to do 14:37:51 florian: but can start with the subset 14:37:58 The SVG one is underspecified and is purely geometric scaling 14:38:15 florian: following up on Jen's line-by-line wanting extreme line differences, maybe when we turn this on we do different linebreaking 14:38:19 Yes, I think in some cases what people seek is geometric scaling 14:38:30 florian: authors can also work around it, can use hidden
that are non-hidden by an @supports 14:38:51 florian: annoying, but when it's for a very specific heading or something, we have workarounds 14:38:52 ack jensimmons 14:39:12 jensimmons: agreeing with Chris, taking back my smaller thinking, probably is good to have a mix of axises 14:39:41 jensimmons: probably should have a font model where we grow or shrink, but author can set up what that means. different %s of font-size/weight/stretch/etc 14:40:02 jensimmons: and if the author wants 100% font-size or whatever, they can get it 14:40:12 jensimmons: important to design so if you don't want font-size to change at all it doesn't change 14:40:21 Not quite the same behavior, but SVG also has textLength https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/textLength 14:40:46 astearns: since that could be quite complex, and we want to allow that sort of complexity, would it make sense to be able to express how you want things to resize in a @font-face rule? 14:40:56 astearns: that then applies in this property, go segment-by-segment to figure out what's allowed by the font being used 14:41:23 ChrisL: not sure that's the right palce for it, can see doing various controls depending on what space is available. @font-face makes it generic for all uses 14:41:37 I also do not think the SVG thing is a solution. Font designers have carefully made text that looks fantastic at all sorts of sizes. Just growing text like it's an image ignores all of this work that's in the font. 14:41:44 florian: base don how you combine and limit the axises, need some room in the property to accommodate it. starting simple but going more complex. 14:42:00 astearns: so i'm hearing lots of feature requests, but no opposition to try and solve this. 14:42:09 astearns: should we have a resolution to start this in an ED? 14:42:19 TabAtkins: Fonts 5? 14:42:34 fantasai: not Inline. Maybe Text, but I think Fonts is best 14:42:38 ChrisL: Yes, Fonts 14:42:52 astearns: roman, are you volunteering or do you want someone else? 14:42:58 kizu: never written spec before, could collab 14:43:24 astearns: proposed resolution is to start working on this in Fonts 5, and we can open individual issues once there's some starting text 14:43:30 astearns: objections? 14:43:42 +1 14:43:54 RESOLVED: Start work on this in Fonts 5 and begin incubating. 14:44:04 astearns: appointing Romas as co-editor of Fonts 5 14:44:16 ChrisL: was going to entrap him but I'm okay with him going straight into it 14:44:24 RESOLVED: Roman as co-editor for Fonts 5 14:44:30 jensimmons: it depends, sometimes authors want to animate the scaling in a way that fits in a particular box without changing anything but the geometry, using the text as something more decorative. I agree that it doesn't solve *everything* and that solving it on the font level is a lot more powerful 14:44:30 github-bot, end topic 14:44:35
14:45:09 s/jensimmons: it depends/@jensimmons, it depends 14:45:57 ha yes sorry, I wasn't scribing: ) 14:54:53 ChrisL: https://github.com/w3c/csswg-drafts/issues/10573#issuecomment-2769649221 14:59:09 ydaniv1 has joined #css 15:02:32 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11609 15:02:32 Topic: [css-borders-4] Resolve on range for `superellipse` parameters 15:02:32 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11609. 15:03:41 noamr: this and the next issue will resolve togheter 15:03:53 noamr: smfr and i have been working hard on the details for corner-shape. several questions to resolve 15:04:00 noamr: one is about the superellipse paramter 15:04:22 noamr: as you might recall, we have corner-shape keywords, but can also give it a number via a super-ellipse function 15:04:37 noamr: in the spec righ tnow, the number gives the exponent of the curvature 15:04:45 noamr: there was a proposal to use the log2 of that 15:05:17 noamr: if i go all the way to concave, k=0, log2=-inf 15:05:25 noamr: middle, bevel, k=1, log2=0 15:05:39 noamr: full sharp convex, k=inf, log=inf 15:05:45 noamr: round, k=2, log2=1 15:05:52 noamr: squircle, k=4, log2=2 15:05:58 noamr: there's a table in the issue 15:06:12 noamr: so the log2 version goes from -inf to inf, and maybe a bit more friendly 15:06:19 noamr: k version goes 0-inf 15:06:29 https://noamr.github.io/squircle-testbed/corner-visualizer/corner-animation.html 15:06:37 noamr: advantage of k version, when people talk about super-ellipses in other contexts they're usually talking just about the k version 15:06:45 noamr: but i don't feel strongly about either 15:06:46 q+ 15:06:52 ack TabAtkins 15:07:13 TabAtkins: I do feel strongly that the log2 version is better here, because the shapes are symmetrical across the bevel 15:07:40 Francis_Storr has joined #css 15:07:50 TabAtkins: It also makes the range of useful values more reasonable. Going out to log2=10 makes it effectively a sharp corner, and the range past there is infinite 15:07:59 TabAtkins: Same thing applies in negative direction. 15:08:06 TabAtkins: This is easy to work with. 15:08:21 TabAtkins: in the straight K version, sharp corner is a non-obvious fraction slightly above zero... 15:09:01 TabAtkins: Symmetry really helps out with usability. Can put a note in the spec that k in academic papers is usually different, but for authors they won't care. We should prioritize usability for authors, and log2 variant gets us there 15:09:06 fantasai: +1 15:09:09 +1 15:09:22 noamr: literature could be Figma, for example 15:09:29 noamr: author tooling can expose it too 15:09:30 ydaniv3 has joined #css 15:09:31 q+ 15:09:36 ack Kurt 15:09:45 Kurt: does this mean specifcying infinity you need to use calc()? 15:09:55 noamr: no, can just have an infinity keyword 15:10:01 noamr: that's in the spec right now for positive infinity 15:11:04 noamr: i think people are okay with this not aligning with other tools i'm okay with going with log2 15:11:12 s/think people/think if people/ 15:11:22 astearns: so it sounds like proposed is to use log2 range? 15:11:28 jensimmons: would like to know what smfr thinks? 15:11:38 noamr: he's commented on the issues, he doesn't have a strong opinion 15:11:55 q+ 15:12:13 TabAtkins: There's an interpolation issue later on... 15:12:14 weak agree for the log2 version from me too 15:12:36 TabAtkins: Other reason I really like log2, when we do interpolation, making sure that works symmetrically requires doing log2 anyway 15:12:42 TabAtkins: so exposing more directly to authors is a good thing 15:12:52 noamr: yeah, the interpolation function si clsoe to log2 15:13:24 astearns: so it sounds like people are moderate to weakly in favor of log2 15:13:29 fantasai: i think tab's arguments are convincing to me 15:13:35 astearns: so proposed reoslution is to use the log2 range 15:13:45 RESOLVED: Use the log2 range for the superellipse parameter 15:13:56 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11608 15:13:56 Topic: [css-borders-4] Interpolation of `corner-shape` superellipsis 15:13:56 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11608. 15:14:00 dholbert has joined #css 15:14:06 noamr: this shoudln't be contentious 15:14:14 noamr: let me show how it interpolates 15:14:52 noamr: the interpolation takes the "half corner", th emiddle point, put it on the diagonal line and interpolate *that*. work backwards to get the superellipse parameter 15:15:51 noamr: otherwise any interpolation in the paramter space itself would spend too much time in the extreme values 15:16:01 TabAtkins: This does sound like the most reasonable interpolation method 15:16:14 astearns: any indication from Simon? 15:16:20 noamr: he did this visualization. 15:16:29 noamr: everything i'm presenting here I worked together with Simon 15:16:31 ack 15:16:31 ack TabAtkins 15:16:48 fantasai: TAb, you mentioned the "effectively square" is 10 or so on both sides 15:16:51 fantasai: above 10 15:17:03 fantasai: it basically doesn't do much? 15:17:34 noamr: it's basically equivlanent unless your screen is enormous 15:17:48 fantasai: should we declare that 10 gets rounded to a sharp corner? 15:18:13 fantasai: so the CSS range is effectively -10 to 10? 15:18:23 astearns: if your shape is very large you might get a jump 15:18:48 noamr: shouldn't have it as part of interpolation 15:18:57 noamr: the animation would appear to be faster in the middle if we did that 15:19:45 noamr: in the current chrome prototype we *do* clamp to 10/-10, it makes the math easier 15:19:51 noamr: but not sure it's useful in the specs 15:20:19 fantasai: the reason it might be useful is, it's harder for the authro to know that to get an actually sharp corner they need to use a much bigger value 15:20:51 TabAtkins: The interpolation behavior defined here is that we don't interpolate the parameter, we interpolate the diagonal line. 15:21:00 TabAtkins: so you get a linear interpolation through the diagonal space 15:21:40 TabAtkins: so you get a visually smooth value instead of changing speed 15:21:53 fantasai: Would it make sense to make that the parameter? 15:22:01 TabAtkins: No, because then squircles and other common values would be weird numbers. 15:22:11 noamr: yeah, round is sqrt(2)/2 15:22:18 astearns: any other comments/question? 15:22:50 astearns: so proposed is we interpolate linearly across the corner diagonal and compute the parameter backwards from that 15:22:52 astearns: objection? 15:23:01 RESOLVED: interpolate linearly across the corner diagonal and compute the parameter backwards from that 15:23:17 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11607 15:23:17 Topic: [css-borders-4] naming of the "not curved" (90deg convex) keyword for `corner-shape` 15:23:17 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11607. 15:23:32 noamr: right now this value is named "straight", but i dont like it 15:23:44 noamr: this is when we treat it as a non-rounded rect 15:23:50 noamr: other proposals are "square" or "none" 15:23:54 noamr: or "rect" 15:24:05 smfr has joined #css 15:24:08 noamr: i think in the issue consensus was for "square" 15:24:12 astearns: and Simon prefers square 15:24:30 TabAtkins: Prefer square to straight. Straight sounds like it means bevel. 15:24:34 astearns: any concerns over choosing square? 15:24:47 RESOLVED: Use square for opposite of notch 15:25:08 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11610 15:25:08 Topic: [css-borders-4] Specify how borders are rendered for `corner-shape` 15:25:08 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11610. 15:25:35 noamr: this has been a lot of work 15:25:44 noamr: how detailed does this need to be in the spec? 15:25:55 noamr: there's an intricate algorithm to make the corner appear consistent 15:26:34 noamr: like if you have two adjacent scoops, we want them to cut into each other 15:26:48 noamr: top-right and bottom-right both "scoop 50%" 15:27:04 noamr: the outer border follows the shape math. the inner borders can overlap 15:27:29 noamr: don't have a clear idea of how to do this in the spec, but maybe we wnat to say that the border thicknesses need to be consistent at the start and end 15:27:40 noamr: border overlap does not constrain the radius 15:27:46 noamr: and are clipped by the outer radius 15:27:59 noamr: so you can create shapes that fold into themselves 15:28:15 ack fantasai 15:29:20 fantasai: I think the behavior you're takling about is that we determine the radiuses per the formula, we shape the outer border edge, then we shape the inner border edge to match by offsetting the endpoints of the corner shape (where it connects to the straight part of the border) by insetting those normal to the curve, and using that to inperolate the inner line, then clipping the inner curve 15:29:33 fantasai: so you don't get overlapping 15:29:42 fantasai: i do think we need to spec it 15:30:08 noamr: also, for very high or low curvatures, outside of 1/-1, we adjust the inner curvature 15:30:28 noamr: in this example, the inner and outer have a differnet superellipse value to make the thickness appear consistent 15:30:57 noamr: so question is to what extent is needed to specify 15:31:15 fantasai: need to specify as far as getting the same math, so impls can match. 15:31:29 fantasai: Can allow for approximation, but we need interop here 15:31:44 TabAtkins: Should be testable in WPT with some amount of pixel fuzziness 15:32:23 TabAtkins: Is your inner ellipse calculation similar to the interpolation, where you get the diagonal width correct and then figure out the superellipse param? 15:32:33 noamr: not exactly, it creates a vector... it's not just moving the lines, the superellipse needs the same center too 15:32:40 noamr: it's all similar math 15:33:09 noamr: i create a line perpendicular to the hull (two straight lines snug to the superellipse) and make something perpendicular to that 15:33:14 noamr: i can't use the half corner here 15:33:54 noamr: i think the important bit here is if we're okay with the behavior here, that the border width doesn't affect the outer-radius shape 15:34:02 noamr: so it stays the same as for normal rounded rects 15:34:07 fantasai: i think that makes sense 15:34:08 +1 15:34:27 TabAtkins: In particular, getting the star shape is a desired behavior 15:34:55 PROPOSED: Radii are resolved for the outer shape just as for rounded-rect 15:35:22 RESOLVED: Radii are resolved for the outer shape just as for existing border-radius rounded-rect shapes 15:36:03 fantasai: inner radius gets clipped as soon as it hits any side or other corner 15:36:36 PROPOSED: Inner radius gets clipped as soon as it intersects the inner edge of any adjacent side/corner 15:36:47 q+ 15:36:48 s/radius/radius curve/ 15:36:56 (exact details matter when the borders are partially-transparent, fwiw) 15:36:58 PROPOSED: Inner curve gets clipped as soon as it intersects the inner edge of any adjacent side/corner 15:37:07 ack smfr 15:37:18 smfr: i think we do radius cosntraints for existing round rects, we shirnk so they dont' join on the inside? 15:37:26 fantasai: no, it's the outer curve we care about 15:37:42 smfr: just want to make sure we have consistent behavior 15:37:52 fantasai: right, we just now resolved to be consistent with the outer radius. 15:38:18 fantasai: you don't really have the problem the inner radius for curves 15:38:35 fantasai: the current formula onlya pplies to the outer radius 15:38:44 fantasai: and as a consequence the inner radius doesn't intersect 15:38:52 fantasai: but it's the outer radius that's controlled by border-radius 15:39:06 RESOLVED: Inner curve gets clipped as soon as it intersects the inner edge of any adjacent side/corner 15:39:25 PROPOSED: smfr and noam to spec the math that makes the inner curve look good 15:39:49 RESOLVED: smfr and noam to spec the math that makes the inner curve look good 15:40:04 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11662 15:40:04 Topic: [css-borders-4] Interaction of single-path `border-shape` with non-uniform `border-width` 15:40:04 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11662. 15:40:22 noamr: similar demo here 15:40:26 noamr: was discussed last f2f 15:40:32 noamr: border-shape is not the same as corner-shape 15:40:40 noamr: border can be any path or any two paths 15:40:58 dholbert has joined #css 15:40:59 noamr: question is how/if this should interact with border-width and border-color 15:41:05 noamr: i foudn some use-cases where i think it should 15:41:12 noamr: that's what's on the screen 15:41:19 noamr: things that are *like* a box but a little off 15:41:30 noamr: this is almost a rectangle, but with slanted lines and a curved bottom 15:41:46 noamr: and maybe the author would want the four sides of the box to take width and color from border-* 15:42:03 noamr: what i do here is i take each segment of the path and check its slope 15:42:11 noamr: if takes from the side it's closest to 15:42:30 noamr: so for any clockwise ship that's pseudo-rectangular, it'll attempt to do the right thing 15:42:44 noamr: it doesn't work great with beziers that are a little crazy 15:43:07 dholbert has joined #css 15:43:07 schenney has joined #css 15:43:07 flackr has joined #css 15:43:07 noamr has joined #css 15:43:07 ydaniv has joined #css 15:43:07 github-bot has joined #css 15:43:07 kizu has joined #css 15:43:07 alisonmaher has joined #css 15:43:07 kbabbitt has joined #css 15:43:07 Kurt has joined #css 15:43:07 jbroman has joined #css 15:43:07 keithamus has joined #css 15:43:07 tusf has joined #css 15:43:07 jcraig has joined #css 15:43:07 cmp has joined #css 15:43:07 foolip has joined #css 15:43:07 dbaron has joined #css 15:44:17 noamr: another option i looked at is the split curves at the inflection point, where it changes direction 15:44:25 noamr: then beziers can feel a bit more accurate 15:44:47 noamr: but from my experiments so far, this would be more understandable for authors. to not split. they can split if they want to. 15:44:58 TabAtkins: So if I understand... 15:45:02 can't hear tab 15:45:26 TabAtkins: For each path segment, you look at just the start and end point. Find the line between them. Identify that with one of the four sides depending on its angle. 15:45:45 TabAtkins: That's why this purple one is identified with bottom 15:46:01 noamr: Right, this is identified with the bottom edge because clockwise path 15:46:12 noamr: a lot of shapes and authors won't need this, their shape isn't boxy at all 15:46:22 noamr: but then they could jsut give it a uniform border-wdith and color and they wouldn't get this effect 15:46:34 ack fantasai 15:46:58 q+ 15:47:02 fantasai: so one concern i have here is, by being tied to the direction of the path, if you flip the path (which you might want to do if you're respondign to writing direction) you'll associate the bottom with the top/etc 15:47:06 fantasai: which probably isn't intended 15:47:18 fantasai: i wonder if there's a way to do this that doesn't carea bout CW vs CCW 15:47:31 noamr: we always work on the CW version of the path. if the path is CCW we reverse the order first 15:47:41 noamr: if it's got subpaths we do it for each subpath separately 15:47:49 ack smfr 15:47:50 noamr: each subpath, we make it clockwise, then check each segment 15:48:04 smfr: something elika just reminded me of is animations 15:48:19 smfr: if you evaluate the path association live, you could have colors flickering as the path changes 15:48:32 noamr: yeah ifyou're animating the path, you probably want uniform border colors 15:48:42 noamr: but when you're close to a box you probably do want this. 15:48:56 smfr: my concern here is just, i foresee some ugly paths coming out of this 15:49:11 smfr: we spent a lot of time getting corner-shape to look nice, but it seems like this wouldn't 15:49:18 noamr: i think that's generally the case for border colors 15:49:41 TabAtkins: I think we should have a way to manually associate colors and segments, but I think this is probably the most correct default assignment 15:49:48 TabAtkins: if you do just want uniform colors, you can set uniform colors 15:50:02 TabAtkins: There's space open for a border-shape-colors property to associate with the segments 15:50:11 TabAtkins: that would allow consistent coloring across an animation 15:50:12 Hoch has joined #css 15:50:12 q+ 15:50:20 TabAtkins: We shouldn't require authors to spec by default 15:50:20 ack smfr 15:50:28 smfr: this isn't just about colors tho, right? it's also width 15:50:38 TabAtkins: yes, but i think same argument applies 15:51:01 smfr: i haven't played with this too much, but my suspicion is some paths it'll give okay results, others bad, potentially flickery if animated 15:51:13 smfr: question is just if authors want this, versus just specifying the two path version 15:51:40 TabAtkins: I want to avoid requiring 2-path version as much as possible. It's unusable for hand authoring. 15:51:49 TabAtkins: Shouldn't be requiring it for simple shapes. 15:51:54 smfr: i think that's okay, many shapes will be tooling in the long run 15:52:05 smfr: it's possible take one shape and make minor edits to get the inside shape 15:52:22 TabAtkins: If doing just a quadrilateral, it's not impossible to offset and get inner shape 15:52:39 TabAtkins: but in that case I just want this sort of adjustment: give each side a width. That's what border-width does for me. 15:53:05 TabAtkins: In a large section of common cases, this will give good behavior. And for more unusual cases, we can either have manual overrides or have authors use 2-path version. 15:53:49 astearns: simon, are you concerned enough about this that you'd prefer just having something radically simple for single-path version that doesn't do any widths and colors? that requires using two-path or manual override for something else? 15:54:00 smfr: i'm not sure. i think i'd like more time to experiment 15:54:02 ack fantasai 15:54:11 fantasai: i think i'd probably +1 that 15:54:24 fantasai: ther'es four options in the original comment here, what was your analysis of those four? 15:55:03 noamr: uniform border width (option 1), we can always achieve by ignoring the other borders. i think people would just be confused why their border-bottom isn't being used 15:55:09 noamr: but we coudl always do it, it's simplest 15:55:39 noamr: option 2 (cutoff points with interpolation), it's bascially this (the current demo) but the cutoff points are determined by the segment 15:55:59 noamr: when i tried it, it gave worse results than using the slope 15:56:16 noamr: rotated shapes in particular 15:56:28 noamr: option 3, point-by-point tangent, we don't know how to implement it 15:56:38 noamr: great api in theory, really complicated. 15:56:48 noamr: need to convert this into an inner and outer path 15:57:10 noamr: closest i got to that was splitting a bezier, like i showed, at inflection points or something 15:57:28 noamr: so you'd have the path as a bunch of smaller segments and then connect from there 15:57:31 noamr: but that would be even more jittery with animations 15:57:48 noamr: authors can achieve it thesemvles by splitting segments into pieces 15:58:15 noamr: so option 4 is the nearest border. if you have a small rectangle close to the right, you'd get all the right-width styles, doesn't look right. 15:58:28 noamr: the slope version i think gives the best results when the shape has some relationship with a box 15:58:39 astearns: any other comments? 15:58:40 fantasai: thanks 15:58:52 noamr: i think we can leave it unresolved for now, if simon isn't sure about it 15:59:10 astearns: yeah some more examples, looking at things that approximate rectangles less 15:59:24 noamr: yeah, my intention wasn't necessarily to resolve, but to open people's minds to the topic 15:59:29 astearns: okay, take it back to the issue 15:59:36 github-bot, end topic 15:59:43
15:59:52 present- 15:59:55 astearns: will have a short presentation on an idea for declarative animations, then get into forms 15:59:56 present+ 16:02:40 Linux_Kerio has joined #css 16:06:16 Linux_Kerio has joined #css 17:01:12 alisonmaher has joined #css 17:01:58 github-bot, take up https://github.com/w3c/csswg-drafts/issues/12029 17:01:58 Topic: [css-animations-2] Add declarative syntax for starting an animation in response to an input event 17:01:58 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/12029. 17:02:55 szager: This is very rough sketch, not prepared to depend every details 17:03:06 szager: responsiveness is important part of good perf, always a struggle 17:03:16 szager: big part is input events require main-thread processing 17:03:30 szager: if you're familiar with Core Web Vitals, something we emphasize is interaction to first paint 17:03:53 szager: looking at IMP measurements in the wild, at higher percentiles main-thread processing >50% of that first response delay 17:04:07 szager: so we want to solve, how can we provide visual repsonse to input events without main thread processing 17:04:19 szager: so i think this proposal is in-line with compositor-driven animations 17:04:27 szager: we set up the animation in advance then hand it off to the compositor 17:04:46 szager: i'll say, my terminology is chrome-specific but i think the principles apply to everyone, they'll be implementable for everyone 17:05:05 szager: so we create an animation on the main thread, then trasnfer it to compositor thread if possible, and it can run smoothly after that 17:05:22 szager: in that spirit, we shoudl be able to do that (set up in advance) but rather than a time delay, say we'll start when we detect an input event 17:05:32 szager: currently in web platform, input events are only dete3ctable on main thread 17:05:50 szager: but this declarative syntax lets us analyze that and enact that on the compositor thread before it even hits the main thread 17:06:04 szager: so the result is we cut out the main-thread processing entirely when we start processing an input event 17:06:23 szager: big risk up front - this is a predictive model, like thread scrolling or composited animations 17:06:45 szager: we're predicting that, if the main thread weren't blocked, it would say we shoudl run this animation. this can be wrong - the main thread might try to cancel it but it's blocked 17:07:04 szager: in composited animations, the downside of the prediction being incorrect isn't important 17:07:10 szager: in this it could be a bit more consequential 17:07:21 szager: someone could click on something, animation starts immediatley suggesting the click was received 17:07:38 q+ 17:07:41 szager: and then eventually when we flush the rendering and actually deal with the input, it could just stop 17:07:51 szager: could be weird for the user to see this inconsistent animation 17:08:00 szager: so that's biggest risk i think. should keep our eyes on it 17:08:13 astearns: couple question 17:08:31 astearns: are you at all worried about having multiple things trigger off of a user interaction, and have the animation kick off long before any secondary effects on the main thread? 17:08:40 ack astearns 17:08:49 q+ 17:08:54 q+ 17:08:54 szager: at least for chrome, our devrel, we always push to give a visual response asap 17:09:13 szager: so our guidacne is to start the animation *immediately*, and only once that's actually running should you do your business logic 17:09:28 q+ 17:09:37 szager: so there's always a risk that main-thread processing will invalidate what we're starting. This isn't a replacement for main-thread handling. 17:09:46 szager: we're just taking that first step (kick the animation immediatley) and making it declarative 17:09:55 szager: so the rest of the model is the same 17:10:03 astearns: that's helpful 17:10:06 present+ 17:10:19 astearns: the other thing is, a concern about having some user events with this preemptive animation, and other where they're not 17:10:37 astearns: there are several user inputs in a row, some trigger fast and others are slow, and the reaction to user events is out of order 17:10:45 ack flackr 17:11:01 flackr: in case people ahven't recognized this, thi si sperfectly analogous to scrolling 17:11:15 flackr: in that you can set up a scroll on the compositor that is invalidated by a scrollTo in the next frame 17:11:22 flackr: so it's not new, and i think this is a reasonable explanation 17:11:26 flackr: some more cmplications tho 17:11:37 flackr: some event types are only generated if other types aren't preventDefaulted 17:11:43 flackr: like click can be canceled by down/up 17:11:58 flackr: so we need to either restrict to primary events, or do something else 17:12:09 kurt has joined #css 17:12:10 flackr: also, the user interacts with what they see, they're not in the new frame yet 17:12:42 flackr: so this does feel better. i click on what i see, th enext frame can certainly move it or whatever, but maybe we should do hit testing in the frame the user is seeing rather than the positions that dom modifications see 17:12:47 flackr: maybe we should explore that 17:13:04 szager: the idea of doing event hit testing based on last displayed content has been proposed a millino times, it's a can of worms. 17:13:09 szager: i like the idea, but it's a breaking change 17:13:20 szager: but that's the only thing i don't like about it. in every other respect it's better i think. 17:13:28 szager: don't know that i want to conflate that with this project tho 17:13:36 szager: other point about non-primary events 17:13:51 szager: the reason we can do this project in chrome is events arrive on compositor before they hit the main thread 17:14:04 szager: but we only have limited insight into the input targetting 17:14:09 szager: our hit-testing is non-canonical 17:14:22 szager: so like we can't do a strict determination fo the event target until we hit the main thread 17:14:28 szager: so that's a source fo inaccuracy 17:14:41 szager: part of this project would be to see ho wmuch more hit-testing capability we need to add to our compositor thread 17:14:49 szager: and think it would be a simlar process for other browsers 17:15:08 szager: end-gaem of that process is doing precise hit-testing on compositor thread from the msot recently displayed content 17:15:20 szager: so it's in that arena. dont' wanna commit to that huge breaking change now, but want to explore that some 17:15:34 flackr: secondary events are not sent to the compositor, they're generated in blink as part of primary event 17:15:51 flackr: we'd need to add special processing, compositor only see mouseup/mousedown, we synthesize click on main 17:16:11 szager: i think chrome could do this, yes. no hard proposal yet. question is how much functionality do we need on the compositor. 17:16:24 flackr: my point is, we always have the option to say some event types are triggered on main 17:16:47 szager: i'll say, this proposal doesn't need to involve compositor thread. as-is it could be done entirely on the main thread 17:17:03 szager: the compositor is an optimization. it's the point of this feature, yes, but it could just run on the main 17:17:14 szager: so we can start from the baseline of makign it work right without compositor optimizations 17:17:41 szager: and then this is a predictive model, we find as many scenarios as possible that we can do on the compositor. can't define the boundary yet, and it probably changes over time, and could vary between brwosers 17:18:01 szager: but i think the design of the api, i always kept in mind making it possible to add the optimizations after the fact 17:18:07 flackr: i think we agree 17:18:23 flackr: hit-testing on the previously-seen thing is something that gives consistency with what the user sees and what they expect 17:18:32 flackr: so i think it does make sense exploring 17:18:46 szager: i agree in every state except compat. so if this is a compat anchor i don't want to be tied to it. 17:18:46 ack smfr 17:18:58 smfr: this feels more consequential than scrolling as to getting it wrong. 17:19:13 smfr: you can't do precise hit-testing, and aren't running inputs properly 17:19:20 smfr: so you dont' know if something else canceled 17:19:26 smfr: this is important for things like iframes 17:19:35 szager: in chrome we do do precise hit-testing for iframes 17:19:51 smfr: in webkit, if there's a clip path overlapping the iframe, we can't do precise hit-testing on our compositor 17:20:09 smfr: so you say we kick it off on the compositor and then cancel it if the real event doesn't fire 17:20:14 smfr: so what happens with animation events? 17:20:24 szager: we wont' fire animation events until animation start has been affirmed on the main thread 17:20:29 szager: so no ordering changes 17:20:39 qq+ 17:20:44 szager: one place that might look different is start time, but in terms of order animationStart event happens at normal position 17:20:53 szager: i agree with everything you're saying about iframe security/etc 17:21:05 szager: so i'll point back to, this can be done on the main thread. 17:21:09 pdr has joined #css 17:21:18 szager: we considered a broader syntax, but decided to keep it narrow and just use animation-trigger to keep it simple 17:21:27 szager: so can do it all on main, then judiciously move to compositor thread 17:21:33 ack flackr 17:21:33 flackr, you wanted to react to smfr 17:21:44 flackr: we can pick and choose the precise cases where we're completely or reasonably confident that we have the target correct and it wont' be stopped 17:21:58 flackr: so it's possible to do it in a way that's correct save for extreme dom modification 17:22:15 szager: it's true that compositor hit testing isn't authoritiative, but in chrome the compositor thread is aware *when* it's not authoritative 17:22:25 szager: then we defer to the main thread, like if there's a clip path 17:22:45 szager: so if there's an important decision to be made, we can push off the optimization. hopefully others can too. 17:22:47 ack ydaniv 17:22:58 ydaniv: this sounds very interesting 17:23:15 ydaniv: i was also worried about what simon mentioned, regarding stopPropagation, but if it's considered then good 17:23:22 ydaniv: had a lot of questions about api 17:23:38 ydaniv: but most important is probably 3rd question i wrote on the issue 17:23:52 ydaniv: this is also very desired with transitions, but then it's not thru animation api but thru selectors 17:24:00 ydaniv: that maybe goes back to css toggles, which is sorta deceased 17:24:11 ydaniv: wonder if this is something we coudl marry with a state pseudoclass 17:24:19 szager: one of our early ideas was a pseudo-state 17:24:31 szager: we went thru it and the difficulty... it's probably most similar to :active 17:24:44 szager: but looking deep into it, we don't know where the start/stop of the pseudo-state is. 17:24:58 szager: this is a discrete event, not a toggle back and forth between two states 17:25:15 szager: can't just analyze the dom and styels and say "we know we're in this state". it's ephemeral and it's gone 17:25:37 szager: so it just doesn't seem to be a good match to pseudo-states, anything toggleable 17:25:50 szager: this isn't even like viewport visibility, where you're either in or out. this is immediate. 17:26:07 Di has joined #css 17:26:20 szager: i foudn the best mental model is element.getAnimations.play(), like that. once that line is executed, you can't detect that it happened, you just know the animation is now playing. no idea how it started. 17:26:59 szager: so just the idea of a state that toggles on or off doesn't seem to be the right model for this 17:27:17 ydaniv: so this moves to the second question, if this state is transient, how will this work with different types of triggers? 17:27:33 ydaniv: there we have "alternate" types... the state is in the animation then 17:27:35 qq+ 17:27:50 szager: right, i think if the state is the namation state, you can pause/play from there 17:28:06 szager: if you explicitly call .play() on the animation, the input event could pause that animation 17:28:08 ack flackr 17:28:09 flackr, you wanted to react to ydaniv 17:28:14 zakim, close queue 17:28:14 ok, astearns, the speaker queue is closed 17:28:35 flackr: having thought a lot about animatin-trigger, they have a thing that happens when the triggered state goes from outsdie->inside or reverse. i think each occurence of a discrete event woudl be a transition similarly. 17:29:02 flackr: and what the trigger does depends on what trigger's state. "state" woudl pause/unpause, "alternate" would play it backwards/forwards, etc. each has a defined meaning already 17:29:24 szager: yeah, since triggers are defined in terms of transition events, it works cleanly with inputs as long as the state lives in the animation 17:29:37 ack pdr 17:29:37 flackr: right. currnently it's a state transition that toggles it, but that's not required 17:29:48 pdr: quick comment on original question,a bout mixing fast and slow properties 17:29:57 pdr: animation lets us build on the existing infrastructure 17:30:15 pdr: if you ahve a layout-affecting property in an animation, it can already pull the whole animation out to main thread 17:30:36 pdr: with animations you define up front the things that are affected, while with selectors it's open-ended 17:30:44 pdr: so i think animation approach works iwthin those problems 17:30:55 astearns: thank you for the introduction, let's flesh out the details more 17:32:02 zakim, open queue 17:32:02 ok, astearns, the speaker queue is open 17:32:03 github-bot, take up https://github.com/w3c/csswg-drafts/issues/9830 17:32:03 Topic: [css-forms-1] Names of / pseudo-elements 17:32:03 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/9830. 17:32:23 ntim: i put the issues in order of expected speed 17:32:56 ntim: we originally resolved on the speudo-elements for range, switch, and meter/progress to have ::slider-* prefix 17:33:16 ntim: but we realized it might be better to drop the slider prefix for authoring 17:33:24 jarhar has joined #css 17:33:25 ntim: since writing "slider-" might not be convenient 17:33:32 ntim: so wanted to see people's thoughts 17:33:33 q+ 17:33:40 ack TabAtkins 17:34:10 TabAtkins: I would prefer to keep the "slide-" prefix. I don't think it's very long. But it groups these clearly related pseudos together semantically -- and also in alphabetically ordered lists. 17:34:11 q? 17:34:23 q+ 17:34:23 astearns: Would you keep that for and also? 17:34:29 TabAtkins: Fine with that. It's sliding. 17:34:51 TabAtkins: To the extent that / have a thumb. 17:34:55 fantasai: it might not be something you can grip, but it might be something styleable 17:34:56 ack lea 17:35:06 lea: i have a weak preference towards not prefixing 17:35:17 lea: not just for verbosity, but just when do you group related pseudos together 17:35:29 lea: we're already talking about meter/progress, but what about switch? 17:35:45 lea: if you don't prefix, it's up to the author to group or separate them 17:35:58 q+ 17:36:16 lea: while if we decide how to prefix them, doing the oppsoite requires more complexity. locks us in as we have more elements with a shared structure 17:36:21 ack ntim 17:36:49 ntim: more context, webkit implemented switch control. it always felt odd to write `switch::slider-thumb`/etc 17:37:00 ntim: they're a slider to some extent, but it felt weird 17:37:19 lea: so case in point, it's not the future we'll reach it, we're already there 17:37:36 Slight preference for keeping `::slider-` fwiw, but... 17:37:39 TabAtkins: Switch looks like a slider. You're sliding it back and forth. 17:37:51 q+ 17:38:07 q+ 17:38:22 TabAtkins: If you have a thumb and track etc. then you're describing a slider. 17:38:32 TabAtkins: these concepts are taken from the slider hierarchy of controls 17:38:36 lea: Meter and progress? 17:38:39 TabAtkins: yes. The value slides. 17:38:48 q- 17:39:03 astearns: the argument against taking the slider prefix off is that thumbs and tracks could possiblly be other things 17:39:15 astearns: would it make sense to use another prefix, like ::ui-track? 17:39:20 ack astearns 17:39:23 fantasai: scrollbars are also UI and they have thumbs and tracks too 17:39:24 q+ 17:39:29 ack bkardell 17:39:57 bkardell: This doens't apply to the scrollbar thumb 17:40:10 TabAtkins: e.g. prefixed ::scrollbar-thumb and ::scrollbar-track 17:40:21 TabAtkins: a ::ui- prefix would be confusing, thos eare also ui 17:40:39 bkardell: If we name them generically, would they apply to those thumbs and tracks, too? 17:40:50 ::form-thumb? 17:41:04 meter and progress aren't form inputs... 17:41:23 bkardell: [directing question to Lea] 17:41:35 lea: my argument depended on the idea that you coudl speialize them with the rest of the selector 17:41:49 lea: if there's a way to do that for a scrollbar, then sure, but if there isn't we definitely need a prefix then 17:41:59 lea: you need the ability to target both - generic and specific 17:42:08 q+ 17:42:14 ack ntim 17:42:30 ntim: clarifying - right now there's no specified ::scrollbar-thumb or track, and that's intentional. 17:42:47 bkardell: the reason i asked is sometimes these also change over time what our mental model is 17:42:58 bkardell: some video players have thumbs and tracks 17:43:31 Wouldn't that be a ``? 17:43:33 bkardell: you were saying if you squint at this control it looks like a track, but i think if you look at it another way it might not be... 17:43:37 I think a core eigenquestion is: could the same element have two types of tracks/thumbs? 17:43:50 ntim: i think this is where Lea's argument applies, the author can always specify the selector before the pseudo-eleemtn to be specific 17:44:03 ntim: if the author puts `input::thumb` you know it's not for a video 17:44:21 lea: a core question we could ask is if we think the same element could have two types of thumbs/tracks? 17:44:33 lea: a slider with two thumbs, certainly, but those are of the same type of thing 17:44:43 ntim: we can add a functional version of the pseudo at that point to target idnviidual ones 17:44:52 ntim: straw poll? 17:45:11 ack fantasai 17:45:26 fantasai: i think we should think aobut this - it's not just thumb/track, we also have fill, and possibly other things 17:45:38 fantasai: if these are pseudos we are dedicating to this purpose, that takes those names away from anything else 17:45:46 lea: do we have a list of the names? 17:45:59 fantasai: so far "thumb", "track", "fill" 17:46:10 There's also the benefit of typing `::slider-` and seeing all of them together in your editor :-) 17:46:14 ntim: there's another issue to add something for color-swatch 17:46:29 bkardell: "ruler" or "meter", the tick marks 17:46:59 1: keeping the slider- prefixes for thumb and track 17:47:10 2: just use thumb and track 17:47:44 fantasai: i think we need to amke sure the prefix is consistent for all the parts, eithe rprefix all or none 17:47:52 fantasai: if we think prefixing some is okay and others aren't we ahve a problem 17:48:17 astearns: yes we need to think as a whole, but don't know that it's a bad result to have some as a prefix and some aren't, because some might be generic enough to not need one 17:48:28 +1 to lea 17:48:35 lea: if we don't prefix these we can still name individual ones better 17:48:39 STRAW POLL TIME 17:48:43 2 17:48:43 1 17:48:46 2 17:48:47 2 17:48:47 1 17:48:48 1 17:48:49 1 17:48:49 1 17:48:49 1 17:48:49 2 17:48:51 1.5 17:49:04 1 17:49:04 1 17:49:06 1 17:49:07 1 17:49:13 1 17:49:15 1 17:49:18 s/we can still name individual ones better/we can still name individual ones better, e.g. we may decide `::track-fill` is a better name than `::fill`. That's not prefixing, just good naming./ 17:49:28 q+ 17:49:31 q- 17:49:41 We have `:active-view-transition-type`, I think `:slider-fill` is short 17:49:50 emilio: I like the autocomplete aspects of the ::slider prefix. 17:49:59 I think slider-fill is *too* short, based on precedent. we need longer words 17:50:10 q+ 17:50:14 astearns: looks like prefixes are winning 17:50:21 ntim: okay, prefixes are in the previous resolution 17:50:32 bkardell: each of those controls are sliders currently 17:50:40 bkardell: so nothing changes in terms of what the pseudo-element applies to 17:50:43 q+ 17:50:49 ack bkardell 17:50:50 ntim: it would apply to switch, range, meter, and progress 17:50:50 2 17:51:24 since that is generic behavior, I think 2 17:51:30 lea: if we keep these prefixes it makes it harder to use descreptive names, becuase it's already long 17:51:48 lea: i think "fill" is confusing, "slider-fill" is still confusing, but "slider-track-fill" would be too long 17:52:21 astearns: so we'll take a resolution to keep the prefixes, based on straw poll 17:52:29 astearns: if we have better argumetns in the future we can revisit 17:52:38 astearns: proposed reoslution is keep slider prefixes and close the issue 17:52:40 astearns: objections? 17:52:52 RESOLVED: Keep the slider-* prefixes and close the issue 17:53:19 github-bot, take up https://github.com/w3c/csswg-drafts/issues/11837 17:53:19 Topic: [css-forms-1] Pseudo-element, structure and styles for `` 17:53:19 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11837. 17:53:31 ntim: pseudo-elements for color input 17:53:43 ntim: there's a proposal for ::color-swatch 17:53:51 ntim: is everyone happy with this? 17:54:05 TabAtkins: this represents the little rectangle of color in the input 17:54:20 q+ 17:54:30 ntim: yeah. we can't use the element itself because we support alpha on the color, and want to be able to display the checkerboard behind the swatch to make that visible 17:54:32 ack lea 17:54:42 lea: in a color input you can link to a data list 17:54:51 lea: would these swatches have the same pseudo element? 17:55:23 ntim: this is just the main input element, not the picker 17:55:35 The in-page component of the control 17:55:35 ntim: not all the browser have the same UI for the picker right now too 17:55:55 astearns: so resolution is to use ::color-swatch as the name for the in-page representation of the chosen color 17:56:31 astearns: comments or questions? 17:56:37 astearns: objections? 17:56:46 RESOLVED: Use the name ::color-swatch 17:56:54 github-bot, take up https://github.com/w3c/csswg-drafts/issues/5914 17:56:54 Topic: [css-pseudo] ::checkmark proposal for radio & checkbox controls 17:56:54 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/5914. 17:57:08 ntim: next is naming the checkmark pseudo 17:57:17 ntim: this is in the draft spec, but no reoslution yet 17:57:30 ntim: the ::checkmark is the part that represents the indicator in the radio or checkbox 17:57:39 TabAtkins: the check itself, or the dot on the radio 17:57:42 q+ 17:57:53 ack emilio 17:58:01 TabAtkins: iirc there was discusison about using ::before for this, but we decided to use a specialized pseudo instead 17:58:20 emilio: i'm assuming the tree is well-defined, a specialized pseudo seems fine 17:58:26 ack fantasai 17:58:28 ntim: oh, this is also to indicate the selecto