CSS3 Module: Lists Comments

Public Note 17 October 2002

Authors (alphabetically):
Musheg Arakelyan (Croll), Armenian systems
Alexander Savenkov (Croll), Cyrillic systems
Daniel Yacob (Ge’ez Frontier Foundation), Ethiopic and Coptic systems, initial draft

Abstract

The CSS1 [CSS1] specification was the first one to offer a replacement for the HTML’s [HTML32] type attribute on the ol element (see section on ordered lists) by introducing the list-style-type property. The CSS2 [CSS2] specification expanded the list of the possible list-style-type values by adding a number of property values such as the values for Hebrew, Armenian, Japanese, and other numbering systems. At the same time both of the above-mentioned recommendations provided neither an exact calculation mechanism for each numbering system, nor mechanisms for resolving the wrapping of some systems at the end of the alphabet. The Working Draft of the CSS3 Module: Lists [CSS3-Lists] offers a broader list of list-style-type values but the issues raised by the previous Recommendations remain open. This note describes some possible additions and corrections to the CSS3 Module: Lists [CSS3-Lists] which are likely to help UA implementers and document authors to more precisely control the presentation of lists on the Web.

Table of Contents

0. Introduction

This note examines some of the issues of the CSS3 Module: Lists [CSS3-Lists] which remain (at least until now) unsolved. The issues and the proposals addressed by this note are as follows:

  1. The lack of any Cyrillic-based numbering systems in the current draft.
  2. The lack of the mechanism for resolving of the list wrapping at the end of the alphabet.
  3. The lack of the mechanism for calculating specific numbering systems, both for those included in the draft and those not included.
  4. The incorrect definition of the list-style-type armenian value and the corresponding correction.
  5. Limited profile considerations connected with Cyrillic, Ethiopic, Coptic, and Armenian lists.
  6. Other issues.

1. Inclusion of Additional Systems of Writing

The authors recommend the addition of list style types to support the literal traditions of languages employing the Cyrillic, Ethiopic, Coptic, and Armenian scripts. As numerous languages utilize these scripts as systems of writing it has become evident to the authors that list style type identifiers must be localized at the level of language and not script. This is in keeping with the reality of script as a mechanism for recording spoken language and that script usage is adapted and developed as per the needs of the language recorded.

1.1. The Unexhaustive List of Cyrillic Based Alphabets

The overwhelming majority of the existing Cyrillic alphabets originates from the Russian type alphabet introduced by Peter the First in 1708 (using Old Slavonic as a foundation). The remaining Cyrillic alphabets originate from the Old Slavonic alphabet itself implemented by St. Cyrill and St. Methodius which in its turn originates from Greek vestry books and some other alphabets. The alphabets of the nations located on the territories of the former USSR are mainly based on the modern Russian alphabet.

This is the unexhaustive list of Cyrillic alphabets though the authors consider it to be quite comprehensive. There probably are other alphabets especially on the territory of the former USSR but their inclusion into this table at this point seems to be inappropriate as they’ve been used by an extremely small number of speakers.

Note on this table: the first column gives the names of the languages (either the actual translated name or the guess of the author — for rare languages), the second lists the ISO 639 codes (if exists), the third gathers the notes on previously used scripts (this is to know if there is a secondary alphabetic need), the fourth indicates whether the alphabet of the corresponding language is based on the modern Russian alphabet (with the necessary modifications) or not, the fifth reports the number of native speakers (mostly approximate numbers but from normative sources, this column could be used to select the alphabets for the inclusion), the sixth specifies the probability of reverting to the previously used script (this is the author’s guess based on the media reports and might not reflect the immediate situation) and the last column contains the related notes.

All the following languages use Cyrillic script unless explicitly marked as using another.

Languages using Cyrillic script
Language ISO639 Previously used scripts Russian based (yes/no) Native speakers Probability of reverting to previous script Notes
Abazin none unknown Y 30,000 N/A
Abkhazian none unknown Y 115,000 N/A
Adyghe none unknown Y 120,000 N/A Latin script already?
Agul none N/A Y 15,000 N/A Russian based alphabet is being implemented
Altaian none unknown Y 59,000 N/A
Alyutor none unknown unknown 2,000 N/A Script?
Avar none unknown Y 600,000+ N/A
Azerbaijani az before 1929: Arabic based script, 1929–1939: Latin based Azerbaijani alphabet, 1939–1991: Russian based, since 1991: Latin based Azerbaijani alphabet restored N 7,570,000+ 0% Currently uses Latin script
Bashkir ba unknown Y 864,000 N/A Latin script already?
Belorussian be Russian type N 10,000,000 N/A
Bezhta (Bezhitin, Kapuchin) none unknown unknown unknown N/A
Bezhitin see Bezhta
Bulgarian bg unknown N 8,450,000 N/A Slavonic based alphabet
Buryat ? unknown Y 520,000 N/A
Chechen ce unknown Y 957,000 N/A Under the terrorist regime there were plans to introduce Latin based alphabet (fortunately unsuccessful)
Chukchi (Luoravetlan) none unknown Y 15,100 N/A
Church Slavonic cu Old Slavonic’s Cyrillic alphabet N/A N/A N/A Used in churches in multiple countries. Varies across countries.
Chuvash cv unknown Y 1,842,000 N/A
Crimean Tartar ? Ancient Arabic based script Y 272,000 unknown
Croatian see Serbo-Croat
Cyrillic alphabet see Old Slavonic
Dargwa none unknown Y 365,000 N/A
Dungan none unknown Y 70,000 N/A
Enetz none unknown N/A 200 N/A No written language, mentioned for completeness (Taimyr autonomous okrug)
Erzya-Mordvinian none unknown Y unknown N/A
Eskimo ? unknown Y 38,000 (USA), 28000 (Canada), 47000 (Greenland), 1700 (Russia) N/A Russian based script in Russia, Latin script in the USA, Canada, and Greenland
Even (Lamut) none unknown Y 17,000 N/A
Evenki (Tungus) none unknown Y 64,900 N/A
Gagauz none unknown Y 220,000 N/A Latin script in Romania?
Glagolitic alphabet see Old Slavonic
Godoberi none unknown unknown unknown N/A
Ingush none unknown Y 237,000 N/A
Itelmen none unknown Y 2,500 N/A
Izhor none none N/A 756 N/A No written language, mentioned here due to the residence in the former USSR (Leningrad oblast and Estonia)
Kabardian-Circassian none unknown Y 386,000 N/A Latin script already?
Kalmyk (Kalmuck) none Ancient Mongolian based script, currently Russian based alphabet Y 166,000 N/A
Kalmuck see Kalmyk
Kapuchin see Bezhta
Karachay-balkar none unknown Y 150,000 N/A Latin script already?
Kara-Kalpak none unknown Y 400,000 N/A
Karelian none Russian based? N 131,000 unknown Latin based alphabet since 1992. Previously used alphabet — possibly Russian
Kazakh kk unknown Y 9,420,000 N/A
Kerek none none N/A unknown N/A Mentioned for completeness, no written language
Ket none none Y 1,000 N/A The alphabet was developed in 1970–1980s
Khakas none unknown Y 79,000 N/A
Khanty none unknown Y 22,300 N/A
Khinalug none unknown unknown unknown N/A
Khvarshi none unknown unknown unknown N/A
Kirghiz ky unknown Y 2,661,000 N/A
Komi Permian kv unknown Y 147,000 N/A
Komi Zyryan kv unknown Y 336,000 N/A
Koryak none unknown Y 9,000 N/A
Kumyk none unknown Y 282,000 N/A
Kurdish ku unknown Y 18,000,000 N/A Russian based alphabet on the former USSR territory, Arabic based script in Iraq
Lak none unknown Y unknown N/A
Lamut see Even
Lappish see Sami
Lezgian (Lezgin) none unknown Y unknown N/A
Luoravetlan see Chukchi
Macedonian mk Cyrillic alphabet N 1,770,000 N/A
Mansi none unknown Y 8,300 N/A
Mari, lugovo-vostochniy (meadow-east) none unknown y 644,000 N/A
Mari, gorno-mariyskiy (hill-mari)
Moksha none unknown Y unknown N/A
Moldavian mo Before XIX century: Cyrillic, since XIX century: Russian type, 1932–1939: Latin script, since 1939: Russian alphabet Y 3,350,000 worth mentioning In 1989 a government regulation ordered to revert to Latin script, but since they’re fighting with Romanians (who use Latin script) they decided to ignore that act of law
Mongol ? Since XII–XIII centuries: adopted Uigur Y 1,640,000 (Mongolia), 5,240,000 (China) unknown Russian based alphabet since 1945
Nanai none unknown Y 17,000 N/A
Nenets (Urako-Samoed) none unknown Y 34,500 N/A
Ngasan none unknown unknown 1,300 N/A Mentioned here for completeness, script?
Nivkh none unknown Y 4,600 N/A
Nogai none unknown Y 75,000 N/A
Old Slavonic (Cyrillic and Glagolitic) ? Cyrill’s and Methodius’ translations of Greek vestry books N/A N/A N/A Utilizes two alphabets: Cyrillic and Glagolitic, both contain letters used as numbers and special combining characters to use with big numbers. Dates from IX–XI centuries.
Oroche none none N/A 915 N/A No written language, mentioned for completeness (Primorskiy and Khabarovskiy Krais)
Ossetian os unknown Y 598,000 N/A
Russian ru Since IX–XI centuries: Old Slavonic, since 1708: Russian type, since 1918 present alphabet N/A 250,000,000 N/A In Russia it is common not to use certain letters in list numbering
Russian type ? Since IX–XI centuries: Old Slavonic N/A N/A N/A Derived from Old Slavonic, reformed by Peter the First
Rutul none unknown unknown 19,500 N/A
Sami (Lappish) ? unknown Y 30,000 (Norway), 15,000 (Sweden), 5,000 (Finland), 2,000 (Russia) N/A Russian alphabet in Russian, Latin script in other countries
Selkup none unknown Y 3,600 N/A The alphabet, the script are unstable (has not been used since mid 1950s)
Serbo-Croatian (Serbian, Croatian) sb unknown N 10,160,000 N/A Based on two alphabets: Russian type and Latin
Shor none unknown Y 16,000 N/A
Tabassaran none unknown Y 98,000 N/A
Tajik none Ancient Arabic based script Y 8,280,000 N/A
Tartar tt Ancient Arabic based script Y 6,710,000 49% There are plans to introduce Latin script along with official Russian language
Tati none unknown Y unknown N/A
Tsakhur none unknown unknown 13,000 N/A
Tsez none unknown unknown unknown N/A
Tungus see Evenki
Tuvin none unknown Y 207,000 N/A
Udi none unknown unknown 8,000 N/A
Udmurt none unknown Y 714,800 N/A
Ukrainian uk unknown N 46,000,000 N/A Russian type based alphabet
Urako-Samoed see Nenets
Uzbek none Ancient Arabic based script Y 18,500,000 N/A
Vepps(e) none was not widespread unknown 13,000 N/A New alphabet is being implemented
Vods none unknown unknown unknown N/A
Yakut none unknown Y 382,000 N/A
Yukagir none unknown unknown 1,100 N/A Here for completeness, script?

