| 13:31 | <MikeSmith> | zcorpan: Domenic TabAtkins https://gist.githubusercontent.com/sideshowbarker/8284404/raw/c9157d8f597c3b91f7df23e07197c9627e7c4c66/wpt-anno.png |
| 13:32 | <MikeSmith> | <wpt> output displayed as annotation in the margin |
| 13:32 | <MikeSmith> | like the canisue annotations |
| 13:32 | <MikeSmith> | styles are https://github.com/whatwg/wattsi/blob/014ab4dc3bb6ffc53d8e69887fd27cae7db354be/src/wattsi.pas#L2068 |
| 13:33 | <MikeSmith> | the test filenames have text-overflow: ellipsis, and a title attribute with the testname |
| 13:34 | <MikeSmith> | so if the full filename is truncated/elided in the output, you can hover the text to see the title with the full filename |
| 13:44 | <zcorpan> | MikeSmith: that looks good |
| 13:48 | <MikeSmith> | zcorpan: ok cool |
| 14:26 | <Domenic> | MikeSmith: +1, that looks great and fits well with existing margin stuff we have |
| 14:26 | <MikeSmith> | good good |
| 14:26 | <MikeSmith> | thanks |
| 14:29 | <fserb> | annevk, Domenic, you around? |
| 14:29 | Domenic | waves |
| 14:29 | <fserb> | maybe we could try a quick chat around https://github.com/whatwg/html/pull/3931 ? |
| 14:30 | <fserb> | I feel like we could split the conversation of making the baselines more standard with the current PR. |
| 14:30 | <fserb> | To answer anne's question on how we can solve this in the future. |
| 14:30 | <fserb> | I feel like we'd have to: 1. come up with some definition of what a hanging/ideo baseline look like when the font file doesn't specify it. |
| 14:31 | <fserb> | 2. that definition needs to either point to or match a CSS equivalent definition |
| 14:31 | <fserb> | I've tried doing this in the past, but it's very complicated topic. |
| 14:32 | <fserb> | so basically the current PR could just be self-referential as it is now, and once we fix the bigger issue of spec'ing the baselines, refer to it as: "if the UA returns a hanging baseline, it must follow X" |
| 14:33 | <fserb> | one option to address this in the future is have a fallback system: |
| 14:33 | <fserb> | 1. hanging baseline is the hanging baseline that is provided by the font file |
| 14:33 | <fserb> | 2. if that is not available and a hanging baseline is needed, run the following algorithm: |
| 14:34 | <fserb> | 2a. if the current font contains one of the following characters ...(is IRC unicode friendly?) क.... then the hanging baseline is the smallest ascent of those characters. |
| 14:35 | <fserb> | *ascent = ascend |
| 14:35 | <fserb> | 2b. the hanging baseline is 80% of the em ascend. |
| 14:36 | <fserb> | but again, something like that would make more sense if CSS is also agreeing with it. (They have tried in the past, afaik, to come up with definitions for those baselines but failed to agree) |
| 15:57 | <devsnek> | so for @@asyncIterator on ReadableStream |
| 15:58 | <devsnek> | that last comment in the PR seems to suggest that BYOB streams will also be using DefaultReader |
| 15:58 | <devsnek> | but then why does BYOBReader exist |
| 15:58 | <TimothyGu> | iirc there's no such thing as a "BYOB stream" |
| 15:59 | <devsnek> | there are streams with mode: byob which use ReadableStreamBYOBReader |
| 15:59 | <TimothyGu> | ah |
| 15:59 | <devsnek> | i think |
| 15:59 | <devsnek> | oh no mode is on getReader |
| 16:00 | <devsnek> | ok yeah that makes @@asyncIterator even more annoying |
| 16:12 | <Domenic> | I can't think of any way to use @@asyncIterator for BYOB-reading |
| 16:12 | <Domenic> | It just doesn't really make sense |
| 16:13 | <Domenic> | It's intentional that byte streams can be read either in BYOB mode or default mode |
| 16:13 | <Domenic> | I.e. efficient-but-hard-to-code, vs. not-as-efficient easymode |
| 16:13 | <Domenic> | Saying that for-await-of always does easymode seems fine |
| 16:13 | <Domenic> | If we come up with some magical way to make for-await-of work with BYOB mode that's what we can use .iterator() for. |
| 16:14 | <Domenic> | Let me do a more thorough review now; I've been leaning on ricea and TimothyGu too much. |
| 16:21 | <annevk> | fserb: hey! |
| 16:21 | annevk | reads |
| 16:23 | <annevk> | fserb: that makes sense, but it doesn't resolve textBaseline having seemingly non-baseline values, right? |
| 16:23 | <annevk> | fserb: and we'd probably cannot get rid of those? |
| 16:23 | <annevk> | fserb: I guess if everyone is okay with that seeming mismatch I'm fine; I wish we got a little more input from other implementers at times |
| 16:24 | <annevk> | (other implementers that also have detailed knowledge about these issues, that is) |
| 16:25 | <annevk> | fserb: also, I'm very much in favor of trying to find shared primitives between CSS, <canvas>, and SVG |
| 16:25 | <annevk> | fserb: I kinda wish we also had one definition for paths, gradients, etc. |
| 16:33 | <fserb> | yeah, I agree. |
| 16:33 | <fserb> | what do you mean by textBaseline having non-baseline values? |
| 16:34 | <annevk> | fserb: top/middle/bottom are based on the em-stuff you said were not baselines |
| 16:36 | <fserb> | well, but that's fine. |
| 16:36 | <fserb> | ok, let me recap that. |
| 16:37 | <fserb> | emAscend emDescent are not baseline, they are just font measurements. |
| 16:37 | <fserb> | textBaseline defined top/middle/bottom based on them, which is totally ok. |
| 16:38 | <fserb> | There's no explicit need for "getBaseline()" to return top/middle/bottom because they are not usually special properties of a font, and are ALWAYS defined in terms of the em. |
| 16:38 | <fserb> | (i.e., one can always calculate what top/middle/bottom is given the info on TextMetric) |
| 16:39 | <fserb> | the reason for getBaselines() to exist, is because there are font SPECIFIC baselines, that can't be constructed out of the other metrics. |
| 16:39 | <fserb> | which is the case of hanging/ideographic baselines. |
| 16:39 | <annevk> | fserb: if it's about fonts, shouldn't it be some other API, since multiple fonts could be used here? |
| 16:40 | <fserb> | for the baselines, you mean? Well, in theory yeah. In practice, the fallback font system of the browsers (that defines which font to use for each glyph) behaves like it's a single font. |
| 16:41 | <fserb> | so it is useful for the UA to say "if I'm rendering those two characters, in the font that you asked, I'm actually using different fonts but deciding on a common baseline for both of them" |
| 16:41 | <fserb> | so yeah, it could be thought as a property of the font itself. |
| 16:41 | <fserb> | but in practice, there's value in asking "for this sequence of glyphs, what's the baseline that you used" |
| 16:42 | <fserb> | bc the UA can be smart about it and return a meaningful value for multiple fonts together |
| 16:42 | <annevk> | ok |
| 16:42 | <annevk> | and is the only reason we're turning this into a method because they are optional? |
| 16:43 | <annevk> | it seems we could also make them return -1 / null / undefined or some such |
| 16:43 | <annevk> | oh wait, I guess that was to match the API style |
| 16:43 | <annevk> | ok |
| 16:44 | <annevk> | fserb: I'll push some style nits to the PR |
| 16:44 | <fserb> | awesome! :) |
| 16:44 | <annevk> | fserb: thanks for taking the time to discuss this, I feel a bit more reassured |
| 16:45 | <fserb> | no stress. If there are more questions, I'd gladly answer :) |
| 16:55 | <devsnek> | Domenic: you gotta tell people before you're gonna push :( |
| 16:55 | <devsnek> | merge conflicts aaa |
| 16:55 | <Domenic> | I did! |
| 16:55 | <Domenic> | " I'll upload a patch fixing all of these as I go, as penance for the long turnaround times so far." |
| 16:56 | <devsnek> | oh |
| 16:56 | <devsnek> | my bad :P |
| 16:56 | <devsnek> | lol did you just fix all of them |
| 16:56 | <Domenic> | Yeah the little ones |
| 16:56 | <Domenic> | Writing up a comment on what the big things left are |
| 16:57 | <annevk> | Fixing nits is Domenic and I's day job now |
| 16:58 | <devsnek> | Domenic: the whole point of the AsyncIteratorPrototype inheritance is the @@asyncIterator return this property lol |
| 16:58 | <Domenic> | devsnek: ahhh right OK, nice |
| 16:58 | <devsnek> | thats actually the only thing it provides |
| 17:00 | <devsnek> | Domenic: also was gonna comment about the ObjectCreate thing, we don't do ! anywhere else when we call it |
| 17:01 | <Domenic> | Oh hrm |
| 17:01 | <Domenic> | We should.. |
| 17:01 | <devsnek> | 262 doesn't prefix it with anything either |
| 17:01 | <devsnek> | i don't think there's any situation where it can fail |
| 17:02 | <devsnek> | (and while i disagree with the idea that doesn't fail means no prefix, i think consistency wins here) |
| 17:02 | <Domenic> | Yeah, I prefer prefixing things like that, and thought we'd done that so far in streams |
| 17:22 | <Domenic> | TabAtkins: can you help me figure out why https://github.com/whatwg/streams/blob/5d9498e7526d2f50618432e7aada8582d08745c0/index.bs#L521 works but if I add `attribute` to https://github.com/whatwg/streams/blob/5d9498e7526d2f50618432e7aada8582d08745c0/index.bs#L540 it fails? |
| 17:27 | <Domenic> | I guess it has to do with `fillAttributeInfoSpans` in Bikeshed but I can't see what that's useful for |
| 17:29 | <annevk> | FYI: I won't be working tomorrow |
| 17:29 | <Domenic> | I'll file a bug I guess |
| 17:29 | <annevk> | And I guess next week things might be a bit slower than usual as well, but anything urgent can be done |
| 18:13 | <TabAtkins> | Domenic: As you probably saw in GH email just now, I opened up https://github.com/tabatkins/bikeshed/issues/1346 to figure out what exactly raw-JS needs for Bikeshed dfn types. Trying to shoehorn raw JS into the IDL types is not going to work (and it's already causing problems even in the limited sense you're currently using it, with two specs both plausibly claiming to be the definition of Stream). |
| 18:19 | <Domenic> | TabAtkins: thanks, that'll be good. I think the attribute vs method thing is more limited though... |
| 18:20 | <Domenic> | TabAtkins in particular why does method work but attribute fail. |
| 18:21 | <Domenic> | TabAtkins in particular why does method work but attribute fail. |
| 18:30 | <TabAtkins> | The attribute fails because I'm looking for information that the IDL block would contain. I don't have the same feature for methods. |
| 18:31 | <TabAtkins> | So it happens that a JS class and its methods look sufficiently close to IDL interfaces and methods that you can use those types and be mostly okay. |
| 18:31 | <TabAtkins> | Until you get to Symbol-named properties, etc., as you found. ^_^ |
| 18:31 | <Domenic> | Hmm what feature is this for IDL attributes? |
| 18:39 | <TabAtkins> | Try it and see. ^_^ It fills in information about the attribute's type, its default value, and whether its' readonly or nullable. |
| 18:39 | <TabAtkins> | Does the same for dict-member definitions. |
| 18:39 | <Domenic> | Yeah I tried to find a spec that uses it but couldn't |
| 18:40 | <TabAtkins> | https://drafts.csswg.org/css-font-loading/#dom-fontface-status |
| 18:40 | <TabAtkins> | That's probably because it's, uh, not documented. |
| 18:40 | <TabAtkins> | Which I should fix. |