- From: John Daggett via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 24 Feb 2011 12:53:07 +0000
- To: public-css-commits@w3.org
Update of /sources/public/csswg/css3-fonts In directory hutz:/tmp/cvs-serv31143 Modified Files: Fonts.html Log Message: revised font matching algorithm Index: Fonts.html =================================================================== RCS file: /sources/public/csswg/css3-fonts/Fonts.html,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- Fonts.html 1 Nov 2010 18:52:24 -0000 1.37 +++ Fonts.html 24 Feb 2011 12:53:04 -0000 1.38 @@ -111,15 +111,14 @@ <h1>CSS Fonts Module Level 3</h1> - <h2 class="no-num no-toc" id=editors-draft-1-november-2010>Editor's Draft - 1 November 2010</h2> + <h2 class="no-num no-toc" id=editors>Editor's Draft 24 February 2011</h2> <dl id=authors> <dt>This version: <dd><a href="http://dev.w3.org/csswg/css3-fonts/">http://dev.w3.org/csswg/css3-fonts/</a> - <!-- <dd><a href="http://www.w3.org/TR/2010/ED-css3-fonts-20101101">http://www.w3.org/TR/2010/ED-css3-fonts-20101101</a> --> + <!-- <dd><a href="http://www.w3.org/TR/2011/ED-css3-fonts-20110224">http://www.w3.org/TR/2011/ED-css3-fonts-20110224</a> --> <dt>Latest version: @@ -152,7 +151,7 @@ <!--begin-copyright--> <p class=copyright><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright" - rel=license>Copyright</a> © 2010 <a href="http://www.w3.org/"><acronym + rel=license>Copyright</a> © 2011 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym @@ -262,6 +261,10 @@ <li><a href="#font-prop"><span class=secno>3.7 </span>Shorthand font property: the font property</a> + + <li><a href="#font-synthetic-prop"><span class=secno>3.8 + </span>Controlling synthetic faces: the font-weight-synthetic and + font-style-synthetic properties</a> </ul> <li><a href="#font-resources"><span class=secno>4 </span>Font @@ -288,6 +291,13 @@ <li><a href="#font-matching-algorithm"><span class=secno>5 </span>Font matching algorithm</a> + <ul class=toc> + <li><a href="#font-style-matching"><span class=secno>5.1 </span>Matching + font styles</a> + + <li><a href="#char-handling-issues"><span class=secno>5.2 + </span>Character handling issues</a> + </ul> <li><a href="#font-rend-props"><span class=secno>6 </span>Font feature properties</a> @@ -520,7 +530,7 @@ <h3 id=font-family-prop><span class=secno>3.1 </span>Font family: the <a href="#propdef-font-family">font-family</a> property</h3> - <table class=propdef id=namefont-familyvalue-ltfamily-name-ltgen> + <table class=propdef id=namefont-family> <tbody> <tr> <td>Name: @@ -530,7 +540,7 @@ <tr> <td>Value: - <td>[[ <family-name> | <generic-family> ] [, <family-name>| + <td>[[ <family-name> | <generic-family> ] [, <family-name> | <generic-family>]* ] | inherit <tr> @@ -565,11 +575,12 @@ </table> <p>This property specifies a prioritized list of font family names or - generic family names. A user agent iterates through the list of family - names until it matches an available font that contains a glyph for the - character to be rendered. This allows for differences in available fonts - across across platforms and for differences in the range of characters - supported by individual fonts. + generic family names. Unlike other CSS properties, component values are a + comma-separated list indicating alternatives. A user agent iterates + through the list of family names until it matches an available font that + contains a glyph for the character to be rendered. This allows for + differences in available fonts across platforms and for differences in the + range of characters supported by individual fonts. <p>A font family name only specifies a name given to a set of font faces, it does not specify an individual face. Given the availability of the @@ -580,16 +591,6 @@ <p class=caption>Family and individual face names </div> - <p>Some font formats support the use of multiple family names for different - localizations. User agents must recognize any of these names independent - of the underlying platform localization, system API used or document - encoding: - - <div class=figure><img alt="examples of localized family names" - src=localizedfamilynames.png> - <p class=caption>Localized family names - </div> - <p>Consider the example below: <div class=example> @@ -608,11 +609,7 @@ <dt><family-name> <dd>The name of a font family of choice such as Helvetica or Verdana in - the previous example. Font family names containing more than one word - should be quoted. If quoting is omitted, whitespace characters before and - after the font family name are ignored and any sequence of whitespace - characters inside the font name is converted to a single space. Depending - upon the font format used, font family names may be case-sensitive. + the previous example. <dt><generic-family> @@ -628,6 +625,61 @@ alternative for improved robustness. </dl> + <p>Font family names must either be given quoted as <a + href="//www.w3.org/TR/CSS21/syndata.html#strings">strings,</a> or unquoted + as a sequence of one or more <a + href="//www.w3.org/TR/CSS21/syndata.html#value-def-identifier">identifiers.</a> + This means most punctuation characters and digits at the start of each + token must be escaped in unquoted font family names. + + <p>For example, the following declarations are invalid: + + <pre> +font-family: Red/Black, sans-serif; +font-family: "Lucida" Grande, sans-serif; +font-family: Ahem!, sans-serif; +font-family: test@foo, sans-serif; +font-family: #POUND, sans-serif; +font-family: Hawaii 5-0, sans-serif; +</pre> + + <p>If a sequence of identifiers is given as a font family name, the + computed value is the name converted to a string by joining all the + identifiers in the sequence by single spaces. + + <p>To avoid mistakes in escaping, it is recommended to quote font family + names that contain white space, digits, or punctuation characters other + than hyphens: + + <pre> +body { font-family: "New Century Schoolbook", serif } + +<BODY STYLE="font-family: '21st Century', fantasy"> +</pre> + + <p>Font family <em>names</em> that happen to be the same as a keyword value + (‘<code class=property>inherit</code>’, ‘<code class=property><a + href="#serif">serif</a></code>’, ‘<code class=property><a + href="#sans-serif">sans-serif</a></code>’, ‘<code class=property><a + href="#monospace">monospace</a></code>’, ‘<code class=property><a + href="#fantasy">fantasy</a></code>’, and ‘<code class=property><a + href="#cursive">cursive</a></code>’) must be quoted to prevent confusion + with the keywords with the same names. The keywords ‘<code + class=property>initial</code>’ and ‘<code + class=property>default</code>’ are reserved for future use and must also + be quoted when used as font names. UAs must not consider these keywords as + matching the ‘<code class=css><family-name></code>’ type. + + <p>Some font formats allow fonts to carry multiple localizations of the + family name. User agents must recognize and correctly match all of these + names independent of the underlying platform localization, system API used + or document encoding: + + <div class=figure><img alt="examples of localized family names" + src=localizedfamilynames.png> + <p class=caption>Localized family names + </div> + <h4 id=generic-font-families><span class=secno>3.1.1 </span>Generic font families</h4> @@ -727,7 +779,7 @@ <h3 id=font-weight-prop><span class=secno>3.2 </span>Font weight: the <a href="#propdef-font-weight">font-weight</a> property</h3> - <table class=propdef id=namefont-weightvaluenormal-bold-bolder-l> + <table class=propdef id=namefont-weight> <tbody> <tr> <td>Name: @@ -949,7 +1001,7 @@ <h3 id=font-stretch-prop><span class=secno>3.3 </span>Font width: the <a href="#propdef-font-stretch">font-stretch</a> property</h3> - <table class=propdef id=namefont-stretchvaluenormal-ultra-conden> + <table class=propdef id=namefont-stretch> <tbody> <tr> <td>Name: @@ -1038,7 +1090,7 @@ <h3 id=font-style-prop><span class=secno>3.4 </span>Font style: the <a href="#propdef-font-style">font-style</a> property</h3> - <table class=propdef id=namefont-stylevaluenormal-italic-oblique> + <table class=propdef id=namefont-style> <tbody> <tr> <td>Name: @@ -1118,7 +1170,7 @@ <h3 id=font-size-prop><span class=secno>3.5 </span>Font size: the <a href="#propdef-font-size">font-size</a> property</h3> - <table class=propdef id=namefont-sizevalueltabsolute-size-ltrela> + <table class=propdef id=namefont-size> <tbody> <tr> <td>Name: @@ -1206,7 +1258,7 @@ <dd>A length value specifies an absolute font size (that is independent of the user agent's font table). Negative lengths are illegal. - <dt><span class=index-inst id=ltpercentagegt- + <dt><span class=index-inst id=ltpercentagegt title="<percentage>"><percentage> </span> <dd>A percentage value specifies an absolute font size relative to the @@ -1340,7 +1392,7 @@ <h3 id=font-size-adjust-prop><span class=secno>3.6 </span>Relative sizing: the <a href="#propdef-font-size-adjust">font-size-adjust</a> property</h3> - <table class=propdef id=namefont-size-adjustvalueltnumber-none-i> + <table class=propdef id=namefont-size-adjust> <tbody> <tr> <td>Name: @@ -1388,9 +1440,9 @@ between upper and lowercase letters, the relative height of lowercase letters compared to their uppercase counterparts is a determining factor of legibility. This is commonly referred to as the <a class=index-def - href="#aspect-value" id=aspect-value0 title="aspect value"><dfn - id=aspect-value>aspect value</dfn></a>. Precisely defined, it is equal to - the x-height of a font divided by the font size. + href="#aspect" id=aspect0 title="aspect value"><dfn id=aspect>aspect + value</dfn></a>. Precisely defined, it is equal to the x-height of a font + divided by the font size. <p>In situations where font fallback occurs, fallback fonts may not share the same aspect ratio as the desired font family and will thus appear less @@ -1508,7 +1560,7 @@ <h3 id=font-prop><span class=secno>3.7 </span>Shorthand font property: the <a href="#propdef-font">font</a> property</h3> - <table class=propdef id=namefontvalue-ltlsquofont-stylersquo-ltf> + <table class=propdef id=namefont> <tbody> <tr> <td>Name: @@ -1761,6 +1813,112 @@ } </pre> </div> + <!-- prop: font-weight-synthetic, font-style-synthetic --> + + <h3 id=font-synthetic-prop><span class=secno>3.8 </span>Controlling + synthetic faces: the <a + href="#propdef-font-weight-synthetic">font-weight-synthetic</a> and <a + href="#propdef-font-style-synthetic">font-style-synthetic</a> properties</h3> + + <table class=propdef id=namefont-weight-synthetic> + <tbody> + <tr> + <td>Name: + + <td><dfn id=propdef-font-weight-synthetic>font-weight-synthetic</dfn> + + <tr> + <td>Value: + + <td>auto | none | inherit + + <tr> + <td>Initial: + + <td>auto + + <tr> + <td>Applies to: + + <td>all elements + + <tr> + <td>Inherited: + + <td>yes + + <tr> + <td>Percentages: + + <td>N/A + + <tr> + <td>Media: + + <td>visual + + <tr> + <td>Computed value: + + <td>as specified + </table> + + <table class=propdef id=namefont-style-synthetic> + <tbody> + <tr> + <td>Name: + + <td><dfn id=propdef-font-style-synthetic>font-style-synthetic</dfn> + + <tr> + <td>Value: + + <td>auto | none | inherit + + <tr> + <td>Initial: + + <td>auto + + <tr> + <td>Applies to: + + <td>all elements + + <tr> + <td>Inherited: + + <td>yes + + <tr> + <td>Percentages: + + <td>N/A + + <tr> + <td>Media: + + <td>visual + + <tr> + <td>Computed value: + + <td>as specified + </table> + + <p>These properties control whether user agents are allowed to synthetize + bold or synthetic oblique font faces when a font family lacks bold or + italic faces. For each of these properties the default value of ‘<code + class=property>auto</code>’ allows user agents to use synthetic versions + of font faces while a value of ‘<code class=property>none</code>’ + disallows the use of synthetic versions. + + <div class=example> + <p>The style rule below diables the use of synthetically obliqued Arabic:</p> + + <pre>*:lang(ar) { font-style-synthetic: none; } +</pre> + </div> <h2 id=font-resources><span class=secno>4 </span>Font resources</h2> @@ -2414,8 +2572,11 @@ points. The fallback font is downloaded and used to render the arrow character.</p> </div> - <!-- Tools to create subsetted fonts a problem. Also, combining diacritics -represent a nasty side issue here. Need named ranges (based on Unicode defined range names), e.g. range("Basic Latin") ==> U+00-FF --> + <!-- + Tools to create subsetted fonts a problem. + Also, combining diacritics represent a nasty side issue here. + Need named ranges (based on Unicode defined range names), e.g. range("Basic Latin") ==> U+00-FF +--> <h3 id=font-rend-desc><span class=secno>4.6 </span>Font features: the <a href="#descdef-font-variant">font-variant</a> and <a @@ -2474,79 +2635,89 @@ <h2 id=font-matching-algorithm><span class=secno>5 </span>Font matching algorithm</h2> - <p>The procedure for choosing fonts consists of iterating over the font + <p>The algorithm below describes how fonts are associated with individual + runs of text. For each character in the run a font family is chosen and a + particular font face is selected containing a glyph for that character. + + <h3 id=font-style-matching><span class=secno>5.1 </span>Matching font + styles</h3> + + <p> The procedure for choosing fonts consists of iterating over the font families determined by the font-family property, selecting a font face with the appropriate style based on other font properties and then - determining whether a glyph exists for a given character. This procedure - is performed on each character to be rendered. Optimizations are allowed - provided that an implementation behaves as if the algorithm had been - followed exactly. Matching occurs in a well-defined order to insure that - the results are as consistent as possible across user agents, given an - identical set of available fonts and rendering technology. - - <p>To begin with, a user agent must determine the set of font families - available on a given platform and determine the style characteristics of - all faces for each family. If two faces have the exact same style - characteristics, one of them is ignored. Fonts available via @font-face - rules are referenced per document and are not treated as generally - available fonts. + determining whether a glyph exists for a given character. <ol id=fontmatchingalg> - <li>For each character within a given element, the user agent evaluates - the font properties applicable. The user agent starts with the first - family name in the <span class=property>‘<code class=property><a - href="#descdef-font-family">font-family</a></code>’</span> prioritized - list. + <li>Using the computed font property values for a given element, the user + agent starts with the first family name in the fontlist specified by the + <span class=property>‘<code class=property><a + href="#descdef-font-family">font-family</a></code>’</span> property. - <li>If the family name is a generic family name, the user agent looks up - the appropriate font family name to be used. User agents may choose the - generic font family to use based on the language of the containing - element or the Unicode range of the character. The user agent attempts to - find the family name among fonts defined via @font-face rules and then - among available system fonts. If a font family defined via @font-face - rules contains only invalid font data, it should be considered missing; - matching a platform font with the same name must not occur in this case. + <li>If the family name is unquoted and is a generic family name, the user + agent looks up the appropriate font family name to be used. User agents + may choose the generic font family to use based on the language of the + containing element or the Unicode range of the character. - <li>If a font family match occurs, the user agent then attempts to select - a face that matches the remaining font properties. It matches these - properties in the order given below: - <ol - id=fontstylematchingalg><!-- argh, what should be proper fallback for font-stretch? --> + <li>For other family names, the user agent attempts to find the family + name among fonts defined via @font-face rules and then among available + system fonts, matching names with a case-insensitive comparison. On + systems containing fonts with multiple localized font family names, user + agents must match any of these names independent of the underlying system + locale or platform API used. If a font family defined via @font-face + rules contains only invalid font data, it should be considered as if a + font was present but contained an empty character map; matching a + platform font with the same name must not occur in this case. + <li>If a font family match occurs, the user agent assembles the set of + font faces in that family that contain a glyph for the character. It then + narrows this matching set to a single face using other font properties in + the order given below: + <ol id=fontstylematchingalg> <li><span class=property>‘<code class=property><a href="#descdef-font-stretch">font-stretch</a></code>’</span> is tried - first. ‘<code class=property>normal</code>’ matches a font not - labeled as ‘<code class=property>condensed</code>’ or ‘<code - class=property>expanded</code>’. + first. If the matching set contains faces with width values matching + the ‘<code class=property><a + href="#descdef-font-stretch">font-stretch</a></code>’ value, faces + with other width values are removed from the matching set. If there is + no face that exactly matches the width value the nearest width is used + instead. If the value of ‘<code class=property><a + href="#descdef-font-stretch">font-stretch</a></code>’ is ‘<code + class=property>normal</code>’ or one of the condensed values, + narrower width values are checked first, then wider values. If the + value of ‘<code class=property><a + href="#descdef-font-stretch">font-stretch</a></code>’ is one of the + expanded values, wider values are checked first, followed by narrower + values. Once the closest matching width has been determined by this + process, faces with other widths are removed from the matching set. <li><span class=property>‘<code class=property><a href="#descdef-font-style">font-style</a></code>’</span> is tried - next. ‘<code class=property>italic</code>’ will be satisfied if - there is either a face in the UA's font database labeled with the CSS - keyword ‘<code class=property>italic</code>’ (preferred) or - ‘<code class=property>oblique</code>’. Otherwise the values must be - matched exactly or font-style will fail. - - <li><span class=property>‘<code class=property><a - href="#propdef-font-variant">font-variant</a></code>’</span> is tried - next. ‘<code class=property>normal</code>’ matches a font not - labeled as ‘<code class=property><a - href="#small-caps">small-caps</a></code>’; ‘<code class=property><a - href="#small-caps">small-caps</a></code>’ matches (1) a font labeled - as ‘<code class=property><a - href="#small-caps">small-caps</a></code>’, (2) a font in which the - small caps are synthesized, or (3) a font where all lowercase letters - are replaced by uppercase letters. A small-caps font may be synthesized - by electronically scaling uppercase letters from a normal font. + next. If the value of ‘<code class=property><a + href="#descdef-font-style">font-style</a></code>’ is ‘<code + class=property>italic</code>’, italic faces are checked first, then + oblique, then normal faces. If the value is ‘<code + class=property>oblique</code>’, oblique faces are checked first, then + italic faces and then normal faces. If the value is ‘<code + class=property>normal</code>’, normal faces are checked first, then + oblique faces, then italic faces. Faces with other style values are + excluded from the matching set. User agents are permitted to + distinguish between italic and oblique faces within platform font + families but this is not required, they may treat all italic or oblique + faces as italic faces. However, within font families defined via + @font-face rules, italic and oblique faces must be distinguished using + the value of the ‘<code class=property><a + href="#descdef-font-style">font-style</a></code>’ descriptor. <li><span class=property>‘<code class=property><a href="#descdef-font-weight">font-weight</a></code>’</span> is matched - next, it will never fail. If bolder/lighter relative weights are used, - calculate the effective weight based on the inherited weight value, as - described in the definition of font-weight above. Given the desired - weight and the set of face weights that match the properties above, if - the desired weight is available that face matches. Otherwise, a weight - is chosen using the rules below: + next, it will always reduce the matching set to a single font face. If + bolder/lighter relative weights are used, the effective weight is + calculated based on the inherited weight value, as described in the + definition of the ‘<code class=property><a + href="#descdef-font-weight">font-weight</a></code>’ property. Given + the desired weight and the weights of faces in the matching set after + the steps above, if the desired weight is available that face matches. + Otherwise, a weight is chosen using the rules below: <ul> <li>If the desired weight is less than 400, weights below the desired weight are checked in descending order followed by weights above the @@ -2584,27 +2755,60 @@ font metrics and render again once the font is downloaded. <li>If there are no more font families to be evaluated and no matching - face has been found, then the user agent performs a system font fallback - procedure to find the best match for the character to be rendered. The - result of this procedure may vary across user agents. + face has been found, then the user agent performs a <em>system font + fallback</em> procedure to find the best match for the character to be + rendered. The result of this procedure may vary across user agents. <li>If a particular character cannot be displayed using any font, the user agent should indicate by some means that a character is not being - displayed, either by displaying a symbolic representation of the missing - glyph or using the ‘<code class=css>missing character</code>’ glyph - from another font. + displayed, displaying either a symbolic representation of the missing + glyph (e.g. using a <a + href="http://en.wikipedia.org/wiki/Last_resort_font">Last Resort + Font</a>) or using the missing character glyph from a default font. </ol> - <!-- -Discuss implications of the algorithm above. Weight mapping trys to map non-bold weights to other non-bold -weights, same for bold faces. ---> - <!-- -<ul>Issues: - <li>Using the missing character glyph is definitely not the ideal, should state this more clearly.</li> - <li>Basically, if a font family is found, it should always match a face and not fall back, no?</li> - <li>Need more details on bolder/lighter interaction with synthetic bolding</li> -</ul> ---> + + <h3 id=char-handling-issues><span class=secno>5.2 </span>Character handling + issues</h3> + + <p>The procedure above does not assume that text runs are in either + normalized or denormalized form <a href="#UAX15" + rel=biblioentry>[UAX15]<!--{{!UAX15}}--></a>. Layout engines often convert + base character plus combining character sequences into precomposed + codepoints if they exist. Fonts can generally support both ways of + matching characters but variations can occur. Authors should always tailor + their choice of fonts to their content, including whether that content + contains normalized or denormalized character streams. + + <p>If a text run contains variation selectors, special handling is + required. For each character + variation selector pair, if the first font + with a glyph for the base character also contains a glyph for the variant + specified by the variation selector, user agents must display the variant + glyph instead of the default one. If the first font with a glyph for the + base character does not have a glyph for the variation selector pair, the + default glyph is displayed. + + <p>If a given character is a Private-Use Area Unicode codepoint and none of + the fonts in the fontlist contain a glyph for that codepoint, user agents + must display some form of missing glyph symbol for that character rather + than attempting system font fallback for that codepoint. When matching the + replacement character U+FFFD, user agents may skip the font matching + process and immediately display some form of missing glyph symbol, they + are not required to display the glyph from the font that would be selected + by the font matching process. + + <p>In general, the fonts for a given family will all have the same or + similar character maps. The process outlined here is designed to handle + even font families containing faces with widely variant character maps. + However, authors are cautioned that the use of such families can lead to + unexpected results. A special character only available in the condensed + italic face of a family may still be used even when font properties imply + a bold expanded face should be used instead. + + <p>Optimizations of this process are allowed provided that an + implementation behaves as if the algorithm had been followed exactly. + Matching occurs in a well-defined order to insure that the results are as + consistent as possible across user agents, given an identical set of + available fonts and rendering technology.</p> <!-- <h3>Examples of font matching</h3> @@ -2789,7 +2993,7 @@ <h3 id=font-kerning-prop><span class=secno>6.3 </span>Kerning: the <a href="#propdef-font-kerning">font-kerning</a> property</h3> - <table class=propdef id=namefont-kerningvalueauto-normal-noneini> + <table class=propdef id=namefont-kerning> <tbody> <tr> <td>Name: @@ -2855,7 +3059,7 @@ superscript and ordinal forms: the <a href="#propdef-vertical-position">vertical-position</a> property</h3> - <table class=propdef id=namevertical-positionvaluenormal-subscri> + <table class=propdef id=namevertical-position> <tbody> <tr> <td>Name: @@ -2918,7 +3122,7 @@ the <a href="#propdef-font-variant-ligatures">font-variant-ligatures</a> property</h3> - <table class=propdef id=namefont-variant-ligaturesvaluenormal-in> + <table class=propdef id=namefont-variant-ligatures> <tbody> <tr> <td>Name: @@ -3029,7 +3233,7 @@ <h3 id=font-variant-caps-prop><span class=secno>6.6 </span>Capitalization: the <a href="#propdef-font-variant-caps">font-variant-caps</a> property</h3> - <table class=propdef id=namefont-variant-capsvaluenormal-inherit> + <table class=propdef id=namefont-variant-caps> <tbody> <tr> <td>Name: @@ -3162,7 +3366,7 @@ formatting: the <a href="#propdef-font-variant-numeric">font-variant-numeric</a> property</h3> - <table class=propdef id=namefont-variant-numericvaluenormal-inhe> + <table class=propdef id=namefont-variant-numeric> <tbody> <tr> <td>Name: @@ -3306,7 +3510,7 @@ href="#propdef-font-variant-alternates">font-variant-alternates</a> property</h3> - <table class=propdef id=namefont-variant-alternatesvaluenormal-i> + <table class=propdef id=namefont-variant-alternates> <tbody> <tr> <td>Name: @@ -3402,7 +3606,7 @@ <dl> <dt><dfn - id=stylesetltfeature-value-namegt-ltfeature>styleset(<feature-value-name> + id=stylesetltfeature-value-namegt>styleset(<feature-value-name> [,<feature-value-name>]*)</dfn> <dd>Enables display with stylistic sets (<em>font specific</em>, OpenType @@ -3414,7 +3618,7 @@ <dl> <dt><dfn - id=character-variantltfeature-value-namegt->character-variant(<feature-value-name> + id=character-variantltfeature-value-namegt>character-variant(<feature-value-name> [,<feature-value-name>]*)</dfn> <dd>Enables display of specific character variants (<em>font @@ -3643,7 +3847,7 @@ href="#propdef-font-variant-east-asian">font-variant-east-asian</a> property</h3> - <table class=propdef id=namefont-variant-east-asianvaluenormal-i> + <table class=propdef id=namefont-variant-east-asian> <tbody> <tr> <td>Name: @@ -3769,7 +3973,7 @@ for font rendering: the <a href="#propdef-font-variant">font-variant</a> property</h3> - <table class=propdef id=namefont-variantvaluenormal-inherit-ltco> + <table class=propdef id=namefont-variant> <tbody> <tr> <td>Name: @@ -3836,7 +4040,7 @@ font settings control: the <a href="#propdef-font-feature-settings">font-feature-settings</a> property</h3> - <table class=propdef id=namefont-feature-settingsvaluenormal-lts> + <table class=propdef id=namefont-feature-settings> <tbody> <tr> <td>Name: @@ -3935,7 +4139,7 @@ language override: the <a href="#propdef-font-language-override">font-language-override</a> property</h3> - <table class=propdef id=namefont-language-overridevaluenormal-in> + <table class=propdef id=namefont-language-override> <tbody> <tr> <td>Name: @@ -4198,9 +4402,9 @@ <p>If a user agent implements a same-origin restriction for a given font type it must also implement the ability to relax this restriction using - cross-site origin controls <a href="#ACCESS-CONTROL" - rel=biblioentry>[ACCESS-CONTROL]<!--{{!ACCESS-CONTROL}}--></a>. Sites can - explicitly allow cross-site downloading of font data using the + cross-site origin controls <a href="#CORS" + rel=biblioentry>[CORS]<!--{{!CORS}}--></a>. Sites can explicitly allow + cross-site downloading of font data using the <code>Access-Control-Allow-Origin</code> HTTP header.</p> <!-- examples of same-site vs. cross-site usage --> <!-- example of setting access control header --> @@ -4343,7 +4547,7 @@ </dd> <!----> - <dt id=ACCESS-CONTROL>[ACCESS-CONTROL] + <dt id=CORS>[CORS] <dd>Anne van Kesteren. <a href="http://www.w3.org/TR/2010/WD-cors-20100727"><cite>Cross-Origin @@ -4356,9 +4560,9 @@ <dt id=HTML5>[HTML5] <dd>Ian Hickson. <a - href="http://www.w3.org/TR/2010/WD-html5-20100624"><cite>HTML5.</cite></a> - 24 June 2010. W3C Working Draft. (Work in progress.) URL: <a - href="http://www.w3.org/TR/2010/WD-html5-20100624">http://www.w3.org/TR/2010/WD-html5-20100624</a> + href="http://www.w3.org/TR/2011/WD-html5-20110113"><cite>HTML5.</cite></a> + 13 January 2011. W3C Working Draft. (Work in progress.) URL: <a + href="http://www.w3.org/TR/2011/WD-html5-20110113">http://www.w3.org/TR/2011/WD-html5-20110113</a> </dd> <!----> @@ -4391,12 +4595,22 @@ </dd> <!----> + <dt id=UAX15>[UAX15] + + <dd>Mark Davis. <a + href="http://www.unicode.org/reports/tr15/"><cite>Unicode Normalization + Forms.</cite></a> 17 September 2010. Unicode Standard Annex #15. URL: <a + href="http://www.unicode.org/reports/tr15/">http://www.unicode.org/reports/tr15/</a> + </dd> + <!----> + <dt id=UAX29>[UAX29] <dd>Mark Davis. <a - href="http://www.unicode.org/unicode/reports/tr29/tr29-9.html"><cite>Text - Boundaries.</cite></a> 25 March 2005. Unicode Standard Annex #29. URL: <a - href="http://www.unicode.org/unicode/reports/tr29/tr29-9.html">http://www.unicode.org/unicode/reports/tr29/tr29-9.html</a> + href="http://www.unicode.org/reports/tr29/"><cite>Unicode Text + Segmentation.</cite></a> 8 October 2010. Unicode Standard Annex #29. URL: + <a + href="http://www.unicode.org/reports/tr29/">http://www.unicode.org/reports/tr29/</a> </dd> <!----> @@ -4416,8 +4630,9 @@ <!--{{!AAT-FEATURES}}--> <!--{{!OPEN-FONT-FORMAT}}--> <!--{{!UNICODE5}}--> + <!--{{!UAX15}}--> <!--{{!UAX29}}--> - <!--{{!ACCESS-CONTROL}}--> + <!--{{!CORS}}--> <!--{{!HTML5}}--> <h3 class=no-num id=other-references>Other References</h3> @@ -4513,7 +4728,7 @@ href="#annotationltfeature-value-namegt" title="annotation(<feature-value-name>)"><strong>6.8</strong></a> - <li>aspect value, <a href="#aspect-value0" title="aspect + <li>aspect value, <a href="#aspect0" title="aspect value"><strong>3.6</strong></a> <li>at-rules, <a href="#at-rule" title=at-rules>4.1</a> @@ -4523,7 +4738,7 @@ <li>character-variant(<feature-value-name> [,<feature-value-name>]*), <a - href="#character-variantltfeature-value-namegt-" + href="#character-variantltfeature-value-namegt" title="character-variant(<feature-value-name> [,<feature-value-name>]*)"><strong>6.8</strong></a> @@ -4623,6 +4838,9 @@ title=font-style><strong>4.4</strong></a>, <a href="#propdef-font-style" title=font-style><strong>3.4</strong></a> + <li>font-style-synthetic, <a href="#propdef-font-style-synthetic" + title=font-style-synthetic><strong>3.8</strong></a> + <li>font-variant, <a href="#descdef-font-variant" title=font-variant><strong>4.6</strong></a>, <a href="#propdef-font-variant" title=font-variant><strong>6.11</strong></a> @@ -4659,6 +4877,9 @@ title=font-weight><strong>4.4</strong></a>, <a href="#propdef-font-weight" title=font-weight><strong>3.2</strong></a> + <li>font-weight-synthetic, <a href="#propdef-font-weight-synthetic" + title=font-weight-synthetic><strong>3.8</strong></a> + <li>full-width, <a href="#full-width" title=full-width><strong>6.10</strong></a> @@ -4727,7 +4948,7 @@ href="#ornamentsltfeature-value-namegt" title="ornaments(<feature-value-name>)"><strong>6.8</strong></a> - <li><percentage>, <a href="#ltpercentagegt-" + <li><percentage>, <a href="#ltpercentagegt" title="<percentage>">3.5</a> <li>petite-caps, <a href="#petite-caps" @@ -4768,7 +4989,7 @@ title=stacked-fractions><strong>6.7</strong></a> <li>styleset(<feature-value-name> [,<feature-value-name>]*), - <a href="#stylesetltfeature-value-namegt-ltfeature" + <a href="#stylesetltfeature-value-namegt" title="styleset(<feature-value-name> [,<feature-value-name>]*)"><strong>6.8</strong></a> @@ -4847,7 +5068,7 @@ <tr valign=baseline> <td><a class=property href="#descdef-font-family">font-family</a> - <td>[[ <family-name> | <generic-family> ] [, <family-name>| + <td>[[ <family-name> | <generic-family> ] [, <family-name> | <generic-family>]* ] | inherit <td>depends on user agent @@ -4972,6 +5193,22 @@ <td>visual <tr valign=baseline> + <td><a class=property + href="#propdef-font-style-synthetic">font-style-synthetic</a> + + <td>auto | none | inherit + + <td>auto + + <td>all elements + + <td>yes + + <td>N/A + + <td>visual + + <tr valign=baseline> <td><a class=property href="#propdef-font-variant">font-variant</a> <td>normal | inherit | [ <common-lig-values> || @@ -5002,8 +5239,8 @@ <td>normal | inherit | [ <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || - styleset(<feature-value-name> [, <feature-value-name>]*) || - character-variant(<feature-value-name> + styleset(<;feature-value-name> [, <feature-value-name>]*) + || character-variant(<feature-value-name> [,<feature-value-name>]*) || swash(<feature-value-name>) || contextual-swash(<feature-value-name>) || ornament(<feature-value-name>) || @@ -5105,6 +5342,22 @@ <tr valign=baseline> <td><a class=property + href="#propdef-font-weight-synthetic">font-weight-synthetic</a> + + <td>auto | none | inherit + + <td>auto + + <td>all elements + + <td>yes + + <td>N/A + + <td>visual + + <tr valign=baseline> + <td><a class=property href="#propdef-vertical-position">vertical-position</a> <td>normal | subscript | superscript | ordinal
Received on Thursday, 24 February 2011 12:53:09 UTC