W3C home > Mailing lists > Public > www-style@w3.org > March 2009

Re: [css3-fonts] font descriptor default values

From: John Daggett <jdaggett@mozilla.com>
Date: Wed, 4 Mar 2009 12:45:08 -0800 (PST)
To: Thomas Phinney <tphinney@cal.berkeley.edu>
Cc: www-style <www-style@w3.org>
Message-ID: <14892576.166291236199508043.JavaMail.root@cm-mail02.mozilla.org>

Hi Thomas,

> If the notion of "family" is platform-defined means that CSS font
> definitions based on family+style are inherently not cross-platform
> for any family more sophisticated than four members, and trying to
> deal with such families is likely to lead to frustration. Only because
> the available/usable fonts have been so restricted has it not surfaced
> as a "real" issue.

The underlying problem here is the way TrueType/OpenType defines family
groupings, the problem is not one specific to CSS; developers of
applications that attempt to create cross-platform documents with font
settings will run into the exact same problem.

For background, the TrueType spec defines a family name and a style name
for a font but allows for multiple versions of these by platform (i.e.
Apple or Microsoft) and language/encoding so that style names like
"Bold" can be localized.  For compatibility with applications that only
have bold/italic controls, Microsoft declared that only four faces
should be grouped under a single family (regular/bold/italic/bold
italic) and GDI font api's group fonts together this way.  For larger
font families, Microsoft introduced a second family name, "Preferred
Family", to be used by applications wishing to group together large sets
of font faces into a single family.  There is no support for this in
GDI, applications need to poke around in the font tables to do this. 
Fine for Adobe, kinda sucky for the rest of the world.  Cocoa apps on
Mac OS X group by the *Mac* flavor of family name for which no such four
face restriction exists.

So the question boils down to "how do we get richer font family
groupings on Windows?".  I think the answer to that is that user agents
on Windows need to move towards grouping font faces by "Preferred
Family" if it exists, which means pulling data out of font tables. 
Current versions of Windows don't ship with extended font families so
this really only affects folks who have installed fonts or use Adobe
apps that install extended font families.

The other thing to note here is that the CSS font selection model was
originally meant to be somewhat font-format agnostic with the assumption
that platforms would do what's appropriate.  My intent with the CSS3
Fonts spec is to include a non-normative appendix that would describe
some of these issues with respect to TrueType/OpenType.

> > > Or the lack of font properties to sufficiently delineate full font
> > > families?
> > 
> > That's also a problem. The notion of properties only goes so far: in
> > the real world, some members of font families are distinguished by
> > arbitrary design variations that don't necessarily match the simple
> > weight/width/slope model. Optical size is the obvious and most
> > common one, and could be done as a property, but there are plenty of
> > simply arbitrary differences that are not amenable to a "property"
> > approach, and are best dealt with as an additional string.
> 
> That being said, weight/width/slope handles maybe 95% of the fonts out
> there, and is a great advance over just bold and italic.

Optical size as a separate axis of variation is interesting.  I know
Adobe ships with font families that include optical size variations but
is this commonly used by other font vendors?

> > It would be helpful to hear solutions you think might solve this
> > "fundamentally broken" model.
> 
> Two things need to be done:
> 
> - clearly define what version of "family" name should be used
> 
> - define appropriate means to disambiguate fonts which are not
> distinguished by weight/width/slope alone. Perhaps add a property for
> optical size, and the ability to specify an arbitrary string for part
> of the name.

Interesting, so the arbitrary string would map to what exactly?  You're
thinking of something WPF-ish where you try and match this against some
part of the style name?  Style name localizations are a big headache
here.  If only there were named variation axes... ;)

Regards,

John
Received on Wednesday, 4 March 2009 20:45:52 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:17 GMT