1.2. Ethiopic List Styles

Ethiopic writing traditions make use of alphabetic and numeric list styles. There are no fewer than 65 million people speaking as many as 80 languages that may employ Ethiopic script. Orthography practices have evolved to different degrees with each language and each recognizes “Ge’ez” script as the underlying classical form (as “Latin” script underlies western script in Europe). Amharic and Tigriñña are identified as having the largest number of speakers as well as the largest corpus of printed and electronically published materials and uniquely identifiable writing conventions. In addition to the classic Ethiopic list style, specific list styles types to accommodate the practices of these major languages are recommended.

Many additional languages use or have used Ethiopic script. However, it is not known by the authors if the practice of alphabetic lists is employed or in what form. A limited survey of the user communities of a few of the languages did indeed find a strong desire for list style support under the direct syllabary use by the user's language. Further investigation should be undertaken here.

The following table presents the languages of Eritrea and Ethiopia as tracked by the SIL Ethnologue and indicates script use where known. Script use information has also been provided by the SIL as well as government sources of Eritrea and Ethiopia. Mother tongue populations are also drawn from the Ethnologue which in turn draws largely from 1997 and 1998 census data of Eritrea and Ethiopia respectively. Both Latin and Ethiopic script will be found in cases where Latin script has come into official use over Ethiopic script in the relatively recent past.

Languages of Eritrea and Ethiopia
Language ISO-639 Uses Ethiopic
Presently/Previously
Native Speakers Nation(s) Notes
Aari none Y / Y 158,857 ET Small corpus.
Afar
(Dankali)
aa N / Y 1,279,367 DJ, ER,
ET, SO
An additional 300,000+ speakers are outside of Eritrea and Ethiopia. Small Ethiopic corpus (100-1,000 documents).
Agaw
(Kemant)
none Y / Y 1,650 ET ISO-10646/Unicode does not fully support Agaw, however, alphabetic lists may be formed.
Agaw
(Awngi)
none Y / Y 356,980 ET ISO-10646/Unicode does not fully support Agaw, however, alphabetic lists may be formed.
Agaw
(Xamtanga)
none Y / Y 143,369 ET ISO-10646/Unicode does not fully support Agaw, however, alphabetic lists may be formed.
Alaba none unknown 126,247 ET  
Amharic am Y / Y 17,413,000 ET Very large corpus.
Anfillo none unknown 500 ET  
Anuak none L / unknown 45,646 ET, SU An additional 52,000 speakers are in the Sudan.
Arbore none unknown 4,441 ET  
Argobba none Y / Y 10,860 ET Small corpus.
Baiso none unknown 1,010 ET  
Bambassi none unknown 5,000 ET  
Bare none unknown N/A ET Nearly extinct or extinct.
Basketto none unknown 57,805 ET  
Bedawi
(Beja)
none N / unknown 120,000 EG, ER,
SU
An additional 1,028,000 speakers are outside of Eritrea.
Bench none Y / Y 173,805 ET ISO-10646/Unicode does not fully support Bench, alphabetic lists can not be formed. Small corpus.
Berta none unknown 124,799 ET, SU An additional 22,000 speakers are in the Sudan.
Bilen none Y / Y 70,000 ER ISO-10646/Unicode does not fully support Bilen, however, alphabetic lists may be formed. Medium corpus (1,000 - 10,000 documents).
Birale none unknown 20 ET Nearly extinct.
Boro none unknown 19,878 ET  
Burji none unknown 35,731 ET, KE An additional 7,000 speakers are in Kenya.
Bussa none unknown 6,624 ET  
Chara none unknown 6,932 ET  
Daasanech none unknown 32,064 ET, KE An additional 2,500 speakers are in Kenya.
Dime none unknown 6,501 ET  
Dirasha none unknown 50,328 ET  
Dizi none unknown / Y 21,075 ET Small corpus.
Dorze none unknown 20,782 ET  
Gafat none unknown 0 ET Bible portions translated in 1945, the script used is unknown.
Gamo-Goffa-Dawro none N / unknown 1,236,637 ET  
Ganza none unknown N/A ET Nearly extinct.
Gawwada none unknown 32,698 ET  
Ge'ez none Y / Y 0 ER, ET An extinct language analagous to Latin. Is a second language to over 50,000, a corpus of over 10,000 documents exists.
Gedeo none N / Y 639,082 ET Small corpus.
Gumuz none Y / Y 120,424 ET, SU An additional 40,000 speakers are in the Sudan. Small corpus.
Gurage
(Chaha)
none Y / Y 798,202 ET ISO-10646/Unicode does not fully support Chaha, alphabetic lists can not be formed. Medium corpus.
Gurage (Silte) none Y / Y 827,764 ET Medium corpus.
Gurage (Sodo) none Y / Y 254,682 ET Medium corpus.
Hadiyya none N / Y 923,958 ET Small corpus.
Hammer-Banna none Y / unknown 42,838 ET  
Harari
(Adari)
none Y / Y 21,283 ET Small corpus.
Hozo none unknown 3,000 ET  
Kachama none unknown 4,072 ET  
Kacipo-Balesi none unknown 2-3,000 ET, SU An additional 5,000 speakers are in the Sudan.
Kaficho (Kaffa) none N / Y 569,626 ET Small Ethiopic corpus.
Kambaata none N / Y 606,241 ET Small Ethiopic corpus.
Karo none unknown 200 ET  
Kebena none Y / Y 606,241 ET Small corpus.
Komo none Y / N 1,500 ET, SU An additional 10,000 speakers are in the Sudan. Small Ethiopic corpus.
Komso none Y / unknown 149,508 ET Small corpus.
Koorete none Y / N 103,879 ET Small Ethiopic corpus.
Kunama (Baza) none N / Y 142,000 ER Small Ethiopic corpus.
Kunfal none unknown N/A ET  
Kwama none unknown 15,000 ET  
Kwegu none unknown 103 ET  
Libido none unknown 36,612 ET  
Majang none Y / unknown 15,341 ET Small corpus.
Male none Y / unknown 53,779 ET Small corpus.
Me'en none Y / unknown 56,585 ET Small corpus.
Melo none unknown 20,151 ET  
Mesmes none unknown N/A ET Extinct or nearly extinct?
Murle none unknown 200 ET, SU Additional population of 60,000 in Sudan.
Mursi none unknown 3,278 ET  
Nara none N / unknown 63,000 ER Also spoken in Sudan?
Nayi none unknown 3,656 ET  
Nuer none unknown 64,907 ET, SU An additional 740,000 speakers are in the Sudan.
Nyangatom none unknown 14,177 ET  
Opuuo none unknown 301 ET, SU Population figure is for both nations.
Oromo
(Borana-Arusi-Guji)
om N / Y 3,634,000 ET, KE,
SO
An additional 152,000 speakers are outside of Ethiopia. Latin is used officially in government, courts and schools, Ethiopic use continues, medium corpus.
Oromo
(Qotu)
om N / Y 4,526,000 ET Latin is used officially in government, courts and schools, Ethiopic use continues. Medium corpus.
Oromo
(Western-Central)
om N / Y 8,920,000 ET Latin is used officially in government, courts and schools, Ethiopic use continues. Medium corpus.
Oyda none unknown 16,597 ET  
Saho none N / Y 166,750 ER, ET Small corpus.
Seze none unknown 3,000 ET  
Shabo none unknown 400-1,000 ET  
Shakacho none N / unknown 54,894 ET  
Sheko none unknown 23,785 ET  
Sidamo none N / Y 1,876,329 ET ISO-10646/Unicode does not fully support Sidamo, alphabetic lists can not be formed. Latin is used in government and schools, Ethiopic use continues. Small corpus.
Somali so N / Y 3,187,053 DJ, ET,
KE, SO
An additional 6,500,000+ speakers are outside of Ethiopia. Small Ethiopic corpus.
Suri none Y / Y 19,622 ET, SU An additional 1,000 speakers are in the Sudan. Small Ethiopic corpus.
Tigre (Bedo) none Y / Y 800,000 ER, SU Population figure is for Eritrea only. Small corpus.
Tigrinya ti Y / Y 5,135,000 ER, ET Very large corpus.
Tsamai none unknown 8,621 ET  
Uduk none N / unknown 20,000 ET, SU Population figure is for both countries.
Weyto none unknown 0 ET Extinct.
Wolaytta none N / Y 1,231,673 ET Small Ethiopic corpus.
Yemsa none unknown / Y 81,613 ET Present Ethiopic use is assumed. Small corpus.
Zay none unknown 4,880 ET  
Zayse-Zergulla none unknown 17,797 ET  

This note also recommends simplification of the name conventions previously recommended for Ethiopic list styles (Section 5) as follows:

Old Name New Name
ethiopic-halehame ethiopic
ethiopic-abegede ethiopic-abegede
ethiopic-numeric ethiopic-numeric
ethiopic-halehame-am amharic
ethiopic-halehame-ti-er tigrinya-er
ethiopic-halehame-ti-et tigrinya-et

It is believed that the simplifications will be more intuitive and “user friendly” for web designers to work with.

1.3. Coptic List Styles

Coptic script is derived from Greek and Demotic scripts and has been used exclusively for the Coptic language. The script is vital to Coptic liturgy which depends on a software’s capability to correctly present Coptic numerals. A numeric list style for Coptic along with lowercase and uppercase alphabetic sytles are recommended.

