[CSSWG] Minutes and Resolutions Hamburg F2F 2012-05-10 Part III: Alignment, Grid Layout, Fonts

Box Alignment
-------------

   fantasai presented a proposal to converge all layout models on a single
   set of alignment properties:
     http://fantasai.inkedblade.net/style/specs/css3-align/

   - RESOLVED: fantasai to continue working on this proposal
   - RESOLVED: flexbox alignment properties to be replaced by css3-align
               equivalents

Grid Layout
-----------

   - RESOLVED: rename the values of grid-flow so that row adds rows, column
               adds columns, and layer just stacks grid items on top of each
               other.
   - RESOLVED: add row-gap and column-gap to the specification such that they
               provide uniform gutters
   - Also discussed scoping of Grid Layout vs. Template, ways to remove
     overlap, and scoping things for Level 1 vs. higher. No conclusions.

CSS3 Fonts
----------

   - RESOLVED: fallback for font-variant-position occurs per run rather
               than per-glyph
   - RESOLVED: the 'font-variant-position' property is defined independent
               of the existing use of the font-size/vertical-align properties
               to synthesize subscripts/superscripts
   - discussed small-caps fallback per-script rather than per-font,
     and using text-transform rules for synthesizing small-caps
   - noted proposed updates to prose for font-family syntax to match 2.1
     errata

Spec Editing
------------

   - vhardy showed off a tool to help editors synchronize specs with Bugzilla
   - plinss explained plans to host test-annotated /TR specs

====== Full minutes below ======

