@@ -125,6 +125,10 @@ <h2 id='counter-styles'>
125125 < li >
126126 a < dfn title ='counter-range '> range</ dfn > ,
127127 which limits the values that a counter style handles
128+
129+ < li >
130+ a < dfn title ='counter-speak-as '> spoken form</ dfn > ,
131+ which describes how to read out the counter style in a speech synthesizer
128132
129133 < li >
130134 and a < dfn title ='counter-fallback '> fallback style</ dfn > ,
@@ -133,7 +137,7 @@ <h2 id='counter-styles'>
133137 </ ul >
134138
135139 < p >
136- When asked to < dfn title ='generate-a- counter '> generate a counter representation</ dfn >
140+ When asked to < dfn title ='generate a counter|generate a counter representation '> generate a counter representation</ dfn >
137141 using a particular counter style for a particular counter value,
138142 follow these steps:
139143
@@ -919,6 +923,81 @@ <h3 id='counter-style-symbols'>
919923 The < a href ="http://dev.w3.org/csswg/css3-images/#default-object-size "> default object size</ a > of an image < i > counter symbol</ i > is a 1em by 1em square.
920924
921925
926+ < h3 id ='counter-style-speak-as '>
927+ Speech Synthesis: the 'speak-as' descriptor</ h3 >
928+
929+ < table class ='descdef '>
930+ < tr >
931+ < th > Name:
932+ < td > < dfn id ='descdef-speak-as '> speak-as</ dfn >
933+ < tr >
934+ < th > Value:
935+ < td > auto | numeric | alphabetic | bullet | <counter-style-name>
936+ < tr >
937+ < th > Initial:
938+ < td > auto
939+ </ table >
940+
941+ < p >
942+ A counter style can be constructed with a meaning that is obvious visually,
943+ but impossible to meaningfully represent via a speech synthesizer,
944+ or possible but nonsensical when naively read out.
945+ The 'speak-as' descriptor describes how to synthesize the spoken form of a counter formatted with the given counter style.
946+ Values have the following meanings:
947+
948+ < dl >
949+ < dt > < dfn id ='speak-as-auto '> ''auto''</ dfn >
950+ < dd >
951+ If the counter style's 'system' is ''alphabetic'', this value computes to ''alphabetic''.
952+ If the 'system' is ''cyclic'', this value computes to ''bullet''.
953+ Otherwise, this value computes to ''numeric''.
954+
955+ < dt > < dfn id ='speak-as-numeric '> ''numeric''</ dfn >
956+ < dd >
957+ The counter's value is spoken as a number in the document language.
958+
959+ < dt > < dfn id ='speak-as-alphabetic '> ''alphabetic''</ dfn >
960+ < dd >
961+ < i > Generate a counter representation</ i > for the value as normal,
962+ then spell it out letter-by-letter in the document language.
963+ If the UA does not know how to pronounce the symbols,
964+ it may handle it as ''numeric''.
965+
966+ < p >
967+ For example, ''lower-greek'' in English would be read out as "alpha", "beta", "gamma", etc.
968+ Conversely, ''upper-latin'' in French would be read out as (in phonetic notation) /a/, /be/, /se/, etc.
969+
970+ < dt > < dfn id ='speak-as-symbolic '> ''bullet''</ dfn >
971+ < dd >
972+ The UA speaks a UA-defined phrase or audio cue that represents a list item being read out.
973+
974+ < dt > < dfn id ='speak-as-counter-style '> < var > <counter-style-name> </ var > </ dfn >
975+ < dd >
976+ The counter's value is instead spoken out in the specific style.
977+ If the specified style does not exist,
978+ this value is treated as ''auto''.
979+ </ dl >
980+
981+ < div class ='example '>
982+ < p >
983+ The ability to defer pronunciation to another counter style can help when the symbols being used aren't actually letters.
984+ For example, here's a possible definition of a ''circled-lower-latin'' counter-style, using some special unicode characters:
985+
986+ < pre class ='stylesheet '>
987+ @counter-style < dfn > circled-lower-latin</ dfn > {
988+ system: alphabetic;
989+ speak-as: lower-latin;
990+ symbols: ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ;
991+ suffix: '';
992+ }</ pre >
993+
994+ < p >
995+ Setting its 'system' to ''alphabetic'' would normally make the UA try to read out the names of the characters,
996+ but in this case that might be something like "Circled Letter A",
997+ which is unlikely to make sense.
998+ Instead, explicitly setting 'speak-as' to ''lower-latin'' ensures that they get read out as their corresponding latin letters, as intended.
999+ </ div >
1000+
9221001<!-- ====================================================================== -->
9231002
9241003< h2 id ='symbols-function '>
@@ -1296,6 +1375,9 @@ <h2 id='complex-predefined-counters'>
12961375 For example, an author can reference one of these styles in an ''override'' system,
12971376 reusing the algorithm but swapping out some of the other descriptors.
12981377
1378+ < p >
1379+ All of the counter styles defined in this section have a < i title ='counter-speak-as '> spoken form</ i > of ''numeric''.
1380+
12991381
13001382< h3 id ='complex-cjk '>
13011383Longhand East Asian Counter Styles: ''japanese-informal'', ''japanese-formal'', ''korean-hangul-formal'', ''korean-hanja-informal'', ''korean-hanja-formal'', ''simp-chinese-informal'', ''simp-chinese-formal'', ''trad-chinese-informal'', ''trad-chinese-formal''</ h3 >
0 commit comments