9090
9191 < h1 id =top > CSS Speech Module</ h1 >
9292
93- < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 06 June 2011</ h2 >
93+ < h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft 07 June 2011</ h2 >
9494
9595 < dl >
9696 < dt > This version:
9797
9898 < dd >
99- <!--<a href="http://www.w3.org/TR/2011/WD-css3-speech-20110606 ">http://www.w3.org/TR/2011/ED-css3-speech-20110606 /</a>-->
99+ <!--<a href="http://www.w3.org/TR/2011/WD-css3-speech-20110607 ">http://www.w3.org/TR/2011/ED-css3-speech-20110607 /</a>-->
100100 < a
101101 href ="http://dev.w3.org/csswg/css3-speech "> http://dev.w3.org/csswg/css3-speech</ a >
102102
@@ -454,8 +454,7 @@ <h3 id=example><span class=secno>1.3. </span>CSS Speech Example</h3>
454454<p class="peter">
455455 <span class="special">Can you hear me ?</span>
456456 I am Peter.
457- </p>
458- </ pre >
457+ </p></ pre >
459458 </ div >
460459
461460 < h2 id =aural-model > < span class =secno > 2. </ span > The < dfn
@@ -1098,8 +1097,7 @@ <h3 id=pause-props-pause-before-after><span class=secno>5.1. </span>The
10981097
10991098 < div class =example >
11001099 < pre >
1101- p { pause: none } /* pause-before: none; pause-after: none */
1102- </ pre >
1100+ p { pause: none } /* pause-before: none; pause-after: none */</ pre >
11031101 </ div >
11041102
11051103 < h3 id =pause-props-pause > < span class =secno > 5.2. </ span > The ‘< a
@@ -1166,8 +1164,7 @@ <h3 id=pause-props-pause><span class=secno>5.2. </span>The ‘<a
11661164 < pre >
11671165h1 { pause: 20ms; } /* pause-before: 20ms; pause-after: 20ms */
11681166h2 { pause: 30ms 40ms; } /* pause-before: 30ms; pause-after: 40ms */
1169- h3 { pause-after: 10ms; } /* pause-before: < i > unspecified</ i > ; pause-after: 10ms */
1170- </ pre >
1167+ h3 { pause-after: 10ms; } /* pause-before: < i > unspecified</ i > ; pause-after: 10ms */</ pre >
11711168 </ div >
11721169
11731170 < h3 id =collapsing > < span class =secno > 5.3. </ span > Collapsing pauses</ h3 >
@@ -1608,8 +1605,7 @@ <h3 id=cue-props-cue-before-after><span class=secno>7.1. </span>The
16081605 cue-after: url(../clips-2/pop.au) 6dB;
16091606}
16101607
1611- div.caution { cue-before: url(./audio/caution.wav) +8dB; }
1612- </ pre >
1608+ div.caution { cue-before: url(./audio/caution.wav) +8dB; }</ pre >
16131609 </ div >
16141610
16151611 < h3 id =cue-props-cue > < span class =secno > 7.2. </ span > The ‘< a
@@ -1681,8 +1677,7 @@ <h3 id=cue-props-cue><span class=secno>7.2. </span>The ‘<a
16811677h1
16821678{
16831679 cue: url(pop.au);
1684- }
1685- </ pre >
1680+ }</ pre >
16861681 </ div >
16871682
16881683 < h2 id =voice-char-props > < span class =secno > 8. </ span > Voice characteristic
@@ -1702,9 +1697,9 @@ <h3 id=voice-props-voice-family><span class=secno>8.1. </span>The ‘<a
17021697 < tr >
17031698 < td > < em > Value:</ em >
17041699
1705- < td > [[[ <name> | [<age>? <gender>]] <non-negative
1706- number>?],]* [[ <name> | [<age>? <gender>]]
1707- <non-negative number>?] | preserve | inherit
1700+ < td > [[<name> | [<age>? <gender> <non-negative
1701+ number>?]] ,]* [<name> | [<age>? <gender>
1702+ <non-negative number>?]] | preserve | inherit
17081703
17091704 < tr >
17101705 < td > < em > Initial:</ em >
@@ -1756,11 +1751,51 @@ <h3 id=voice-props-voice-family><span class=secno>8.1. </span>The ‘<a
17561751
17571752 < dd >
17581753 < p > Values are specific voice instances (e.g., Mike, comedian, mary,
1759- carlos, "valley-girl"). For compatibility with SSML, voice names do not
1760- contain whitespace characters, and any whitespace characters before or
1761- after the voice name are ignored. Values can be quoted, and indeed must
1762- be quoted if any of the words that make up the name does not conform to
1763- the syntax rules for < a href ="#identifier-def "> identifiers</ a > .</ p >
1754+ carlos2, "valley girl"). Voice names must either be given quoted as < a
1755+ href ="#strings-def "> strings</ a > , or unquoted as a sequence of one or
1756+ more < a href ="#identifier-def "> identifiers</ a > .</ p >
1757+
1758+ < p class =note > Note that as a result, most punctuation characters, or
1759+ digits at the start of each token, must be escaped in unquoted voice
1760+ names. For example, the following declarations are invalid:</ p >
1761+
1762+ < div class =example >
1763+ < pre >
1764+ voice-family: john/doe; /* forward slash character should be escaped */
1765+ voice-family: john "doe"; /* identifier sequence cannot contain strings */
1766+ voice-family: john!; /* exclamation mark should be escaped */
1767+ voice-family: john@doe; /* "at" character should be escaped */
1768+ voice-family: #john; /* identifier cannot start with hash character */
1769+ voice-family: john 1st; /* identifier cannot start with digit */</ pre >
1770+ </ div >
1771+
1772+ < p > If a sequence of identifiers is given as a voice name, the computed
1773+ value is the name converted to a string by joining all the identifiers
1774+ in the sequence by single spaces.</ p >
1775+
1776+ < p > Voice names that happen to be the same as the gender keywords
1777+ (‘< code class =property > male</ code > ’, ‘< code
1778+ class =property > female</ code > ’ and ‘< code
1779+ class =property > neutral</ code > ’) or that happen to match the
1780+ keywords ‘< code class =property > inherit</ code > ’ or
1781+ ‘< code class =property > preserve</ code > ’ must be quoted to
1782+ disambiguate with these keywords. The keywords ‘< code
1783+ class =property > initial</ code > ’ and ‘< code
1784+ class =property > default</ code > ’ are reserved for future use and
1785+ must also be quoted when used as voice names.</ p >
1786+
1787+ < p class =note > Note that to avoid mistakes in escaping, it is recommended
1788+ to quote voice names that contain white space, digits, or punctuation
1789+ characters other than hyphens. For example:</ p >
1790+
1791+ < div class =example >
1792+ < pre >
1793+ voice-family: "john doe", "Henry the-8th";</ pre >
1794+ </ div >
1795+
1796+ < p class =note > Note that in < a href ="#SSML "
1797+ rel =biblioentry > [SSML]<!--{{!SSML}}--> </ a > , voice names are
1798+ space-separated and cannot contain whitespace characters.</ p >
17641799
17651800 < dt > < strong > <age></ strong >
17661801
@@ -1780,8 +1815,7 @@ <h3 id=voice-props-voice-family><span class=secno>8.1. </span>The ‘<a
17801815 < dt > < strong > <non-negative number></ strong >
17811816
17821817 < dd >
1783- < p > Indicates a preferred variant (e.g. "the second male child voice" or
1784- "the third voice named ‘< code class =property > Mike</ code > ’").
1818+ < p > Indicates a preferred variant (e.g. "the second male child voice").
17851819 Possible values are < a href ="#non-negative-number-def "> non-negative
17861820 numbers</ a > restricted to integers, and excluding zero (i.e. starting
17871821 from 1). The value "1" refers to the first of all matching voices.</ p >
@@ -1829,7 +1863,7 @@ <h4 class=no-toc id=voice-props-lang-handling><span class=secno>8.1.1.
18291863
18301864 < li > If several voices are available for the language of the selected
18311865 content, then the chosen voice is the one that most closely matches the
1832- specified gender, age, and preferred voice index . The actual definition
1866+ specified gender, age, and preferred voice variant . The actual definition
18331867 of "best match" is processor-dependent.
18341868
18351869 < li > If no voice is available for the language of the selected content, it
@@ -1870,8 +1904,7 @@ <h4 class=no-toc id=voice-props-lang-handling><span class=secno>8.1.1.
18701904 than that corresponding to the class "romeo"
18711905 (which is inherited from the "p" parent element):
18721906 <span style="voice-family: female;">Hello sir!</span>
1873- </p>
1874- </ pre >
1907+ </p></ pre >
18751908 </ div >
18761909
18771910 < h3 id =voice-props-voice-rate > < span class =secno > 8.2. </ span > The ‘< a
@@ -2085,8 +2118,7 @@ <h3 id=voice-props-voice-pitch><span class=secno>8.3. </span>The ‘<a
20852118h2 { voice-pitch: +30Hz relative; }
20862119h2 { voice-pitch: 30Hz relative; } /* identical to the line above */
20872120h3 { voice-pitch: relative -2st; } /* the swapped keyword placement is a legal syntax */
2088- h4 { voice-pitch: -2st; } /* Illegal syntax ! ("relative" keyword is missing) */
2089- </ pre >
2121+ h4 { voice-pitch: -2st; } /* Illegal syntax ! ("relative" keyword is missing) */</ pre >
20902122 </ div >
20912123
20922124 < h3 id =voice-props-voice-pitch-range > < span class =secno > 8.4. </ span > The
@@ -2314,8 +2346,7 @@ <h3 id=voice-props-voice-pitch-range><span class=secno>8.4. </span>The
23142346
23152347<!-- The lines below demonstrate increasing levels of emphasis: -->
23162348<p>This is a <span class="normal-emphasis">big</span> car!</p>
2317- <p>This is a <span class="huge-emphasis">big</span> car!!!</p>
2318- </ pre >
2349+ <p>This is a <span class="huge-emphasis">big</span> car!!!</p></ pre >
23192350 </ div >
23202351
23212352 < h2 id =duration-props > < span class =secno > 9. </ span > Voice duration property</ h2 >
@@ -2431,7 +2462,9 @@ <h2 id=lists><span class=secno>10. </span>List items and counters styles</h2>
24312462 < p > For these list item styles, the user-agent defines (possibly based on
24322463 user preferences) what equivalent phrase is spoken or what audio cue is
24332464 played. List items with graphical bullets are therefore announced
2434- appropriately in an implementation-dependent manner.</ p >
2465+ appropriately in an implementation-dependent manner. For hierarchical
2466+ lists structures, it is recommended that user-agents announce the
2467+ nesting depth of list items.</ p >
24352468
24362469 < dt > < strong > decimal, decimal-leading-zero, lower-roman, upper-roman,
24372470 georgian, armenian</ strong >
@@ -2545,8 +2578,7 @@ <h2 id=content><span class=secno>12. </span>Inserted and replaced content</h2>
25452578abbr { content: attr(title); }
25462579...
25472580
2548- <abbr title="World Wide Web Consortium">W3C</abbr>
2549- </ pre >
2581+ <abbr title="World Wide Web Consortium">W3C</abbr></ pre >
25502582 </ div >
25512583
25522584 < p > In a similar way, text strings in a document can be replaced by a
@@ -2563,8 +2595,7 @@ <h2 id=content><span class=secno>12. </span>Inserted and replaced content</h2>
25632595
25642596<div class="hamlet">
25652597To be, or not to be: that is the question:
2566- </div>
2567- </ pre >
2598+ </div></ pre >
25682599 </ div >
25692600
25702601 < p > Furthermore, authors (or users via a user stylesheet) may add some
@@ -2586,8 +2617,7 @@ <h2 id=content><span class=secno>12. </span>Inserted and replaced content</h2>
25862617 < pre >
25872618ul::before { content: "Start list: "; }
25882619ul::after { content: "List end. "; }
2589- li::before { content: "List item: "; }
2590- </ pre >
2620+ li::before { content: "List item: "; }</ pre >
25912621 </ div >
25922622
25932623 < p > Detailed information can be found in the CSS3 Generated and Replaced
@@ -2823,9 +2853,9 @@ <h2 class=no-num id=property-index>Appendix A — Property index</h2>
28232853 < tr >
28242854 < td > < a class =property href ="#voice-family "> voice-family</ a >
28252855
2826- < td > [[[ <name> | [<age>? <gender>]] <non-negative
2827- number>?],]* [[ <name> | [<age>? <gender>]]
2828- <non-negative number>?] | preserve | inherit
2856+ < td > [[<name> | [<age>? <gender> <non-negative
2857+ number>?]] ,]* [<name> | [<age>? <gender>
2858+ <non-negative number>?]] | preserve | inherit
28292859
28302860 < td > implementation-dependent
28312861
@@ -3001,6 +3031,11 @@ <h2 class=no-num id=property-index>Appendix A — Property index</h2>
30013031 href ="http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier ">
30023032 identifier </ a > </ dfn > < a href ="#CSS21 "
30033033 rel =biblioentry > [CSS21]<!--{{!CSS21}}--> </ a >
3034+
3035+ < li > < dfn id =strings-def > < a
3036+ href ="http://www.w3.org/TR/CSS21/syndata.html#strings "> strings
3037+ </ a > </ dfn > < a href ="#CSS21 "
3038+ rel =biblioentry > [CSS21]<!--{{!CSS21}}--> </ a >
30043039 </ ul >
30053040
30063041 < h2 class =no-num id =index > Appendix B — Index</ h2 >
@@ -3083,6 +3118,8 @@ <h2 class=no-num id=index>Appendix B — Index</h2>
30833118 < li > speak-as, < a href ="#speak-as " title =speak-as > < strong > 4.2.</ strong > </ a >
30843119
30853120
3121+ < li > strings, < a href ="#strings-def " title =strings > < strong > #</ strong > </ a >
3122+
30863123 < li > style sheet, < a href ="#style-sheet " title ="style
30873124 sheet "> < strong > #</ strong > </ a >
30883125 < ul >
@@ -3375,6 +3412,10 @@ <h2 class=no-num id=changes>Appendix D — Changes from previous draft</h2>
33753412 class =property > voice-family</ code > </ a > ’ selection algorithm to
33763413 cater for language changes.
33773414
3415+ < li > Enabled voice-family names to contain spaces, matching ‘< code
3416+ class =property > font-family</ code > ’ syntax which is based on quoted
3417+ strings and concatenated identifiers.
3418+
33783419 < li > Added a new section to define the relationship of this specification
33793420 with CSS2.1.
33803421
0 commit comments