- From: Glenn Adams <glenn@skynav.com>
- Date: Sun, 20 Oct 2013 11:46:48 -0600
- To: "L. David Baron" <dbaron@dbaron.org>
- Cc: W3C Style <www-style@w3.org>
- Message-ID: <CACQ=j+cGagtyAtyxWsHKkW0+rY=oF4_6_kuD8jGo3+3noM0NnA@mail.gmail.com>
On Sat, Oct 19, 2013 at 2:18 AM, L. David Baron <dbaron@dbaron.org> wrote: > On Thursday 2013-10-17 10:52 -0600, Glenn Adams wrote: > > In CSS2.1, we have the following in Section 10.8.1: > > > > "When an element contains text that is rendered in more than one font, > user > > agents may determine the 'normal' > > 'line-height'<http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height > > > > value > > according to the largest font size." > > > > I'm curious if any UA actually implements this. I have tested Chrome, > > Opera, and Safari UAs, and none of these UAs seems to use the largest > font > > size (of descendant fonts). > > > > My test consisted of the following fragment: > > > > <p style="line-height: normal"> > > <span style="font-size: 12pt; border: 1px solid #C0C0C0">X</span></br> > > <span style="font-size: 36pt; border: 1px solid #C0C0C0">X</span></br> > > <span style="font-size: 18pt; border: 1px solid #C0C0C0">X</span></br> > > </p> > > > > If a UA implements the above language, then I would expect that each of > the > > three lines be assigned a single line height (of 36pt), where the leading > > on each line is computed according to the following language: > > > > "Still for each glyph, determine the leading L to add, where L = > > 'line-height' < > http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height> > > - AD. Half the leading is added above A and the other half below D, > giving > > the glyph and its leading a total height above the baseline of A' = A + > L/2 > > and a total depth of D' = D + L/2." > > > > Also, I should note that "the largest font size" is ambiguous in the > above > > language, since it might mean: > > > > 1. largest font size of descendant non-replaced elements, i.e., > > descendants only; > > 2. largest font size of descendant non-replaced elements and element > (on > > which line-height of 'normal' is specified), i.e., descendants and > self. > > This sentence is not intended to refer to text inside descendant > elements, only text in the element itself. That could certainly be > clearer. > > What it's referring to is that the font matching algorithm is > per-character, so different fonts might be used for different > characters within the element. These fonts might have different > sizes (due to unavailability of some font sizes with bitmap fonts) > or might have font metrics that suggest different normal line > heights, or (a case the spec doesn't cover) might have font metrics > that suggest that normal line height has different positions > relative to the baseline. > I've did some research on Blink/Webkit, and both resolve line-height 'normal' on a block element to a single value that is used by the subsequent process of computing each line box's height: resolvedLineHeight = *ascent* + *descent* + *leading* where the dependent variables are based only on metrics obtained from the font associated with the single computedFontFamily associated with the block. The value of *leading* here is based on a per-platform-font metric, e.g., on Windows the TEXTMETRICS.tmExternalLeading field, on Mac, CTGetFontLeading(), etc. Does FF use this same strategy? If all UAs use the same strategy, I wonder (again) if we should remove the language about "may [use] largest font size"? > > As Alan points out, the test isn't testing the quoted text. > > -David > > -- > 𝄞 L. David Baron http://dbaron.org/ 𝄂 > 𝄢 Mozilla https://www.mozilla.org/ 𝄂 > Before I built a wall I'd ask to know > What I was walling in or walling out, > And to whom I was like to give offense. > - Robert Frost, Mending Wall (1914) >
Received on Sunday, 20 October 2013 17:47:36 UTC