[css3-fonts] revise @font-feature-values rule definition

Wed, 05 Jun 2013 19:51:35 +0900

author
John Daggett <jdaggett@mozilla.com>
date
Wed, 05 Jun 2013 19:51:35 +0900
changeset 8356
46cef6470f58
parent 8355
9a174c139361
child 8357
4ce7b66b553a

[css3-fonts] revise @font-feature-values rule definition

css-fonts/Fonts.html file | annotate | diff | comparison | revisions
     1.1 --- a/css-fonts/Fonts.html	Wed Jun 05 17:02:26 2013 +0900
     1.2 +++ b/css-fonts/Fonts.html	Wed Jun 05 19:51:35 2013 +0900
     1.3 @@ -112,15 +112,15 @@
     1.4  
     1.5     <h1>CSS Fonts Module Level 3</h1>
     1.6  
     1.7 -   <h2 class="no-num no-toc" id=editors-draft-31-may-2013>Editor's Draft 31
     1.8 -    May 2013</h2>
     1.9 +   <h2 class="no-num no-toc" id=editors-draft-5-june-2013>Editor's Draft 5
    1.10 +    June 2013</h2>
    1.11  
    1.12     <dl id=authors>
    1.13      <dt>This version:
    1.14  
    1.15      <dd><a
    1.16       href="http://dev.w3.org/csswg/css-fonts/">http://dev.w3.org/csswg/css-fonts/</a>
    1.17 -     <!-- <dd><a href="http://www.w3.org/TR/2013/ED-css3-fonts-20130531/">http://www.w3.org/TR/2013/ED-css3-fonts-20130531/</a> -->
    1.18 +     <!-- <dd><a href="http://www.w3.org/TR/2013/ED-css3-fonts-20130605/">http://www.w3.org/TR/2013/ED-css3-fonts-20130605/</a> -->
    1.19       
    1.20  
    1.21      <dt>Latest version:
    1.22 @@ -372,6 +372,13 @@
    1.23       <li><a href="#font-feature-values"><span class=secno>6.9 </span>Defining
    1.24        font specific alternates: the <code>@font-feature-values</code>
    1.25        rule</a>
    1.26 +      <ul class=toc>
    1.27 +       <li><a href="#basic-syntax"><span class=secno>6.9.1 </span>Basic
    1.28 +        syntax</a>
    1.29 +
    1.30 +       <li><a href="#multi-valued-feature-value-definitions"><span
    1.31 +        class=secno>6.9.2 </span>Multi-valued feature value definitions</a>
    1.32 +      </ul>
    1.33  
    1.34       <li><a href="#font-variant-east-asian-prop"><span class=secno>6.10
    1.35        </span>East Asian text rendering: the font-variant-east-asian
    1.36 @@ -4397,9 +4404,9 @@
    1.37  
    1.38    <p>For many of the property values listed below, several different
    1.39     alternate glyphs are available. How many alternates are available and what
    1.40 -   they represent is font-specific, so these are each marked <em>font
    1.41 -   specific</em> in the value definitions below. Because the nature of these
    1.42 -   alternates is font-specific, the <a
    1.43 +   they represent is font-specific, so these are each marked <dfn
    1.44 +   id=font-specific>font specific</dfn> in the value definitions below.
    1.45 +   Because the nature of these alternates is font-specific, the <a
    1.46     href="#at-font-feature-values-rule"><code>@font-feature-values</code></a>
    1.47     rule is used to define values for a specific font family or set of
    1.48     families that associate a font-specific numeric
    1.49 @@ -4451,8 +4458,9 @@
    1.50     <dt><dfn id=stylistic
    1.51      title=stylistic>stylistic(&lt;feature-value-name&gt;)</dfn>
    1.52  
    1.53 -   <dd>Enables display of stylistic alternates (<em>font specific</em>,
    1.54 -    OpenType feature: <span class=tag>salt &lt;feature-index&gt;</span>).
    1.55 +   <dd>Enables display of stylistic alternates (<a
    1.56 +    href="#font-specific"><em>font specific</em></a>, OpenType feature: <span
    1.57 +    class=tag>salt &lt;feature-index&gt;</span>).
    1.58    </dl>
    1.59  
    1.60    <div class=featex><img alt="stylistic alternate example" src=salt.png></div>
    1.61 @@ -4461,10 +4469,10 @@
    1.62     <dt><dfn id=styleset title=styleset>styleset(&lt;feature-value-name&gt;
    1.63      #)</dfn>
    1.64  
    1.65 -   <dd>Enables display with stylistic sets (<em>font specific</em>, OpenType
    1.66 -    feature: <span class=tag>ss&lt;feature-index&gt;</span> OpenType
    1.67 -    currently defines <span class=tag>ss01</span> through <span
    1.68 -    class=tag>ss20</span>).
    1.69 +   <dd>Enables display with stylistic sets (<a href="#font-specific"><em>font
    1.70 +    specific</em></a>, OpenType feature: <span
    1.71 +    class=tag>ss&lt;feature-index&gt;</span> OpenType currently defines <span
    1.72 +    class=tag>ss01</span> through <span class=tag>ss20</span>).
    1.73    </dl>
    1.74  
    1.75    <div class=featex><img alt="styleset example" src=ssnn.png></div>
    1.76 @@ -4474,16 +4482,16 @@
    1.77      title=character-variant>character-variant(&lt;feature-value-name&gt;
    1.78      #)</dfn>
    1.79  
    1.80 -   <dd>Enables display of specific character variants (<em>font
    1.81 -    specific</em>, OpenType feature: <span
    1.82 +   <dd>Enables display of specific character variants (<a
    1.83 +    href="#font-specific"><em>font specific</em></a>, OpenType feature: <span
    1.84      class=tag>cv&lt;feature-index&gt;</span> OpenType currently defines <span
    1.85      class=tag>cv01</span> through <span class=tag>cv99</span>).
    1.86  
    1.87     <dt><dfn id=swash title=swash>swash(&lt;feature-value-name&gt;)</dfn>
    1.88  
    1.89 -   <dd>Enables display of swash glyphs (<em>font specific</em>, OpenType
    1.90 -    feature: <span class=tag>swsh &lt;feature-index&gt;, cswh
    1.91 -    &lt;feature-index&gt;</span>).
    1.92 +   <dd>Enables display of swash glyphs (<a href="#font-specific"><em>font
    1.93 +    specific</em></a>, OpenType feature: <span class=tag>swsh
    1.94 +    &lt;feature-index&gt;, cswh &lt;feature-index&gt;</span>).
    1.95    </dl>
    1.96  
    1.97    <div class=featex><img alt="swash example" src=swsh.png></div>
    1.98 @@ -4493,15 +4501,16 @@
    1.99      title=ornaments>ornaments(&lt;feature-value-name&gt;)</dfn>
   1.100  
   1.101     <dd>Enables replacement of default glyphs with ornaments, if provided in
   1.102 -    the font (<em>font specific</em>, OpenType feature: <span class=tag>ornm
   1.103 -    &lt;feature-index&gt;</span>). Some fonts may offer ornament glyphs as
   1.104 -    alternates for a wide collection of characters; however, displaying
   1.105 -    arbitrary characters (e.g., alphanumerics) as ornaments is poor practice
   1.106 -    as it distorts the semantics of the data. Font designers are encouraged
   1.107 -    to encode all ornaments (except those explicitly encoded in the Unicode
   1.108 -    Dingbats blocks, etc.) as alternates for the bullet character (U+2022) to
   1.109 -    allow authors to select the desired glyph using ‘<a
   1.110 -    href="#ornaments"><code class=property>ornaments</code></a>’.
   1.111 +    the font (<a href="#font-specific"><em>font specific</em></a>, OpenType
   1.112 +    feature: <span class=tag>ornm &lt;feature-index&gt;</span>). Some fonts
   1.113 +    may offer ornament glyphs as alternates for a wide collection of
   1.114 +    characters; however, displaying arbitrary characters (e.g.,
   1.115 +    alphanumerics) as ornaments is poor practice as it distorts the semantics
   1.116 +    of the data. Font designers are encouraged to encode all ornaments
   1.117 +    (except those explicitly encoded in the Unicode Dingbats blocks, etc.) as
   1.118 +    alternates for the bullet character (U+2022) to allow authors to select
   1.119 +    the desired glyph using ‘<a href="#ornaments"><code
   1.120 +    class=property>ornaments</code></a>’.
   1.121    </dl>
   1.122  
   1.123    <div class=featex><img alt="ornaments example" src=ornm.png></div>
   1.124 @@ -4510,8 +4519,9 @@
   1.125     <dt><dfn id=annotation
   1.126      title=annotation>annotation(&lt;feature-value-name&gt;)</dfn>
   1.127  
   1.128 -   <dd>Enables display of alternate annotation forms (<em>font specific</em>,
   1.129 -    OpenType feature: <span class=tag>nalt &lt;feature-index&gt;</span>).
   1.130 +   <dd>Enables display of alternate annotation forms (<a
   1.131 +    href="#font-specific"><em>font specific</em></a>, OpenType feature: <span
   1.132 +    class=tag>nalt &lt;feature-index&gt;</span>).
   1.133    </dl>
   1.134  
   1.135    <div class=featex><img alt="alternate annotation form example"
   1.136 @@ -4525,16 +4535,22 @@
   1.137    <p>Several of the possible values of ‘<a
   1.138     href="#propdef-font-variant-alternates"><code
   1.139     class=property>font-variant-alternates</code></a>’ listed above are
   1.140 -   labeled as "font specific". For these features fonts may define not just a
   1.141 -   single glyph but a set of alternate glyphs with an index to select a given
   1.142 -   alternate. Since these are font family specific, the <a
   1.143 +   labeled as <a href="#font-specific"><em>font specific</em></a>. For these
   1.144 +   features fonts may define not just a single glyph but a set of alternate
   1.145 +   glyphs with an index to select a given alternate. Since these are font
   1.146 +   family specific, the <a
   1.147     href="#at-font-feature-values-rule"><code>@font-feature-values</code></a>
   1.148 -   rule is used to define named-values for these indices for a given family.
   1.149 -
   1.150 -  <p>In the case of the swash Q in the example shown above, the swash could
   1.151 -   be specified using these style rules:
   1.152 -
   1.153 -  <pre>
   1.154 +   rule is used to define named values for these indices for a given family.
   1.155 +
   1.156 +  <p class=note>See the <a href="#om-fontfeaturevalues">object model
   1.157 +   reference section</a> for a description of the interfaces used to modify
   1.158 +   these rules via the CSS Object Model.
   1.159 +
   1.160 +  <div class=example>
   1.161 +   <p>In the case of the swash Q in the example shown above, the swash could
   1.162 +    be specified using these style rules:</p>
   1.163 +
   1.164 +   <pre>
   1.165  
   1.166  @font-feature-values Jupiter Sans {
   1.167    @swash {
   1.168 @@ -4550,12 +4566,27 @@
   1.169  
   1.170  &lt;h2>Quick&lt;/h2></pre>
   1.171  
   1.172 -  <p>When Jupiter Sans is present, the second alternate swash alternate will
   1.173 -   be displayed. When not present, no swash character will be shown, since
   1.174 -   the specific named-value "flowing" is only defined for the Jupiter Sans
   1.175 -   family. The @-mark indicates the name of the property value for which a
   1.176 -   named-value can be used. The name "flowing" is chosen by the author, the
   1.177 -   values specified within a given font's data.
   1.178 +   <p>When Jupiter Sans is present, the second alternate swash alternate will
   1.179 +    be displayed. When not present, no swash character will be shown, since
   1.180 +    the specific named value "flowing" is only defined for the Jupiter Sans
   1.181 +    family. The @-mark indicates the name of the property value for which a
   1.182 +    named value can be used. The name "flowing" is chosen by the author. The
   1.183 +    index that represents each alternate is defined within a given font's
   1.184 +    data.</p>
   1.185 +  </div>
   1.186 +
   1.187 +  <h4 id=basic-syntax><span class=secno>6.9.1 </span>Basic syntax</h4>
   1.188 +
   1.189 +  <p>An <a
   1.190 +   href="#at-font-feature-values-rule"><code>@font-feature-values</code></a>
   1.191 +   rule is composed of a list of font families followed by a block containing
   1.192 +   individual <a href="#featurevalueblock"><i
   1.193 +   title="feature_value_block">feature value blocks</i></a> that take the
   1.194 +   form of @-rules. Each block defines a set of named values for a specific
   1.195 +   font feature when a given set of font families is used. Effectively, they
   1.196 +   define a mapping of ⟨family, feature, ident⟩ → ⟨values⟩ where
   1.197 +   ⟨values⟩ are the numeric indices used for specific features defined
   1.198 +   for a given font.
   1.199  
   1.200    <p>In terms of the grammar, this specification defines the following
   1.201     productions:
   1.202 @@ -4592,65 +4623,85 @@
   1.203    <pre>@{F}{O}{N}{T}{-}{F}{E}{A}{T}{U}{R}{E}{-}{V}{A}{L}{U}{E}{S}   {return <dfn id=fontfeaturevaluessym>FONT_FEATURE_VALUES_SYM</dfn>;}
   1.204  </pre>
   1.205  
   1.206 -  <p>Feature value blocks are treated <a
   1.207 -   href="http://www.w3.org/TR/CSS2/syndata.html#at-rules">similar to
   1.208 -   at-rules</a>, they consist of everything up to the next block or
   1.209 -   semi-colon, whichever comes first.
   1.210 -
   1.211 -  <p>Font feature values rules define a set of values for a specific font
   1.212 -   feature as used for a given set of families. Effectively, they define a
   1.213 -   mapping of ⟨family, feature, ident⟩ → ⟨values⟩ where
   1.214 -   ⟨values⟩ are the indices used for specific features defined for a
   1.215 -   given font.
   1.216 -
   1.217 -  <p>The font family list uses the same syntax as that used for the <a
   1.218 +  <p><a href="#featurevalueblock"><i title="feature_value_block">Feature
   1.219 +   value blocks</i></a> are handled as <a
   1.220 +   href="http://www.w3.org/TR/CSS2/syndata.html#at-rules">at-rules</a>, they
   1.221 +   consist of everything up to the next block or semi-colon, whichever comes
   1.222 +   first.
   1.223 +
   1.224 +  <p>The <a href="#fontfamilynamelist"><i title="font_family_name_list">font
   1.225 +   family list</i></a> is a comma-delimited list of <a
   1.226 +   href="#fontfamilyname"><i title="font_family_name">font family
   1.227 +   names</i></a> that match the definition of <a
   1.228 +   href="#family-name-value"><var>&lt;family-name&gt;</var></a> for the <a
   1.229     href="#propdef-font-family" title="font-family!!property">‘<code
   1.230 -   class=property>font-family</code>’</a> property. Within feature value
   1.231 -   blocks, the feature type is ‘<code class=css>@</code>’ followed by the
   1.232 -   name of the font-specific property value (e.g. <a
   1.233 -   href="#swash"><code>@swash</code></a>). The feature type must match, using
   1.234 -   an ASCII case-insensitive comparison, one of the <em>font specific</em>
   1.235 -   values of the ‘<a href="#propdef-font-variant-alternates"><code
   1.236 -   class=property>font-variant-alternates</code></a>’ property. The values
   1.237 -   associated with a given idenitifier are limited to integer values 0 or
   1.238 -   greater.
   1.239 -
   1.240 -  <p>If syntax errors occur within the font family list, the entire rule must
   1.241 -   be ignored. When syntax errors occur within a feature value definition,
   1.242 -   such as invalid identifiers or values, the entire feature value definition
   1.243 -   must be omitted, similar to the way syntax errors in style declarations
   1.244 -   are handled. When the <code>&lt;feature-type></code> is invalid, the
   1.245 -   entire associated feature value block must be ignored.
   1.246 -
   1.247 -  <pre>@font-feature-values Bongo {
   1.248 +   class=property>font-family</code>’</a> property. This means that only
   1.249 +   named font families are allowed, rules that include generic or system
   1.250 +   fonts in the list of font families are syntax errors. However, if a user
   1.251 +   agent defines a generic font to be a specific named font (e.g. Helvetica),
   1.252 +   the settings associated with that family name will be used. If syntax
   1.253 +   errors occur within the font family list, the entire rule must be ignored.
   1.254 +
   1.255 +  <p>Within <a href="#featurevalueblock"><i
   1.256 +   title="feature_value_block">feature value blocks</i></a>, the <a
   1.257 +   href="#featuretype"><i title="feature_type">feature type</i></a> is
   1.258 +   ‘<code class=css>@</code>’ followed by the name of one of the <a
   1.259 +   href="#font-specific"><em>font specific</em></a> property values of ‘<a
   1.260 +   href="#propdef-font-variant-alternates"><code
   1.261 +   class=property>font-variant-alternates</code></a>’ (e.g. <a
   1.262 +   href="#swash"><code>@swash</code></a>). The identifiers used within
   1.263 +   feature value definitions follow the rules of CSS user identifiers and are
   1.264 +   case-sensitive. They are unique only for a given set of font families and
   1.265 +   <a href="#featuretype"><i title="feature_type">feature type</i></a>. The
   1.266 +   same identifier used with a different <a href="#featuretype"><i
   1.267 +   title="feature_type">feature type</i></a> is treated as a separate and
   1.268 +   distinct value. If the same identifier is defined mulitple times for a
   1.269 +   given <a href="#featuretype"><i title="feature_type">feature type</i></a>
   1.270 +   and font family, the last defined value is used. Values associated with a
   1.271 +   given identifier are limited to integer values 0 or greater.
   1.272 +
   1.273 +  <p>When syntax errors occur within a <a href="#featurevaluedefinition"><i
   1.274 +   title="feature_value_definition">feature value definition</i></a>, such as
   1.275 +   invalid identifiers or values, the entire <a
   1.276 +   href="#featurevaluedefinition"><i title="feature_value_definition">feature
   1.277 +   value definition</i></a> must be omitted, just as syntax errors in style
   1.278 +   declarations are handled. When the <a href="#featuretype"><i
   1.279 +   title="feature_type">feature type</i></a> is invalid, the entire
   1.280 +   associated <a href="#featurevalueblock"><i
   1.281 +   title="feature_value_block">feature value block</i></a> must be ignored.
   1.282 +
   1.283 +  <div class=example>
   1.284 +   <p>Rules that are equivalent given syntax error handling:</p>
   1.285 +
   1.286 +   <pre>@font-feature-values Bongo {
   1.287    @swash { ornate: 1; }
   1.288    annotation { boxed: 4; } /* should be @annotation! */
   1.289    @swash { double-loops: 1; flowing: -1; } /* negative value */
   1.290    @ornaments ; /* incomplete definition */
   1.291    @styleset { double-W: 14; sharp-terminals: 16 1 } /* missing ; */
   1.292 -  <a href="http://www.angryalien.com/0504/shiningbunnies.html" style="text-decoration: none;">redrum</a>  /* random editing mistake */
   1.293 +  <a href="http://www.angryalien.com/0504/shiningbunnies.html" style="text-decoration: none; border: none;">redrum</a>  /* random editing mistake */
   1.294  }</pre>
   1.295  
   1.296 -  <p>The example above is equivalent to:
   1.297 -
   1.298 -  <pre>@font-feature-values Bongo {
   1.299 +   <p>The example above is equivalent to:</p>
   1.300 +
   1.301 +   <pre>@font-feature-values Bongo {
   1.302    @swash { ornate: 1; }
   1.303    @swash { double-loops: 1; }
   1.304    @styleset { double-W: 14; sharp-terminals: 16 1; }
   1.305  }</pre>
   1.306 +  </div>
   1.307  
   1.308    <p>If multiple <a
   1.309     href="#at-font-feature-values-rule"><code>@font-feature-values</code></a>
   1.310 -   rules are defined for a given family, the resulting values defined are the
   1.311 -   union of these rules. This allows a set of named-values to be defined for
   1.312 -   a given font family globally for a site and specific additions made
   1.313 -   per-page. If the same &lt;feature-value-name&gt; is defined mulitple times
   1.314 -   for a given <a href="#propdef-font-variant"
   1.315 -   title="font-variant!!property">‘<code
   1.316 -   class=property>font-variant</code>’</a> value, the last defined value is
   1.317 -   used.
   1.318 -
   1.319 -  <pre>
   1.320 +   rules are defined for a given family, the resulting values definitions are
   1.321 +   the union of the definitions contained within these rules. This allows a
   1.322 +   set of named values to be defined for a given font family globally for a
   1.323 +   site and specific additions made per-page.
   1.324 +
   1.325 +  <div class=example>
   1.326 +   <p>Using both site-wide and per-page feature values:</p>
   1.327 +
   1.328 +   <pre>
   1.329  site.css:
   1.330  
   1.331    @font-feature-values Mercury Serif {
   1.332 @@ -4674,35 +4725,15 @@
   1.333      /* enable both the use of stacked g and alternate m */
   1.334      font-variant-alternates: styleset(stacked-g, geometric-m);
   1.335    }</pre>
   1.336 -
   1.337 -  <p>Only named font families are allowed for &lt;font-family&gt;, rules that
   1.338 -   include generic or system fonts in the list of font families are
   1.339 -   considered syntax errors and the contents of the rules are ignored.
   1.340 -   However, if a user agent defines a generic font to be a specific named
   1.341 -   font (e.g. Helvetica), the settings associated with that family name will
   1.342 -   be used.
   1.343 -
   1.344 -  <p>For &lt;font-variant-property-value>, only font specific property value
   1.345 -   names supported by the <a href="#propdef-font-variant"
   1.346 -   title="font-variant!!property">‘<code
   1.347 -   class=property>font-variant</code>’</a> property are recognized,
   1.348 -   definitions for other value names cause a syntax error and are ignored.
   1.349 -   Each property value that is font specific is clearly marked as such.
   1.350 -   Feature value names follow the rules of CSS user identifiers and are
   1.351 -   case-sensitive. They are unique only for a given set of font families and
   1.352 -   <a href="#propdef-font-variant" title="font-variant!!property">‘<code
   1.353 -   class=property>font-variant</code>’</a> property value; the same
   1.354 -   identifier used with a different <a href="#propdef-font-variant"
   1.355 -   title="font-variant!!property">‘<code
   1.356 -   class=property>font-variant</code>’</a> property value is treated as a
   1.357 -   separate and distinct value.
   1.358 -
   1.359 -  <p>Using a commonly named value allows authors to use a single style rule
   1.360 -   to cover a set of fonts for which the underlying selector is different for
   1.361 -   each font. If either font in the example below is found, a circled number
   1.362 -   glyph will be used:
   1.363 -
   1.364 -  <pre>@font-feature-values Taisho Gothic {
   1.365 +  </div>
   1.366 +
   1.367 +  <div class=example>
   1.368 +   <p>Using a commonly named value allows authors to use a single style rule
   1.369 +    to cover a set of fonts for which the underlying selector is different
   1.370 +    for each font. If either font in the example below is found, a circled
   1.371 +    number glyph will be used:</p>
   1.372 +
   1.373 +   <pre>@font-feature-values Taisho Gothic {
   1.374    @annotation { boxed: 1; circled: 4; }
   1.375  }
   1.376  
   1.377 @@ -4715,21 +4746,28 @@
   1.378    font-family: Taisho Gothic, Otaru Kisa;
   1.379    font-variant: annotation(circled);
   1.380  }</pre>
   1.381 -
   1.382 -  <p>Most font specific <a href="#propdef-font-variant"
   1.383 -   title="font-variant!!property">‘<code
   1.384 -   class=property>font-variant</code>’</a> property values take a single
   1.385 -   value (e.g. swash). The character-variant property value allows two values
   1.386 -   and styleset allows an unlimited number. If a larger number of values are
   1.387 -   assigned to a given name, a syntax error occurs and the entire
   1.388 -   &lt;font-feature-values-declaration&gt; is ignored.
   1.389 +  </div>
   1.390 +
   1.391 +  <h4 id=multi-valued-feature-value-definitions><span class=secno>6.9.2
   1.392 +   </span>Multi-valued feature value definitions</h4>
   1.393 +
   1.394 +  <p>Most <a href="#font-specific"><em>font specific</em></a> ‘<a
   1.395 +   href="#propdef-font-variant-alternates"><code
   1.396 +   class=property>font-variant-alternates</code></a>’ property values take
   1.397 +   a single value (e.g. ‘<a href="#swash"><code
   1.398 +   class=property>swash</code></a>’). The ‘<a
   1.399 +   href="#character-variant"><code
   1.400 +   class=property>character-variant</code></a>’ property value allows two
   1.401 +   values and ‘<a href="#styleset"><code
   1.402 +   class=property>styleset</code></a>’ allows an unlimited number.
   1.403  
   1.404    <p>For the styleset property value, multiple values indicate the style sets
   1.405     to be enabled. Values between 1 and 99 enable OpenType features <span
   1.406     class=tag>ss01</span> through <span class=tag>ss99</span>. However, the
   1.407     OpenType standard only officially defines <span class=tag>ss01</span>
   1.408 -   through <span class=tag>ss20</span>. Values greater than 99 or equal to 0
   1.409 -   are ignored but do not generate a syntax error when parsed.
   1.410 +   through <span class=tag>ss20</span>. For OpenType fonts, values greater
   1.411 +   than 99 or equal to 0 do not generate a syntax error when parsed but
   1.412 +   enable no OpenType features.
   1.413  
   1.414    <pre>@font-feature-values Mars Serif {
   1.415    @styleset {
   1.416 @@ -4755,16 +4793,18 @@
   1.417    <p>For character-variant, a single value between 1 and 99 indicates the
   1.418     enabling of OpenType feature <span class=tag>cv01</span> through <span
   1.419     class=tag>cv99</span>. For OpenType fonts, values greater than 99 or equal
   1.420 -   to 0 are ignored but do not generate a syntax error when parsed. When two
   1.421 -   values are listed, the first value indicates the feature used and the
   1.422 -   second the value passed for that feature. When two value names imply
   1.423 -   different settings for the same underlying feature the last setting is
   1.424 -   used.
   1.425 +   to 0 are ignored but do not generate a syntax error when parsed but enable
   1.426 +   no OpenType features. When two values are listed, the first value
   1.427 +   indicates the feature used and the second the value passed for that
   1.428 +   feature. If more than two values are assigned to a given name, a syntax
   1.429 +   error occurs and the entire <a href="#featurevaluedefinition"><i
   1.430 +   title="feature_value_definition">feature value definition</i></a> is
   1.431 +   ignored.
   1.432  
   1.433    <pre>@font-feature-values MM Greek {
   1.434    @character-variant { alpha-2: 1 2; }   /* implies cv01 = 2 */
   1.435    @character-variant { beta-3: 2 3; }    /* implies cv02 = 3 */
   1.436 -  @character-variant { epsilon: 5 3 6; } /* more than 2 values, syntax error, ignored */
   1.437 +  @character-variant { epsilon: 5 3 6; } /* more than 2 values, syntax error, definition ignored */
   1.438    @character-variant { gamma: 12; }      /* implies cv12 = 1 */
   1.439    @character-variant { zeta:   20 3; }   /* implies cv20 = 3 */
   1.440    @character-variant { zeta-2: 20 2; }   /* implies cv20 = 2 */
   1.441 @@ -4787,10 +4827,6 @@
   1.442    font-variant-alternates: character-variant(zeta-2, zeta);
   1.443  }</pre>
   1.444  
   1.445 -  <p>See the <a href="#om-fontfeaturevalues">object model reference
   1.446 -   section</a> for a description of the interfaces used to modify these rules
   1.447 -   via the CSS Object Model.
   1.448 -
   1.449    <div class=figure><img alt="Matching text on Byzantine seals using
   1.450     character variants" src=byzantineseal.png>
   1.451     <p class=caption>Byzantine seal text displayed with character variants
   1.452 @@ -5430,9 +5466,10 @@
   1.453  
   1.454    <h3 id=feature-precedence><span class=secno>7.2 </span>Feature precedence</h3>
   1.455  
   1.456 -  <p>General and font specific font feature property settings are resolved in
   1.457 -   the order below, in ascending precedence order. This ordering is used to
   1.458 -   construct a combined list of font features that affect a given text run.
   1.459 +  <p>General and <a href="#font-specific"><em>font specific</em></a> font
   1.460 +   feature property settings are resolved in the order below, in ascending
   1.461 +   precedence order. This ordering is used to construct a combined list of
   1.462 +   font features that affect a given text run.
   1.463  
   1.464    <ol>
   1.465     <li>Font features enabled by default, including features required for a
   1.466 @@ -5755,7 +5792,7 @@
   1.467     <li>Moved font load events into a separate <a
   1.468      href="http://dev.w3.org/csswg/css3-font-load-events/">spec</a>
   1.469  
   1.470 -   <li>Tightened error handling rules for <a
   1.471 +   <li>Tightened syntax rules for <a
   1.472      href="#at-font-feature-values-rule"><code>@font-feature-values</code></a>
   1.473      rules
   1.474  
   1.475 @@ -6340,16 +6377,19 @@
   1.476      of"><strong>#</strong></a>
   1.477  
   1.478     <li>feature_type, <a href="#featuretype"
   1.479 -    title="feature_type"><strong>6.9</strong></a>
   1.480 +    title="feature_type"><strong>6.9.1</strong></a>
   1.481  
   1.482     <li>feature_value_block, <a href="#featurevalueblock"
   1.483 -    title="feature_value_block"><strong>6.9</strong></a>
   1.484 +    title="feature_value_block"><strong>6.9.1</strong></a>
   1.485  
   1.486     <li>feature_value_definition, <a href="#featurevaluedefinition"
   1.487 -    title="feature_value_definition"><strong>6.9</strong></a>
   1.488 +    title="feature_value_definition"><strong>6.9.1</strong></a>
   1.489  
   1.490     <li>font, <a href="#propdef-font" title=font><strong>3.7</strong></a>
   1.491  
   1.492 +   <li>font specific, <a href="#font-specific" title="font
   1.493 +    specific"><strong>6.8</strong></a>
   1.494 +
   1.495     <li>font-family
   1.496      <ul>
   1.497       <li>descriptor, <a href="#descdef-font-family" title="font-family,
   1.498 @@ -6444,16 +6484,16 @@
   1.499      title="FONT_FACE_SYM"><strong>4.1</strong></a>
   1.500  
   1.501     <li>font_family_name, <a href="#fontfamilyname"
   1.502 -    title="font_family_name"><strong>6.9</strong></a>
   1.503 +    title="font_family_name"><strong>6.9.1</strong></a>
   1.504  
   1.505     <li>font_family_name_list, <a href="#fontfamilynamelist"
   1.506 -    title="font_family_name_list"><strong>6.9</strong></a>
   1.507 +    title="font_family_name_list"><strong>6.9.1</strong></a>
   1.508  
   1.509     <li>font_feature_values_rule, <a href="#fontfeaturevaluesrule"
   1.510 -    title="font_feature_values_rule"><strong>6.9</strong></a>
   1.511 +    title="font_feature_values_rule"><strong>6.9.1</strong></a>
   1.512  
   1.513     <li>FONT_FEATURE_VALUES_SYM, <a href="#fontfeaturevaluessym"
   1.514 -    title="FONT_FEATURE_VALUES_SYM"><strong>6.9</strong></a>
   1.515 +    title="FONT_FEATURE_VALUES_SYM"><strong>6.9.1</strong></a>
   1.516  
   1.517     <li>full-width, <a href="#full-width"
   1.518      title=full-width><strong>6.10</strong></a>

mercurial