On Tuesday 2013-02-05 13:42 -0700, L. David Baron wrote: > Here are proposed edits for animatability lines for css3-fonts. I > also used "see individual properties" slightly more for the > font-variant shorthand, since it's a shorthand. > > It marks animatibility for font-stretch as an issue. I tend to > think it probably should be animatable (basically just like > font-weight is), but that requires a bit more text if others agree. > > (I didn't try running the preprocessor on this.)
Here's a revised version that specifies animation for font-stretch rather than noting it as an issue. -David -- 𝄞 L. David Baron http://dbaron.org/ 𝄂 𝄢 Mozilla http://www.mozilla.org/ 𝄂
Index: Fonts.src.html =================================================================== RCS file: /w3ccvs/WWW/Style/Group/css3-src/css3-fonts/Fonts.src.html,v retrieving revision 1.167 diff -p -u -1 -2 -r1.167 Fonts.src.html --- Fonts.src.html 5 Feb 2013 17:44:04 -0000 1.167 +++ Fonts.src.html 5 Feb 2013 20:49:14 -0000 @@ -319,24 +319,28 @@ other.</p> <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>This property specifies a prioritized list of font family names or generic family names. A font family defines a set of faces that vary in weight, width or slope. CSS uses the combination of a family name with other style attributes to select an individual face. Using this selection mechanism, rather than selecting a face via the style name as is often done in design applications, allows some degree of regularity in textual display when fallback occurs.</p> <p class="note">Designers should note that the CSS definition of font @@ -546,24 +550,28 @@ to render samples of computer code.</p> <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>see description</td> </tr> + <tr> + <td>Animatable:</td> + <td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-font-weight">font weight</a></td> + </tr> </tbody> </table> <p>The <a href="#font-weight-prop" class="noxref"><span class="property">'font-weight'</span></a> property specifies weight of glyphs in the font, their degree of blackness or stroke thickness.</p> <p>Values have the following meanings:</p> <dl> <dt>100 to 900</dt> <dd>These values form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. These roughly correspond to the commonly used weight names below:</dd> @@ -678,24 +686,28 @@ should use numerical values instead of r <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>as <a href="#font-stretch-animation">font stretch</a></td> + </tr> </tbody> </table> <p>The <a href="#font-stretch-prop" class="noxref"><span class="property">'font-stretch'</span></a> property selects a normal, condensed, or expanded face from a font family. Absolute keyword values have the following ordering, from narrowest to widest: </p> <ul> <li>Ultra Condensed</li> <li>Extra Condensed</li> @@ -711,24 +723,30 @@ have the following ordering, from narrow <p>The scale is relative, so a face with a font-stretch value higher in the list above should never appear wider. When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face. Conversely, expanded values map to a wider face, otherwise a narrower face. The figure below shows how the nine font-stretch property settings affect font selection for font family containing a variety of widths, grey indicates a width for which no face exists and a different width is substituted: </p> <div class="figure"><img alt="width mappings for a family with condensed, normal and expanded faces" src="universwidths.png" /><p class="caption">Width mappings for a font family with condensed, normal and expanded width faces</p></div> +<p id="font-stretch-animation">Animation of font stretch: Font stretch is +interpolated in discrete steps. The interpolation happens as though the +ordered values are equally spaced real numbers. The interpolation result +is rounded to the nearest value, with values exactly halfway between two +values rounded towards the later value in the list above.</p> + <!-- prop: font-style --> <h3 id="font-style-prop">Font style: the <a href="#propdef-font-style">font-style</a> property</h3> <table class="propdef"> <tbody> <tr> <td>Name:</td> <td><dfn id="propdef-font-style">font-style</dfn></td> </tr> <tr> <td>Value:</td> <td>normal | italic | oblique</td> @@ -748,24 +766,28 @@ face exists and a different width is sub <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>The <a href="#font-style-prop" class="noxref"><span class="property">'font-style'</span></a> property allows italic or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face. Oblique faces can be simulated by artificially sloping the glyphs of the regular face. Compare the artificially sloped renderings of Palatino 'a' and Baskerville 'N' in grey with the actual italic versions:</p> <div class="figure"><img alt="artificial sloping vs. real italics" src="realvsfakeitalics.png" /><p class="caption">Artificial sloping versus real italics</p></div> <p>A value of 'normal' selects a face that is classified as 'normal', @@ -806,24 +828,28 @@ careful about making character map assum <tr> <td>Percentages:</td> <td>refer to parent element's font size</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>absolute length</td> </tr> + <tr> + <td>Animatable:</td> + <td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-length">length</a></td> + </tr> </tbody> </table> <p>This property indicates the desired height of glyphs from the font. For scalable fonts, the font-size is a scale factor applied to the EM unit of the font. (Note that certain glyphs may bleed outside their EM box.) For non-scalable fonts, the font-size is converted into absolute units and matched against the declared font-size of the font, using the same absolute coordinate space for both of the matched values. Values have the following meanings:</p> <dl> @@ -978,24 +1004,28 @@ em { font-size: 1.5em } <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>as <a href="http://dev.w3.org/csswg/css3-transitions/#animtype-number">number</a></td> + </tr> </tbody> </table> <p>For any given font size, the apparent size and legibility of text varies across fonts. For scripts such as Latin or Cyrillic that distinguish 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 <span class="index-def" title="aspect value"><dfn>aspect value</dfn></span>. Precisely defined, it is equal to the x-height of a font divided by the font size.</p> @@ -1134,24 +1164,28 @@ Adjust the value until the boxes align.< <tr> <td>Percentages:</td> <td>see individual properties</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>see individual properties</td> </tr> + <tr> + <td>Animatable:</td> + <td>see individual properties</td> + </tr> </tbody> </table> <p>The <span class="property">'font'</span> property is, except as described below, a shorthand property for setting 'font-style', <span class="property">'font-variant'</span>, <span class="property">'font-weight'</span>, <span class="property">'font-stretch'</span>, <span class="property">'font-size'</span>, 'line-height', <span class="property">'font-family'</span> at the same place in the stylesheet. Values for the <span class="property">'font-variant'</span> property may also be included but only those supported in CSS 2.1, none @@ -1328,24 +1362,28 @@ this declaration: <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>This property controls whether user agents are allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces. If 'weight' is not specified, user agents must not synthesize bold faces and if 'style' is not specified user agents must not synthesize italic faces. A value of 'none' disallows all synthetic faces.</p> <div class="example"> <p>The style rule below disables the use of synthetically obliqued Arabic:</p> </p> @@ -2607,24 +2645,28 @@ language or simply use only the default <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>Kerning is the contextual adjustment of inter-glyph spacing. This property controls metric kerning, kerning that utilizes adjustment data contained in the font. The value 'normal' implies that kerning is applied while the value 'none' implies that kerning is not applied when rendering text. If the value is 'auto', a user agent is free to choose whether kerning is enabled or not by default and to vary that default based on the underlying text script.</p> <p>For fonts that do not include kerning data this property will have no @@ -2668,24 +2710,28 @@ kerning has been applied.</p> <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>Ligatures and contextual forms are ways of combining glyphs to produce more harmonized forms. A value of 'normal' implies that common default features are enabled, <a href="#font-feature-resolution">as described in detail in the next section</a>. For OpenType fonts, common ligatures and contextual forms are on by default, discretionary and historical ligatures are not. A value of 'none' implies that all types of ligatures and contextual forms covered by this property are explicitly disabled. In situations where ligatures are not considered necessary, this may improve the speed of text rendering.</p> <pre class="prod"><dfn><var><common-lig-values></var></dfn> = [ common-ligatures | no-common-ligatures ]</pre> @@ -2770,24 +2816,28 @@ not affected by the settings above, incl <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>This property is used to enable typographic subscript and superscript glyphs. These are alternate glyphs designed within the same em-box as default glyphs and are intended to be laid out on the same baseline as the default glyphs, with no resizing or repositioning of the baseline. They are explicitly designed to match the surrounding text and to be more readable without affecting the line height.</p> <div class="figure"><img alt="comparison between real subscript glyphs and synthesized ones" src="realsubscripts.png" /><p class="caption">Subscript glyphs (top) vs. typical synthesized subscripts (bottom)</p></div> @@ -2903,24 +2953,28 @@ defaults for subscripts. <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>Specifies control over capitalized forms.</p> <p>Individual values have the following meanings:</p> <dl> <dt><dfn>normal</dfn> <dd>None of the features listed below are enabled.</dd> <dt><dfn>small-caps</dfn> @@ -3035,24 +3089,28 @@ blockquote:first-line { font-variant: sm <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>Specifies control over numerical forms.</p> <pre class="prod"><dfn><var><numeric-figure-values></var></dfn> = [ lining-nums | oldstyle-nums ]</pre> <pre class="prod"><dfn><var><numeric-spacing-values></var></dfn> = [ proportional-nums | tabular-nums ]</pre> <pre class="prod"><dfn><var><numeric-fraction-values></var></dfn> = [ diagonal-fractions | stacked-fractions ]</pre> <p>Individual values have the following meanings:</p> @@ -3155,24 +3213,28 @@ for a few hours or overnight.</p> <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>For any given character, fonts can provide a variety of alternate glyphs in addition to the default glyph for that character. This property provides control over the selection of these alternate glyphs.</p> <p>In cases where multiple alternates are possible, authors define a <code><feature-value-name></code> using the <code>@font-feature-values</code> rule described below to indicate the specific alternate to be used. The nature of these alternates is font @@ -3509,24 +3571,28 @@ span.alt-U { <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>Allows control of glyph substitution and sizing in East Asian text.</p> <pre class="prod"><dfn><var><east-asian-variant-values></var></dfn> = [ jis78 | jis83 | jis90 | jis04 | simplified | traditional ]</pre> <pre class="prod"><dfn><var><east-asian-width-values></var></dfn> = [ full-width | proportional-width ]</pre> <p>Individual values have the following meanings:</p> @@ -3617,33 +3683,37 @@ span.alt-U { <td>normal</td> </tr> <tr> <td>Applies to:</td> <td>all elements</td> </tr> <tr> <td>Inherited:</td> <td>yes</td> </tr> <tr> <td>Percentages:</td> - <td>N/A</td> + <td>see individual properties</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> - <td>as specified</td> + <td>see individual properties</td> + </tr> + <tr> + <td>Animatable:</td> + <td>see individual properties</td> </tr> </tbody> </table> <p>The value 'normal' resets all other font feature properties to their inital value. The 'none' value sets 'font-variant-ligatures' to 'none' and resets all other font feature properties to their initial value. Like other shorthands, using 'font-variant' resets unspecified font-variant subproperties to their initial values. It does not reset the values of either 'font-language-override' or 'font-feature-settings'.</p> @@ -3673,24 +3743,28 @@ values. It does not reset the values of <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case. A value of 'normal' means that no change in glyph selection or positioning occurs due to this property. <p> <pre>/* enable small caps and use second swash alternate */ font-feature-settings: "smcp", "swsh" 2;</pre> @@ -3788,24 +3862,28 @@ body { font-feature-settings: "hwid"; /* <tr> <td>Percentages:</td> <td>N/A</td> </tr> <tr> <td>Media:</td> <td>visual</td> </tr> <tr> <td>Computed value:</td> <td>as specified</td> </tr> + <tr> + <td>Animatable:</td> + <td>no</td> + </tr> </tbody> </table> <p>The value of 'normal' implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering. The value of the <string> is a single three-letter OpenType <a href="http://www.microsoft.com/typography/otspec/languagetags.htm">language system tag</a>, defined in the layout tag registry of the OpenType specification.</p> <div class="example"> <p>The <a href="http://www.un.org/en/documents/udhr/index.shtml">Universal Declaration of Human Rights</a> has