Box Alignment
-------------
Scribe: sylvaing

   <dbaron> http://fantasai.inkedblade.net/style/specs/css3-align/02
   * Bert, seeing that we have failed to solve it in the past 12 years,
           wonders if 30 minutes really will be enough. :-)
   fantasai: the idea is to "align" all the CSS alignment properties and
             resolve issues that have been put off for a long time
   fantasai: CSS1 and 2 supported text-align, vertical align, auto margins
   fantasai: new modules had many more alignment methods such as flexbox,
             which has five alignment properties
   fantasai: grid adds two properties
   fantasai: this doesn't even cover vertical alignment in block layout
   fantasai: and in order to support the alignment attributes in html,
             more properties will be needed
   fantasai: so the challenge is to come up with a set of common properties
             that can be shared across modules
   fantasai brings up the proposal

   fantasai: there two axes of alignment
   fantasai: the dimension affected: primary (inline/main) or secondary
             (stacking/cross)
   fantasai: and what is aligned: you'll either want to align the box within
             its parent or align the content of the box within itself
   fantasai: i tried to come up with a logical system to organize both axes
   fantasai: the first part of the name defines what is getting aligned:
             "box-", when the box aligns itself,
             "content-" when its content is being aligned
   fantasai: then "-justify" is in the inline axis and "-align" is in the
             stacking axis e.g. box-align, box-justify
   howcome: are these meant to be aliases?
   fantasai: they would replace flexbox and grid properties, and add new
             functionality to block and table alignment
   howcome: if people use text-align?
   fantasai: this is separate, none of these affect text-align
   howcome: so text-align and content-justify do not overlap ?
   dbaron, fantasai: content-justify align children
   ...
   (discussing axis and checks in the overview table in the spec)
   http://fantasai.inkedblade.net/style/specs/css3-align/02#overview
   fantasi: box-align does not apply to blocks because a block can't control
            its vertical position within its parent, it can only control its
            horizontal position
   (fantasai draws diagram on board; properties are set on red box)
   http://lists.w3.org/Archives/Public/www-archive/2012May/att-0024/align-targets.jpg
   fantasai: a grid item inside its grid cell can do both dimensions
   fantasai: I map box-justify to grid-column-align and box-align to
             grid-row-align
   fantasai: if the inner element is a block, it can't control its own
             alignment within its parent but it can control its box-justify
   dbaron: so in inline layout justify controls the horizontal layout.
           shouldn't -justify control vertical alignment for blocks?
   fantasai: no, -justify controls the inline direction alignment
   fantasai: justify is horizontal alignment, align is vertical (modulo
             writing modes)
   dbaron: I thought we should have only 4 properties out of these 6
   dbaron: I think we could do without box-justify and items-justify
   fantasai: no, because grid needs box-justify
   fantasai: box-justify works in a manner similar to margins but adds
             to margins
   fantasai: the use-case for box-justify in blocks is wanting margins
             in addition to alignment
   fantasai: for example if I have a shrink-wrapped table, I want a 1em
             margin around it but I also want the table centered
   fantasai: but if the table fills its containing block I still want
             1em between the table and its containing block
   <Bert> (TeX-way to center: 'margin: 1em + 1fill')
   dbaron: I thought this is what box-align did
   fantasai: content-justify applies to the children of a block. it has
             an auto value which, only on a block element, computes to
             the value of its parent. this supports the HTML align
             attribute which inherits
   fantasai: content-align allows the children of a block to be centered
             vertically
   fantasai: it's like vertical-align for tables but applies across other
             box types
   fantasai: any value of content-align other than auto creates a BFC
   vhardy: any value to automatically distribute space using content-align?
   fantasai: we could add a distribute value

   florian: since flexbox would depend on this, how do we move forward?
   fantasai: we would rename all the relevant flex properties using these
             names. we would define how they work for flexbox. for other
             elements, they have no effect unless defined by another module
   florian: we could keep the flexbox properties as they are. later we can
            introduce the new ones and they would work as shorthand
            expanding into the block align longhands. not sure whether
            that would make them aliases on the OM side.
   szilles: is it just a name change or is it a semantic change ?
   fantasai: it's a name change for flexbox
   szilles: I'm trying to distinguish their impact on flexbox vs. other
            specs
   szilles: if it's only a name change for flexbox this is very scoped.
            whether we propagate this to other modules can be done at a
            later time
   florian: except these properties can be applied to other things today
            and do nothing, then someday they'll do something
   dbaron: I agree with both of you. the timeframe of this evolution
           would have to be contained.
   (fantasai draws pretty blue and red boxes on paper)
   http://lists.w3.org/Archives/Public/www-archive/2012May/att-0024/align-flexbox.jpg
   (multi-line flexbox with a number of items)
   fantasai: the alignment of flexboxes is controlled by 5 properties
   <sylvaing> if content-* applies inside and box-* applies outside,
              should future display-inside/display-outside align their
              name too?
   fantasai: alignment of text to bottom inside red boxes is controlled
             by content-align on red boxes
   fantasai: alignment of red boxes within line is controlled by
             box-align/flex-item-align on red box, whose auto value means
             to default to item-align/flex-align on green box
   fantasai: alignment/distribution of red boxes within line is controlled
             by content-justify/flex-pack
   szilles: there is an analogy between lines in flexbox and lines in text.
            this model scales up the text behavior higher up.
   dbaron: I think the axis make sense in this flexbox example. I'm not
           sure I agree with the block example.
   alexd: I think we should rename *-align with *-stack e.g. box-stack,
          content-stack
   fantasai: I'm not sure content-stack: baseline sounds right

   <Bert> q+ to ask about mixture of 'box-align: bottom' and 'box-align: top'
          on siblings.
   howcome: I don't really understand how this applies to blocks. don't
            you have to take it out of flow?
   fantasai: no. you would make your content center vertically
   fantasai: the entire content of a box has a particular height; if you
             have leftover space you can align within that
   bert: content-align aligns all the content. how do I align one child?
   fantasai: how would you align only one child?
   <dbaron> Bert's case is the reason I don't think we should have box-justify
            and items-justify
   bert explains his example: a 4-column layout, each column has some
        images, text and color information at the bottom....
   <Bert> http://www.w3.org/Talks/2012/0509-CSS-ftf/scan-12-small.jpg
   fantasai: I think this is a case that should be handled using flexible
             margins

   florian: what are we resolving on?
   fantasai: 1) whether we want to move towards a common alignment model
             2) whether we want flexbox to be based on this proposal
   szilles: I think we should move flexbox to this. this will also help
            upcoming modules.
   ...
   fantasai: I think you want both content-* and text-* properties since
             you might want to align the blocks children and inline
             children of a block differently
   howcome: how does this interact with floats?
   fantasai: I don't think it applies to floats
   howcome: don't we want to look into this before moving this beyond flexbox?
   szilles: we're no worse off with this names vs. the flex-* ones
   szilles: these might generalize
   florian: there is a risk that these properties will be applied using
            'blanket' selectors and content will break in the future.
   fantasai: I can work on this at a high priority
   florian: we do not have content dependency for flexbox at least
   vhardy: I think this is a great proposal. I agree it's high priority.
   howcome: I think the start/before value names will confuse people
   bert: most people don't need start/end/before/after
   howcome: we should keep using top/right/bottom/left, this is what users
            expect
   plinss: can we resolve to keep working on this?
   dbaron: I agree we should resolve to work on this
   RESOLVED: fantasai to continue working on this proposal
   fantasai: see Issue 2 about the naming model
   RESOLVED: flexbox alignment properties to be replaced by css3-align
             equivalents
   <Bert> (Where I think "this proposal" means: an attempt to generalize
          alignment across different box types, not necessarily with six
          properties.)
   florian: I'm happy with box and content
   vhardy: I find the verb-what convention easier
   vhardy: we got feedback on Regions/Exclusions that vert-object structure
           was awkward in CSS

