[css3-fonts] Family, Weight and Size

* Section 3.1 Font family

| Value: [ [ <family-name> | <generic-family> ]
|         [, <family-name> | <generic-family> ]*
|        ] | inherit

hardly differs from CSS1:

| Value:  [ [ <family-name> | <generic-family>] ,]*
|           [ <family-name> | <generic-family>]

It’s always been suggested – and rightfully so – that <generic-family> only makes sense at the end of the list. I wonder whether therefore this production might make more sense, although it’s more restrictive:

  Value: [ <family-name> [, <family-name> ]* [, <generic-family> ]?
         | <generic-family>
         ] | inherit

or, simpler,

  Value: [ [ <family-name> ,]* [ <family-name> | <generic-family> ]
         ] | inherit

A drawback I could see with this change is that in, for instance,

  font-family: Foo, serif, sans-serif;

and

  font-family: Foo, serif, Bar;

a conforming implementation could either consider “serif” a <family-name> or treat the rule as malformed unless you did something strange like this:

  Value: [ [ <family-name> ,]* [ <family-name> | <generic-family> ]
           [, <possible-future-extension> ]*
         ] | inherit


* Section 3.2 Font weight

The ‘bolder’ and ‘lighter’ relative keywords should get a better description than “Specifies the weight of the face [bold|light]er than the inherited value”, because with the normative mapping table that no longer accurately describes what they actually do.

In <http://lists.w3.org/Archives/Public/www-style/2010Sep/0463.html> I suggested to add many keywords to ‘@font-face’ weight *descriptors* and also to supplement discrete three-digit keywords ‘100’ through ‘900’ by continuous percentages (of “blackness”), i.e. ‘500’ would be equal to “50%” and “55.5%” would be perfectly legal.

         full granularity          reduced granularity       l—r b—r
  0%  \                         \                              
  5%   |                         |                             
 10%   | ‘ultra-light’           | ‘thin’             ‘100’   1   4 
 15%  <                          |                             
 20%   | ‘extra-light’           |                    ‘200’   1   4 
 25%  <                         <                              
 30%   | ‘light’                 | ‘light’            ‘300’   1   4 
 35%  <                         <          \                   
 40%   | ‘semi-light’, ‘normal’! |          |         ‘400’   1   7 
 45%  <                          |          | ‘book’           
 50%   | ‘medium’                | ‘plain’  |         ‘500’   1   7 
 55%  <                          |         /                   
 60%   | ‘semi-bold’             |                    ‘600’   4   9 
 65%  <                         <                              
 70%   | ‘bold’!                 | ‘bold’             ‘700’   4   9 
 75%  <                         <                              
 80%   | ‘extra-bold’            |                    ‘800’   7   9 
 85%  <                          |                             
 90%   | ‘ultra-bold’            | ‘heavy’            ‘900’   7   9 
 95%   |                         |                             
100%  /                         /                              

I would like to propose to add (at least) the “full granularity” keywords, which are based upon systematic ‘font-stretch’ values, to the ‘font-weight’ property as almost-aliases for the numeric keywords. “Almost” because I would rather like them to be mapped onto an absolute scale (if that is even possible), not a relative one as currently described. A table might not be adequate for relative weight keywords then.

| For the purposes of style matching, [synthesized bold] faces must be 
| treated as if they exist within the family.

What numerical weight should be assigned to faked faces: the next higher numeric keyword, the ‘bolder’ value, plus 100, something else?

* Section 3.3 Font size

I would like to suggest to amend the <relative-size> keywords with linear ‘increase’ and ‘decrease’ which multiply or divide, respectively, the inherited font size by a constant factor of √2 or, preferably, √√2.

Received on Thursday, 10 March 2011 15:51:03 UTC