[css3-writing-modes] vertical font features

In section 5.1.1 of the Writing Modes spec [1]:

> Vertical typesetting features such as vertical metrics and glyph
> alternates are used to set upright characters in ‘mixed-right’ and
> ‘upright’ modes. The UA must synthesize vertical font metrics for
> any such characters that do not have any. (This specification does
> not define heuristics for synthesizing such metrics.) 

As I've said a few times to Koji directly in person, I think it's a
poor choice of words to lump together metrics and actual glyph
substitution and positioning features.  Vertical metrics are the data
required to display runs of upright vertical glyphs, they are used to
determine the spacing between glyphs in the vertical direction, just
as horizontal metrics are used to display text runs horizontally. 
Features are ways of controlling different functionality available
within a given font.  A font can contain vertical metrics and support
no features.

I think what you mean here is:

  Vertical font metrics are used to layout upright characters in
  ‘mixed-right’ and ‘upright’ modes.  User agents must synthesize
  vertical font metrics for fonts that lack them.  (This specification
  does not define heuristics for synthesizing such metrics.)

> Any shaping characters from horizontal scripts that are typeset
> upright are shaped in their isolated forms.

I don't know what this means.  Are you talking about ligated forms in Arabic
or about any sort of contextual glyph substitution?

> In the ‘sideways’, ‘sideways-right’, and ‘sideways-left’ modes, text
> is typeset with horizontal font settings. Vertical metrics and glyph
> variants are not used. 

Horizontal runs are laid out using horizontal *metrics* and the normal
set of features are applied (i.e. "glyph variants are not used" is
entirely incorrect).

I think what you mean here is:

  In the ‘sideways’, ‘sideways-right’, and ‘sideways-left’ modes, text
  is laid out using horizontal metrics and the normal set of features
  used for horizontal text runs.

The main problem with this section is that it doesn't tackle the real
problem which doesn't have an easy answer, namely what are the default
set of features, specifically OpenType features, which are enabled for
vertical runs but not for horizontal runs.

The OpenType spec defines a basic set of defaults for some scripts in
the horizontal case.  But for the vertical case, there really isn't a
clear model defined in the spec or in any public documentation that
I've seen.  For example, is the "common ligatures" feature ('liga')
enabled for upright text?  The Kazuraki font from Adobe depends on
'liga' and 'vert' being enabled for vertical runs to get proper
vertical ligatures.  However, I'm not really sure this is the right
model for the general case, since enabling common ligatures enables
lots ligatures intended for horizontal runs.  For example, in stacked
Latin you don't want fi-ligatures to be used.  I think for vertical
runs there really should be a separate and distinct feature ('vlig'?)
for vertical ligatures rather than overloading the common ligatures
('liga') feature.

This section really needs to be rewritten to be of some value for
implementors but for now I'd be fine as long as you tag this section
with a "needs reworking" issue.

Regards,

John Daggett

[1] http://dev.w3.org/csswg/css3-writing-modes/#vertical-font-features

Received on Tuesday, 24 April 2012 07:24:11 UTC