- From: Thomas Phinney <thomas.phinney@gmail.com>
- Date: Wed, 9 May 2012 04:16:41 -0700
- To: John Daggett <jdaggett@mozilla.com>
- Cc: www-style list <www-style@w3.org>, "www-font@w3.org" <www-font@w3.org>
This approach makes sense to me. I have had some lengthy discussions in the past about "correct" behaviors for desktop apps confronted with the same issues, so I have wrestled with these questions at length before. (I do have the same clarification request that Tab brought up, however.) Cheers, T On May 9, 2012, at 2:46 AM, John Daggett <jdaggett@mozilla.com> wrote: > > [cc'ed to www-font] > > One of the unresolved issues in the CSS3 Fonts spec is the issue of > what to do about fallback behavior for subscript/superscript variants > in the 'font-variant-position' property. > > I'd like to propose that: > > * fallback occurs across a given text run rather than per-character > > * the 'font-variant-position' property is defined independent of > the existing use of the font-size/vertical-align properties to > synthesize subscripts/superscripts > > Background > > User agents currently support subscripts and superscripts by > explicitly shrinking the font size and adjusting the baseline, via the > user agent stylesheet rules for the sub and sup elements. The same > size and offset value is used for all content contained within these > elements. > > sub { > vertical-align: sub; /* shifts the baseline down */ > font-size: smaller; > line-height: normal; > } > > sup { > vertical-align: super; /* shifts the baseline up */ > font-size: smaller; > line-height: normal; > } > > OpenType fonts enable the use of subscript/superscript glyphs where > the glyphs are designed within the same em-space as normal characters > and are drawn as any other character is (i.e. with no shift in the > baseline). This allows type designers to design glyphs specifically > suited for this purpose, ones explicitly intended to match the > underlying default glyphs. > > Synthesizing subscripts/superscripts > > There are, however, a couple downsides to this model. Fonts typically > only define these glyphs for a small subset of characters available in > the font. The numbers 0-9 are supported but lowercase and punctuation > characters are frequently not. The result is that '2' will have a > subscript/superscript variant but '[2]' may or may not depending upon > the font used. Fonts include size/offset metrics explicitly for > synthesizing subscript/superscript glyphs. > > This gives three alternates for subscripts/superscripts: > > (1) the subscript/superscript variant glyph > (2) a synthesized glyph using the subscript/superscript > metrics from the font > (3) a synthesized glyph using fixed size/offset values > (i.e. what user agents do today) > > Here's what these three alternates look like for a selection of fonts > that support subscript/superscript variants (testcase here [1]): > > http://people.mozilla.org/~jdaggett/tests/subsupermetrics.png > > The fonts used are Calibri, Segoe UI and Gabriola which ship with Windows 7, > Minion Pro from Adobe and Whitney from Hoefler & Frere-Jones. > > The variations here illustrate a couple simple points: > > * the offset of the variant glyph varies across font > > * the offset/size of synthetic glyphs based on font > metrics does not always match the offset/size of the > variant provided with the font > > While in some cases the subscript/superscript metrics are simply based > on a set of default metrics (e.g. Minion), the Whitney case here > illustrates the careful tailoring of these metrics to compensate for > the fact that the resizing of glyphs reduces their effective weight, > the size is larger and the offset less for the synthetic glyph > compared to the designed variant. > > This is why I think it's important that fallback behavior be used for > the entire text run included in a subscript/superscript element, rather > than for the specific portions that lack supported variant glyphs. > This may lead to inconsistencies between subscript/superscript > placement depending upon the content but it's better than having the > position of glyphs vary within a given subscript/superscript. > > Structural vs. typographic subscripts/superscripts > > Ideally, it would be nice to allow the use of subscript/superscript > glyphs to "just work", such that user agents could support them in > user agent style sheets. This is tricky because the existing method > of supporting subscripts/superscripts is basically structural, they > are supported by explicitly manipulating the linebox model. This > means that non-text content (e.g. images) is supported, as is nesting. > The use of subscript/superscript variants is basically typographic, > there's no manipulation of the linebox. > > Last year, fantasai and dbaron sketched out a proposal for trying to > make the fallback work with the existing mechanism [2]. The proposal > imagines that 'font-variant-position' (called 'magic' as a proxy name > in the proposal) working in combination with 'font-size' and > 'vertical-align'; when the value for 'font-variant-position' matches > 'vertical-align' and variant glyphs exist, it attempts to use an > inverse tranform to figure out the position and size from the parent. > > The proposal relies on the subscript/superscript metrics matching the > variant glyphs which turns out to be a poor assumption, as the > examples above illustrate. But I think it's possible to imagine a > similar proposal that attempts to fallback back per text-run to > existing behavior when a font lacks variant glyphs or the element > contains nesting without relying on the subscript/superscript metrics. > > I think it would be better to keep this as a separate, > typographic-only property that doesn't interact with > font-size/vertical-align behavior. The set of use cases is limited to > situations where the only content in the subscript/superscript is text > and the linebox is not affected, even in the case where synthesis is > required. That way existing content that relies on the structural > manipulation of the linebox to place images and text together will be > unaffected. > > Regards, > > John Daggett > > [1] http://people.mozilla.org/~jdaggett/tests/subsupermetrics.html > [2] http://lists.w3.org/Archives/Public/www-style/2011Apr/0391.html >
Received on Wednesday, 9 May 2012 11:17:21 UTC