22.12.2013 Views

W3C CSS2 Cascading Style Sheets, level 2 - instructional media + ...

W3C CSS2 Cascading Style Sheets, level 2 - instructional media + ...

W3C CSS2 Cascading Style Sheets, level 2 - instructional media + ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

The per-descriptor matching rules from (2) above are as follows:<br />

1. ’font-style’ is tried first. ’italic’ will be satisfied if there is either a face in the<br />

UA’s font database labeled with the CSS keyword ’italic’ (preferred) or<br />

’oblique’. Otherwise the values must be matched exactly or font-style will fail.<br />

2. ’font-variant’ is tried next. ’normal’ matches a font not labeled as<br />

’small-caps’; ’small-caps’ matches (1) a font labeled as ’small-caps’, (2) a<br />

font in which the small caps are synthesized, or (3) a font where all lowercase<br />

letters are replaced by uppercase letters. A small-caps font may be<br />

synthesized by electronically scaling uppercase letters from a normal font.<br />

3. ’font-weight’ is matched next, it will never fail. (See ’font-weight’ below.)<br />

4. ’font-size’ must be matched within a UA-dependent margin of tolerance.<br />

(Typically, sizes for scalable fonts are rounded to the nearest whole pixel,<br />

while the tolerance for bitmapped fonts could be as large as 20%.) Further<br />

computations, e.g., by ’em’ values in other properties, are based on the<br />

’font-size’ value that is used, not the one that is specified.<br />

15.5.1 Mapping font weight values to font names<br />

The ’font-weight’ property values are given on a numerical scale in which the<br />

value ’400’ (or ’normal’) corresponds to the "normal" text face for that family. The<br />

weight name associated with that face will typically be Book, Regular, Roman,<br />

Normal or sometimes Medium.<br />

The association of other weights within a family to the numerical weight values<br />

is intended only to preserve the ordering of weights within that family. User<br />

agents must map names to values in a way that preserves visual order; a face<br />

mapped to a value must not be lighter than faces mapped to lower values. There<br />

is no guarantee on how a user agent will map font faces within a family to weight<br />

values. However, the following heuristics tell how the assignment is done in<br />

typical cases:<br />

If the font family already uses a numerical scale with nine values (as e.g.,<br />

OpenType does), the font weights should be mapped directly.<br />

If there is both a face labeled Medium and one labeled Book, Regular,<br />

Roman or Normal, then the Medium is normally assigned to the ’500’.<br />

The font labeled "Bold" will often correspond to the weight value ’700’.<br />

If there are fewer then 9 weights in the family, the default algorithm for filling<br />

the "holes" is as follows. If ’500’ is unassigned, it will be assigned the same<br />

font as ’400’. If any of the values ’600’, ’700’, ’800’, or ’900’ remains unassigned,<br />

they are assigned to the same face as the next darker assigned<br />

keyword, if any, or the next lighter one otherwise. If any of ’300’, ’200’, or<br />

’100’ remains unassigned, it is assigned to the next lighter assigned<br />

keyword, if any, or the next darker otherwise.<br />

There is no guarantee that there will be a darker face for each of the<br />

’font-weight’ values; for example, some fonts may have only a normal and a bold<br />

face, others may have eight different face weights.<br />

The following two examples show typical mappings.<br />

233

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!