Minutes Berlin F2F 2018-04-11 Part V: Fonts, CSS Text / Text Decoration, Ruby [css-fonts] [css-text] [css-text-decor] [css-ruby]

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


Fonts
-----

  - RESOLVED: Parse the value of src throwing out invalid parts like
              media queries and not like selectors. aka You split on
              the commas and throw out the pieces you don't understand
              not the whole thing. (Issue #633)
  - RESOLVED: Use this: format(<string> [supports <feature-name>#]?)
              where <feature-name> is a CSS-defined identifier.
              (Issue #633)
  - An issue will be opened to determine if @supports for color fonts
      is necessary.
  - RESOLVED: Add an auto keyword to the appropriate font descriptors
              that has the effect of the following: 1) for font
              selection purposes the font is selected as if the
              appropriate initial value is chosen. 2) for variation
              axis clamping, clamping does not occur. (Issue #2485)
  - RESOLVED: Leave font-style computed values as-is; change
              font-style animation behavior so that 'normal' can
              animate with 'oblique <num>' (Issue #2505)
  - RESOLVED: Use 14 degrees as the angle for undefined oblique.
              (Issue #2295)
  - RESOLVED: Defer font-variant descriptor to L4. (Issue #2531)

CSS Text / Text Decoration
--------------------------

  - RESOLVED: Use from-font [for text decoration metrics] (Issue #2376)
  - RESOLVED: Add this value [text-spacing:space-first], suggest it's
              the default in epubs and add a open issue wondering if
              should be in the web in general. (Issue #2462)
  - There was general consensus that the property for paragraph-level
      line breaking should be a modifier on wrap not a separate
      keyword, but the name still needs to be bikesheded. (Issue #672)

Ruby
----

  - Florian gave a brief introduction to the document of Ruby
      recommendations from Kobayashi-sensei. The document is available
      here: https://florian.rivoal.net/ruby/ and would be a good guide
      to Ruby editors.

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

Agenda: https://wiki.csswg.org/planning/berlin-2018#schedule

Scribe: dael


Fonts
=====

Fonts L4 super-format()
-----------------------
  github: https://github.com/w3c/csswg-drafts/issues/633

  myles: There has been much movement in typography industry in the
         last several years. There are many features fonts can opt
         into now. One of the tenets of this new world where fonts
         can have technology inside is browsers that don't support a
         technology should not trigger downloading a font with that
         inside.
  myles: In @font-face rules in the past this was done with the
         format() function in the src descriptor.
  myles: Inside the format() function it accepts a string. Now that we
         have 3 optional technology we probably shouldn't generate a
         bunch of strings with tokens. There should be a way for an
         @font-face to associate a URL with a set of requirements
         where only if browser fits requirements they should use this.
  myles: That's the issue. We don't have an opinion as to which
         proposal to do this should be picked. There's one we seem to
         be zeroing in on in the issue
  ChrisL: We have the format specifier and we don't want the
          combinatorial thing where we add more things and it
          explodes. So we expand the format specifier to that it has a
          string of what it requires. So existing browser can reject
          that font. That seems to be where the thread is ending.
  myles: Proposal is do we extend format to extend this.
  <ChrisL> so for example `format("opentype", requires variations,
           requires color)`

  Vlad: Hypothetical. Open type font that supports regular + color
        glyphs + variations. If you can't use color the font provides
        you the downgrade.
  myles: Yes. All of these technologies are created such that they are
         opt in and the browser can still use the font file. That's
         great for backwards compat but these new tech can add
         significant space in the font file.
  myles: In the case of color glyphs it's a lot. It would be great if
         browsers didn't have to download more data then needed.
  florian: Is this also avoid the case of a browser choosing to
           download a variable font when they don't support that
           instead of downloading other fonts.
  astearns: I thought that was correct. Browsers that don't support
            variable fonts will not download a font with that tag.
            Doesn't matter if the font in the declaration supports
            variables, but it's a tag for only if the browser supports
            variables.
  florian: So fold variable into the rest.
  myles: yes.

  fremy: We shipped variables and color fonts so if we add this our
         existing impl will not recognize the new required flags
         because it doesn't think we know the font. Would have better
         to think of this before.
  ChrisL: That is why the thread started in 2016.
  myles: We've got the same problem.

  myles: There is a proposal. Is there feedback on it?
  fantasai: Which proposal?
  ChrisL: It's in IRC.
  ChrisL: So for that example: `format("opentype", requires
          variations, requires color)` you have to support both.

  fantasai: ameliaBR suggested using the names of the tables of the
            font
  myles: One feature can have many tables so you need one
         representative table
  fantasai: We do that for @supports already: you have to pick a
            representative value when checking support for a property.
  ChrisL: For variable fonts there's one table for every table that
          exists so you have to list a ton
  fantasai: You use one as a proxy for the rest.  You use @supports
            (display:grid) and assume the rest of L1 is supported.
  jpamental: Font tables aren't something that users commonly know.
  jpamental: I think the concern would be that people who know about
             font format technology might know the tables exist but
             most font users don't. If we're going to pick a table we
             might as well pick a keyword as the thing which is more
             understandable to users of fonts.
  ChrisL: Think so, yes.
  myles: There are 4 popular color font formats and they're all
         competing. Some browsers support some. Edge does all. It
         kinda matters.
  myles: That's a situation where the table matters. Variations is
         different. I think keywords is a good pick so you can say I
         support variations.
  eae: You don't want to download the font 4 times that has the same
       variation.
  ChrisL: It's all openType.
  fantasai: There's a few situations where you need more then does it
            support.

  Vlad: Can you describe an example where this functionality is needed?
  myles: I don't want to download font files....
  Vlad: You're a user and you want color glyphs or nothing at all. Is
        that the case?
  astearns: Author intent is I want to display color glyphs in this
            font if I'm in a browser that supports it. If I'm in a
            browser that doesn't support it I want to download only
            the smaller font so I get it faster.
  ChrisL: These are subsetted fonts. You've got one that does svg, one
          that does spix.
  myles: It's up the the author but yes.
  Rick: Same thing happens with variable fonts. I could have a bold
        weight and a light weight and I want to sort them out.
  astearns: I prefer the keywords. Since there are 4 color font
            flavors do we need four keywords
  many: yes.
  myles: And there will be variations and features
  TabAtkins: If a color wins we'll add 'color' as an alias to it.

  fantasai: You might want references to open type tables for the
            future. Let's say there's an open type table where support
            is necessary to use this crazy script.
  fantasai: We can have keywords for the most common things, but might
            also want to support the more specific cases.
  <TabAtkins> `requires variations, requires table "YOLO"
  <TabAtkins> `requires variations, requires table "YOLO"
  <astearns> `supports`: keyword | "XXXX"
  <TabAtkins> `requires variations, requires table "YOLO"`
  astearns: You mean ^?
  astearns: Arbitrary 4 letter strings which you can put for supports
            and you check if browser does anything?
  myles: We can have a feature keyed off a specific table but we
         shouldn't have that many variations. We can have both.
  ChrisL: Should use it for open type features?
  fantasai: Interesting point.

  astearns: Since this issue has been open for years can we do
            keywords for now and extend later as we find use cases?
            Particularly if there's a language thing with shaping
            tables where if a table to load a font in some browsers is
            the useful thing.
  fantasai: One of the reasons you don't want to defer is if you add
            it later the browsers will throw out the entire
            declaration. So you either define a subset and say we may
            extend in the future.
  ChrisL: It's important to not throw out the whole declaration.
  fremy: Can't we use string and say we split by slash?
  myles: A micro syntax? It's not good for OMs.
  ChrisL: You said it was backwards compat if you use slash?
  myles: Browsers would look at the format string and parse.
  fantasai: Micro syntax is more complicated if we extend.
  fremy: If we do this it still works in previous browsers. They'll
         still parse it. If we require something we'll remove all the
         fonts in src because if you do something inside the string we
         don't know.
  TabAtkins: Download source twice. Source for simplest and second for
             requires.

  fantasai: Shouldn't we use "supports" insead of "requires" to be
            consistent with @supports?
  myles: browser-support font-files

  fremy: Can't you check if the browser supports font variants?
  myles: It doesn't work for color fonts because the css support for
         palettes is across types of formats

  TabAtkins: Should we be careful with how we define to add more
             features. If we say it supports custom ident.
  myles: Syntax isn't a | b | c it's just custom ident?
  TabAtkins: We'll say these are defined custom idents and if you see
             one you don't know you don't support it.
  fantasai: I think more general and the values are comma separater
            but if you don't understand any part of it it throws that
            part out. It's a change to parsing that opens the whole
            realm of possibilities in the future.
  TabAtkins: Yeah. Only possible backwards compat is if people add
             nonsense in their source and expect it not to download
             this will just throw away the nonsense.
  astearns: Does that exist?
  TabAtkins: No.
  fantasai: I'd say we resolve on that.

  fantasai: Prop: Parsing values of the src descriptor, the entire
            declaration is not thrown out if any comma separated
            section is invalid
  myles: Parsing is chop it into commas, run parse on each piece, and
         if that piece doesn't parse throw it out.
  fantasai: Still have to match brackets and stuff.
  fantasai: Parse like MQ not like selectors.
  TabAtkins: The grammar would have to be like custom properties,
             that's less good.

  astearns: Objections to not throwing out a source descriptor if a
            comma separated piece does not parse
  fremy: Inside a function we can extend, right?
  fantasai: This is broader.
  TabAtkins: So I'll need to put together some prose to handle that in
             the grammar.

  RESOLVED: Parse the value of src throwing out invalid parts like
            media queries and not like selectors. aka You split on the
            commas and throw out the pieces you don't understand not
            the whole thing.

  <fantasai> Like Media Queries, not like Selectors
  <TabAtkins> (unfortunately) not like Selectors
  <astearns> (fortunately) not like (unfortunate) Selectors

  fantasai: Now people can impl that while we figure out the rest.
  myles: Now we have that we don't need the string thing. We can just
         use keywords.
  fantasai: That's a different problem. If you just have keywords that
            are predefined, then you can only query predefined things.
  myles: got it
  <myles> format("opentype", [requires custom-ident]#)
  myles: Proposal #2 is ^
  <myles> format(DOMString, [requires custom-ident]#)
  <fantasai> format(<string>, [requires <custom-ident>#)
  <ChrisL> almost
  myles: You missed the square bracket
  <fantasai> format(<string>, [requires <custom-ident>]#)

  astearns: Extending source descriptor to a comma separated list
            requires custom ident
  TabAtkins: not requires
  ChrisL: When I type that out I'll have commas?
  myles: Yes.
  TabAtkins: No requires is no commas.

  TabAtkins: With the resolution we don't need the custom-ident
             business.
  ChrisL: So I can put inherit and stuff in there?
  myles: It's all inside the one format string...I guess that's okay.
  TabAtkins: With the resolution if we mint a brand new requires
             keyword tomorrow and someone uses it for browsers that
             don't know it that chunk of the source will be thrown out.
  astearns: If you put in "requires color-something"...oh!
  myles: It goes on to the next source.
  astearns: You break up things between commas which reduces to the
            things you know.
  <ChrisL> so there is an implicit AND, on the requires
  TabAtkins: Source splits on commas and only checks individual pieces
  astearns: Got it.
  myles: I think we're okay.

  fantasai: Do you need requires word?
  astearns: I like an indication of what this is about. I liked
            supports better.
  TabAtkins: Open type is written as a string. We can't restrict it
             because it's an external source. That's why tables as a
             string. If we define it, it's an ident.
  myles: Authors won't understand.
  myles: I think I'm with astearns that having a keyword would be
         helpful.
  fantasai: Put with many things you have to write it many times.
  astearns: Ties in the supports.
  fantasai: Prefer if you don't have to repeat it.
  myles: Can you write the grammar so that we don't have to repeat?
  <fantasai> format(<string> supports <custom-ident>#)
  fantasai: There ^
  myles: Looks like supports is required, though.
  <fantasai> format(<string> [supports <custom-ident>#]?)
  fantasai: there ^
  myles: And a comma.
  fantasai: Getting rid of the comma.
  TabAtkins: If we're removing supports no commas.
  myles: Okay.

  [everyone argues about commas]
  <astearns> (which is a recurring theme)
  ChrisL: The longest github thread ever was about using commas in the
          color function.
  [This is only because we recently switched to github, though;
   much longer threads exist on www-style.]

  <myles> astearns: proposal: format(<string> [supports
          <custom-ident>#]?)
  astearns: We have a proposed syntax. Anything more to change/fix or
            shall we resolve?
  <TabAtkins> (It's not gonna be <custom-ident> now.)
  TabAtkins: Custom-ident can be a normal grammar thing.
  ChrisL: So we give an explicit list and if we extend in the future
          that's fine.
  fantasai: Yes.

  astearns: Objections to format(<string> [supports (list from
            spec)#]?)

  RESOLVED: Use this: format(<string> [supports (list from spec)#]?)

  <fantasai> format(<string> [supports <feature-name>#]?)
  <fantasai> where <feature-name> is a keyword

  <Joel> Btw we think a @supports for color fonts will be needed,
         especially at the beginning. ie: If you want to use a color
         font only if it's supported and style it differently.
  <astearns> Joel: that's what we just resolved on
  <Joel> Great!
  astearns: Someone on irc mentioned @support for color fonts will be
            needed. Do we have an @support?
  myles: No. I think that should be an issue and we should discuss it.
  <astearns> Joel: sorry, I was wrong. we'll still need to figure it
             out
  <Joel> Ok :)
  <astearns> we'll file an issue
  fantasai: For @supports you can re-use the same function as is here.
  myles: We should do use case research

  <Joel> myles: About opening the issue for @supports, should I create
         it on https://github.com/w3c/csswg-drafts? (I'm not familiar
         with this repo and guidelines though)
  <astearns> Joel yes, and please put [css-fonts] in the title

font property descriptors for variable fonts
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2485

  dbaron: The way @font-face works is what you're doing is you're
          adding a font face to library of fonts browser can consider.
          Has descriptors, one is src, and the rest describe the
          thing at the end of the src. Many cases they have default
          values. Better to spec a font-family. If you don't do either
          it's 400, style defaults to normal etc.
  dbaron: Useful because means the UA can decide if to download based
          on these things. Then we introduced variable fonts which
          have maybe more then one font-weight. The interesting part
          is that they can have variation axes that correspond to
          these descriptors.
  dbaron: Spec says you're defining variable font with @font-face rule
          and you don't spec a weight your font is only used for 400
          according to the spec.

  florian: Other fonts for other weights?
  dbaron: I don't want to get into that part.
  dbaron: You can write 4 @font-face rule and now your variation font
          is limited to 4 weights.
  myles: Context: key problematic pieces is descriptors are defined to
         take on initial value. You covered that. Other pieces is that
         whatever is inside those descriptors clamps the effective
         range and in the initial value says you clamp to a range of
         size 0 which is not what you want.
  <ChrisL> @font-face {
               font-family: MyVariableFont;
               src: url(fonts/MyVar.ttf);
               font-weight: 65 490;
               }
  myles: When I impl this in webkit I discovered this is a problem
         because if it was selected and doesn't have a descriptor
         you're forced to default value. I impl that if there's no
         descriptor the clamping would not occur.
  myles: Spec doesn't say to do that and we're the only browser that
         does.
  dbaron: FF doesn't ship, would like to soon, and recognizes this
          isn't good. But from Jonathan's understanding of webkit is
          that it makes it hard to figure out what to download. His
          impression is it interferes with the decision on what to
          download.

  ChrisL: In Fonts 4 this is changed and you can give a range. But we
          don't want to force 1-999 because there's a weight axis.
          That's why I proposed an auto value which gives you range
          for variable and single for traditional.
  myles: If the goal is I have multiple fonts and want to download the
         right one, they're distinguished between by descriptors. If
         they both have the descriptors then they'll know it as the
         right font. So I think the problem you described isn't.
  dbaron: Are there cases where font-fallback says this weight isn't
          close enough I'll fallback?
  TabAtkins: No. You might synthesize off of it but you'll stay. If
             you have the bold variation use that first regardless of
             the weight it was declared for.
  myles: Distinction webkit drawn between not present and taking
         initial is only relevant for when there's 1 rule that shares
         a family. If there's 2 rules the descriptors will be there.

  TabAtkins: You put 2 font faces to construct a family. One is weight
             400, the other 700. You tell it to use 500 and it'll
             select 400 font. Will variations happen at that point?
  myles: In your case bad things would happen, we'd select one of them
         and then we'd clamp to a 500:500 range.
  myles: But if author writes a font-face rule they wouldn't write
         that.
  dbaron: You can use fontface rules to provide part of what a font
          provides. E.g. you can restrict to only use a certain
          unicode range.
  myles: That's reason for clamping
  ChrisL: You can say I only want to use a restricted range of what it
          can do. But if you don't put one in, it can do what it can
          do.

  florian: Question. When you're doing this clamping etc. can you also
           have within the variability I was to use 200-400 but map to
           400-600
  myles: Different discussion. There's a different open issue.

  TabAtkins: On the situation I described, a variant font with not
             @font-face declaration and another with a weight. You say
             select the 450 does selection occur there?
  myles: Yes.

  dbaron: Other meta point is this is a feature we've done a good job
          on coordinating on shipping at the same time, which is good.
          But that makes this high priority.
  florian: Variable fonts don't have a descriptor and you have another
           on 700 and you say 450. Instead you say 699 and you still
           get the first one.
  TabAtkins: We should switch to auto where it means the same as the
             initial values but it does not cause any clamping.
  florian: When you ask for 699 it's not a range. The variable would
           not be matched because it's default to 400. If you drop the
           400 you do the same thing. But if you're close to 400 that
           you would get the font you get it and draw it at the
           requested weight.
  fantasai: If you wanted 699 off this font?
  florian: You draw the range.
  myles: The descriptor that covers everything is a better match.

  dbaron: What TabAtkins said made sense. Does myles agree?
  myles: I think that's acceptable.
  dbaron: Is it what safari does?
  myles: Almost. Close. With TabAtkins proposal an @font-face block
         could say font-weight: auto. In my impl that's a parse error.
  fantasai: I still think it's a little weird that you say font range
            is auto which means everything and it's able to do weight
            699 and we use the 700 font.
  TabAtkins: We don't know it can do 699 so we don't download it and
             and won't know it can do 699 until we download.
  myles: Most fonts on the web don't have variations.
  ChrisL: If you say auto you should know that it's variable since
          nothing is tagged as auto.
  myles: Maybe they should write 0-999.
  ChrisL: I'd rather an opt in keyword and not have to write the whole
          range.
  dbaron: It's better to write 0-999 because you know it's a
          variation. I think auto where it means 400 but don't clamp
          is a good way to transition to the world with variable fonts.
  myles: Should authors be able to write font-weight:auto
  dbaron: It'll be possible but we shouldn't suggest it.
  fantasai: I agree with ChrisL it's not nice to make authors write
            0-999. Give an all keyword.
  myles: Most variable fonts don't support 0-999.
  fantasai: But if authors don't want to think about it and just write
            0-999 it's awkward.
  ChrisL: It's like for unicode where they don't write the range.

  Rick: As a font user it's hard to determine range.
  jpamental: The fonts as they're developing have quite different
             ranges. We're only dealing with weight because it's the
             only variable range that maps to CSS. Maybe with
             font-weight we want people to put in the effort to put in
             the low and high because it also supports wanting to
             subset the range.
  fantasai: But the browser gets a request for 100 and the range is
            200-800 I'm still going to get the font. Unless there's
            another font that supports 100 I'm still going to get that
            font and I'll use the lowest number. In terms of which
            file will I download it doesn't matter. Only time it
            matters is if there's another font that covers the range.

  myles: Let's say there's an auto and you can say font-weight:auto
         and it has the same value if the descriptor is missing
         without the clamp
  TabAtkins: For matching it acts like the values we spec.
  majidvp: And no clamping.

  myles: prop: Add an auto keyword to the appropriate font descriptors
         that has the effect of the following: 1) for font selection
         purposes the font is selected as if the appropriate initial
         value is chosen. 2) for variation axis clamping, clamping
         does not occur
  astearns: Obj?

  RESOLVED: Add an auto keyword to the appropriate font descriptors
            that has the effect of the following: 1) for font
            selection purposes the font is selected as if the
            appropriate initial value is chosen. 2) for variation axis
            clamping, clamping does not occur.

  <ChrisL> apropriate means weight, style, stretch

'oblique 0deg' vs 'normal' for font-style
-----------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2505

  dbaron: The spec for font styles says normal represents an oblique
          value of 0.
  dbaron: Jonathan writes it's not clear to him what this means [reads
          from issue "Does normal count as oblique 0deg for this
          purpose, such that font-style could be animated as an
          <angle> from normal to oblique 15deg or not?"]. His test
          shows chrome and edge disagrees.
  jpamental: There's two variations.
  ChrisL: It's the slant one. His point is valid is if it's the same
          as 0 you have the endpoints of the animation. I think
          oblique:0 should match.
  myles: ChrisL is right. We impl that it's just a number because we
         treat italic and oblique the same. So normal = oblique 0deg.

  fantasai: Computed value?
  myles: Probably the keyword? Don't know.
  fantasai: Matters for animations.
  myles: Sure then we make computed values always the oblique.
         Question is what is the computed value of the font style
         property. If computed value is normal for ital you can't
         animate.
  TabAtkins: You can animate from oblique 0.
  myles: Computed value of normal should be oblique 0. Computed value
         of oblique with nothing...
  fantasai: I don't think it's backwards compat.
  fantasai: Computed value should stay the same.
  TabAtkins: We can also make the animation value handle that.
  myles: Is there precedent for that?
  TabAtkins: Sure we can make it work. We have special behavior for
             transforms from none.
  myles: This is the same.
  myles: So we'll punt.

  TabAtkins: Change animation so that normal can animate with oblique
             as if normal is 0.
  fremy: And if you put 0 in your style sheet computed value is 0.
  TabAtkins: Some UA map italic to oblique and if they do so they
             should be able to animate between italic and oblique.
  fantasai: Suppose a variable font with both italic and oblique axis
            and I specify font-style: italic
  myles: We keep a float for the oblique angle and we keep a bit to
         know if that came from oblique or italic axis.
  fantasai: Isn't it 2d space?
  myles: It's just not a variable thing.
  fantasai: Can variable fonts have variable italic?
  ChrisL: No.
  jpamental: Intent was italic to be on or off.
  florian: If you want a font to have steps between you have a custom
           axis?
  ChrisL: Yes.
  fantasai: So you have parallel tracks.
  ChrisL: You can have a custom axis and then it doesn't intersect
          with CSS properties.
  myles: Mechanically it's possible to have fonts that do that but
         many experts have not seen a variable angle of italic.
  jpamental: Italic is either italic or not, it's not a degree of
             italic.
  fantasai: All writing systems?
  ChrisL: Most don't have ital.

  <TabAtkins> Proposed Resolution: leave font-style computed values
              as-is; change font-style animation behavior so that
              'normal' can animate with 'oblique <num>'; if the UA
              treats 'italic' as an oblique value, also allow it to
              animate with 'oblique <num>'.

  dbaron: Trying to understand in font matching algorithm of 5.2
          bullet 4 sub bullet 2.
  <dbaron> If the value of font-style is oblique and the requested
           angle is greater than or equal to 0deg and less than 20deg,
  dbaron: It's about font style. The 3rd unnumbered sub clause.
          Sentence starts with ^
  dbaron: This includes an oblique font 0deg. This is separate from
          normal clause and it's not clear to me if sub point 2
          includes normal fonts.
  dbaron: It says if it's oblique and the angle is >=0 and <20 if you
          have an exact match use that but if you have smaller look
          down to 0. It doesn't say if it include 0 and, if it does,
          if it's normal 0.
  myles: Do we need a resolution to make it more clear?
  dbaron: I think it's fine if you just clear the spec up.

  astearns: We've got the proposed resolution that TabAtkins put:
            leave font-style computed values as-is; change font-style
            animation behavior so that 'normal' can animate with
            'oblique <num>'; if the UA treats 'italic' as an oblique
            value, also allow it to animate with 'oblique <num>'.
  astearns: Objections or issues with it?
  ChrisL: sgtm
  myles: cool.

  fantasai: We have UA defined behavior in the resolution and I don't
            like it.
  astearns: It's reiterating behavior we have
  fantasai: Changes to be detectable if you can animate it.
  fantasai: I'm not sure what's going on with the ones that can
            animate and not.
  myles: I think it's if you are a browser that treats oblique and
         italic as the same you should be able to animate between. If
         not you can't.
  florian: I'm not sure about that. The author chooses italic, why
           animate?
  TabAtkins: Some browsers don't distinguish.
  fantasai: But then they can't tell which they should download. Seems
            like a problem. If I said italic I should get italic first.
  many: not how it works.
  fantasai: As an author I'll never get italic?
  florian: In some browsers, yes.
  myles: There's one signal.
  myles: You'll get something consistent if they're both there.
  fantasai: I load a font with an ital variant and an oblique variant
            and I can only get one. Why is this good?
  myles: It's how it's always been.
  fremy: This was in css 2.
  astearns: We can choose not to extend.
  ChrisL: Do browsers do this? Treat them as identical?
  myles: The bit doesn't effect font selection, it's only to have the
         right axis.
  <fantasai> https://www.w3.org/TR/CSS2/fonts.html#font-styling
  <fantasai> “A value of 'italic' selects a font that is labeled
             'italic', or, ****if that is not available****, one
             labeled 'oblique'.”

  astearns: I suggest we take the proposal and strike the UA part
  Prop: leave font-style computed values as-is; change font-style
        animation behavior so that 'normal' can animate with 'oblique
        <num>'
  astearns: Objections?

  RESOLVED: Leave font-style computed values as-is; change font-style
            animation behavior so that 'normal' can animate with
            'oblique <num>'

default angle for font-style: oblique
-------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2295

  myles: When css content says font-style:oblique in a non variation
         world a font is oblique or not. In a variations world that
         need to be mapped to an angle. Variation axis can go between
         0 and 90 degrees. When you say font-style:oblique and you
         don't have an angle where should it go.
  myles: When I wrote the spec I printed paper with representative
         fonts and I measure the angle and it looked like 20 deg.
  ChrisL: Based on Jonathan's data the mid-point is 14deg and that's
          what OSX uses I think that's reasonable.
  florian: Issue had more details about it being platform dependent.
  myles: Spec says it's not and impl made it dependent.
  florian: FF made it dependent because it is outside the browser.

  myles: So options are 1) 20deg, 2)14deg 3) make impl pick something.
  ChrisL: The algorithm has a whole set of if it's below this pick this
  fantasai: I think that algorithm should change to lower than 14. It
            should be a lower end to what's considered typical.
  florian: That would go against leaving it up to UA because we can't
           do one that's always lower.
  ChrisL: Yes.
  myles: There's 2 pieces. This issue is what should we pick with no
         angle and it should be 14.
  astearns: Objections to using 14 as the oblique angle?
  dbaron: 14 or 14.036? I mention it because Gecko was storing the tan
          of the angle so we stored 0.25 and the arctan is 14.036
  <dbaron> 14.036deg is atan(0.25)
  astearns: Objections to 14 degrees?

  RESOLVED: Use 14 degrees as the angle for undefined oblique.

  myles: fantasai should open an issue as to where to put the
         boundaries.
  fantasai: I suggest 10 for now and then we investigate.
  myles: We should figure out the answer
  myles: Can we pick 14?
  fantasai: We want it less.
  astearns: I suggest as a part of the resolution edits you say
            there's an issue and then we can edit in the appropriate
            thing.

font-variant @font-face descriptor
----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2531

  myles: Is the commenter in the room?
  ChrisL: It's Mike Gramford (sp?) and I don't know whose
          implementation it refers to. They did contribute some tests
          so there's a test and that's where it was discovered the
          font-variant descriptor was under impl.
  myles: It's mostly in the issue. Similar to the @font-face
         descriptors there's one that lets you turn on/off features.
         Nothing to do with font selection. I thought webkit was only
         impl, but there's some other behind a flag.
  <ChrisL> test case for font-variant descriptor
           https://www.w3.org/People/chris/fwf/font-variant-descriptor-01.html
  myles: Webkit is only shipping and our impl has architectural
         problems and there's bifurcation of text code paths and we
         make that before we inspect @font-face. we need to know if
         there are features to turn on before we decide. If you're on
         the wrong path it might or might not work.
  myles: I'd like to remove it.

  astearns: Does anyone claim Mike?
  TabAtkins: I think it's a pdf renderer
  astearns: We could defer.

  ChrisL: I posted this on www-style.  This is one of the non-passing
          tests. Do we defer? Do we delete? It's holding us from rec
  astearns: This ability seems useful.
  ChrisL: I thought so too but myles talked about how it can conflict
          with cascade and if you put this in @font-face you have
          fixed positions.
  fantasai: Property overrides descriptor so no cascade problem.
  myles: Philosophically features should be applied to everything in
         the cascade.
  fantasai: There are fonts out there that are always small caps
  myles: But turning it on on small case will be fine.
  fantasai: But there are other features where e.g. if I have this font
            I want historical ligatures but not on this one because
            it's ugly in that font. It's an even bigger issue for
            stylistic alternates.

  astearns: We have a spec we want to push and a feature we don't have
            2 impl. I think we should defer and not remove until we
            talk.
  astearns: Objections to defer font variant descriptor to L4?

  RESOLVED: Defer font-variant descriptor to L4.

CSS Text Decoration
===================

Bikeshed font underline value names
-----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2376

  myles: There's 2 properties to describe the geometry of text
         decoration. Move up and move down. Increase size. Fonts also
         include information about where font designer thinks
         decorations should be. We resolved to add keywords to say use
         what's in the font file. We have not found names.
  myles: One is from-font and one is use-font
  fantasai: Also match-font.
  TabAtkins: We have a from-image keyword.
  fantasai: Anyone impl?
  TabAtkins: Dunno.
  fantasai: I like your point that they should be consistent.
  astearns: Objections to from-font?

  RESOLVED: Use from-font

Ruby
====

Rules for Simple Placement of Ruby
----------------------------------
  link: https://lists.w3.org/Archives/Public/www-style/2018Apr/0006.html
  document: https://florian.rivoal.net/ruby/

  florian: I don't want to spend too much time to introduce that it
           exists.
  florian: Kobayashi-sensei from JLReq fame wrote a new recommendation
           about ruby that I translated to English. JLReq describes
           what they are but doesn't try to address when you might
           want to choose something. This doc takes a recommendation.
  florian: If you want to handle ruby well do these things. It doesn't
           handle all possible variants, but here's a set of rules you
           can follow.
  florian: I will not read this live, but there's a bunch of figures
           and it handles mono, group, overhand, longer ruby base,
           line breaking. I think people editing and reviewing ruby or
           are impl ruby spec should review this with ruby spec in
           parallel to find places where maybe we got it wrong or
           where we said let's leave this to UA defined because most
           impl don't know what they should do.
  florian: If we can recommend a good base default from this. Maybe we
           have in ruby spec all desirable variants but we might lack
           some smartness about picking the right one. I know we have
           some logic for handling ruby with Latin and ruby with
           Japanese. This document exists on my personal repo.
           Probably submitted by i18n.

  astearns: Can you send it to www-style archive?
  florian: It's a link that won't expire.
  astearns: Thanks for doing this translation.
  astearns: It might be good to have a time where ruby editors can go
            through spec and look line by line against this.
  fantasai: Sound great, but I have other things to wrap up first.

  florian: Addendum is similar documents will come from
           Kobayashi-sensei and the WG in Japan where JLReq lists and
           these documents recommend.

CSS Text L4
===========

text-spacing: space-first
-------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2462

  florian: Kindle does this (shows image from github). Interesting
           thing to note is the opening corner bracket. These glyphs
           have whitespace in them and it's been trimmed. We have a
           property that allows this to be one or odd. But Kindle
           decided to just trim.
  florian: Some amount of trimming is typically wanted by Japanese
           typographers and publishers which is likely why the
           default. But what it doesn't isn't want Japanese people
           want.
  florian: Kinoppy does much closer. Inline in the middle of a
           paragraph trim, but at the beginning set full-width.
  florian: This is what people in Japan mostly want.

  Rossen: What's the significance?
  fantasai: Indentation.
  florian: Way we spec things if you want this effect you need to a
           1em text intent and you want to hang opening punctuation.
           That would give you this but that's not how they do it.
  florian: The brackets are a quotation mark.
  myles: Not just a full width character?
  florian: They're not using text indent, they're putting a space
           character at the beginning of the line. Brackets at the end
           are not trim but the one in the middle is trim. How they do
           it is dirty but the effect is what they want.

  florian: Murakami-san suggests we add a value to text-space, I think
           called space-first. We have trim-start and space-start and
           he suggests a value that's space on the first line trim on
           the rest.
  florian: It would allow being compat on this type of content. It's
           regrettable they do it this way but it might as well be
           compat. Even if you don't consider hacky-layouts this is
           probably a good default for Japanese in general.
  florian: Because trimming at the start of lines except the first is
           really a good thing.
  astearns: Otherwise you assume it's a paragraph.
  florian: Trimming at the start of lines is good, but at the first
           line content...some paragraphs are visible because the
           first line has an indent.
  astearns: Why not solve this by having you use trim-start and
            text-indent and hanging punctuation correct for
            Japanese...ah, because then the mid paragraph would hang.
  fantasai: It wouldn't.
  astearns: Why not use text-indent and trim-start?
  fantasai: We can't by default.
  florian: Right, he's suggesting this exist and be on by default.

  florian: This ideal cannot be on by default because it's not
           backwards compat. That's kind of redundant, but it can be
           on by default which is nice.
  astearns: And he goes through why my suggestion is wrong in the
            issue. He says you can't apply this to current Japanese
            ebooks because the epub guidelines.
  florian: It's a combination of defaults and legacy and having this
           value would work okay for all of these.
  fantasai: Reasonable to me. Big issue is we have a standard for how
            ebooks are written which is incompat with... This would
            make them look good and not doing this would not.
  florian: epubs would look better and the web as it is would start
           looking better as well. We can do this by default.
  astearns: And the current default is bad.
  florian: Right.

  koji: No strong opinion. This is about...the paragraph starts with
        one ideographic space?
  florian: If you look at the example with an ideographic space
           instead of an indent or an opening punct. If there's one
           that happens to wrap in the middle of the line that should
           be trimmed. That's what epub authors assume. If we don't do
           it epub looks bad. It will help the web too. Only slightly
           for the web at the first punct but given that trim-start
           isn't done currently it's bad.
  koji: space-first has nothing to do with space?
  florian: Name is strange it means trim on non-first-lines. Why it's
           called space-first we have trim-start and space-start and
           space-start means don't trim. This is "space first trim the
           rest". That's a bit long so it's called space-first

  fantasai: I'm not convinced this is the right thing for the Web in
            general. For flush paragraphs why would you have a space
            only if it begins with a bracket. But epub needs this so
            we should add.
  florian: In general you want trimming on the web. Not trimming the
           first isn't desirable, it's just safer.
  fantasai: If you're not using indentation of any form...?
  florian: Maybe you're not.
  florian: You only do this on your block quotes. The argument is that
           it isn't always desired it's the removing the space is
           always bad.
  fantasai: I think we should add the value. I think the correct
            default is trim everything but is there content that would
            break.
  astearns: Murakami-san says it would. Many will improve visually but
            some will break.
  koji: Apart from the default I understand the desire. But that makes
        me think maybe we can use first-line and we're done.
  florian: It's only interesting if it's the default. If it's not
           default we have other opt-in ways.
  fantasai: It needs to be the default in epubs. If it's the initial
            or it's in their default stylesheet I'm not sure of the
            answer. It seems clear it's needed
  astearns: Prop: Add this value, suggest it's the default in epubs
            and add a open issue wondering if should be in the web in
            general

  RESOLVED: Add this value, suggest it's the default in epubs and add
            a open issue wondering if should be in the web in general.

  fantasai: Does guide tell people to lang tag?
  florian: We can check. So you apply based on lang tag.

Allow for paragraph-level line breaking
---------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/672#issuecomment-379723234

  fantasai: astearns added a new feature and there was limited
            discussion. I feel we should have more check in with the
            group.
  astearns: Issue is pretty long.
  <astearns> https://drafts.csswg.org/css-text-4/#text-wrap
  fantasai: Discussion was from myles asking to opt into more
            expensive line breaking algo with better results.
            Discussion landing on adding a switch. text-wrap property
            in L4 is a longhand of white space that only controls
            wrapping. Has values to say wrap, don't wrap, try to
            balance lines for same length. Proposal was add a value
            called multi-line that does one of these more expensive
            algos.
  fantasai: We've talked about fancy wrapping algorithms before.
  eae: It's not that we don't want to impl, it's not a priority.
  astearns: I added it to the spec as a this would be nice to have.

  fantasai: Alternative is you do it anyways and you don't need an opt
            in.
  eae: Opt in is nice since it's quite a bit more costly.
  myles: You can't have this on by default.
  myles: This will be way slower.
  fantasai: If concern is about performance we might want a note to
            say if someone impl and discovers no performance issues.
  florian: If you want to do it and have made it fast you can apply to
           both.

  astearns: When I added the value the default says you may consider
            multi lines and the UA may optimize for speed. And for
            multiline algo should consider multiple lines and should
            bias for layout over speed.
  Rick: UA could decide this is giant and we won't do it anyway?
  myles: Yes. There's 100 criteria for a beautiful paragraph and it's
         impossible to do all. Browsers should be free to pick and
         choose.
  fantasai: Sounds like what you want is text-wrap:expensive
  fantasai: If that's what it's conveying let's convey that. There are
            lots of other things to consider.
  myles: But balance is also expensive. Different algo for different
         reasons.
  fantasai: Wrap and multiline are trying for the same effect.
  florian: You're not asking for slow. You're asking for pretty even
           if it's slow.
  <dbaron> high-quality-wrap?
  myles: It isn't one spectrum, there are different algo with
         different purpose.

  jpamental: As a designer there's many things to optimize on. I'd
             like the pretty to have everything laid out, but I also
             recognize that's hard. Maybe target which things you want
             to prioritize but that's a different solution. Assigning
             priority to the thing you want to address.
  myles: We could make it more complicated but there's 0 impl so
         simple would be good.
  astearns: Concerns with leaving this prospective value in?
  fantasai: If it's not clear what we're aiming at I don't know if it
            makes sense to have a keyword. If someone wants to impl a
            fancy line wrapping algo they can come back and ask for a
            switch and what they optimize for and then we can discuss
            what switch we want.
  astearns: I think it's a case that a shared characteristic is that
            it considers more then one line at a time. A multiline
            value that can encompass a range of strategies is
            appropriate. I feel that deciding on this is the pretty
            strategy for the web and getting everyone to agree on a
            algo won't happen. I wanted to leave it a little open so
            people can experiment with what they'd trade.
  fantasai: I think multiline isn't clear.
  myles: Let's call it pretty
  fantasai: Sure.

  florian: We started with paragraph and we shifted to multiline
           because it doesn't always consider the whole paragraph.
  myles: Maybe not pretty because titles don't want this.
  astearns: I'm happy to bikeshed on name. multiline is pretty well
            known by the breed of people that use indesign.

  florian: There was a thing for a switch...for editing purposes you
           don't want an unstable algo.
  astearns: Separate issue for that.
  fantasai: In that case you want stable and something else.
  astearns: And there's a note at the end of the section on that
            problem.
  myles: If we were to impl we prob would make multiline same as wrap.

  florian: We're pretty much repeating this issue and the issue says
           we don't want a separate property from wrap but wrap-stable
           and wrap-pretty.
  fantasai: I like it as a modifier.
  dbaron: Agree wrap should be in the same.

  myles: Should balance also have wrap?
  Rick: multi-line line breaks would be just fine
  florian: If you say wrap UA must not consider multiple lines. If you
           call for stable and you don't want re-jiggle you shouldn't
           consider. If you turn of the editing you want stable.

  astearns: We're at time. I've got some of this discussed. Do you
            want a resolution fantasai?
  fantasai: I think we agree it's a modifier on wrap not a separate
            keyword.
  astearns: I believe there is a separate issue on editing and
            multiline
  astearns: Resolution that we should change value to wrap-nice,
            wrap-better...something?
  astearns: Issue is open we can bikeshed there.
  fantasai: We can make it a modified on wrap.
  koji: If multiline is modifier balance should be one too.
  astearns: We're at time. I don't hear consensus and I would object
            to putting wrap as a modifier on all of the values.

  astearns: We're done for the day.

Received on Thursday, 17 May 2018 07:34:23 UTC