- From: Faruk Ates <faruk@apple.com>
- Date: Mon, 23 Mar 2009 20:06:54 -0700
- To: www-style@w3.org
Hi,
I have a question about Font Family and the Computed Value. The spec
[1] says that the Computed Value should be "As specified" but there is
some ambiguity there:
# 1. Should the Computed Value be returned with or without quotes?
Examples:
- font-family: "Times New Roman", serif;
- font-family: Times New Roman, serif;
The Spec claims that font family names containing white space should
be quoted, but in the CSS3 Fonts spec first example[2] it only does so
for one of the two fonts with whitespace in the name ("Heisi Mincho
W3" and Arial Unicode MS). This discrepancy only amplifies the lack of
clarity on what a UA should do with quotes. Some UAs actually add
quotes in the computed value even when they're not specified.
# 2. What should the UA do for internal defaults?
The following three examples produce very differing results:
- font-family: serif;
- font-family: inherit; (on the highest specified level, i.e. it
inherits from the browser itself)
- (nothing at all)
Some UAs allow the user to specify a font of choice for serif, sans-
serif and monospace, others just for default & monospace. Typically,
"default" is set to a serif font by default but a user can set it to a
sans-serif font of course. The Computed Value seems to be somewhat
arbitrarily chosen by existing UAs, perhaps due to lack of direction
here. In particular, "serif" is a browser internal that technically
maps to some font but it appears unclear whether the Computed Value
returned should be "serif" or the font name. In Webkit's case, even
"serif" itself wouldn't return as specified as it maps to the internal
"-webkit-serif" — but that could be a bug that needs to be filed.
# 3. What about :first-letter and :first-line pseudo elements that
change possibly *all* of the element's rendering?
Example:
<p>w</p>
p { font-family: Times, serif; }
p:first-line { font-family: Helvetica, sans-serif; }
p:first-letter { font-family: Courier, monospace; }
I reckon this should have NO impact on the Computed Value since the
pseudo elements would effectively constitute a new element inside the
p element, but confirmation of that would still be nice.
# 4. And lastly, what about @font-face fonts?
What should a UA do with fonts listed that are @font-face embedded when:
- the UA does not (yet) support @font-face?*
- the embedded @font-face font file is Not Found?
Should a UA stick to the "As specified" Computed Value even for fonts
it doesn't actually include and thus wouldn't render? This already
applies for lists of fonts without any use of @font-face, but the new
embedding of fonts makes this issue more pertinent.
I guess at the heart of all these questions lies the bigger issue: is
it right for Computed Value to be returned "as specified" when the
specified value has a nearly-100% guarantee of NOT representing what
is actually the computed value as rendered by the UA?
The only message I could find (in an admittedly rudimentary search
through the archives) about all this is Hixie explaining in 2006 that
the Computed Value should simply be as specified and ignoring presence
of fonts, but even that felt inconclusive for issues #1 and #2 in
particular.
Cheers,
Faruk
* this may be an irrelevant issue as all next major UA releases will
support @font-face if they don't already
[1] http://www.w3.org/TR/CSS21/fonts.html#font-family-prop
[2] http://www.w3.org/TR/css3-fonts/#font-family-prop
Received on Tuesday, 24 March 2009 03:07:40 UTC