- From: Tab Atkins Jr.. via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 03 Feb 2011 00:13:50 +0000
- To: public-css-commits@w3.org
Update of /sources/public/csswg/css3-lists In directory hutz:/tmp/cvs-serv9528 Modified Files: Overview.src.html Log Message: Tiny bit of syntax cleanup in the first part. Rewrote list-style-type, added the exception counter styles. Index: Overview.src.html =================================================================== RCS file: /sources/public/csswg/css3-lists/Overview.src.html,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- Overview.src.html 31 Jan 2011 21:57:33 -0000 1.17 +++ Overview.src.html 3 Feb 2011 00:13:48 -0000 1.18 @@ -130,25 +130,22 @@ <h2>Declaring a List Item</h2> -<p>To declare a list item, the <span class="property">'display'</span> -property should be set to 'list-item'. This, in addition to generating -a <span class="css">::marker</span> pseudo-element and enabling the +<p>To declare a list item, the 'display' +property should be set to ''list-item''. This, in addition to generating +a ''::marker'' pseudo-element and enabling the properties described below for that element, causes that element to -increment the list item counter <span class="css">list-item</span>. +increment the list item counter ''list-item''. (This does not affect the specified or computed values of the counter properties.)</p> -<p>The <span class="css">list-item</span> counter is a real counter, -and can be directly affected using the <span -class="property">'counter-increment'</span> and <span -class="property">'counter-reset'</span> properties. It can also be -used in the counter() and counters() function forms.</p> +<p>The ''list-item'' counter is a real counter, +and can be directly affected using the 'counter-increment' and ''counter-reset' +properties. It can also be used in the ''counter()'' and ''counters()'' functions.</p> -<p class="issue">The CSS3 box module may define other <span -class="property">'display'</span> values which generate a list -marker. These should also affect the 'list-item' counter.</p> +<p class="issue">The CSS3 box module may define other 'display' values which generate a list +marker. These should also affect the ''list-item'' counter.</p> -<p>Note that this new model makes the <span class="css">marker</span> +<p>Note that this new model makes the ''marker'' display type redundant. That display type is therefore obsolete in the CSS3 Lists model.</p> @@ -162,10 +159,7 @@ <td><dfn>list-style-type</dfn> <tr> <th>Value: - <td><b><glyph></b> | <b><algorithmic></b> | - <b><numeric></b> | <b><alphabetic></b> | - <b><symbolic></b> | <b><non-repeating></b> | - normal | none + <td><b><string></b> | <b><counter-style></b> | none <tr> <th>Initial: <td>disc @@ -183,135 +177,476 @@ <td>specified value </table> -<p>This property specifies the default appearance of the list item +<p>This property specifies the default contents of the list item marker if 'list-style-image' has the value 'none' or if the image pointed to by the URI cannot be -displayed. The value 'none' specifies no marker, otherwise there are -six types of marker: glyphs, algorithmic systems, numeric systems, -alphabetic systems, symbolic systems, and non-repeating systems. </p> +displayed. The value 'none' specifies no marker, and a string value uses the +given string; otherwise, the value specifies a <b><counter-style></b> which +is used to format the value of the ''list-item'' counter.</p> -<p>Glyphs are single characters, whereas algorithmic, numeric, -alphabetic, symbolic and non-repeating systems are designed so that -each item in that style gets a deterministicly different marker. This -makes lists easier to navigate.</p> +<dl> + <dt><dfn><string></dfn></dt> + <dd>The ''::marker'' pseudoelement must use the provided string as its default + contents.</dd> -<p>Most numbering systems have a suffix defined. It is used when -generating the default content for the marker.</p> + <dt><dfn>none</dfn></dt> + <dd>The ''::marker'' pseudoelement must have no default contents. This will + suppress the creation of a marker unless the ''::marker'' has its contents + specified directly through the 'content' property.</dd> -<dl> - <dt><dfn>normal</dfn></dt> - <dd>Causes the list-style-type of the counter to be used, as declared by the - appropriate ''@counter'' rule. In the context of an ''@counter'' rule, - equivalent to <b>decimal</b>.</dd> + <dt><counter-style></dt> + <dd> + <p>The ''::marker'' pseudoelement's default contents must be the value of + the ''list-item'' counter, formatted according to the given counter style. + Algorithms for formatting a value according to a counter style are given + later in this spec.</p> + <p>The <b>UA style sheet</b> given later in this spec provides a large list + of counter style definitions, and authors or users may define their own + counter styles as well.</p> + </dd> </dl> -<p>Other values are defined in the following sections. User agents should follow these algorithms -unless a more normative source is found.</p> - <!-- ====================================================================== --> -<h3>Glyphs</h3> +<h2 id=predefined-counters>Predefined Counter Styles</h2> -<p>All markers with the same glyph style should use the same glyph. To -obtain other glyphs, authors should use the <span -class="property">'content'</span> property of the <span -class="css">::marker</span> pseudo-element.</p> +<p>While authors may define their own counter styles using the ''@counter-style'' +rule defined in this spec, there are many counter styles that CSS already defined +in previous levels, and many more that can be usefully predefined. Appendix A +contains a required UA stylesheet which defines a large number of counter styles +using the ''@counter-style'' rule. A few styles require special handling beyond +what can be expressed in a stylesheet, though. Those counter styles are described +in this section. - <!-- Their exact rendering depends on the user agent. --> -<dl> - <dt><dfn><glyph></dfn></dt> - <dd>box | check | circle | diamond | disc | hyphen | square</dd> - <!-- these definitions are stupid. circle and square should both have the same fill type, disc and - box should have the opposite fill type. I hate having to be backwards compatible. --> - <dt><dfn>box</dfn></dt> - <dd>A hollow square. (like □ U+25A1 WHITE SQUARE, ◻ U+25FB WHITE - MEDIUM SQUARE, or ◽ U+25FD WHITE MEDIUM SMALL SQUARE)</dd> <!-- in MacIE (?) --> +<h3 id=decimal-counters>The ''decimal'' counter style</h3> - <dt><dfn>check</dfn></dt> - <dd>A check mark. On interactive media, it is suggested that the same glyph which is used on the - platform to render a checked menu item be used for 'check'. (like ✓ U+2713 CHECK MARK)</dd> - <!-- UI module --> +<p>The ''decimal'' counter style is the default fallback counter style for the +''@counter-style'' rule, and is also used in extraordinary situations like fallback +loop. As such, it has to be well-defined at all times, so that a counter can +always be formatted regardless of the validity of the defined counter styles.</p> - <dt><dfn>circle</dfn></dt> - <dd>A hollow circle. (like ◦ U+25E6 WHITE BULLET)</dd> <!-- in Mozilla, WinIE, Opera, HTML4 --> +<p>UAs must not allow the definition of the ''decimal'' counter style given in +Appendix A to be overridden.</p> - <dt><dfn>diamond</dfn></dt> - <dd>A filled diamond. On interactive media, it is suggested that the same glyph which is used on - the platform next to a selected menu item be used for 'diamond'. On some platforms, this is similar - to 'disc'. (like ◆ U+25C6 BLACK DIAMOND or ♦ U+2666 BLACK DIAMOND SUIT)</dd> <!-- UI - module --> - <dt><dfn>disc</dfn></dt> - <dd>A filled circle. (like • U+2022 BULLET)</dd> <!-- in Mozilla, WinIE, Opera, HTML4 --> - <dt><dfn>hyphen</dfn></dt> - <dd>A hyphen bullet. (like ⁃ U+2043 HYPHEN BULLET or – U+2013 EN DASH)</dd> +<h3 id=glyph-counters>Glyphs</h3> - <dt><dfn>square</dfn></dt> - <dd>A filled square. (like ■ U+25A0 BLACK SQUARE, ◼ U+25FC BLACK - MEDIUM SQUARE, or ◾ U+25FE BLACK MEDIUM SMALL SQUARE)</dd> - <!-- in Mozilla, WinIE. A hollow square in Opera, HTML4. --> +<p>CSS 2.1 defined three single-glyph counter styles (''circle'', ''disc'', and +''square''), but didn't define precisely how to render them, instead opting to +describe generally how they should look and leaving it up to the UA to decide how +to render the markers.</p> + +<p>Appendix A gives normative definitions for these styles, but UAs may instead +default to rendering these styles using a browser-generated image matching the +description below. If the styles are overridden, the new style must be honored; +this relaxation of the rendering requirements applies only to the default value +of each counter style.</p> + +<p>If the UA chooses to use an image for the default rendering of these counter +styles, the image must be scalable and designed to attractively fill a box 1em +wide and 1em tall.</p> + +<dl> + <dt>circle</dt> + <dd>A hollow circle, similar to ◦ U+25E6 WHITE BULLET.</dd> + + <dt>disc</dt> + <dd>A filled circle, similar to • U+2022 BULLET.</dd> + + <dt>square</dt> + <dd>A filled square, similar to ■ U+25A0 BLACK SQUARE.</dd> </dl> -<div class="issue"> - <p>The definitions above may be removed and made UA-dependent if it is found that - there are discrepancies in the existing implementations.</p> - <p>We could add more values, there are certainly plenty to choose from - in UNICODE. How about a star? Or a triangle? Note that the stylesheet - of this document uses triangular bullets for notes, and yet that can - only be described using a pseudo-element, content property, and - unicode escape. Is that too much effort for a simple triangle?</p> - <p>A future level of CSS may provide a way to specify different bullet types at - arbitrary nesting levels. The Working Group considered adding an <span class="css">auto</span> value - with the following definition, but decided not to include it in this release: "The <dfn>auto</dfn> - value is intended to cause the UA to use a list numbering style different from that of the nearest - ancestor <span class="css">list-item</span> element. The exact rendering depends on the user - agent."</p> -</div> +<h3 id=complex-counters>Complex counter styles</h3> -<p>Glyphs have no suffix.</p> +<p>Some real-life counter styles are unfortunately too complex to be accurately +described using the ''@counter-style'' rule. The following styles must be supported +as default counter styles as if they were defined by theoretical +''@counter-style'' rules placed at the end of the UA stylesheet defined in Appendix +A, using the given name as the counter style name and the given algorithm to format +counter values. They must be overrideable like any other predefined counter style.</p> +<dl> + <dt>hebrew</dt> + <dd> + <p>This is a simple additive system defined for the range 1 to 999999. + The digits are split into two groups of three. Within each group, + appropriate digits are picked from the following list (at most one per + column) and written in descending order by value (hundreds first). If + there is more than one group, the first group is followed by U+05F3 HEBREW + PUNCTUATION GERESH.</p> -<h3>Unsupported list styles</h3> + <table> + <caption>Hebrew numbering system</caption> + <thead> + <tr> + <th colspan="3">Hundreds + <th colspan="3">Tens + <th colspan="3">Units + <tr> + <th>Values + <th colspan="2">Codepoints + <th>Values + <th colspan="2">Codepoints + <th>Values + <th colspan="2">Codepoints + <tbody> + <tr> + <td>100 + <td>ק + <td>U+05E7 + <td>10 + <td>י + <td>U+05D9 + <td>1 + <td>א + <td>U+05D0 + <tr> + <td>200 + <td>ר + <td>U+05E8 + <td>20 + <td>כ + <td>U+05DB + <td>2 + <td>ב + <td>U+05D1 + <tr> + <td>300 + <td>ש + <td>U+05E9 + <td>30 + <td>ל + <td>U+05DC + <td>3 + <td>ג + <td>U+05D2 + <tr> + <td>400 + <td>ת + <td>U+05EA + <td>40 + <td>מ + <td>U+05DE + <td>4 + <td>ד + <td>U+05D3 + <tr> + <td>500 + <td>תק + <td>U+05EA U+05E7 + <td>50 + <td>נ + <td>U+05E0 + <td>5 + <td>ה + <td>U+05D4 + <tr> + <td>600 + <td>תר + <td>U+05EA U+05E8 + <td>60 + <td>ס + <td>U+05E1 + <td>6 + <td>ו + <td>U+05D5 + <tr> + <td>700 + <td>תש + <td>U+05EA U+05E9 + <td>70 + <td>ע + <td>U+05E2 + <td>7 + <td>ז + <td>U+05D6 + <tr> + <td>800 + <td>תת + <td>U+05EA U+05EA + <td>80 + <td>פ + <td>U+05E4 + <td>8 + <td>ח + <td>U+05D7 + <tr> + <td>900 + <td>תתק + <td>U+05EA U+05EA U+05E7 + <td>90 + <td>צ + <td>U+05E6 + <td>9 + <td>ט + <td>U+05D8 + </table> -<p>A user agent that does not recognize a numbering system should ignore the declaration in which -the numbering system is used.</p> + <p>If the last two digits of a group (when represented in decimal) are 15 + or 16, they should be expressed not as יה U+05D9 U+05D4 + (10+5) and יו U+05D9 U+05D5 (10+6), but as + טו U+05D8 U+05D5 (9+6) and טז U+05D8 U+05D6 + (9+7). This is done to avoid a close resemblance to the Tetragrammaton + (four-letter name of God) יהוה U+05D9 U+05D4 + U+05D5 U+05D4. Although this convention is originally derived from + religious practice, it is universally used even in completely secular + contexts.</p> -<div class="html-example"><p>For example, the following HTML document:</p> -<pre> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> -<HTML> - <HEAD> - <TITLE>Lowercase latin numbering</TITLE> - <STYLE type="text/css"> - OL { list-style-type: lower-roman; list-style-type: ethiopic-halehame-om-et; } - </STYLE> - </HEAD> - <BODY> - <OL> - <LI> This is the first item. - <LI> This is the second item. - <LI> This is the third item. - </OL> - </BODY> -</HTML> -</pre> + <p>The numerical value of each letter is fixed and not determined by + position, so reordering a number group will not change its value. This + may be done when a number spells out a word with negative connotations. + For instance, 298, רצח U+05E8 U+05E6 U+05D7 + (200+90+8), is the Hebrew for "murder", so it is sometimes written as + רחצ U+05E8 U+05D7 U+05E6 (200+8+90). Words are + sometimes similarly rearranged when a reordered form has especially + positive connotations, for example 18, יח U+05D9 U+05D7 + (10+8) is often written as חי U+05D7 U+05D9 (8+10), the + Hebrew for "alive". Unlike the exception for 15 and 16, using the + regular form in these cases is not considered an error.</p> -<p>might produce something like this in a user agent that does not support the -ethiopic-halehame-om-et list style type:</p> + <p>The suffix for the hebrew numbering system is a dot (. U+002E + FULL STOP).</p> -<pre> - i. This is the first item. - ii. This is the second item. - iii. This is the third item. -</pre> + <p>Numbers outside the range of the Hebrew system are rendered using the + ''decimal'' counter style.</p> -<p>Note that the list marker alignment (here, right justified) depends on the user agent style -sheet's rules for the <span class="css">::marker</span> pseudo-element.</p> </div> + <div class="example"> + <p>This table shows the decimal number in the first cell, and the + equivalent hebrew number in the second.</p> + + <table class="hebrew-example"> + <thead> + <tr> + <th>Decimal + <th>Hebrew + <tbody> + <tr> + <td>-3 + <td>-3 + <tr> + <td>-2 + <td>-2 + <tr> + <td>-1 + <td>-1 + <tr> + <td>0 + <td>0 + <tr> + <td>1 + <td>א + <tr> + <td>2 + <td>ב + <tr> + <td>3 + <td>ג + <tr> + <td>4 + <td>ד + <tr> + <td>5 + <td>ה + <tbody> + <tr> + <td>97 + <td>צז + <tr> + <td>98 + <td>צח + <tr> + <td>99 + <td>צט + <tr> + <td>100 + <td>ק + <tr> + <td>101 + <td>קא + <tr> + <td>944 + <td>תתקמד + <tr> + <td>945 + <td>תתקמה + <tr> + <td>946 + <td>תתקמו + <tr> + <td>999 + <td>תתקצט + <tbody> + <tr> + <td>1000 + <td>א׳ + <tr> + <td>1001 + <td>א׳א + <tr> + <td>1998 + <td>א׳תתקצח + <tr> + <td>1999 + <td>א׳תתקצט + <tr> + <td>2000 + <td>ב׳ + <tr> + <td>2001 + <td>ב׳א + <tr> + <td>2003 + <td>ב׳ג + <tr> + <td>2748 + <td>ב׳תשמח + <tr> + <td>2750 + <td>ב׳תשנ + </table> + + <p>This example (like all other examples) is non-normative. If one of + the numbers above is inconsistent with the rules described above, then + the example should be disregarded.</p> + </div> + </dd> + + <dt>ethiopic-numeric</dt> + <dd> + <p>The Ethiopian numbering system is defined for all positive non-zero numbers. + The following algorithm converts decimal digits to ethiopic numbers.</p> + + <ol> + <li>Split the number into groups of two digits, starting with the least + significant decimal digit.</li> + + <li>Index each group sequentially, starting from the least significant + as group number zero.</li> + + <li>If the group has an odd index (as given in the previous step) and + has the value 1, or if the group is the most significant one and has + the value 1, or if the group has the value zero, then remove the digit + (but leave the group, so it still has a separator appended below).</li> + + <li>For each remaining digit, substitute the relevant ethiopic character + from the list below. + <table> + <caption>Ethiopic numbering system</caption> + <thead> + <tr> + <th colspan="3">Tens + <th colspan="3">Units + <tr> + <th>Values + <th colspan="2">Codepoints + <th>Values + <th colspan="2">Codepoints + <tbody> + <tr> + <td>10 + <td>፲ + <td>U+1372 + <td>1 + <td>፩ + <td>U+1369 + <tr> + <td>20 + <td>፳ + <td>U+1373 + <td>2 + <td>፪ + <td>U+136A + <tr> + <td>30 + <td>፴ + <td>U+1374 + <td>3 + <td>፫ + <td>U+136B + <tr> + <td>40 + <td>፵ + <td>U+1375 + <td>4 + <td>፬ + <td>U+136C + <tr> + <td>50 + <td>፶ + <td>U+1376 + <td>5 + <td>፭ + <td>U+136D + <tr> + <td>60 + <td>፷ + <td>U+1377 + <td>6 + <td>፮ + <td>U+136E + <tr> + <td>70 + <td>፸ + <td>U+1378 + <td>7 + <td>፯ + <td>U+136F + <tr> + <td>80 + <td>፹ + <td>U+1379 + <td>8 + <td>፰ + <td>U+1370 + <tr> + <td>90 + <td>፺ + <td>U+137A + <td>9 + <td>፱ + <td>U+1371 + </table> + </li> + + <li>For each group with an odd index (as given in the second step), + append ፻ U+137B.</li> + + <li>For each group with an even index (as given in the second step), + except the group with number 0, append ፼ U+137C.</li> + + <li>Concatenate the groups into one string.</li> + </ol> + + <p>This system is defined for all numbers greater than zero. For zero and + negative numbers, the decimal system is used instead.</p> + + <p>The suffix for the ethiopic-numeric numbering systems is a dot + (. U+002E FULL STOP). <span class="issue">Is there a better suffix + to use? <strong>The alphabetic ethiopic systems use a different + suffix.</strong></span></p> + + <div class="example"> + <p>The decimal number 100, in ethiopic, is ፻ U+137B <!-- odd --></p> + + <p> The decimal number 78010092, in ethiopic, is + ፸፰፻፩፼፻፺፪ U+1378 + U+1370 U+137B <!-- 70 8 odd --> U+1369 U+137C <!-- 1 even --> U+137B + <!-- odd --> U+137A U+136A. <!-- 90 2 --></p> + + <p> The decimal number 780000001092, in ethiopic, is + ፸፰፻፩፼፻፼፻፺፪ + U+1378 U+1370 U+137B <!-- 70 8 odd --> U+1369 U+137C <!-- 1 even --> + U+137B <!-- odd --> U+137C <!-- even --> U+137B <!-- odd --> U+137A + U+136A. <!-- 90 2 --></p> + </div> + </dd> +</dl> <!-- ====================================================================== -->
Received on Thursday, 3 February 2011 00:13:52 UTC