[css3-fonts] @font-face rule descriptors and font matching (was: Re: [css3-fonts] Not-quite-so-minor Comments V)

One general comment, since you're going through the spec section by
section, could you post your comments with better subject descriptions
rather than "Minor comments xxx"?

fantasai wrote:

>    # If these descriptors are omitted, default values are
>    # assumed.
> which, assuming default=initial, means that a bold font will
> not be considered font-weight: bold; unless that descriptor
> is there.
> 
>    # User agents that implement synthetic bolding and
>    # obliqueing must only apply synthetic styling in cases
>    # where the font descriptors imply this is needed, rather
>    # than based on the style attributes implied by the font
>    # data.
> 
> I don't understand this. IMO synthetic bolding or obliquing
> should only be applied to a downloaded font if the author
> asks for a bold/oblique version and there isn't one available,

For font families defined via @font-face rules, font matching occurs
via the style descriptors defined in the @font-face rules.  So the style
characteristics defined within font data (e.g. the weight/width values
in the OS/2 table) have no effect on the font weight assigned to a 
particular face.  So synthetic faces are created based on whether
the set of faces lack italic/bold faces as defined via these descriptor
values and *not* what's in the font data for a particular face.

>    @font-face { font-family: foo; src: local(foo); }
>    p { font-family: foo; }
>    em { font-weight: bold; }
>    /* em will synthesize bold, cuz we didn't have one */
> 
> vs.
> 
>    @font-face { font-family: foo; src: local(foo); }
>    @font-face { font-family: foo; src: local(foo bold);
>                 font-weight: bold; }
>    p { font-family: foo; }
>    em { font-weight: bold; }
>    /* em will not synthesize bold, cuz we have one */

For <em> elements in these examples, you'll get synthetic bold in the
first one, not in the second one.  You'll get synthetic italics in
both cases.

> While we're on this example, just wanted to clarify... 
> does the rule above mean that even if there's a foo italic on the
> system, it will never be used because we defined a font-family foo
> via @font-face?

Yes.  A single @font-face rule defines a single face and local() refers
to a single face, not a family.

Cheers,

John Daggett

Received on Tuesday, 21 May 2013 03:16:27 UTC