- 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