Developers should note that Coptic will split off from the combined Coptic-Greek range of Unicode in a future revision of the Unicode standard. The Coptic elements shared with Greek will then have their own code points thus resolving the typeface disparity between the two writing systems.

1.4. armenian Value of the list-style-type Property

The research carried out by Musheg Arakelyan showed that the existing armenian value of the list-style-type property is not sufficient. It should be noted first that Armenian alphabet uses both capital and small letters, that is why the presence of only one value in the CSS2 [CSS2] spec (and in the current CSS3 [CSS3-Lists] draft) is incorrect.

The traditional Armenian numbering uses small letters, that is why Musheg presumes that the current armenian value should be preserved within the spec, but for future use the new values of lower-armenian and upper-armenian could be introduced.

Musheg investigated a lot of normative documents where the numbers are set using Armenian letters. The current practice is documented in this note. The exact mechanism of calculating Armenian numbering is rather complex, and it is known that at least Mozilla 0.98 incorrectly implements this system. That is another reason for introducing clear definitions in the CSS3.

At this moment the authors can provide no information on whether other non-Cyrillic systems, particularly Georgian, use both capital and small letters for numbering or not.

2. Means to specify list items

The CSS standard until now define no means to specify customized lists. The only possible solution with current CSS3 Module: Lists [CSS3-Lists] is to specify every list item via the ::list-marker pseudo-element and the content property. Unfortunately this approach is not sufficient as list items are often combined and used as a basis for other values (that is, the string datatype is inappropriate). Authors of this note propose three possible solutions that are desribed below.

2.1. The list-style-items Property, v. 1

Name: list-style-items
Value: [<urange> [, <urange>]*] | none
Initial: none
Applies to: all elements with ‘display: list-item
Inherited: no
Percentages: N/A
Media: visual
Computed value: specified value

The list-style-items property can be used to specify user-defined list in case there’s no appropriate numbering system in this specification or no such numbering system could be provided in principle.

For example, authors may want to specify the numbering system consisting of the following markers: “First”, “Second”, “Third”. Apparently, this system is not included into CSS Lists, thus the list-style-items may be used to define such a system.

Note: authors should use the Unicode [Unicode3] values for any circumstances.

The example for the above-mentioned system when applied to the XHTML code:

   
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
     <title>List Tests</title>
     <style type="text/css">
      ol { list-style-items: U+0046-0069-0072-0073-0074,
                             U+0053-0065-0063-006f-006e-0064,
                             U+0054-0068-0069-0072-0064; }
      li::list-marker { content: counter(list-item) ". " }
     </style>
    </head>
    <body>
     <ol>
      <li><p>Tea</p></li>
      <li><p>Sugar</p></li>
      <li><p>Milk</p></li>
     </ol>
    </body>
   </html>
   
  

Produces the following result on rendering:

   
    First. Tea
   Second. Sugar
    Third. Milk
   
  

Note that in practice the content property could not be used to fully customize lists. Also note that the use of the list-style-items property in theory removes the need for elements like HTML’s [HTML32] ol and ul. Authors should not inappropriately use this property and the semantics of HTML [HTML32] (or any other language) should be preserved, i. e. authors should not make the elements look like unordered lists if they are naturally placed in some order.

Other disadvantages of this property are:

  1. that it does not allow to refer to the customized lists,
  2. you have to specify lists items which follow one after another, e. g. you cannot specify list item 1 and list item 100. These issues are resolved using more complex v. 2

2.2. The list-style-items Property, v. 2

Name: list-style-items
Value: [[ <integer>(<string>) | <identifier> ],]* [<integer>(<string>) | <identifier>] | none
Initial: none
Applies to: all elements with ‘display: list-item
Inherited: no
Percentages: N/A
Media: visual
Computed value: specified value

integer represents a list item number to which the list item (the string) is applied and the identifier is meant to be a name for the new list.

With such system you cannot use the urange property to desribe long lists.

The example for the above-mentioned system when applied to the XHTML code:

   
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
     <title>List Tests</title>
     <style type="text/css">
      ol { list-style-items: 1("First"), 3("Third"), 10("Tenth") ordinal; }
           list-style-type: decimal;
           list-style-type: ordinal;
      li::list-marker { content: counter(list-item) ". " }
     </style>
    </head>
    <body>
     <ol>
      <li><p>Tea</p></li>
      <li><p>Sugar</p></li>
      <li><p>Milk</p></li>
      …
      <li><p>Cookie</p></li>
      <li><p>Toast</p></li>
     </ol>
    </body>
   </html>
   
  

Produces the following result on rendering:

   
   First. Tea
       2. Sugar
   Third. Milk
   …
   Tenth. Cookie
      11. Toast
   
  

Be sure to define the appropriate items before referring to the list by newly created name.

2.3. List Descriptions and @list

On the whole lists on the web in many cases seem to be as complex as fonts, that’s why CSS3 Lists Module [CSS3-Lists] authors might want to consider the possibility of adding a new at-rule to the spec. It would make the addition of new lists extremely simply and convenient:

Here follows the list of possible descriptors:

   
   @list {
    unicode-range: U+0302, U+0561-0584; /* Prepare the necessary fonts */
    list-items: U+0561 1,
                U+0562 2,
                U+0563 3,
                U+056a-0561 11,
                U+0584-057b-0572-0569 9999;
    list-name: mynewlist;  /* The name to refer via list-style-type */
    list-calculation: sum; /* How to deal with multiple values in a row */
    list-missing-items: decimal; /* Place something instead of missing values */
    etc.
   }

   or even

   @list {
    src: url("http://www.geez.org/lists/ethiopian") /* According to RFCNNNN */
   }
   
  

If more details are needed on various calculation mechanisms authors suggest to refer to section 8.4.

3. The list-style-end Property

None of the CSS specifications provided a means to define what happens to a numbering system when it reaches its end. For example, after 26 list items, lower-latin rendering is undefined. We believe a property could be added to CSS3 Lists Module [CSS3-Lists] to address this issue. The list-style-end property documents the current practice and adds possible values for better control over long lists.

Name: list-style-end
Value: radix | last-character | reset | none | inherit
Initial: radix
Applies to: all elements with ’display: list-item
Inherited: no
Percentages: N/A
Media: visual
Computed value: specified value

This property defines the list’s behavior after all the list markers are over (e. g., after the letter ‘z’ is assigned to the 26th item for lower-latin). Values have the following meanings:

radix

The item lists is used as a numeral system where the radix is the length of the list. This is the default behavior.

Consider the following fragment:

     
     <?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
         "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
      <head>
       <title>List Tests</title>
       <style type="text/css">
        ol { list-style-end: radix;
             list-style-type: lower-latin; }
       </style>
      </head>
      <body>
       <ol>
        <li><p>List item 1</p></li>
        <li><p>List item 2</p></li>
        <li><p>List item 3</p></li>
        …
        <li><p>List item 25</p></li>
        <li><p>List item 26</p></li>
        <li><p>List item 27</p></li>
        <li><p>List item 28</p></li>
        …
        <li><p>List item 52</p></li>
        <li><p>List item 53</p></li>
        <li><p>List item 54</p></li>
        …
        <li><p>List item 675</p></li>
        <li><p>List item 676</p></li>
        <li><p>List item 677</p></li>
       </ol>
      </body>
     </html>
     
    

Will render something like:

     
       a. List item 1
          …
       y. List item 25
       z. List item 26
      aa. List item 27
      ab. List item 28
      ac. List item 29
          …
      az. List item 52
      ba. List item 53
      bb. List item 54
          …
      zy. List item 675
      zz. List item 676
     aaa. List item 677
     aab. List item 678
     aac. List item 679
     
    
last-character

The numbering mechanism infinitely repeats the last character declared either in this specification or via the list-style-items property. This might be the case for some numbering systems, such as Old Slavonic (Glagolithic and Cyrillic alphabets) numbers, the last character of such numbering systems actually does not have a corresponding number, but an abstract name (e. g. “many”).

If you replace the value of the list-style-end property with the last-character value the rendering might produce the following result:

     
     a. List item 1
        …
     y. List item 25
     z. List item 26
     z. List item 27
        …
     z. List item 678
     z. List item 679
     
    
reset

The numbering mechanism is reset, i. e. the numbering repeats from the very beginning.

Replacing the list-style-end value with reset results in the following:

     
     a. List item 1
     b. List item 2
        …
     y. List item 25
     z. List item 26
     a. List item 27
        …
     z. List item 52
     a. List item 53
        …
     a. List item 677
     b. List item 678
     c. List item 679
     
    
none

No characters are rendered.

Assigning the none value to the list-style-end property defines the behavior:

     
     a. List item 1
     b. List item 2
        …
     y. List item 25
     z. List item 26
        List item 27
        …
        List item 53
        …
        List item 678
        List item 679
     
    

4. Additional list-style-type Values

This section provides a brief summary for the proposed values to be added to the upcoming CSS3 Lists [CSS3-Lists].

