[css3-text] vertical-align and shaping

During yesterday's F2F discussion the question of joining across
inline elements was discussed [1]. The accepted proposal appears to
be shaping should be broken in the three cases below:

A. one of margin/border/padding are non-zero
B. vertical-align is not 'baseline'
C. it is a bidi isolation boundary

(A) and (C) seem like common sense but I think (B) here is
misguided.  I'm inferring from Tab's comment that this is motivated
by "superscripts shouldn't join" and (B) is trying to isolate
"superscripts" in this case.

> fantasai: second case is if vertical-align doens't match
> fantasai: thought about matching values, but actually, want to say
>           if not baseline (not matching parent)
> fantasai: e.g. top and middle won't align baselines anyway
> TabAtkins: And def don't want adjacent superscripts to join
> [fantasai said something about siblings and parent relationships
>           and vert-align not inheriting]
> astearns: maybe there are cases where we want two top things to
>           join if they happen to line up?
> fantasai: Think we wnat it predictable
> TabAtkins: We know there are cases where we don't want it to join

In general, shaping is about glyph selection and placement, based on
the surrounding context. It's beneficial to give a shaping engine as
much context as possible. Property changes across inline elements
that affect the inputs to the shaping engine will naturally break
shaping but I don't think CSS should impose additional rules.

For example, I don't see any reason why the two pieces of markup
below should be shaped differently:

  <span>A</span><span>W</span>
  <sup>A</sup><sup>W</sup>

I don't see any reason why the kerning applied between the letters
in adjacent spans should not be used between adjacent superscript
elements.

Part of the problem here is that it's difficult to specify absolute
rules like this for inlines unless you can enumerate all
possibilities and really understand where absolute rules are
appropriate or necessary. It's a much better idea to let the shaping
engine use information supplied by a type designer and not impose
rules that break the connection.

I'll wait to see the final wording but at this point I would suggest
eliminating (B), the required breaking of shaping across inlines
when 'vertical-align' is not 'baseline'.

Regards,

John Daggett
Mozilla Japan

[1] http://logs.csswg.org/irc.w3.org/css/2014-09-08/#e469856

Received on Tuesday, 9 September 2014 01:10:40 UTC