Grid Layout
-----------
Scribe: Shane Stephens
Present:
   +Phil Cupp
   +Daniel Holbert
   +Markus Mielke

   <fantasai> my issues list -
              http://wiki.csswg.org/spec/css3-grid-layout#issues-for-hamburg-f2f
   fantasai: I compiled a list after discussing with Microsoft

   Scoping =
      1. Scoping of Grid Layout and Template Layout specs
      2. Drop named lines from this level of Grid Layout
      3. Adopting column-gap etc., adding row equivalents, to handle gutters

   fantasai: scoping principles we tried to apply were minimum set that
             is useful for this level of grid
   fantasai: to just reduce to as small a set as possible
   fantasai: other principle was to just have coordinate based system and
             leave others to a higher level
   fantasai: more sophisticated addressing handled by template or level 2
             of grid
   fantasai: from those principles came suggestion: move template out of
             grid and have bert keep in template spec
   fantasai: drop named lines from this level of grid layout
   fantasai: other issues on positioning things with negative indexes or
             indexing from last line - push out as next level feature
   fantasai: just focus on layout and positioning needed for layout
   markus: didn't make sense to have template in both specs
   markus: 2nd reason wanted to get more implementations faster
   markus: got feedback from firefox about core aspects and want to reduce
           to those aspects
   markus: tried to reduce complexity for first version
   phil: questioned whether or not the grid is suited to thinking about
         content in tracks and position content by defining rectangular
         area using start track and span length
   phil: or instead talk about lines.
   phil: conclusion was that you needed to talk about tracks in the spec
         because all the styling functions are creating space for tracks
   phil: but only need to talk about lines if lines are part of a
         positioning scheme
   phil: so it's easier to eliminate the concept of lines and just talk
         about tracks
   phil: think we can simplify all the language in the spec
   tabatkins: and then later on name the tracks
   plinss: I want to avoid that. The real power in grid is having the lines
   phil: real power in grid is dividing the space afforded to the grid by
         its parent
   phil: whether you make use of the space by referring to four lines or
         some tracks that intersect is a difference of perspective
   phil: doesn't change functionality
   plinss: I think it's a mental model shift. The way grids have been used
           traditionally in page layout, designers don't think in terms of
           tracks but in terms of lines.
   plinss: page layout with grid - classic example: multiple columns, one
           with sidebars and no text. The column next to that one - the
           headings span out into the sidebar column.
   plinss: the headings should be part of one flow in the middle track,
           but certain elements snap to different grid lines so they
           don't really live within a track.
   phil: I totally agree they don't live within a track, but think of the
         model - track has content structure. You define tracks and cells
         with additional properties. In grid you can have overlapping cells
         because the rectangular region is defined on the items. Free to
         say you have a heading that spans into some center track and then
         something else that intersects but doesn't occupy the same space.
   phil: not in same container but share reference to same tracks (??)
   phil: so I agree that tracks aren't containers, just spaces, and some
         of the intersections of rows and columns can define a region for
         positioning an item
   phil: so the concepts are equivalent.
   phil: Argument is that it'll be easier to read the spec if the mental
         model is around tracks.
   plinss: I agree that the shift in terminology isn't changing the features
   plinss: my concern is the mental model. CSS is about cells and boxes,
           grids gives you a different model. I don't want to lose that.
   phil: Are you a fan of the spec as it reads now?
   plinss: I haven't had a chance to look
   markus: Feedback we got is that spec is confusing. Reading through it
           introduces lots of models that do the same thing.
   markus: Confusion: which should be used?
   markus: We agree with your point. Lots of possible positioning models
           that can live on grid. Absolute positioning. Templating.
   markus: which is the fundamental concept and which can build on that?
   phil: 4 positioning schemes in current spec: template, named line, using
         numbers to denote start/end lines, using numbers to define starting
         track and span length
   phil: we want to boil that down to just 1
   phil: because simpler is better
   plinss: let's move on. I'll provide feedback over email.
   stevez: 2 other things that lines give that change functionality:
           (a) by using lines instead of numbers can add a line in the
               middle of the grid and don't have to redo positioning.
               Named lines give you more editing generality.
   stevez: (b) using media queries can come up with different grids using
               same named lines for different media - e.g. branch headings
               out if there's enough space.
   phil: One distinction - we're talking about the concept of lines as
         numbers vs. tracks as numbers, not concept of named lines
   phil: There's no difference between numbering systems. Doesn't apply
         to named lines.
   stevez: we are talking about named lines.
   phil: your point: do we need some kind of indirection? Argument is one
         of leveling - does it need to be in the first version of the grid
         spec?
   phil: not minimum level of functionality that provides usability
   stevez: if you want to give users a good model for using grid, not
           having naming schemes leads them down the wrong path.
   plinss: if you want to avoid complexity, drop indexed system before
           name-based system.
   markus: we are seeing that it's easier for people to think in terms of
           numbers right now, because of history. Wouldn't go against that
           right now.
   phil: also defer because the concepts need time to mature. Discussion
         with fantasai indicated named lines got verbose because you're
         naming all 4 edges.
   phil: but with template syntax only need to assign one value.
   phil: When using named lines, theory is you want something that says
         this is my header start line, header end line. Need pairs for
         both row and column dimensions. Now if you want to change
         definition of grid, relocate those four names. With that model
         you're going to have 4 names x number of grid items that you
         want to make maintainable. That's lots to type - haven't created
         ease of maintenance tool.
   phil: not convinced that named lines actually solve the problem we set
         out to solve. Not positive that templates are better.
   phil: but shorter to type, and talking about regions instead of items -
         can't type 2 letters in same spot.
   phil: argument against template system is it doesn't give full power
         of grid.
   phil: both of these areas could use some bake time.
   * sylvaing notes we have now spent 25mn on the same issue
   plinss: let's move on

   <Bert> names require you to think of names, where there actually is no
          semantics, and it is not extensible for auto-placement
          (a-priori unknown # of rows)
   bert: need numbers anyway
   bert: so that's enough to have in the core. Can add other notations later.

   fantasai: next issue: discussion on mailing list about adding ability
             to do gutters on grid lines so you don't need to create an
             extra set.
   fantasai: we said we could reuse the column-gap property
   fantasai: so also add row-gap for other dimension
   bert: not necessary, very limited - can only have one type of gap for
         all columns. If you have something that spans multiple columns
         where does the gap end?
   fantasai: would span over the gap.
   tabatkins: one of the reasons you need this kind of gap - if you want
              to do flex box in a grid you can kind of do it <draws on board>
   tabatkins: but you can't specify gutters. If you do them as empty rows
              and columns the content will try to expand into them
   tabatkins: really want a declarative mechanism
   stevez: why isn't that a property of a track?
   phil: tracks don't have properties because there's no track element to
         style
   tabatkins: could put into grid rows, but is unclear which track the
              gutter would belong to
   phil: they're the spaces between the tracks
   tabatkins: probably almost always want uniform gutters
   stevez: not objecting to simple mechanism, but bert's point was that it
           doesn't provide arbitrary gutters. So a separate mechanism for
           specifying a col or row that is intentionally blank seems to be
           a useful feature.
   stevez: was in original proposal
   tabatkins: +1
   fantasai: in the cases where you want non-uniform gutters, usually you
             have small number of elements that you're styling individually
             anyway. Easier to use margins for that.
   phil: so uniform gutters mean we could just adopt column-gap and define
         row-gap. If we want a non-uniform mechanism we'd need to provide
         a list of gutters or something
   markus: sounds like a great feature for next level
   stevez: actually I was saying you could declare a column or row as being
           a gap
   phil: like a gap() function or something
   bert: can leave that to templates. That's what they do
   markus: sounds like agreement for a basic mechanism in spec

   fantasai: next, some naming things. Grid spec has grid-flow, want to
             align with syntax of flex-flow
   fantasai: row means add more rows as you add content, column means add
             columns, layer means create stack in the current cell
   fantasai: previously row and column were flipped. Very confusing.
             None becomes layer to be more clear.
   markus: feedback from tooling people - really liked layer approach.
           But others might want to do things other ways.
   bert: alternative I had was to use grid-row property for that - have a
         keyword that says this goes into next row, and one on column that
         says this goes into the same column
   fantasai: doesn't handle a lot of auto-placement situations because you
             can't wrap onto the next line. If you have 100 items and just
             want them to flow into a grid, can't do that without nth-child.
   * sylvaing are we resolving anything?
   fantasai: if you throw in different spans, definitely can't do that.
   bert: can do that with normal selectors
   tabatkins: yeah need to explicitly do it. More complex than it should
              be for the use case.
   bert: normal case is that you don't fill lines but that certain elements
         need to be in particular places.
   tabatkins: still really easy to do in this syntax
   fantasai: both use cases useful, each set of syntaxes can do things the
             other one can't. So we should have both approaches.
   bert: e.g. I want to have a table, transposed. That's easy to do by
         saying every td:first-child goes into the next column
   howcome: are you saying this is possible with grid flow?
   bert: yes
   phil: grid flow would be property of grid. Not targeting individual items.
   bert: but if you want every <tr> to start a new column, then (??)
   markus: so we all agree basic functionality should be there but are now
           talking about finer points. Move to email? Both approaches have
           value, different ways of achieving same thing
   <Bert> tr {grid-flow: column} td {grid-flow: row}  or
          td:first-child {grid-column: next; grid-row: 1}
   discussion about repeat patterns and whether row means row
   * sylvaing feels sorry he suggested resolving something
   RESOLVED: rename the values of grid-flow so that row adds rows, column
             adds columns, and layer just stacks grid items on top of each
             other.
   <Bert> (So if 'grid-flow' doesn't influence the autoplacement, how do
           you say where the next child goes?)

   phil: let's go back and see if there are resolutions on the other ones
         too. Gutters:
   plinss: we only had a dissuasion, no conclusion.
   bert: we don't need them. We can use margins.
   tabatkins: margins don't collapse. So you get double-wide gaps in the middle.
   tabatkins: you want 0 on the edges and 10 on other lines. Can't do it without using nth-child
   <Bert> div::slot(a) {margin-left: 10px}
   phil: also can't center the margin on the line
   phil: are there any objections to adding these?
   bert: certainly not in the core, they might hurt us later
   stevez: same as multicol?
   bert: I think we're doing the wrong thing but won't give an objection
   <BradK> I'm in favor of gutter gaps
   bert: I've never needed it. Why add it?
   phil: I didn't hear your solution to putting the gutter down the center
         of the line rather than on one side.
   RESOLVED: add row-gap and column-gap to the specification such that they
             provide uniform gutters

   phil: lines versus tracks as numbering. I don't think we'll get a
         resolution on that but we have an action.
   ACTION plinss to read new version of spec and provide feedback to phil
   <trackbot> Created ACTION-461

   phil: alternative addressing schemes. grid template syntax with lettering
         of cells and named lines - proposing that they are deferred
   <Bert> I think Elika's split means:
          Core = 'grid-rows', 'grid-columns',
                 'grid-position-{x,y}' (incl. same/next/auto-placement),
                 'vertical-align' (or equiv.),
                 and the constraint system to calculate sizes, pagination.
          Rest = 'grid-template', 'grid' shorthand, ::slot(), 'flow',
                 (and then in level 4: 'chains', page-based grid templates)
   phil: do we have a resolution or action?
   stevez: not in favour
   stevez: worried we won't ever specify these modes
   dbaron: I think that if you think the feature is important you should
           keep it in
   dbaron: not familiar enough with specification to have strong opinion,
           but reasoning is dangerous because you can take a long time to
           get back to things
   plinss: I share steve's concern that by not having it in level 1 you
           won't teach people to use it the right way
   fantasai: would prefer to keep template rather than named lines, agree
             that named lines syntax is really awkward.
   plinss: I propose we revisit this when I have had a chance to provide
           feedback
   <BradK> I hope we can at least keep templates.
   stevez: I'm concerned that moving templates out of this spec and into
           bert's changes behavior. It's a non-trivial change.
   phil: I think there needs to be clear scope separating these two specs.
         Right now there's significant overlap, with some conflicts.
   <BradK> Templates and grid go together very well. Like chocolate and
           peanut butter.
   phil: beyond that, there's additional functionality in the templates
         spec that we don't want to see come into the grid spec.
   fantasai: declaring grid, positioning, templating and layout algorithm
             are in both specs and incompatible.
   fantasai: need to move them into one place
   bert: more compatible than they used to be.
   sylvaing: but still in 2 places
   stevez: I'm concerned that if templates are to provide a named interface
           to grids, having them in a different spec is a bad idea.
   fantasai: well that's fine, they still need to be in just one spec
   phil: have had 2 specifications because of disagreement on some
         functionality.
   phil: needs to be a resolution about which model to support, and which
         specification to put it in.
   plinss: don't have enough time to solve this right now.
   ACTION Markus, Phil and Bert to get together and work out how to resolve
          the templating specifications to remove overlap
   <trackbot> Created ACTION-462
   <PhilCupp> thanks for great grid discussion... dropping off call

Present:
   -Phil Cupp
   -Daniel Holbert
   -Markus Mielke

CSS3 Fonts
----------
Scribe: dbaron

   <jdaggett> http://lists.w3.org/Archives/Public/www-style/2012May/0369.html
   jdaggett: I just dropped in url for post I sent a few days ago
   jdaggett: CSS3 Fonts defines support for font features.  Designed to
             enable features if they exist in the font, but we don't provide
             a fallback.
   jdaggett: But there are a couple of exceptions where we do provide fallback:
   jdaggett: For small-caps, if a font doesn't have small-caps glyphs,
             user-agent will synthesize
   jdaggett: Other case where we do fallback is superscript and subscript,
             which is semantic, so requires fallback
   jdaggett: [Shows demo]
   jdaggett: I have a bunch of fonts with subscript and superscript variant
             glyphs
   jdaggett: this shows what you see with browsers today and with variants
   jdaggett: first is the subscript variant designed by the type designer --
             the weight is designed to match the weight of what it's in
   jdaggett: the third shows what happens when you shrink it down -- it
             looks lighter
   jdaggett: these special subscript/superscript glyphs are designed in the
             same design space as the font -- there's no resizing/offsetting
             for the subscript/superscript when using the glyphs designed
             for it
   jdaggett: the way we do subscript/superscript today we modify the baseline
             (vertical-align: sub/super) and reduce the font size
   jdaggett: To use the sub/super glyphs, you have to not do that
   jdaggett: The font also has metrics that say the suggestions of the font
             designer for where the subscript should go (position & size)
   jdaggett: the middle (red) item is a super/sub sized and positioned based
             on these metrics
   jdaggett: they're not matched to the variant glyphs (e.g., less offset
             in Minion)
   jdaggett: or, e.g., in Whitney, the metrics are bigger and less offset
             to compensate for the weight
   jdaggett: problem with this:  in a situation where some characters are
             supported and others are not, it's difficult to synthesize a
             matching combination
   (clarifying question from vhardy about diff betw 2nd and 3rd)
   jdaggett: so, if we just use variant glyphs, we'll have problems:
   jdaggett shows Minion Pro having variants for "(", "2", and ")", but
            not for "[" and "]"
   jdaggett: in the first link, one of my first points is that when we do
             fallback, we need to do it across the entire text span
   jdaggett: so we synthesize even when part of the text span supports
             part of the variant glyphs
   jdaggett: So with Minion pro you'd synthesize all of "[2]" but would
             use variant glyphs for all of "(2)"
   jdaggett: The metrics aren't there in the font to let us synthesize on
             a per-character basis
   SteveZ: So this is unusual since we're doing glyph substitution on a
           per-span basis rather than per-char basis

   jdaggett: The other problem we have here is that we have this existing
             mechanism for superscripts and subscripts that does it in a
             structural way
   jdaggett: coming up with a backwards-compatibile way of doing this is hard
   jdaggett: since if you use the designed glyphs, you need vertical-align:
             baseline and inherited font size, i.e., need to turn off
             existing mechanism
   jdaggett: see testcase in bottom of post
   jdaggett: you can see that for this case we're turning on font-variant
             position superscript and turning off vertical-align and
             font size reduction from default style sheet
   <BradK> How do you define text span? All the text in an element?
           Including text that is inserted later?
   SteveZ: One side effect is that I no longer sure how to compute the
           vertical extent of the subscripts and how they affect line
           height according to css
   jdaggett: in my mind, this should have no impact on the line box
   jdaggett: when the designer put the metrics in, they're designed so
             they're just like any other character
   SteveZ: so there's no actual baseline shift
   fantasai: there's a visual shift, but no actual shift
   jdaggett: So whether it has subscripts or not, this will produce a page
             that doesn't have varying line heights
   jdaggett: there was a proposal (see post) from fantasai and dbaron to
             come up with something that would shoehorn magic behind the
             scenes so when this matched vertical-align, you'd undo the
             vertical-align and font size changes
   jdaggett: what this won't do is cover the case where you have nested
             subscripts or superscripts
   jdaggett: (replying to Florian) fonts never have glyphs for nested
             sub/super
   jdaggett: And this won't line up with images (since you're not getting
             the baseline shift)
   jdaggett: So this can only do a subscript of the super/subscript stuff
             you can do today.
   Florian: So if you have an image and glyphs, you can't use the special
            glyphs
   jdaggett: So what I'm arguing for is that we have less magic, and authors
             have to be aware that this is only typographic sub/super and
             not structural
   fantasai: So if authors try to use this for sub/super, the
             sub/superscripting will fail for nesting or non-text
   jdaggett: Details of original post by fantasai/dbaron rely on metrics
             which doesn't work since these metrics aren't right
   jdaggett: I think you could still come up with magic that ... .
   jdaggett: There's existing content that's out there, so it's safer to
             say that: here's how you do this, cover the 90% use case
             (just text, short runs).
   jdaggett: Do we need to talk more about alternate proposal, wanting magic?

   fantasai: How do you determine bounds of text run that needs to be
             considered together?
   jdaggett: No wording for that yet.
   jdaggett: Wanted general agreement for it first before getting to actual
             wording
   jdaggett: Thinking roughly: across spans of contiguous text (but can
             span sub-elements)

   SteveZ: If I've got a span, and turned on typographic sub/super, and
           do a baseline shift inside that, what happens?
   jdaggett: You get a baseline shift -- probably not going to look right.
   peterl: I'm not seeing in the email how you turn on this type of superscript
   jdaggett: just turn on font-variant-position
   jdaggett: There's an example in the spec that includes the turning off
             of v-a and font-size
   TabAtkins: and for fallback, @supports queries
   Bert: That example tests whether the user-agent is able to do this, but
         doesn't check whether the font has a suitable glyph
   jdaggett: Supporting the property means the UA will do fallback if the
             font doesn't support it
   SteveZ: That's the new piece added this time around
   fantasai: I'm not totally convinced we shouldn't be doing something
             smarter where people are putting elements inside it
   fantasai: I like the idea of doing the idea of fallback at a span level
   Liam: Isn't the answer that if you're already deciding not to use the
         native glyphs, then if you find an element inside, fall back to
         synthetic mechanism for the whole thing?
   fantasai: The way it's defined right now, super inside super wouldn't nest
   jdaggett: It's bad if you think it has to support that -- but I don't
             think we need to support that.
   jdaggett: There's already a default mechanism that allows that.
   peterl: If the designer specifies font-variant-position: sub, they'll
           get scaled down glyphs as fallback, right?
   jdaggett: yes
   Bert: ...
   jdaggett: ...
   Bert: ok, but I can see examples here... in general, do fonts scale down well?
   fantasai: It's better if you don't scale and use the appropriate glyphs
   jdaggett: the point here is to use the glyphs in the font
   <Bert> (I was thinking of the TeX fonts, which actually use slightly
          different glyphs for 8pt and for 10pt, so that you can use
          them together.)

   dbaron: How does this handle underlining?
   dbaron: That's sort of a common case
   dbaron: e.g. used in Wikipedia
   szilles: underline isn't affected generally
   dbaron: no, if you draw the underline just for the superscript
   dbaron: how do you get that position correctly
   jdaggett: so the answer here is that the underline will be drawn at the
             main baseline
   fantasai: you might wind up doing fallbacks in the case of text-decoration
   plinss: in Wikipedia, the decoration appears only on :hover -- that's
           not going to work
   peterl: Well, on wikipedia the underline only shows up on :hover, which
           would mean doing fallback when there's decoration wouldn't be
           so great
   dbaron: you'd switch into fallback on :hover
   ACTION jdaggett: figure out text-decoration interaction with
                    font-variant-position
   <trackbot> Created ACTION-463
   ACTION jdaggett: define what scopes the run of things falling back
   <trackbot> Created ACTION-464

   proposed resolution: accept two points in
     http://lists.w3.org/Archives/Public/www-style/2012May/0369.html
     pending actual wording from jdaggett
   fantasai: I'm less comfortable with second one since if you're styling
             content and didn't account for some of the stuff that's in
             there you'll get weird behavior
   jdaggett: I think we can resolve on this and then we can have caveats
   fantasai: Ideally, I'd like this to work in the general case
   jdaggett: I think that's a good ideal, but that ends up not serving
             the 90% case very well
   fantasai: I want to solve both and I think it's possible
   jdaggett: I disagree... but if you have another proposal we can talk
             about that

   SteveZ: informational question:  if in the middle examples, I wanted
           to make "2" black, so I put a span <sup>(<span>2</span>)</sup>...
   jdaggett: my action item to figure that out...
   jdaggett: My intention is that it's a contiguous text run; need not be
             one single element, so it would work
   jdaggett: if you say <p>f<span>i</span> in Firefox today, you'll see a
             ligature that's half black and half red

   peterl: fantasai, ok with resolving now, and you can maybe come back
           with improved proposal?
   fantasai: ok
   <jdaggett> http://lists.w3.org/Archives/Public/www-style/2012May/0375.html
   fantasai: I agree 100% with the first point
   RESOLVED: accept two points in
             http://lists.w3.org/Archives/Public/www-style/2012May/0369.html
             jdaggett to provide actual wording

   jdaggett: relatively minor point about small caps
   jdaggett: with a font that has either small-caps variant or doesn't,
             we have the fallback be determined by whether the font itself
             supports small-cap glyphs
   jdaggett: i.e., that we don't do per-glyph checking
   jdaggett: That's different from the super/sub case.
   jdaggett: Good reason for this:  fonts typically support all or nothing,
             unlike for sub/super where they typically support only a few
             chars
   peterl: Typically, or universally?
   jdaggett: Close to universal
   jdaggett: A font like Arial is not actually designed by one person,
             designed by several people.
   jdaggett: Can get cases where Latin, Cyrillic work, Greek doesn't
   jdaggett: so I want cases that this can be done on a per-script basis
   jdaggett: which would allow user-agents to do this check on a per-script
             basis
   jdaggett: per-glyph checking is a much higher implementation cost
   jdaggett: there's a difference in the way the model works, but warranted
             by the nature of the font
   jdaggett: there's always the potential that what a browser would synth
             is not precisely what a font would do
   jdaggett: because of casing rules, e.g., for Greek
   jdaggett: so there's potential font won't match browser casing rules
   jdaggett: So, e.g., if you were to take a font that supported small-caps
             and strip out the information that enables it and have the
             browser synthesize it, those two results may not necessarily
             match the same set of characters, because the browsers upper/
             lowercase may not be what the font designer used when he set up
             the small-caps feature.
   fantasai: Does Greek keep diacritics in small-caps (rather than all-caps)?
   jdaggett: I'm saying there's room for differences
   jdaggett: I wanted to directly tie uppercase and lowercase function to
             text-transform
   jdaggett: I want the handling of synthetic small-caps to match the casing
             used in the text-transform feature, which means the check for
             "do I need to small-cap this glyph" uses the same case
              transformations that are used for text-transform
   fantasai: There are 2 casing things you need to do:
             (1) check "is this glyph lowercase?" and if so synthesize a
                 small-cap and
             (2) convert from lowercase to uppercase and shrink the glyph
   fantasai: (2) is where you need the case transform table
   jdaggett: And I'm saying that should match text-transform
   fantasai: the wording here is really vague:
   fantasai: capital letters are not affected by small-caps
   jdaggett: but are by all-caps
   fantasai: so you want to say only bicameral scripts are affected
   jdaggett: I want to say it's exactly like text-transform
   jdaggett: i think these 2 features should be consistent
   * fantasai just thinks the wording proposed is confusing
   SteveZ: implied text-transform...?
   jdaggett: I'm just saying the case transformations used for small-caps
             are the same that are used for text-transform
   SteveZ: ...
   jdaggett: The reason for that is that if text-transform puts in special
             rules for special casing, we don't want to have to go back
             and modify two specs
   fantasai: I Think you have a good point but the wording is confusing
   jdaggett: I'll rework the wording
   ACTION fantasai: propose less confusing wording
   <trackbot> Created ACTION-465

   jdaggett: only other thing about css3-fonts is that I published today
             revised wording of font-family syntax from the last telecon
   Håkon: formal grammar?
   jdaggett:  Yes.  Deal with inclusion of 'inherit' within font family
              name, e.g., 'font-family: foo inherit' is invalid
   jdaggett: saying you need quotes in that case
   Bert: you said you put in some text
   jdaggett: on the mailing list
   jdaggett: I'm piggybacking on changes I proposed for css3-values,
             issues with case sensitivity.
   Bert: It's a change from CSS 2.1
   jdaggett: Fixing ambiguity, I don't think it's a change.
   Tab: We already resolved on this last week or the week before
   Bert: The resolution I recorded was ...
   Tab: That wasn't the resolution we were trying to get
   Tab: If you want to reopen, please do it on the mailing list
   Bert: we should not change 2.1
   Bert: 2.1 is very clear except for the case where there is a font name
         called inherit, unquoted
   tab: anything else?
   ACTION fantasai: review css3-fonts wording on font-family syntax
   <trackbot> Created ACTION-466

   jdaggett: I'm done.  Just from a spec level I'm trying to go through
             the spec, publish another WD in the next couple weeks.
   jdaggett: Last sticky issue is font matching for clusters (base characters
             with combining diacritics, variation selectors).  Once that's
             ironed out I think will want to consider moving to last call.
   jdaggett: fantasai has some comments about @feature-values to post to
             the mailing list
   jdaggett: past that I'll start asking people to take a look at the spec,
             look for things ambiguous, unclear, could be better explained