lower-armenian and armenian
Traditional lowercase Armenian numbering.
upper-armenian
Traditional uppercase Armenian numbering.
lower-belorussian
Lowercase Belorussian numbering strictly mapped to the alphabet.
upper-belorussian
Uppercase Belorussian numbering strictly mapped to the alphabet.
lower-bulgarian
Lowercase Bulgarian numbering strictly mapped to the alphabet.
upper-bulgarian
Uppercase Bulgarian numbering strictly mapped to the alphabet.
lower-macedonian
Lowercase Macedonian numbering strictly mapped to the alphabet.
upper-macedonian
Uppercase Macedonian numbering strictly mapped to the alphabet.
lower-russian
Lowercase Russian numbering strictly mapped to the alphabet.
upper-russian
Uppercase Russian numbering strictly mapped to the alphabet.
lower-russian-short
Traditional lowercase Russian numbering with five letters missing. This system is used in most cases though it is strictly speaking inconsistent. There’s no such alphabet officially, that is to use this system for numbering is a pure tradition.
upper-russian-short
Traditional uppercase Russian numbering with five letters missing. This system is used in most cases though it is strictly speaking inconsistent. There’s no such alphabet officially, that is to use this system for numbering is a pure tradition.
lower-serbo-croatian
Lowercase Serbo-Croatian numbering strictly mapped to the alphabet.
upper-serbo-croatian
Uppercase Serbo-Croatian numbering strictly mapped to the alphabet.
lower-ukrainian
Lowercase Ukrainian numbering strictly mapped to the alphabet.
upper-ukrainian
Uppercase Ukrainian numbering strictly mapped to the alphabet.
lower-ukrainian-short
Traditional lowercase Ukrainian numbering with five letters missing. This system is used in most cases though it is strictly speaking inconsistent. There’s no such alphabet officially, that is to use this system for numbering is a pure tradition.
upper-ukrainian-short
Traditional uppercase Ukrainian numbering with five letters missing. This system is used in most cases though it is strictly speaking inconsistent. There’s no such alphabet officially, that is to use this system for numbering is a pure tradition.
ethiopic
Classical Ethiopic numbering strictly mapped to the syllabary. This is the default system used historically and presently in Ethiopic literature.
ethiopic-abegede
Alternative classical Ethiopic numbering (matching Hebraic, Greek and Coptic) used for a period by the Ethiopian Orthodox Church and in some Ge’ez works.
ethiopic-numeric
Classical Ethiopic numeral system.
amharic
Amharic character set numbering strictly mapped to the syllabary.
tigrinya-er
Tigrinya character set numbering strictly mapped to the syllabary under Eritrean writing conventions.
tigrinya-et
Tigrinya character set numbering strictly mapped to the syllabary under Ethiopian writing conventions.
coptic
Classical Coptic numeral system.
lower-coptic
Lowercase Coptic numbering mapped strictly to the alphabet.
upper-coptic
Uppercase Coptic numbering mapped strictly to the alphabet.
upper-greek
Uppercase classical Greek (to be investigated)
boolean
Boolean values.
octal
Octal values.
lower-hex
Lowercase hexadecimal values.
upper-hex
Uppercase hexadecimal values.
lower-norwegian
Lowercase Norwegian numbering strictly mapped to the alphabet.
upper-norwegian
Uppercase Norwegian numbering strictly mapped to the alphabet.
<uri>
This is reserved for future use in case none of the above-mentioned methods of defining lists is accepted. The value would point to a document describing the list.

The exact mechanisms for calculating each of the above mentioned system is discussed later in this document. The members of the WG might want to consider the inclusion of other Cyrillic numbering systems into the CSS3 Lists [CSS3-Lists] draft. The list of such systems is provided in the Section 1. This note provides almost no information on the numbering systems of the alphabet that are excluded from this section. If the WG believes this information is necessary either the authors of this document or the WG itself can inquire into this matter. More on this can be found in Section 8.

5. Further Clarifications for the list-style-type Property

Although the current CSS Recommendations define no means to calculate various numbering system authors of this note offer a sample way to define some of the numbering systems mentioned in the CSS2 [CSS2] specification and in the current CSS3 Lists [CSS3-Lists] Working Draft.

The above-mentioned definitions of the list-style-type property values provided quick, accessible and easy-to-read descriptions for each of the value (these can be included into the spec for non-technical readers) at the same time leaving the actual implementation solely at the discretion of the developer. This practice is not possible in case Cyrillic (particularly Russian) lists are introduced. The following sections provide technical readers with the exact definitions of the list-style-type values.

5.1. Unicode Values

The actual Unicode values for the list-style-type values are (sample rendering in brackets):

disc (●)
U+25cf
circle (○)
U+25cb
square (■)
U+25a0
box (□)
U+25a1
decimal (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, …)
U+0031, U+0032, U+0033, U+0034, U+0035, U+0036, U+0037, U+0038, U+0039, U+0031-0030, U+0031-0031, U+0031-0032, …
decimal-leading-zero (01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, …)
U+0030-0031, U+0030-0032, U+0030-0033, U+0030-0034, U+0030-0035, U+0030-0036, U+0030-0037, U+0030-0038, U+0030-0039, U+0031-0030, U+0031-0031, …
lower-roman (i, ii, iii, iv, v, vi, vii, viii, ix, x, xi, …)
U+0069, U+0069-0069, U+0069-0069-0069, U+0069-0076, U+0076, U+0076-0069, U+0076-0069-0069, U+0076-0069-0069-0069, U+0069-0078, U+0078, U+0078-0069, …
upper-roman (I, II, III, IV, V, VI, VII, VIII, IX, X, XI, …)
U+0049, U+0049-0049, U+0049-0049-0049, U+0049-0056, U+0056, U+0056-0049, U+0056-0069-0069, U+0056-0049-0049-0049, U+0049-0058, U+0058, U+0058-0049, …
lower-greek (α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω)
U+03b1, U+03b2, U+03b3, U+03b4, U+03b5, U+03b6, U+03b7, U+03b8, U+03b9, U+03ba, U+03bb, U+03bc, U+03bd, U+03be, U+03bf, U+03c0, U+03c1, U+03c3, U+03c4, U+03c5, U+03c6, U+03c7, U+03c8, U+03c9
upper-greek (Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω)
U+0391, U+0392, U+0393, U+0394, U+0395, U+0396, U+0397, U+0398, U+0399, U+039a, U+039b, U+039c, U+039d, U+039e, U+039f, U+03a0, U+03a1, U+03a3, U+03a4, U+03a5, U+03a6, U+03a7, U+03a8, U+03a9
hiragana (あ, い, う, え, お, か, き, く, け, こ, さ, し, す, せ, そ, た, ち, つ, て, と, な, に, ぬ, ね, の, は, ひ, ふ, へ, ほ, ま, み, む, め, も, や, ゆ, よ, ら, り, る, れ, ろ, わ, ゐ, ゑ, を, ん)
U+3042, U+3044, U+3046, U+3048, U+304a, U+304b, U+304d, U+304f, U+3051, U+3053, U+3055, U+3057, U+3059, U+305b, U+305d, U+305f, U+3061, U+3064, U+3066, U+3068, U+306a, U+306b, U+306c, U+306d, U+306e, U+306f, U+3072, U+3075, U+3078, U+307b, U+307e, U+307f, U+3080, U+3081, U+3082, U+3084, U+3086, U+3088, U+3089, U+308a, U+308b, U+308c, U+308d, U+308f, U+3090, U+3091, U+3092, U+3093
katakana (ア, イ, ウ, エ, オ, カ, キ, ク, ケ, コ, サ, シ, ス, セ, ソ, タ, チ, ツ, テ, ト, ナ, ニ, ヌ, ネ, ノ, ハ, ヒ, フ, ヘ, ホ, マ, ミ, ム, メ, モ, ヤ, ユ, ヨ, ラ, リ, ル, レ, ロ, ワ, ヰ, ヱ, ヲ, ン)
U+30a2, U+30a4, U+30a6, U+30a8, U+30aa, U+30ab, U+30ad, U+30af, U+30b1, U+30b3, U+30b5, U+30b7, U+30b9, U+30bb, U+30bd, U+30bf, U+30c1, U+30c4, U+30c6, U+30c8, U+30ca, U+30cb, U+30cc, U+30cd, U+30ce, U+30cf, U+30d2, U+30d5, U+30d8, U+30db, U+30de, U+30df, U+30e0, U+30e1, U+30e2, U+30e4, U+30e6, U+30e8, U+30e9, U+30ea, U+30eb, U+30ec, U+30ed, U+30ef, U+30f0, U+30f1, U+30f2, U+30f3
hiragana-iroha (い, ろ, は, に, ほ, へ, と, ち, り, ぬ, る, を, わ, か, よ, た, れ, そ, つ, ね, な, ら, む, う, ゐ, の, お, く, や, ま, け, ふ, こ, え, て, あ, さ, き, ゆ, め, み, し, ゑ, ひ, も, せ, す)
U+3044, U+308d, U+306f, U+306b, U+307b, U+3078, U+3068, U+3061, U+308a, U+306c, U+308b, U+3092, U+308f, U+304b, U+3088, U+305f, U+308c, U+305d, U+3064, U+306d, U+306a, U+3089, U+3080, U+3046, U+3090, U+306e, U+304a, U+304f, U+3084, U+307e, U+3051, U+3075, U+3053, U+3048, U+3066, U+3042, U+3055, U+304d, U+3086, U+3081, U+307f, U+3057, U+3091, U+3072, U+3082, U+305b, U+3059
katakana-iroha (イ, ロ, ハ, ニ, ホ, ヘ, ト, チ, リ, ヌ, ル, ヲ, ワ, カ, ヨ, タ, レ, ソ, ツ, ネ, ナ, ラ, ム, ウ, ヰ, ノ, オ, ク, ヤ, マ, ケ, フ, コ, エ, テ, ア, サ, キ, ユ, メ, ミ, シ, ヱ, ヒ, モ, セ, ス)
U+30a4, U+30ed, U+30cf, U+30cb, U+30db, U+30d8, U+30c8, U+30c1, U+30ea, U+30cc, U+30eb, U+30f2, U+30ef, U+30ab, U+30e8, U+30bf, U+30ec, U+30bd, U+30c4, U+30cd, U+30ca, U+30e9, U+30e0, U+30a6, U+30f0, U+30ce, U+30aa, U+30af, U+30e4, U+30de, U+30b1, U+30d5, U+30b3, U+30a8, U+30c6, U+30a2, U+30b5, U+30ad, U+30e6, U+30e1, U+30df, U+30b7, U+30f1, U+30d2, U+30e2, U+30bb, U+30b9
cjk-heavenly-stem (甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸)
U+7532, U+4e59, U+4e19, U+4e01, U+620a, U+5df1, U+5e9a, U+8f9b, U+58ec, U+7678
cjk-earthly-branch (子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥)
U+5b50, U+4e11, U+5bc5, U+536f, U+8fb0, U+5df3, U+5348, U+672a, U+7533, U+9149, U+620c, U+4ea5
hangul (가, 나, 다, 라, 마, 바, 사, 아, 자, 차, 카, 타, 파, 하)
U+ac00, U+b098, U+b2e4, U+b77c, U+b9c8, U+bc14, U+c0ac, U+c544, U+c790, U+cc28, U+ce74, U+d0c0, U+d30c, U+d558
hangul-consonant (ㄱ, ㄴ, ㄷ, ㄹ, ㅁ, ㅂ, ㅅ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ)
U+3131, U+3134, U+3137, U+3139, U+3141, U+3142, U+3145, U+3147, U+3148, U+314a, U+314b, U+314c, U+314d, U+314e
lower-alpha and lower-latin (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z)
U+0061, U+0062, U+0063, U+0064, U+0065, U+0066, U+0067, U+0068, U+0069, U+006a, U+006b, U+006c, U+006d, U+006e, U+006f, U+0070, U+0071, U+0072, U+0073, U+0074, U+0075, U+0076, U+0077, U+0078, U+0079, U+007a
upper-alpha and upper-latin (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z)
U+0041, U+0042, U+0043, U+0044, U+0045, U+0046, U+0047, U+0048, U+0049, U+004a, U+004b, U+004c, U+004d, U+004e, U+004f, U+0050, U+0051, U+0052, U+0053, U+0054, U+0055, U+0056, U+0057, U+0058, U+0059, U+005a
lower-armenian and armenian (ա, բ, գ, դ, ե, զ, է, ը, թ, ժ, ժա, ժբ, ժգ, ժդ, ժե, ժզ, ժէ, ժը, ժթ, ի, իա, …)
U+0561, U+0562, U+0563, U+0564, U+0565, U+0566, U+0567, U+0568, U+0569, U+056a, U+056a-0561, U+056a-0562, U+056a-0563, U+056a-0564, U+056a-0565, U+056a-0566, U+056a-0567, U+056a-0568, U+056a-0569, U+056b, U+056b-0561, …
upper-armenian (Ա, Բ, Գ, Դ, Ե, Զ, Է, Ը, Թ, Ժ, ԺԱ, ԺԲ, ԺԳ, ԺԴ, ԺԵ, ԺԶ, ԺԷ, ԺԸ, ԺԹ, Ի, ԻԱ)
U+0531, U+0532, U+0533, U+0534, U+0535, U+0536, U+0537, U+0538, U+0539, U+053a, U+053a-0531, U+053a-0532, U+053a-0533, U+053a-0534, U+053a-0535, U+053a-0536, U+053a-0537, U+053a-0538, U+053a-0539, U+053b, U+053b-0531;
lower-belorussian (а, б, в, г, д, е, ё, ж, з, і, й, к, л, м, н, о, п, р, с, т, у, ў, ф, х, ц, ч, ш, ы, ь, э, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0435, U+0451, U+0436, U+0437, U+0456, U+0439, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+045e, U+0444, U+0445, U+0446, U+0447, U+0448, U+044b, U+044c, U+044d, U+044e, U+044f
upper-belorussian (А, Б, В, Г, Д, Е, Ё, Ж, З, І, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ў, Ф, Х, Ц, Ч, Ш, Ы, Ь, Э, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0415, U+0401, U+0416, U+0417, U+0406, U+0419, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+040e, U+0424, U+0425, U+0426, U+0427, U+0428, U+042b, U+042c, U+042d, U+042e, U+042f
lower-bulgarian (а, б, в, г, д, е, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ь, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0435, U+0436, U+0437, U+0438, U+0439, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+0444, U+0445, U+0446, U+0447, U+0448, U+0449, U+044a, U+044c, U+044e, U+044f
upper-bulgarian (А, Б, В, Г, Д, Е, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ъ, Ь, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0415, U+0416, U+0417, U+0418, U+0419, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+0424, U+0425, U+0426, U+0427, U+0428, U+0429, U+042a, U+042c, U+042e, U+042f
lower-macedonian (а, б, в, г, д, ѓ, е, ж, з, ѕ, и, ј, к, л, љ, м, н, њ, о, п, р, с, т, ќ, у, ф, х, ц, ч, џ, ш)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0453, U+0435, U+0436, U+0437, U+0455, U+0438, U+0458, U+043a, U+043b, U+0459, U+043c, U+043d, U+045a, U+043e, U+043f, U+0440, U+0441, U+0442, U+045c, U+0443, U+0444, U+0445, U+0446, U+0447, U+045f, U+0448
upper-macedonian (А, Б, В, Г, Д, Ѓ, Е, Ж, З, Ѕ, И, Ј, К, Л, Љ, М, Н, Њ, О, П, Р, С, Т, Ќ, У, Ф, Х, Ц, Ч, Џ, Ш)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0403, U+0415, U+0416, U+0417, U+0405, U+0418, U+0408, U+041a, U+041b, U+0409, U+041c, U+041d, U+040a, U+041e, U+041f, U+0420, U+0421, U+0422, U+040c, U+0423, U+0424, U+0425, U+0426, U+0427, U+040f, U+0428
lower-russian (а, б, в, г, д, е, ё, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, э, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0435, U+0451, U+0436, U+0437, U+0438, U+0439, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+0444, U+0445, U+0446, U+0447, U+0448, U+0449, U+044a, U+044b, U+044c, U+044d, U+044e, U+044f
upper-russian (А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ъ, Ы, Ь, Э, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0415, U+0401, U+0416, U+0417, U+0418, U+0419, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+0424, U+0425, U+0426, U+0427, U+0428, U+0429, U+042a, U+042b, U+042c, U+042d, U+042e, U+042f
lower-russian-short (а, б, в, г, д, е, ж, з, и, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, э, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0435, U+0436, U+0437, U+0438, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+0444, U+0445, U+0446, U+0447, U+0448, U+0449, U+044d, U+044e, U+044f
upper-russian-short (А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Э, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0415, U+0416, U+0417, U+0418, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+0424, U+0425, U+0426, U+0427, U+0428, U+0429, U+042d, U+042e, U+042f
lower-serbo-croatian (а, б, в, г, д, ђ, е, ж, з, и, ј, к, л, љ, м, н, њ, о, п, р, с, т, ћ, у, ф, х, ц, ч, џ, ш)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0452, U+0435, U+0436, U+0437, U+0438, U+0458, U+043a, U+043b, U+0459, U+043c, U+043d, U+045a, U+043e, U+043f, U+0440, U+0441, U+0442, U+045b, U+0443, U+0444, U+0445, U+0446, U+0447, U+045f, U+0448
upper-serbo-croatian (А, Б, В, Г, Д, Ђ, Е, Ж, З, И, Ј, К, Л, Љ, М, Н, Њ, О, П, Р, С, Т, Ћ, У, Ф, Х, Ц, Ч, Џ, Ш)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0402, U+0415, U+0416, U+0417, U+0418, U+0408, U+041a, U+041b, U+0409, U+041c, U+041d, U+040a, U+041e, U+041f, U+0420, U+0421, U+0422, U+040b, U+0423, U+0424, U+0425, U+0426, U+0427, U+040f, U+0428
lower-ukrainian (а, б, в, г, ґ, д, е, є, ж, з, и, і, ї, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ь, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0491, U+0434, U+0435, U+0454, U+0436, U+0437, U+0438, U+0456, U+0457, U+0439, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+0444, U+0445, U+0446, U+0447, U+0448, U+0449, U+044c, U+044e, U+044f
upper-ukrainian (А, Б, В, Г, Ґ, Д, Е, Є, Ж, З, И, І, Ї, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ь, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0490, U+0414, U+0415, U+0404, U+0416, U+0417, U+0418, U+0406, U+0407, U+0419, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+0424, U+0425, U+0426, U+0427, U+0428, U+0429, U+042c, U+042e, U+042f
lower-ukrainian-short (а, б, в, г, д, е, є, ж, з, и, і, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, ю, я)
U+0430, U+0431, U+0432, U+0433, U+0434, U+0435, U+0454, U+0436, U+0437, U+0438, U+0456, U+043a, U+043b, U+043c, U+043d, U+043e, U+043f, U+0440, U+0441, U+0442, U+0443, U+0444, U+0445, U+0446, U+0447, U+0448, U+044e, U+044f
upper-ukrainian-short (А, Б, В, Г, Д, Е, Є, Ж, З, И, І, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Ю, Я)
U+0410, U+0411, U+0412, U+0413, U+0414, U+0415, U+0404, U+0416, U+0417, U+0418, U+0406, U+041a, U+041b, U+041c, U+041d, U+041e, U+041f, U+0420, U+0421, U+0422, U+0423, U+0424, U+0425, U+0426, U+0427, U+0428, U+042e, U+042f
ethiopic (ሀ, ለ, ሐ, መ, ሠ, ረ, ሰ, ቀ, በ, ተ, ኀ, ነ, አ, ከ, ወ, ዐ, ዘ, የ, ደ, ገ, ጠ, ጰ, ጸ, ፀ, ፈ, ፐ)
U+1200, U+1208, U+1210, U+1218, U+1220, U+1228, U+1230, U+1240, U+1260, U+1270, U+1280, U+1290, U+12a0, U+12a8, U+12c8, U+12d0, U+12d8, U+12e8, U+12f0, U+1308, U+1320, U+1330, U+1338, U+1340, U+1348, U+1350
ethiopic-abegede (አ, በ, ገ, ደ, ሀ, ወ, ዘ, ሐ, ጠ, የ, ከ, ለ, መ, ነ, ሠ, ዐ, ፈ, ጸ, ቀ, ረ, ሰ, ተ, ኀ, ፀ, ጰ, ፐ)
U+12a0, U+1260, U+1308, U+12f0, U+1200, U+12c8, U+12d8, U+1210, U+1320, U+12e8, U+12a8, U+1208, U+1218, U+1290, U+1220, U+12d0, U+1348, U+1338, U+1240, U+1228, U+1230, U+1270, U+1280, U+1340, U+1330, U+1350
ethiopic-numeric (፩, ፪, ፫, ፬, ፭, ፮, ፯, ፰, ፱, ፲, ፳, ፴, ፵, ፶, ፷, ፸, ፹, ፺, ፻, ፼)
U+1369, U+136a, U+136b, U+136c, U+136d, U+136e, U+136f, U+1370, U+1371, U+1372, U+1373, U+1374, U+1375, U+1376, U+1377, U+1378, U+1379, U+137a, U+137b, U+137c
amharic (ሀ, ለ, ሐ, መ, ሠ, ረ, ሰ, ሸ, ቀ, በ, ተ, ቸ, ኀ, ነ, ኘ, አ, ከ, ኸ, ወ, ዐ, ዘ, ዠ, የ, ደ, ጀ, ገ, ጠ, ጨ, ጰ, ጸ, ፀ, ፈ, ፐ)
U+1200, U+1208, U+1210, U+1218, U+1220, U+1228, U+1230, U+1238, U+1240, U+1260, U+1270, U+1278, U+1280, U+1290, U+1298, U+12a0, U+12a8, U+12b8, U+12c8, U+12d0, U+12d8, U+12e0, U+12e8, U+12f0, U+1300, U+1308, U+1320, U+1328, U+1330, U+1338, U+1340, U+1348, U+1350
tigrinya-er (ሀ, ለ, ሐ, መ, ረ, ሰ, ሸ, ቀ, ቐ, በ, ተ, ቸ, ነ, ኘ, አ, ከ, ኸ, ወ, ዐ, ዘ, ዠ, የ, ደ, ጀ, ገ, ጠ, ጨ, ጰ, ጸ, ፈ, ፐ)
U+1200, U+1208, U+1210, U+1218, U+1228, U+1230, U+1238, U+1240, U+1250, U+1260, U+1270, U+1278, U+1290, U+1298, U+12a0, U+12a8, U+12b8, U+12c8, U+12d0, U+12d8, U+12e0, U+12e8, U+12f0, U+1300, U+1308, U+1320, U+1328, U+1330, U+1338, U+1348, U+1350
tigrinya-et (ሀ, ለ, ሐ, መ, ሠ, ረ, ሰ, ሸ, ቀ, ቐ, በ, ተ, ቸ, ኀ, ነ, ኘ, አ, ከ, ኸ, ወ, ዐ, ዘ, ዠ, የ, ደ, ጀ, ገ, ጠ, ጨ, ጰ, ጸ, ፀ, ፈ, ፐ)
U+1200, U+1208, U+1210, U+1218, U+1220, U+1228, U+1230, U+1238, U+1240, U+1250, U+1260, U+1270, U+1278, U+1280, U+1290, U+1298, U+12a0, U+12a8, U+12b8, U+12c8, U+12d0, U+12d8, U+12e0, U+12e8, U+12f0, U+1300, U+1308, U+1320, U+1328, U+1330, U+1338, U+1340, U+1348, U+1350
coptic (α̅, β̅, γ̅, δ̅, ε̅, ϛ̅, ζ̅, η̅, θ̅, ι̅, κ̅, λ̅, μ̅, ν̅, ξ̅, ο̅, π̅, ϥ̅, ρ̅, ϲ̅, τ̅, υ̅, φ̅, χ̅, ψ̅, ω̅, ϣ̅)
U+03b1-0305, U+03b2-0305, U+03b3-0305, U+03b4-0305, U+03b5-0305, U+03db-0305, U+03b6-0305, U+03b7-0305, U+03b8-0305, U+03b9-0305, U+03ba-0305, U+03bb-0305, U+03bc-0305, U+03bd-0305, U+03be-0305, U+03bf-0305, U+03c0-0305, U+03e5-0305, U+03c1-0305, U+03f2-0305, U+03c4-0305, U+03c5-0305, U+03c6-0305, U+03c7-0305, U+03c8-0305, U+03c9-0305, U+03e3-0305
lower-coptic (α, β, γ, δ, ε, ϛ, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, ϲ, τ, υ, φ, χ, ψ, ω, ϣ, ϥ, ϧ, ϩ, ϫ, ϭ, ϯ)
U+03b1, U+03b2, U+03b3, U+03b4, U+03b5, U+03db, U+03b6, U+03b7, U+03b8, U+03b9, U+03ba, U+03bb, U+03bc, U+03bd, U+03be, U+03bf, U+03c0, U+03c1, U+03f2, U+03c4, U+03c5, U+03c6, U+03c7, U+03c8, U+03c9, U+03e3, U+03e5, U+03e7, U+03e9, U+03eb, U+03ed, U+03ef
upper-coptic (Α, Β, Γ, Δ, Ε, Ϛ, Ζ, Η, ϴ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, C, Τ, Υ, Φ, Χ, Ψ, Ω, Ϣ, Ϥ, Ϧ, Ϩ, Ϫ, Ϭ, Ϯ)
U+0391, U+0392, U+0393, U+0394, U+0395, U+03da, U+0396, U+0397, U+03f4, U+0399, U+039a, U+039b, U+039c, U+039d, U+039e, U+039f, U+03a0, U+03a1, U+0043, U+03a4, U+03a5, U+03a6, U+03a7, U+03a8, U+03a9, U+03e2, U+03e4, U+03e6, U+03e8, U+03ea, U+03ec, U+03ee
boolean (0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, …)
U+0030, U+0031, U+0031-0030, U+0031-0031, U+0031-0030-0030, U+0031-0030-0031, U+0031-0031-0030, U+0031-0031-0031, U+0031-0030-0030-0030, U+0031-0030-0030-0031, U+0031-0030-0031-0030, U+0031-0030-0031-0031, U+0031-0031-0030-0030, …
octal (0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, …)
octal (U+0030, U+0031, U+0032, U+0033, U+0034, U+0035, U+0036, U+0037, U+0031-0030, U+0031-0031, U+0031-0032, U+0031-0033, U+0031-0034, …
lower-hex (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, 12, …)
U+0030, U+0031, U+0032, U+0033, U+0034, U+0035, U+0036, U+0037, U+0038, U+0039, U+0061, U+0062, U+0063, U+0064, U+0065, U+0066, U+0031-0030, U+0031-0031, U+0031-0032, …
upper-hex (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, …)
U+0030, U+0031, U+0032, U+0033, U+0034, U+0035, U+0036, U+0037, U+0038, U+0039, U+0041, U+0042, U+0043, U+0044, U+0045, U+0046, U+0031-0030, U+0031-0031, U+0031-0032, …
lower-norwegian (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, æ, ø, å)
U+0061, U+0062, U+0063, U+0064, U+0065, U+0066, U+0067, U+0068, U+0069, U+006a, U+006b, U+006c, U+006d, U+006e, U+006f, U+0070, U+0071, U+0072, U+0073, U+0074, U+0075, U+0076, U+0077, U+0078, U+0079, U+007a, U+00e6, U+00f8, U+00e5
upper-norwegian (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Æ, Ø, Å)
U+0041, U+0042, U+0043, U+0044, U+0045, U+0046, U+0047, U+0048, U+0049, U+004a, U+004b, U+004c, U+004d, U+004e, U+004f, U+0050, U+0051, U+0052, U+0053, U+0054, U+0055, U+0056, U+0057, U+0058, U+0059, U+005a, U+00c6, U+00d8, U+00c5
<uri>
See [CSS2] for definition.
Values not covered by this note:

hebrew, georgian, cjk-ideographic, simp-chinese-formal, simp-chinese-informal, trad-chinese-formal, trad-chinese-informal, japanese-formal, japanese-informal, arabic-indic, persian, devanagari, gurmukhi, gujarati, kannada, malayalam, bengali, tamil, telugu, thai, lao, myanmar, khmer, urdu, oriya.

Please see section 8.3 for more information on them.

5.2. Definitive Descriptions

This section provides more complete descriptions for all the list-style-type values.

disc, cirlce, square, box
One character repeated infinetely. The Unicode values are shown above.
decimal
Complex system. The default starting point is ‘01’. Leading numbers are not rendered. The value of the list-style-end property is radix. Nine digits are employed, Unicode range: U+0030-0039.

The look of the Arabic numerals employed in the decimal value
English NameDigitUnicode Value
Zero0U+0030
One1U+0031
Two2U+0032
Three3U+0033
Four4U+0034
Five5U+0035
Six6U+0036
Seven7U+0037
Eight8U+0038
Nine9U+0039
decimal-leading-zero
Similar to the decimal system. The values of the initial first nine values are rendered with leading zeros. Can be easily deprecated. See section 7 for more information.
lower-roman and upper-roman
Complex system of Roman numerals. Latin letters are used as numbers. The default starting point is ‘I’. Unicode range: U+0043, U+0044, U+0049, U+004c, U+004d, U+0056, U+0058, U+0063, U+0064, U+0069, U+006c, U+006d, U+0076, U+0078.

Roman numerals and their corresponding values in decimal system
Decimal NumberRoman NumberUnicode Value
1i or IU+0069 or U+0049
5v or VU+0076 or U+0056
10x or XU+0078 or U+0058
50l or LU+006c or U+004c
100c or CU+0063 or U+0043
500d or DU+0064 or U+0044
1000m or MU+006d or U+004d

The highest possible value is 3999 (MMMCMXCIX) due to limitations of the system (only three same characters are allowed in a row). If the character on the left of the given character is of lower value it is subtracted from the given character, it is is on the right it is added to the given character. The recommended practice of rendering values higher than 3999 is to use decimal system with radix. Thus the implementaion that supports these values should also support decimal. One of the values can be deprecated.

lower-greek and upper-greek
The 24 member Greek alphabet in lower and upper cases. The list-style-end value is radix.
lower-alpha, lower-latin, upper-alpha, and upper-latin
Simple system in which every letter of the English alphabet has a corresponing number. The default starting point is ‘a’. The default list-style-end value is radix. Unicode range: U+0041-005a, U+0061-007a. Three values can be deprecated.
lower-armenian, upper-armenian, and armenian
Quite a complex system in which Armenian letters are opposed to numbers but not one by one. To support this system implementers will need various characters, their Unicode range is: U+0302, U+0531-0554, 0561-0584. The calculation mechanism is desribed below:

lower-armenian and armenian
Dec. Uni. Samp. Dec. Uni. Samp. Dec. Uni. Samp. Dec. Uni. Samp.
1 U+0561 ա 10 U+056a ժ 100 U+0573 ճ 1000 U+057c ռ
2 U+0562 բ 20 U+056b ի 200 U+0574 մ 2000 U+057d ս
3 U+0563 գ 30 U+056c լ 300 U+0575 յ 3000 U+057e վ
4 U+0564 դ 40 U+056d խ 400 U+0576 ն 4000 U+057f տ
5 U+0565 ե 50 U+056e ծ 500 U+0577 շ 5000 U+0580 ր
6 U+0566 զ 60 U+056f կ 600 U+0578 ո 6000 U+0581 ց
7 U+0567 է 70 U+0570 հ 700 U+0579 չ 7000 U+0578 U+0582 ու
8 U+0568 ը 80 U+0571 ձ 800 U+057a պ 8000 U+0583 փ
9 U+0569 թ 90 U+0572 ղ 900 U+057b ջ 9000 U+0584 ք
upper-armenian
Dec. Uni. Samp. Dec. Uni. Samp. Dec. Uni. Samp. Dec. Uni. Samp.
1 U+0531 Ա 10 U+053a Ժ 100 U+0543 Ճ 1000 U+054c Ռ
2 U+0532 Բ 20 U+053b Ի 200 U+0544 Մ 2000 U+054d Ս
3 U+0533 Գ 30 U+053c Լ 300 U+0545 Յ 3000 U+054e Վ
4 U+0534 Դ 40 U+053d Խ 400 U+0546 Ն 4000 U+054f Տ
5 U+0535 Ե 50 U+053e Ծ 500 U+0547 Շ 5000 U+0550 Ր
6 U+0536 Զ 60 U+053f Կ 600 U+0548 Ո 6000 U+0551 Ց
7 U+0537 Է 70 U+0540 Հ 700 U+0549 Չ 7000 U+0548 U+0552 ՈՒ
8 U+0538 Ը 80 U+0541 Ձ 800 U+054a Պ 8000 U+0553 Փ
9 U+0539 Թ 90 U+0542 Ղ 900 U+054b Ջ 9000 U+0554 Ք

Adding the ̂ (COMBINING CIRCUMFLEX ACCENT, U+0302) sign above a number mupltiplies it by 1000. Due to this limitation the highest number possible with Armenian systems is 9 999 999 (ք̂ջ̂ղ̂քջղթ or Ք̂Ջ̂Ղ̂ՔՋՂԹ). 10 000 000 cannot be written using these systems.

Important note: conforming user agents should render the COMBINING CIRCUMFLEX ACCENT character above the 7000 number (ու - U+0578 U+0582 or ՈՒ - U+0548 U+0552) as if it was just one character. That is, it is not mentioned (perhaps due to error) in the Unicode standard [Unicode3] that the characters U+0582 and U+0552 should be placed right after the preceding character (as if it was combining) and form one letter with it. That's why when U+0302 is applied to this sequence the accent should be rendered so that it covers both characters.

Example: composing the number 7 482 951 using lower-armenian.

7 000 000 = 7 000 × 1000 + 400 × 1000 + 80 × 1000 + 2000 + 900 + 50 + 1 = ու̂ + ն̂ + ձ̂ + ս + ջ + ծ + ա = ու̂ն̂ձ̂սջծա.

See also deprecation notes.

Various Cyrillic systems
radix is recommended for use once the list items are over. Exact Unicode ranges and starting points are described earlier. See also deprecation notes.
lower-ukrainian, upper-ukrainian, lower-ukrainian-short, and upper-ukrainian-short
Many thanks to Andrey Astakhov (XML developer, see Astakhov.Net) for reviewing the two systems and adding two more.
hiragana
The basic Hiragana syllabary in the standard order. The list-style-end value is radix.
katakana
The basic Katakana syllabary in the standard order. The list-style-end value is radix.
hiragana-iroha
The Hiragana syllabary Iroha set in the Iroha order. The list-style-end value is radix.
katakana-iroha
The Katakana syllabary Iroha set in the Iroha order. The list-style-end value is radix.
hangul
The 14 Hangul elements. The list-style-end value is radix.
hangul-consonant
The 14 consonants of the Hangul syllabary the standard order. The list-style-end value is radix.
cjk-heavenly-stem
The Heavenly Stem system used in traditional Chinese, Japanese and Korean formal and legal documents. The list-style-end value is radix.
cjk-earthly-branch
The Earthly Branch of old Chinese dictionaries. The list-style-end value is radix.
ethiopic
The first forms of the 33 member class Ethiopic (Ge’ez) syllabary in the standard order. The list-style-end value is radix.
ethiopic-abegede
The first forms of the 33 member class Ethiopic (Ge’ez) syllabary in the alternative order. The list-style-end value is radix.
ethiopic-numeric
The Ethiopic numeral system starting from ‘1’. Ethiopic numerals are the Unicode range U+1369-137c. The following algorithm illustrates Ethiopic numeral formation from an initial integer value:
    
    asciiNumber = integerToString ( integerNumber );
    
    n = asciiNumber.length - 1;
    
    if ( (n % 2) == 0 ) {  // precondition the number to avoid tests later
      asciiNumber = '0' + asciiNumber;
      n++;
    }
    
    for ( place = n; place >= 0; place-- )
      {
        // initialize and setup our values:
        asciiOne = asciiTen = ethioOne = ethioTen = '';
    
        asciiOne = asciiNumberString[n-place];
        place--;
        asciiTen = asciiNumberString[n-place];
    
        if ( asciiOne != '0' )
          ethioOne = asciiOne + ('፩' - '1');  // map onto Ethiopic "ones"
    
        if ( asciiTen != '0' )
          ethioTen = asciiTen + ('፲' - '1');  // map onto Ethiopic "tens"
    
        pos = ( place % 4 ) / 2;  // ፻ for even subscripts, ፼ for odd
    
        // find a separator, if any, to follow ethioTen and ethioOne:
        sep = ( place != 0 )
              ? ( pos != 0 )
                ? ( ( ethioOne != '' ) || ( ethioTen != '' ) )
                  ? '፻'  // U+137B
                  : ''
                : '፼'    // U+137C
              : ''
            ;
    
        // remove '፩' (U+1369) under special conditions:
        if ( ( ethioOne == '፪' ) && ( ethioTen != '' ) && ( n > 1 ) ) {
              if ( ( sep == '፻' ) || ( (place+1) == n )
                ethioOne = '';
        }   
       
        //  append the result
        ethioNumber += ethioTen + ethioOne + sep;
    }
    
    return ( ethioNumber );
    
   
amharic
The first forms of the 33 member Amharic syllabary. The list-style-end value is radix.
tigrinya-er
The first forms of the 31 member Tigrinya syllabary as used under Eritrean orthography practices. The list-style-end value is radix.
tigrinya-et
The first forms of the 34 member Tigrinya syllabary as used under Ethiopian orthography practices. The list-style-end value is radix.
lower-coptic, upper-coptic
The 32 member Coptic alphabet in lower and upper cases, inclusive of “Soou” (with no overline) as the sixth member. The list-style-end value is radix.

Thanks to Father Kyrillos Makar of the St. Mary & St. Mina Churches of Clearwater, Florida for his invaluable input the Coptic systems in this recommendation.

coptic
The Coptic numeral system based on the initial 27 members of the Coptic lowercase alphabet in combination with U+0304, U+0331 and U+0347 for representation up to 999 999 999. Larger values could not be rendered with the standard Unicode character set. The private use range of Unicode could however be utilized to hold symbols for the larger order markers or alternatively the symbols could be easily simulated graphically. The following algorithm illustrates Coptic numeral formation from an initial integer value:
    
    CopticNumbers =[
      ['α', 'β', 'γ', 'δ', 'ε', 'ϛ', 'ζ', 'η', 'θ'],
      ['ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ϥ'],
      ['ρ', 'ϲ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω', 'ϣ']
    ];
    
    asciiNumber = integerToString ( integerNumber );
    
    n = asciiNumber.length - 1;
    
    for ( place = n; place >= 0; place-- ) {
    
        pos    = place % 3;
        cycles = (int) place / 3;
    
        aNum   = aNumberString[n-place];
        if ( aNum == 0 )
            next;
    
        copticNumber += CopticNumbers[pos][aNum-1];
    
        if ( cycles ) {
            for ( i = 0; i < ((int) cycles/2); i++ ) { 
                copticNumber += '͇';  // U+0347
            }
    	if ( cycles % 2 ) {
              copticNumber += '̱';    // U+0331
            }
        }
        else {
            copticNumber += '̄'       // U+0304
        }
    
    }
    
    return ( copticNumber );
    
   
boolean
The system where just two digits are employed. The default starting point is ‘0’. Leading zeros are not rendered but can be customized using the ::list-marker pseudo-element and the content property. Unicode range: U+0030-0031. The list-style-end value is radix.
octal
Eight digit system. The default starting point is ‘0’. Leading zeros are not rendered but can be customized using the ::list-marker pseudo-element and the content property. Unicode range: U+0030-0037. The list-style-end value is radix.
lower-hex and upper-hex
Sixteen digit system. The default starting point is ‘0’. Leading zeros are not rendered but can be customized using the ::list-marker pseudo-element and the content property. Unicode ranges for lower-hex: U+0030-0039, U+0061-0066; for upper-hex U+0030-0039, U+0041-0046. The list-style-end value is radix. See also deprecation notes.
lower-norwegian and upper-norwegian
The system is much like -latin systems, but has three additional letters in it. One of the values can be deprecated. The letters are as follows

Norwegian letters
NumberLettersUnicode Value
27æ or ÆU+00e6 or U+00c6
28ø or ØU+00f8 or U+00d8
29å or ÅU+00e5 or U+00c5

Thanks to Karl Ove Hufthammer for these values, he also mentioned that it would be convenient if the default stylesheet for Norwegian would not place periods after letters in case Norwegian values are used.

<uri>
Another way to specify customized lists. Currently, the format of the document containing such information is undefined but the value is reserved for future use in [CSS3-Lists] specification.

6. Mobile and Related Profiles Considerations

If any limited profiles are based on the CSS3 Lists [CSS3-Lists] specification and providing these profiles do not support all the properties (values) suggested in this note, the authors believe that the following considerations must be taken into account when defining any of such profiles:

  1. The list-style-items property is likely to require a lot of CPU power and memory, that is this property cannot be used on handheld devices, such as existing mobile phones and PDAs.
  2. The list-style-end property has no such restrictions although it should be mentioned that the radox value which is assigned to the lists in present desktop UAs might lead to illegible text on small display devices, such as existing mobile phones. Thus, a default value of reset can be a better choice.
  3. In case all of the list-style-type property values cannot be supported and a choice has to be done between various numbering systems (e. g., due to the CPU capabilities) the authors suppose the best policy is:
    1. If the choice is made between various Cyrillic numbering systems it is preferred that these systems are included or excluded in accordance with the number of native speakers of the corresponding language. For example, if languages with 5000000 and more native speakers only are supported then a hypothetical developer has to implement the numbering systems: Azerbaijani, Belorussian, Bulgarian, Kazakh, Kurd, Russian, Serbo-Croatian, Tajik, Tartar, Ukrainian, and Uzbek. And if the number of native speakers is limited to 10000000 then only Belorussian, Kazakh, Kurdish, Russian, Serbo-Croatian, Ukrainian, and Uzbek systems are left (though it’s worth adding Bulgarian here).
    2. If the choice is made between the two various numbering systems of Russia, russian-short numbering convention should be used. This applies only to limited devices and no discrimination should be made between the two Russian systems, that is both are equally important.
    3. If the choice is made between the two various numbering systems of Armenia, armenian or armenian-short numbering convention should be used. This applies only to limited devices and no discrimination should be made between the two Armenian systems, that is both are equally important.
    4. If the choice is made between the two various numbering systems of Ukrain, -ukrainian-short numbering convention should be used. This applies only to limited devices and no discrimination should be made between the two Ukrainian systems, that is both are equally important.

7. Notes on Deprecation

Authors of this note believe a lot of list-style-type values burden both the specification and the implementations. [CSS3-Lists] needs to have these values deprecated or at least to discourage their use. The reasoning is provided as follows. Should the WG members decide it is worth deprecating these values authors of this note will disdraw their proposals and edit this note to accomodate the needed changes. On the other hand, if the Working Group finds it inappropriate to remove any existing values we suggest that all the proposed values are included into the upcoming specification (though with some notes which are described here).

The reasons for deprecation fall into two big groups.

  1. The first group includes systems which can be customized using the existing CSS2 properties and thus are not needed in the spec: disc, circle, square, box, decimal-leading-zero, upper-roman, lower-latin, upper-alpha, upper-latin, armenian, upper-armenian, upper-belorussian, upper-bulgarian, upper-macedonian, upper-russian, upper-russian-short, upper-serbo-croatian, upper-ukrainian, upper-ukrainian-short, upper-coptic, upper-greek, upper-hex. For this values in practice no special value is needed. Consider the following examples:

         
         li::list-marker { content: "\25a0" }  
         
        

    This fragment generates square markers before each list item.

         
         li::list-marker { content: counter(list-item, decimal) "." }
         li:nth-of-type(-n+9)::list-marker { content: "0" counter(list-item, decimal) "."}
         
        

    This fragment specifies decimal-leading-zero value.

    The reason for deprecation of lower-latin and upper-latin is fair: they are poorly implemented by popular browsers and are duplicates for lower-alpha and upper-alpha. Furthermore, their names are confusing, that is the Latin alphabet does not contain the letter ‘w’ or ‘W’ (Unicode codepoints U+0077 and U+0057 respectively), while these systems are supposed to have this letter. That’s why alpha- values will be a better choice.

         
         li::list-marker {
          content: counter(list-item, lower-alpha) ".";
          text-transform: uppercase;
         }
         li::list-marker {
          content: counter(list-item, lower-hex) ".";
          text-transform: uppercase;
         }
         
        

    This fragment specifies upper-alpha and upper-hex values.

    Among others, the reason for removing armenian from the specification is to stimulate correct implementaions. It is known that at least Mozilla 0.98 incorrectly implements this property. It should be note that the use of Mozilla’s system really spoils Armenian lists and confuses readers as this system is never employed.

    It is suggested to leave only the lower- values in because they are generally preferable to the upper- and it would be useful for backwards compatibility. Renaming of this values does not offer such compatibility.

  2. The second group consists of the values for which no information is available or such information is not authentic: hebrew, georgian, cjk-ideographic, simp-chinese-formal, simp-chinese-informal, trad-chinese-formal, trad-chinese-informal, japanese-formal, japanese-informal, arabic-indic, persian, devanagari, gurmukhi, gujarati, kannada, malayalam, bengali, tamil, telugu, thai, lao, myanmar, khmer, urdu, oriya

    Furthermore, some of these systems will be excessive in the specification due to extremely small amount of native speaker and/or users of the system. They can be customized with the means described in this note.

8. Suggested Action

8.1. Resources

The implementation of all the mentioned numbering systems will likely require a lot of time and resources. We suppose the Consortium does not have the necessary resources at its disposal. That is why the number of native speakers is provided almost for every language. Using this information as the basis the WG could choose the necessary amount of the list-style-type values to be included into the spec. If any resources are allocated for the purpose of investigating into various alphabets we suggest that the systems with the largest number of native speakers are investigated in the first place.

8.2. Consideration

We suggest that the WG considers the proposal and, if appropriate, adopts the note as a part of the forthcoming specification.

8.3. Unresolved Issues

Author of this note were unable to find any reasonable solutions for the issues related to the [CSS3-Lists]:

  1. How to express numerous Unicode values in a row. The MathML 2 specification [MathML2] (see, for example, http://www.w3.org/TR/2001/REC-MathML2-20010221/variants.html) uses the format of U+nnnn-nnnn to represent different characters in a row. On the other hand the Unicode Standard [Unicode3] states this format should be used for intervals (see, for example, http://www.unicode.org/unicode/uni2book/Preface.pdf). The [CSS2] standard in its urange data type uses the Unicode convention. This note uses MathML’s convention to express various Unicode values in a row. Unicode ranges are explicitly marker as such.

    A possible solution for this might be the format of list-style-items: 1(U+nnnn, U+nnnn) 14(U+nnnn, U+nnnn, U+nnnn) countername etc. or to use escaping instead.

  2. Authors have not tested the shorthand list-style property for backwards-compatibility if new properties are added.

  3. The name for the list-style-items property. Should it be list-style-item, list-style-items, list-counter, or anything else? This note uses list-style-items.

  4. The name for the radix value of the list-style-end property. Should it be radix, add-letter, or anything else? This note uses radix.

  5. The name for the last-character value of the list-style-end property. Should it be last-character, fixed, frozen, terminal, fixed-final, or anything else? This note uses last-character.

  6. Another proposed way to shortend the vocabulary of the list-style-type property was to make the modifier a separate attribute, like list-style-property. So definitions could set up as:

        
        ol { list-style-end: reset;
            list-style-type: russian; 
            list-style-properties: "lower,short"; }
        
       
  7. Is there a need for upper-greek value?

  8. The authors are waiting for the feedback concerning various Cyrillic systems. This feedback would be highly appreciated and can be sent to either the www-style@w3.org mailing list (archive or the authors. The need for such systems is still being investigated.

  9. Is there a need for shorthand values for all the list-style-type values (as for armenian, due to mistake)?

  10. A more descriptive name for the ::marker pseudo element. CSS3 authors decided to take ::list-marker. Other possible names can be ::bulet, ::score etc. This note uses ::list-marker.

  11. The obvious issue connected with the list-style-items property is backwards-incompatibility. Authors suggest to follow the practice which is desribed below.

    One possible way to avoid undefined results on rendering is to apply cascading rules:

    In case list-style-items is unsupported lower-alpha will be used instead. Furthermore, if the list which the property is applied to contains more than three items lower-alpha will be used for the rest of them.

         
         ol { list-style-type: lower-alpha;
              list-style-items: U+0046-0069-0072-0073-0074,
                                U+0053-0065-0063-006f-006e-0064,
                                U+0054-0068-0069-0072-0064;
         }
         
        

    Another way to customize list could be:

    The next example could cause major compatibility problems and thus is provided here for informational reasons only.

         
         ol { list-style-type: items(U+0046-0069-0072-0073-0074,
                                     U+0053-0065-0063-006f-006e-0064,
                                     U+0054-0068-0069-0072-0064),
                                     lower-alpha
         }
         
        

    Yet another way to customize list (according to the current CSS3 work):

         
         li:nth-of-type(1)::list-marker { content: "First. "; }
         li:nth-of-type(2)::list-marker { content: "Second. "; }
         li:nth-of-type(3)::list-marker { content: "Third. "; }
         
        
  12. The names for -russian values. Should it be lower-russian for long lists and lower-russian-short for long one or should it be changed to lower-russian for short lists and lower-russian-long for long lists (or lower-russian-traditional and lower-russian respectively). The same issue applies to Ukrainian lists. This note uses the former convention.

  13. A future level of CSS may provide a way to specify different bullet types at arbitrary nesting levels. This is not directly addressed in the note, though authors believe that this issue is in the scope of Generated Content module [CSS3-Content], particularly the content property.

  14. Negative integers have not been investigated, do suggest that absolute value be used always?
  15. Default XHTML 1.1/2.0 stylesheet. Should one be provided? If yes, how to define lists: via pure text or via CSS syntax (CSS3 selectors [CSS3-Selectors])?

8.4. Further Help

To help with this work, we expect to be able to provide the necessary resources to the WG. That is any details concerning the proposed numbering conventions as well as details concerning the proposed properties and modifications.

Appendix A. References

[CSS1]
Håkon Wium Lie, Bert Bos. Cascading Style Sheets, level 1. W3C Recommendation 17 December 1996, revised 11 January 1999.
http://www.w3.org/TR/1999/REC-CSS1-19990111
[CSS2]
Bert Bos, Håkon Wium Lie, Chris Lilley, Ian Jacobs. Cascading Style Sheets, level 2. W3C Recommendation 12 May 1998.
http://www.w3.org/TR/1998/REC-CSS2-19980512
[CSS3-Content]
Authors. CSS3 module: Generated Content. W3C Working Draft date.
No link available
[CSS3-Lists]
Tantek Çelik, Ian Hickson. CSS3 module: Lists. W3C Working Draft 20 February 2002.
http://www.w3.org/TR/2002/WD-css3-lists-20020220
[CSS3-Selectors]
Daniel Glazman, Tantek Çelik, Ian Hickson. Selectors. W3C Candidate Recommendation 13 November 2001.
http://www.w3.org/TR/2001/CR-css3-selectors-20011113
[HTML32]
Dave Raggett. HTML 3.2 Reference Specification. W3C Recommendation 14 January 1997.
http://www.w3.org/TR/REC-html32
[MathML2]
Ron Ausbrooks, Stephen Buswell, Stéphane Dalmas, Stan Devitt, Angel Diaz, Roger Hunter, Bruce Smith, Neil Soiffer, Robert Sutor, Stephen Watt. Mathematical Markup Language (MathML) Version 2.0. W3C Recommendation 21 February 2001.
http://www.w3.org/TR/2001/REC-MathML2-20010221
[Unicode3]
The Unicode Consortium. The Unicode Standard, Version 3.0. Addison-Wesley Longman, Inc., Reading MA, 2000, XXX + 1040. ISBN 0-201-61633-5.
http://www.unicode.org/unicode/standard/standard.html
Valid XHTML 1.1!
Created: 2002-07-30T20:54:00+03:00
Modified: 2002-10-17T09:56:02+03:00