Spec Editing Tools
------------------

   vhardy: last time I showed a tool to help editors with issue tracking
   vhardy: if you want to use bugzilla to track your issues and make sure
           they're in your spec
   vhardy: a tool for editors, not meant to be published
   vhardy: checks for issue markers and checks bugzilla
   vhardy: Will tell you if you have issues that are resolved that should
           be removed, or new ones that should be mentioned in the spec
   vhardy: I put this in the shared repository under root of spec directory
   Florian: only bugzilla, not tracker?
   vhardy: right
   Bert: way to put this in postprocessor rather than only insert when
         you're online?
   vhardy: you need to insert issues at a particular point in your spec
   Bert: but I put the issue number in the spec
   Bert: because it's not done by the postprocessor I have to make a link
         myself
   Bert: I'd like to just put ISSUE -dash- 217 and have the postprocessor
         just make it a link
   vhardy: I don't have access to the postprocessor
   Bert: wondering if this code is readable enough...
   vhardy: I didn't write it... but his code is very legible

   plinss: on this topic, we were talking about test annotation script
   plinss: Tim doesn't allow us to have it on /TR/
   plinss: But he will allow us to add to /TR/ specs a link to an annotated
           version
   plinss: so thinking of putting /TR/ specs mirrored on csswg.org
   plinss: because it makes specs in /TR/ mutable based on something off
           of w3.org servers
   plinss: can do annotations and anything else we want there

Meeting closed.

Received on Tuesday, 15 May 2012 20:51:36 UTC