CSS is a language for describing the rendering of structured documents (such as HTML and XML) on screen, on paper, in speech, etc. This draft contains the features of CSS level 3 relating to list styling. It includes and extends the functionality of CSS level 2 [[!CSS21]], which builds on CSS level 1 [[CSS1]]. The main extensions compared to level 2 are a pseudo-element representing the list marker, a new ''hanging'' value for 'list-style-position', and a method for authors to define their own list-styles.
The list model in this module differs in some important ways from the list model in CSS2, specifically in its handling of markers. Implementation experience suggested the CSS2 model overloaded the ::before and ::after pseudo-elements with too much behavior, while at the same time introducing new properties when existing properties were sufficient.
Most block-level elements in CSS generate one principal block box. In this module, we discuss two CSS mechanisms that cause an element to have an associated marker: one method associates one principal block box (for the element's content) with a separate marker box (for decoration such as a bullet, image, or number), and the other inserts a marker box into the principal box. Unlike :before and :after content, the marker box cannot affect the position of the principal box, whatever the positioning scheme.
For instance, the following example illustrates how markers may be used to add parentheses around each numbered list item. This HTML application and style sheet:
<!doctype html>
<html>
<head>
<title>Creating a list with markers</title>
<style>
li::marker { content: "(" counter(list-item, lower-roman) ")"; }
li { display: list-item; }
</style>
</head>
<body>
<ol>
<li>This is the first item.</li>
<li>This is the second item.</li>
<li>This is the third item.</li>
</ol>
</body>
</html>
should produce something like this:
(i) This is the first item. (ii) This is the second item. (iii) This is the third item.
With descendant selectors and child selectors, it's possible to specify different marker types depending on the depth of embedded lists.
A future release of this module will probably include ways to render tree lists.
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 ''list-item''. (This does not affect the specified or computed values of the counter properties.)
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.
The CSS3 box module may define other 'display' values which generate a list marker. These should also affect the ''list-item'' counter.
Note that this new model makes the ''marker'' display type redundant. That display type is therefore obsolete in the CSS3 Lists model.
| Name: | list-style-type |
|---|---|
| Value: | <string> | <counter-style> | none |
| Initial: | disc |
| Applies To: | all elements with ''display: list-item'' |
| Inherited: | yes |
| Media: | visual |
| Computed Value: | specified value |
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, and a string value uses the given string; otherwise, the value specifies a <counter-style> which is used to format the value of the ''list-item'' counter.
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.
The UA style sheet 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.
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.
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.
UAs must not allow the definition of the ''decimal'' counter style given in Appendix A to be overridden.
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.
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.
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.
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.
The Ethiopian numbering system is defined for all positive non-zero numbers. The following algorithm converts decimal digits to ethiopic numbers.
| Tens | Units | ||||
|---|---|---|---|---|---|
| Values | Codepoints | Values | Codepoints | ||
| 10 | ፲ | U+1372 | 1 | ፩ | U+1369 |
| 20 | ፳ | U+1373 | 2 | ፪ | U+136A |
| 30 | ፴ | U+1374 | 3 | ፫ | U+136B |
| 40 | ፵ | U+1375 | 4 | ፬ | U+136C |
| 50 | ፶ | U+1376 | 5 | ፭ | U+136D |
| 60 | ፷ | U+1377 | 6 | ፮ | U+136E |
| 70 | ፸ | U+1378 | 7 | ፯ | U+136F |
| 80 | ፹ | U+1379 | 8 | ፰ | U+1370 |
| 90 | ፺ | U+137A | 9 | ፱ | U+1371 |
This system is defined for all numbers greater than zero. For zero and negative numbers, instead construct the representation of the counter value using the ''decimal'' style.
The suffix for the ethiopic-numeric numbering systems is a dot (. U+002E FULL STOP). Is there a better suffix to use? The alphabetic ethiopic systems use a different suffix.
The decimal number 100, in ethiopic, is ፻ U+137B
The decimal number 78010092, in ethiopic, is ፸፰፻፩፼፻፺፪ U+1378 U+1370 U+137B U+1369 U+137C U+137B U+137A U+136A.
The decimal number 780000001092, in ethiopic, is ፸፰፻፩፼፻፼፻፺፪ U+1378 U+1370 U+137B U+1369 U+137C U+137B U+137C U+137B U+137A U+136A.
Chinese, Japanese, and Korean all share almost identical "spoken-out" counter styles, which are roughly similar to using "one, two, three..." in English. The Chinese and Japanese styles are defined for all numbers between -1016 and 1016, exclusive; the Korean styles are defined for all non-negative numbers less than 1016. All of the styles are defined by almost identical algorithms (specified as a single algorithm here, with the differences called out when relevant), but use different sets of characters. The list following the algorithm gives the name of each counter style using this algorithm, and the individual character sets used by each style.
For legacy reasons, the counter style ''cjk-ideographic'' must be treated as an alias for ''trad-chinese-informal''.
For all of these counter styles, the suffix is "、" U+3001, the prefix is the empty string, the fallback style is ''decimal'', and the upper range bound is 9999 9999 9999 9999 (one less than 1016). For the Chinese and Japanese styles, the lower range bound is -9999 9999 9999 9999 (one more than -1016); for the Korean styles the lower range bound is 0.
The following tables define the characters used in these styles:
| Values | Codepoints |
|---|---|
| Digit 0 | 零 U+96F6 |
| Digit 1 | 一 U+4E00 |
| Digit 2 | 二 U+4E8C |
| Digit 3 | 三 U+4E09 |
| Digit 4 | 四 U+56DB |
| Digit 5 | 五 U+4E94 |
| Digit 6 | 六 U+516D |
| Digit 7 | 七 U+4E03 |
| Digit 8 | 八 U+516B |
| Digit 9 | 九 U+4E5D |
| Second Digit Marker | 十 U+5341 |
| Third Digit Marker | 百 U+767E |
| Fourth Digit Marker | 千 U+5343 |
| Second Group Marker | 万 U+4E07 |
| Third Group Marker | 亿 U+4EBF |
| Fourth Group Marker | 万亿 U+4E07 U+4EBF |
| Negative Sign | 負 U+8D1F |
| Values | Codepoints |
|---|---|
| Digit 0 | 零 U+96F6 |
| Digit 1 | 壹 U+58F9 |
| Digit 2 | 贰 U+8D30 |
| Digit 3 | 叁 U+53C1 |
| Digit 4 | 肆 U+8086 |
| Digit 5 | 伍 U+4F0D |
| Digit 6 | 陆 U+9646 |
| Digit 7 | 柒 U+67D2 |
| Digit 8 | 捌 U+634C |
| Digit 9 | 玖 U+7396 |
| Second Digit Marker | 拾 U+62FE |
| Third Digit Marker | 佰 U+4F70 |
| Fourth Digit Marker | 仟 U+4EDF |
| Second Group Marker | 万 U+4E07 |
| Third Group Marker | 亿 U+4EBF |
| Fourth Group Marker | 万亿 U+4E07 U+4EBF |
| Negative Sign | 負 U+8D1F |
| Values | Codepoints |
|---|---|
| Digit 0 | 〇 U+3007 |
| Digit 1 | 一 U+4E00 |
| Digit 2 | 二 U+4E8C |
| Digit 3 | 三 U+4E09 |
| Digit 4 | 四 U+56DB |
| Digit 5 | 五 U+4E94 |
| Digit 6 | 六 U+516D |
| Digit 7 | 七 U+4E03 |
| Digit 8 | 八 U+516B |
| Digit 9 | 九 U+4E5D |
| Second Digit Marker | 十 U+5341 |
| Third Digit Marker | 百 U+767E |
| Fourth Digit Marker | 千 U+5343 |
| Second Group Marker | 万 U+4E07 |
| Third Group Marker | 億 U+5104 |
| Fourth Group Marker | 兆 U+5146 |
| Negative Sign | マイナス U+30DE U+30A4 U+30CA U+30B9 |
| Values | Codepoints |
|---|---|
| Digit 0 | 零 U+96F6 |
| Digit 1 | 壱 U+58F1 |
| Digit 2 | 弐 U+5F10 |
| Digit 3 | 参 U+53C2 |
| Digit 4 | 四 U+56DB |
| Digit 5 | 伍 U+4f0D |
| Digit 6 | 六 U+516D |
| Digit 7 | 七 U+4E03 |
| Digit 8 | 八 U+516B |
| Digit 9 | 九 U+4E5D |
| Second Digit Marker | 拾 U+62FE |
| Third Digit Marker | 百 U+767E |
| Fourth Digit Marker | 阡 U+9621 |
| Second Group Marker | 萬 U+842C |
| Third Group Marker | 億 U+5104 |
| Fourth Group Marker | 兆 U+5146 |
| Negative Sign | マイナス U+30DE U+30A4 U+30CA U+30B9 |
| Values | Codepoints |
|---|---|
| Digit 0 | 영 U+C601 |
| Digit 1 | 일 U+C77C |
| Digit 2 | 이 U+C774 |
| Digit 3 | 삼 U+C0BC |
| Digit 4 | 사 U+C0AC |
| Digit 5 | 오 U+C624 |
| Digit 6 | 육 U+C721 |
| Digit 7 | 칠 U+CE60 |
| Digit 8 | 팔 U+D314 |
| Digit 9 | 구 U+AD6C |
| Second Digit Marker | 십 U+C2ED |
| Third Digit Marker | 백 U+BC31 |
| Fourth Digit Marker | 천 U+CC9C |
| Second Group Marker | 만 U+B9CC |
| Third Group Marker | 억 U+C5B5 |
| Fourth Group Marker | 조 U+C870 |
| Values | Codepoints' |
|---|---|
| Digit 0 | 零 U+96F6 |
| Digit 1 | 一 U+4E00 |
| Digit 2 | 二 U+4E8C |
| Digit 3 | 三 U+4E09 |
| Digit 4 | 四 U+56DB |
| Digit 5 | 五 U+4E94 |
| Digit 6 | 六 U+516D |
| Digit 7 | 七 U+4E03 |
| Digit 8 | 八 U+516B |
| Digit 9 | 九 U+4E5D |
| Second Digit Marker | 十 U+5341 |
| Third Digit Marker | 百 U+767E |
| Fourth Digit Marker | 千 U+5343 |
| Second Group Marker | 萬 U+842C |
| Third Group Marker | 億 U+5104 |
| Fourth Group Marker | 兆 U+5146 |
| Values | Codepoints' |
|---|---|
| Digit 0 | 零 U+96F6 |
| Digit 1 | 壹 U+58F9 |
| Digit 2 | 貳 U+8CB3 |
| Digit 3 | 參 U+53C3 |
| Digit 4 | 四 U+56DB |
| Digit 5 | 五 U+4E94 |
| Digit 6 | 六 U+516D |
| Digit 7 | 七 U+4E03 |
| Digit 8 | 八 U+516B |
| Digit 9 | 九 U+4E5D |
| Second Digit Marker | 拾 U+62FE |
| Third Digit Marker 百 | U+767E |
| Fourth Digit Marker | 仟 U+4EDF |
| Second Group Marker | 萬 U+842C |
| Third Group Marker | 億 U+5104 |
| Fourth Group Marker | 兆 U+5146 |
Note: Chinese, Japanese, and Korean spoken-out numbering (what this section defines) is actually defined up to 1072. Numbers higher than 1016 are usually written in scientific notation, however, and there is some variation in the group markers used for such numbers, so the algorithm has been intentionally defined only to 1016.
| Name: | list-style-image |
|---|---|
| Value: | <image> | none |
| Initial | none |
| Applies To: | all elements with ''display: list-item'' |
| Inherited: | yes |
| Media: | visual |
| Computed Value: | specified value |
This property sets the image that will be used as the list item marker. When the <image> resolves to a valid image, it is used as the default contents of ''::marker'' instead of the value specified by 'list-style-type'.
If the value ''none'' is provided, or the <image> doesn't resolve to a valid image, then the default contents are given by 'list-style-type' instead.
The following example sets the marker at the beginning of each list item to be the image "ellipse.png".
LI { list-style-image: url("http://www.example.com/ellipse.png") }
If a ''::marker'' pseudo-element has its 'content' property set to ''normal'', the following algorithm should be used to generate the computed value of the property.
Given the following style sheet:
li { display: list-item; list-style-type: decimal /* initial value */; }
li::marker { content: normal /* initial value */; }
And the following document fragment:
<li>List Item</li>
The computed value of the 'content' property on the ''::marker'' pseudo-element of the list item element is:
counter(list-item, decimal) "."
| Name: | list-style-position |
|---|---|
| Value: | inside | hanging | outside |
| Initial: | outside |
| Applies To: | all elements with ''display: list-item'' |
| Inherited: | yes |
| Media: | visual |
| Computed Value: | specified value |
This property specifies the position of the ''::marker'' pseudo-element's box in the list item. Values have the following meanings:
Inline markers have some special behavior wrt white-space collapsing at the beginning of the list-item. I need to figure this out and spec it. (Since I have hanging and outside markers be abspos, it doesn't apply to them.)
Are the positioning rules for ''hanging'' and ''outside'' good?
Note that a marker is only generated if the computed value of the 'content' property for the element's ''::marker'' pseudo-element is not ''none''.
For example:
<!doctype html>
<html>
<head>
<title>Comparison of inside/outside position</title>
<style>
ul { list-style: outside; }
ul.compact { list-style: inside; }
</style>
</head>
<body>
<ul>
<li>first list item comes first</li>
<li>second list item comes second</li>
</ul>
<ul class=compact>
<li>first list item comes first</li>
<li>second list item comes second</li>
</ul>
</body>
</html>
The above example may be formatted as:

In right-to-left text, the markers would have been on the right side of the box.
| Name: | list-style |
|---|---|
| Value: | <'list-style-type'> || <'list-style-position'> || <'list-style-image'> |
| Initial: | N/A (shorthand property) |
| Applies To: | all elements with ''display: list-item'' |
| Media: | visual |
| Computed Value; | N/A (shorthand property) |
The 'list-style' property is a shorthand notation for setting the three properties 'list-style-type', 'list-style-image', and 'list-style-position' at the same place in the style sheet.
For example:
UL { list-style: upper-roman inside } /* Any UL */
UL > UL { list-style: circle outside } /* Any UL child of a UL */
Using a value of ''none'' in the shorthand is potentially ambiguous, as ''none'' is a valid value for both 'list-style-image' and 'list-style-type'; to resolve this ambiguity, a value of ''none'' in the shorthand must be applied to whichever of the two properties aren't otherwise set by the shorthand.
list-style: none disc; /* Sets the image to ''none'' and the type to ''disc''. */ list-style: none url(bullet.png); /* Sets the image to ''url(bullet.png)'' and the type to ''none''. */ list-style: none; /* Sets both image and type to ''none''. */ list-style: none disc url(bullet.png); /* Syntax error */
Although authors may specify 'list-style' information directly on list item elements (e.g., LI in HTML), they should do so with care. The following rules look similar, but the first declares a descendant selector and the second a (more specific) child selector.
OL.alpha LI { list-style: lower-alpha } /* Any LI descendant of an OL */
OL.alpha > LI { list-style: lower-alpha } /* Any LI child of an OL */
Authors who use only the descendant selector may not achieve the results they expect. Consider the following rules:
<!doctype html>
<html>
<head>
<title>WARNING: Unexpected results due to cascade</title>
<style>
ol.alpha li { list-style: lower-alpha; }
ul li { list-style: disc; }
</style>
</head>
<body>
<ol class=alpha>
<li>level 1
<ul>
<li>level 2</li>
</ul>
</li>
</ol>
</body>
</html>
The desired rendering would have level 1 list items with 'lower-alpha' labels and level 2 items with 'disc' labels. However, the cascading order will cause the first style rule (which includes specific class information) to mask the second. The following rules solve the problem by employing a child selector instead:
OL.alpha > LI { list-style: lower-alpha }
UL LI { list-style: disc }
Another solution would be to specify 'list-style' information only on the list type elements:
OL.alpha { list-style: lower-alpha }
UL { list-style: disc }
Inheritance will transfer the 'list-style' values from OL and UL elements to LI elements. This is the recommended way to specify list style information.
Markers are created by setting an element's 'display' property to ''list-item''. The ''list-item'' display type is, in every other respect, identical to the ''block'' display type. The marker box is only created if the computed value of the 'content' property for the pseudo-element is not ''none''.
Just like other generated content, markers generate a box when they're created, which has margins, border, padding, and everything else a box normally has. Markers are placed at the beginning of their superior parent's content, immediately before a ''::before'' pseudo-element on the same superior parent. Marker boxes are inline-block by default, and so a value of ''auto'' for 'width' resolves to the width of the marker's content. The value of 'list-style-position' on the marker's superior parent can vary the marker's directionality and the initial value of its ''position'' property.
In the following example, the content is centered within a marker box of a fixed width. This document:
<!doctype html>
<html>
<head>
<title>Content alignment in the marker box</title>
<style>
LI::marker {
content: "(" counter(counter) ")";
width: 6em;
text-align: center;
}
LI {
display: list-item;
counter-increment: counter;
}
</style>
</head>
<body>
<ol>
<li>This is the first item.</li>
<li>This is the second item.</li>
<li>This is the third item.</li>
</ol>
</body>
</html>
should render something like this:
(1) This is the
first item.
(2) This is the
second item.
(3) This is the
third item.
The next example uses markers to number notes (paragraphs).
The following document:
<!doctype html>
<html>
<head>
<title>Markers to create numbered notes</title>
<style>
P { margin-left: 12 em; }
P.Note::marker {
content: url("note.gif") "Note " counter(note-counter) ":";
text-align: left;
width: 10em;
}
P.Note {
display: list-item;
counter-increment: note-counter;
}
</style>
</head>
<body>
<p>This is the first paragraph in this document.</p>
<p class="Note">This is a very short document.</p>
<p>This is the end.</p>
</body>
</html>
should render something like this:
This is the first paragraph
in this document.
Note 1: This is a very short
document.
This is the end.
The following example illustrates how markers may be offset from their element. This HTML application and style sheet:
<!doctype html>
<html>
<head>
<title>Marker example</title>
<style>
P { margin-left: 8em } /* Make space for counters */
LI::marker { margin: 0 3em 0 0; content: counter(list-item, lower-roman) "."; }
LI { display: list-item }
</style>
</head>
<body>
<p>This is a long preceding paragraph ...</p>
<ol>
<li>This is the first item.</li>
<li>This is the second item.</li>
<li>This is the third item.</li>
</ol>
<p>This is a long following paragraph ...</p>
</body>
</html>
should render something like this:
This is a long preceding
paragraph ...
i. This is the first item.
ii. This is the second item.
iii. This is the third item.
This is a long following
paragraph ...
(Note the use of the implicit counter increment.)
CSS 2.1 defined a handful of useful counter styles based on the styles that HTML traditionally allowed on ordered and unordered lists. This tiny set, though, is quite inadequate for modern web pages; displaying an ordered list with markers based on the latin alphabet while the content is Arabic seems quite incongruous!
Unfortunately, the set of potentially useful list styles is too large to specify ahead-of-time - the world contains thousands of languages and hundreds of scripts, not to mention the near-infinite stylistic variations found on the web that go beyond mere languaged-based variation. The ''@counter-style'' rule allows CSS to address this in an open-ended manner, by allowing the author to define their own counter styles. These styles can then be used in the 'list-style-type' property or in the ''counter()'' and ''counters()'' functions, exactly like the predefined counter styles in CSS.
The ''@counter-style'' rule is defined as:
@counter-style <counter-style-name> {
type:
range:
glyphs:
additive-glyphs:
cjk-glyphs:
prefix:
suffix:
fallback:
}
Copy the way other specs define new @-rules that contain decl blocks, like @font-face.
The <counter-style-name> must be be a valid identifier, and must not be ''decimal'', ''inside'', ''outside'', or ''hanging''; violating these rules is a syntax error and must cause the @counter-style block to be ignored.
Omitting the 'type' property in a @counter-style block is a syntax error and must cause the @counter-style block to be ignored. A @counter-style block must contain exactly one of 'glyphs', 'additive-glyphs', or 'cjk-glyphs'; containing none of them or more than one of them is a syntax error and must cause the @counter-style block to be ignored. Further, which of those three is present must match the 'type' value: if the type is ''additive'', the 'additive-glyphs' property must be present; if the type is ''cjk'', the 'cjk-glyphs' property must be present; if the type is any other valid type, the 'glyphs' property must be present. Violating any of the conditions in the preceding sentence is a syntax error and must cause the @counter-style block to be ignored. Individual types may impose additional requirements on the value of the 'glyphs' property; if so, violating these requirements is a syntax error and must cause the @counter-style block to be ignored.
The meaning and values of each of the properties are defined in the following section.
The 'type' property specifies which algorithm will be used to construct the counter's representation based on the counter value. For example, ''repeating'' type counter styles just cycle through their glyphs repeatedly, while ''numeric'' type counter styles interpret their glyphs as digits and build their representation accordingly. It is defined as:
<counter-type> = repeating | numeric | alphabetic | symbolic | [ non-repeating <integer>? ] | cjk | additive
If the type is ''repeating'', the 'glyphs' property must contain at least one counter glyph. This type is defined over all counter values.
The ''repeating'' counter type cycles repeatedly through its provided glyphs, looping back to the beginning when it falls off the end of the list. It can be used for simple bullets (just provide a single counter glyph), or for cycling through multiple bullets. The first counter glyph is used as the representation of the value 1, the second counter glyph (if it exists) is used as the representation of the value 2, etc.
In general, if there are N counter glyphs and
a representation is being constructed for the value I,
the representation is the counter glyph at index I mod N
of the list of counter glyphs (indexed from 0).
The mod must return a non-negative number
for these purposes. If an implementation of mod returns
a negative value for negative inputs, add N to the resultant
value to make it non-negative.
A 'triangle bullet' list style can be defined with code like:
@counter-style triangle {
type: repeating;
glyphs: "▶";
}
It will then produce lists that look like:
▶ First item ▶ Second item ▶ Third item
If the type is ''numeric'', the 'glyphs' property must contain at least two counter glyphs. This type is defined over all counter values.
The ''numeric'' counter type cycles interprets the list of counter glyphs as digits to a number system.
The first counter glyph in the list is interpreted as the digit 0, the second as the digit 1, and so on. If there are N counter glyphs, the representation is a base N number using the counter glyphs as digits.
To construct the representation, run the following algorithm. Let
N be the length of the list of counter glyphs,
I initially be the counter value, S
initially be the empty string, negative be a boolean flag
that is initially false, and glyph(n) be the nth
counter glyph in the list of counter glyphs (0-indexed).
glyph(0) to
S and return S.glyph( I mod N )
to S.floor( I / N ).Example here.
If the type is ''alphabetic'', the 'glyphs' property must contain at least two counter glyphs. This type is defined only over positive counter values.
The ''alphabetic'' counter type interprets the list of counter glyphs as digits to an alphabetic numbering system. Alphabetic numbering systems do not contain a digit representing 0. Alphabetic numbering systems are sometimes used, for example, to number spreadsheet cells
The first counter glyph in the list is interpreted as the digit 1, the second as the digit 2, and so on. If there are N counter glyphs, the representation is a base N alphabetic number using the counter glyphs as digits.
To construct the representation, run the following algorithm. Let
N be the length of the list of counter glyphs,
I initially be the counter value, S initially
be the empty string, and glyph(n) be the nth counter glyph
in the list of counter glyphs (0-indexed).
While I is not equal to 0:
I - 1.glyph( I mod N )
to S.floor( I / N ).Finally, return S.
Example here.
If the type is ''symbolic'', the 'glyphs' property must contain at least one counter glyph. This type is defined over positive counter values.
The ''symbolic'' counter type is meant to simulate "footnote"-style counters and similar. It cycles through its list of glyphs repeatedly, first just presenting the glyph itself, then the glyph doubled, then tripled, etc.
To construct the representation, let N be the length of
the list of counter glyphs,I initially be the counter
value, S initially be the empty string, and glyph(n)
be the nth counter glyph in the list of counter glyphs
(0-indexed). Append glyph( I mod N )
to S floor( (I - 1) / N )
times, then return S.
Example here.
If the type is ''non-repeating'', the 'glyphs' property must contain at least one counter glyph. This type is defined over counter values in a finite range, starting with the first glyph value and having a length equal to the length of the list of counter glyphs.
When this type is specified, it may optionally have an integer provided after it, which sets the first glyph value. If it is omitted, the first glyph value is 1.
The ''non-repeating'' counter type is for representing counter styles that only have a finite number of representations. For example, Unicode defines several limited-length runs of special characters meant for lists, such as circled digits.
The first counter glyph is the representation for the first glyph value, and subsequent counter values are represented by subsequent counter glyphs. Once the list of counter glyphs is exhausted, further values cannot be represented by this type, and must drop down to the fallback counter style.
Example here.
If the type is ''additive'', the 'additive-glyphs' property must contain at least one additive tuple. This type is nominally defined over all positive counter values (see algorith, below, for exact details)
The ''additive'' counter type can be used to implement roman numerals, and additionally is used to represent the numbering system of several languages which use different digits for each position in a number.
To construct the representation, let I initially be the counter value, S initially be the empty string, and glyph list initially be the list of additive tuples.
If I is initially 0, and there is an additive tuple with a weight of 0, append that tuple's counter glyph to S and return S.
Otherwise, while I is greater than 0 and there are elements left in the glyph list:
floor( I / current tuple's weight )
times (this may be 0).If the loop ended because I is 0, return S. If the loop ended because there were no elements left in the glyph list but I is not 0, then the counter style cannot represent this value, and must instead drop down to its fallback counter style.
Example here.
The ''cjk'' counter type is defined for all counter values between 1 and 10^XXX - 1. It is used to represent the counter styles commonly used in Chinese, Japanese, and Korean script lists.
Describe the algorithm here. Apparently, the spec algorithm is wrong for both japanese forms, and at least chinese-trad-informal. I'll have to figure out if it's even possible to handle this with a generic algorithm, or if I should just put them all in the special-case list.
The 'range' property defines the range over which the counter style is defined. If a counter style is used to represent a counter value outside of its range, the counter style instead drops down to its fallback counter style. The property is defined as:
<counter-range> = [<integer> | infinite]{2}
The first value represents the lower bound of the range (with 'infinite' representing negative infinity), and the second value represents the upper bound of the range (with 'infinite' representing positive infinity). This is an inclusive range - it includes both the lower and upper bound numbers. It is a syntax error for the lower bound to be higher than the upper bound, and must cause the @counter-style block to be ignored.
Some counter style types have their own implicit ranges, specified above in the individual descriptions for each type. The range specified by the 'range' property is applied after the implicit type-based range, and can only tighten the range (that is, make the lower bound higher or the upper bound lower). It is not an error to specify a 'range' value larger than the implicit range; the part of the range outside the implicit range simply has no effect.
The 'glyphs' property specifies the counter glyphs used by several of the counter style types to construct their representations. It is defined as:
<counter-glyphs> = [ <string> | <image> ]+
Some counter style types specify that the 'glyphs' property must have at least two entries. If the counter style's type is set to such a type, it is a syntax error to have less than two entries in the 'glyphs' property and must cause the @counter-style block to be ignored.
Each entry in the 'glyphs' property is a counter glyph.
Add example of string glyphs.
Add example of image glyphs.
The 'prefix' property specifies a string that is placed before the representation of the counter value when constructing the default contents of the ::marker pseudo-element. It is defined as:
<counter-prefix> = <string>
If the 'prefix' property is omitted or invalid, its initial value is "" (the empty string).
The 'suffix' property specifies a string that is placed after the representation of the counter value when constructing the default contents of the ::marker pseudo-element. It is defined as:
<counter-suffix> = <string>
If the 'suffix' property is omitted or invalid, its initial value is "." U+002E FULL STOP.
The 'fallback' property specifies a fallback counter style. When the given counter style cannot generate a representation for a counter value (for example, if the counter value is outside the range for the counter style), the representation is instead generated by the fallback counter style. It is defined as:
<counter-style-fallback> = <counter-style-name>
If the 'fallback' property is omitted, invalid, or refers to a non-existent counter style, its initial value is 'decimal' (which is guaranteed to be defined).
This module has two profiles: CSS Level 1 and Full. There is no CSS2 profile because this module is incompatible with the CSS2 list model.
The CSS Level 1 module consists of 'list-style', 'list-style-position', 'list-style-image', and 'list-style-type' (but only the following values: 'disc', 'circle, square', 'decimal', 'lower-roman', 'upper-roman', 'lower-alpha', 'upper-alpha', 'none'). It does not include the ::marker pseudo element.
The Full profile contains everything.
This section is informative, nor normative. HTML itself defines the actual default properties that apply to HTML lists.
/* Set up list items */
li {
display: list-item;
/* counter-increment: list-item; (implied by display: list-item) */
}
/* Set up ol and ul so that they reset the list-item counter */
ol, ul {
counter-reset: list-item;
}
/* Default list style types for ordered lists */
ol {
list-style-type: decimal;
}
/* Default list style types for unordered lists up to 3 deep */
ul { list-style-type: disc; }
ul ul { list-style-type: square; }
ul ul ul { list-style-type: circle; }
/* The type attribute on ol and ul elements */
ul[type="disc"] { list-style-type: disc; }
ul[type="circle"] { list-style-type: circle; }
ul[type="square"] { list-style-type: square; }
ol[type="1"] { list-style-type: decimal; }
ol[type="a"] { list-style-type: lower-alpha; }
ol[type="A"] { list-style-type: upper-alpha; }
ol[type="i"] { list-style-type: lower-roman; }
ol[type="I"] { list-style-type: upper-roman; }
/* The start attribute on ol elements */
ol[start] {
counter-reset: list-item attr(start, integer, 1);
counter-increment: list-item -1;
}
/* The value attribute on li elements */
li[value] {
counter-reset: list-item attr(value, integer, 1);
counter-increment: none;
}
/* Box Model Rules */
ol, ul {
display: block;
margin: 1em 0;
padding-left: 40px;
}
ol ol, ol ul, ul ul, ul ol {
margin-top: 0;
margin-bottom: 0;
}
li {
text-align: match-parent;
}
li::marker {
display: inline-block;
margin-right: 1em;
text-align: end;
/* 'position' implied by list-style-position */
}
While this specification defines a mechanism to allow authors to define almost any counter style they would want, forcing authors to redefine common styles every time they are used would be unnecessarily onerous. To aid in this regard, this specification predefines a large set of counter styles. User agents must include the following stylesheet as a user-agent stylesheet, so authors can depend on these styles being present.
As with any ''@counter-style'' rule, the counter style definitions given here can be overridden by the author if they desire to attach a different style to a counter style name defined in this stylesheet.
/* Glyph-based */
@counter-style box {
type: repeating;
glyphs: '\u25A0';
/* '■' */
suffix: '';
}
@counter-style check {
type: repeating;
glyphs: '\u2713';
/* '✓' */
suffix: '';
}
@counter-style circle {
type: repeating;
glyphs: '\u25E6';
/* '◦' */
suffix: '';
}
@counter-style diamond {
type: repeating;
glyphs: '\u25C6';
/* '◆' */
suffix: '';
}
@counter-style disc {
type: repeating;
glyphs: '\u2022';
/* '•' */
suffix: '';
}
@counter-style dash {
type: repeating;
glyphs: '\u2014';
/* '—' */
suffix: '';
}
@counter-style square {
type: repeating;
glyphs: '\u25A0';
/* '■' */
suffix: '';
}
/* Numeric */
@counter-style arabic-indic {
type: numeric;
glyphs: '\u660' '\u661' '\u662' '\u663' '\u664' '\u665' '\u666' '\u667' '\u668' '\u669';
/* '٠' '١' '٢' '٣' '٤' '٥' '٦' '٧' '٨' '٩' */
}
@counter-style bengali {
type: numeric;
glyphs: '\u9E6' '\u9E7' '\u9E8' '\u9E9' '\u9EA' '\u9EB' '\u9EC' '\u9ED' '\u9EE' '\u9EF';
/* '০' '১' '২' '৩' '৪' '৫' '৬' '৭' '৮' '৯' */
}
@counter-style binary {
type: numeric;
glyphs: '\u30' '\u31';
/* '0' '1' */
}
@counter-style burmese {
type: numeric;
glyphs: '\u1040' '\u1041' '\u1042' '\u1043' '\u1044' '\u1045' '\u1046' '\u1047' '\u1048' '\u1049';
/* '၀' '၁' '၂' '၃' '၄' '၅' '၆' '၇' '၈' '၉' */
}
@counter-style cambodian {
type: numeric;
glyphs: '\u17E0' '\u17E1' '\u17E2' '\u17E3' '\u17E4' '\u17E5' '\u17E6' '\u17E7' '\u17E8' '\u17E9';
/* '០' '១' '២' '៣' '៤' '៥' '៦' '៧' '៨' '៩' */
}
@counter-style cjk-decimal {
type: numeric;
glyphs: '\u3007' '\u4E00' '\u4E8C' '\u4E09' '\u56DB' '\u4E94' '\u516D' '\u4E03' '\u516B' '\u4E5D';
/* '〇' '一' '二' '三' '四' '五' '六' '七' '八' '九' */
}
@counter-style decimal {
type: numeric;
glyphs: '\u30' '\u31' '\u32' '\u33' '\u34' '\u35' '\u36' '\u37' '\u38' '\u39';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' */
}
@counter-style devanagari {
type: numeric;
glyphs: '\u966' '\u967' '\u968' '\u969' '\u96A' '\u96B' '\u96C' '\u96D' '\u96E' '\u96F';
/* '०' '१' '२' '३' '४' '५' '६' '७' '८' '९' */
}
@counter-style eastern-nagari {
type: numeric;
glyphs: '\u9E6' '\u9E7' '\u9E8' '\u9E9' '\u9EA' '\u9EB' '\u9EC' '\u9ED' '\u9EE' '\u9EF';
/* '০' '১' '২' '৩' '৪' '৫' '৬' '৭' '৮' '৯' */
}
@counter-style fullwidth-decimal {
type: numeric;
glyphs: '\uFF10' '\uFF11' '\uFF12' '\uFF13' '\uFF14' '\uFF15' '\uFF16' '\uFF17' '\uFF18' '\uFF19';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' */
}
@counter-style gujarati {
type: numeric;
glyphs: '\uAE6' '\uAE7' '\uAE8' '\uAE9' '\uAEA' '\uAEB' '\uAEC' '\uAED' '\uAEE' '\uAEF';
/* '૦' '૧' '૨' '૩' '૪' '૫' '૬' '૭' '૮' '૯' */
}
@counter-style gurmukhi {
type: numeric;
glyphs: '\uA66' '\uA67' '\uA68' '\uA69' '\uA6A' '\uA6B' '\uA6C' '\uA6D' '\uA6E' '\uA6F';
/* '੦' '੧' '੨' '੩' '੪' '੫' '੬' '੭' '੮' '੯' */
}
@counter-style kannada {
type: numeric;
glyphs: '\uCE6' '\uCE7' '\uCE8' '\uCE9' '\uCEA' '\uCEB' '\uCEC' '\uCED' '\uCEE' '\uCEF';
/* '೦' '೧' '೨' '೩' '೪' '೫' '೬' '೭' '೮' '೯' */
}
@counter-style khmer {
type: numeric;
glyphs: '\u17E0' '\u17E1' '\u17E2' '\u17E3' '\u17E4' '\u17E5' '\u17E6' '\u17E7' '\u17E8' '\u17E9';
/* '០' '១' '២' '៣' '៤' '៥' '៦' '៧' '៨' '៩' */
}
@counter-style lower-hexadecimal {
type: numeric;
glyphs: '\u30' '\u31' '\u32' '\u33' '\u34' '\u35' '\u36' '\u37' '\u38' '\u39' '\u61' '\u62' '\u63' '\u64' '\u65' '\u66';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'a' 'b' 'c' 'd' 'e' 'f' */
}
@counter-style lao {
type: numeric;
glyphs: '\uED0' '\uED1' '\uED2' '\uED3' '\uED4' '\uED5' '\uED6' '\uED7' '\uED8' '\uED9';
/* '໐' '໑' '໒' '໓' '໔' '໕' '໖' '໗' '໘' '໙' */
}
@counter-style lepcha {
type: numeric;
glyphs: '\u1C40' '\u1C41' '\u1C42' '\u1C43' '\u1C44' '\u1C45' '\u1C46' '\u1C47' '\u1C48' '\u1C49';
/* '᱀' '᱁' '᱂' '᱃' '᱄' '᱅' '᱆' '᱇' '᱈' '᱉' */
}
@counter-style malayalam {
type: numeric;
glyphs: '\uD66' '\uD67' '\uD68' '\uD69' '\uD6A' '\uD6B' '\uD6C' '\uD6D' '\uD6E' '\uD6F';
/* '൦' '൧' '൨' '൩' '൪' '൫' '൬' '൭' '൮' '൯' */
}
@counter-style marathi {
type: numeric;
glyphs: '\u966' '\u967' '\u968' '\u969' '\u96A' '\u96B' '\u96C' '\u96D' '\u96E' '\u96F';
/* '०' '१' '२' '३' '४' '५' '६' '७' '८' '९' */
}
@counter-style mongolian {
type: numeric;
glyphs: '\u1810' '\u1811' '\u1812' '\u1813' '\u1814' '\u1815' '\u1816' '\u1817' '\u1818' '\u1819';
/* '᠐' '᠑' '᠒' '᠓' '᠔' '᠕' '᠖' '᠗' '᠘' '᠙' */
}
@counter-style myanmar {
type: numeric;
glyphs: '\u1040' '\u1041' '\u1042' '\u1043' '\u1044' '\u1045' '\u1046' '\u1047' '\u1048' '\u1049';
/* '၀' '၁' '၂' '၃' '၄' '၅' '၆' '၇' '၈' '၉' */
}
@counter-style new-base-60 {
type: numeric;
glyphs: '\u30' '\u31' '\u32' '\u33' '\u34' '\u35' '\u36' '\u37' '\u38' '\u39' '\u41' '\u42' '\u43' '\u44' '\u45' '\u46' '\u47' '\u48' '\u4A' '\u4B' '\u4C' '\u4D' '\u4E' '\u50' '\u51' '\u52' '\u53' '\u54' '\u55' '\u56' '\u57' '\u58' '\u59' '\u5A' '\u5F' '\u61' '\u62' '\u63' '\u64' '\u65' '\u66' '\u67' '\u68' '\u69' '\u6A' '\u6B' '\u6D' '\u6E' '\u6F' '\u70' '\u71' '\u72' '\u73' '\u74' '\u75' '\u76' '\u77' '\u78' '\u79' '\u7A';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'J' 'K' 'L' 'M' 'N' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' '_' 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' */
}
@counter-style octal {
type: numeric;
glyphs: '\u30' '\u31' '\u32' '\u33' '\u34' '\u35' '\u36' '\u37';
/* '0' '1' '2' '3' '4' '5' '6' '7' */
}
@counter-style oriya {
type: numeric;
glyphs: '\uB66' '\uB67' '\uB68' '\uB69' '\uB6A' '\uB6B' '\uB6C' '\uB6D' '\uB6E' '\uB6F';
/* '୦' '୧' '୨' '୩' '୪' '୫' '୬' '୭' '୮' '୯' */
}
@counter-style persian {
type: numeric;
glyphs: '\u6F0' '\u6F1' '\u6F2' '\u6F3' '\u6F4' '\u6F5' '\u6F6' '\u6F7' '\u6F8' '\u6F9';
/* '۰' '۱' '۲' '۳' '۴' '۵' '۶' '۷' '۸' '۹' */
}
@counter-style super-decimal {
type: numeric;
glyphs: '\u2070' '\uB9' '\uB2' '\uB3' '\u2074' '\u2075' '\u2076' '\u2077' '\u2078' '\u2079';
/* '⁰' '¹' '²' '³' '⁴' '⁵' '⁶' '⁷' '⁸' '⁹' */
}
@counter-style tamil {
type: numeric;
glyphs: '\uBE6' '\uBE7' '\uBE8' '\uBE9' '\uBEA' '\uBEB' '\uBEC' '\uBED' '\uBEE' '\uBEF';
/* '௦' '௧' '௨' '௩' '௪' '௫' '௬' '௭' '௮' '௯' */
}
@counter-style telugu {
type: numeric;
glyphs: '\uC66' '\uC67' '\uC68' '\uC69' '\uC6A' '\uC6B' '\uC6C' '\uC6D' '\uC6E' '\uC6F';
/* '౦' '౧' '౨' '౩' '౪' '౫' '౬' '౭' '౮' '౯' */
}
@counter-style tibetan {
type: numeric;
glyphs: '\uF20' '\uF21' '\uF22' '\uF23' '\uF24' '\uF25' '\uF26' '\uF27' '\uF28' '\uF29';
/* '༠' '༡' '༢' '༣' '༤' '༥' '༦' '༧' '༨' '༩' */
}
@counter-style thai {
type: numeric;
glyphs: '\uE50' '\uE51' '\uE52' '\uE53' '\uE54' '\uE55' '\uE56' '\uE57' '\uE58' '\uE59';
/* '๐' '๑' '๒' '๓' '๔' '๕' '๖' '๗' '๘' '๙' */
}
@counter-style upper-hexadecimal {
type: numeric;
glyphs: '\u30' '\u31' '\u32' '\u33' '\u34' '\u35' '\u36' '\u37' '\u38' '\u39' '\u41' '\u42' '\u43' '\u44' '\u45' '\u46';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'A' 'B' 'C' 'D' 'E' 'F' */
}
/* Alphabetic */
@counter-style afar {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1228' '\u1230' '\u1260' '\u1270' '\u1290' '\u12A0' '\u12A8' '\u12C8' '\u12D0' '\u12E8' '\u12F0' '\u12F8' '\u1308' '\u1338' '\u1348';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'በ' 'ተ' 'ነ' 'አ' 'ከ' 'ወ' 'ዐ' 'የ' 'ደ' 'ዸ' 'ገ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style agaw {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1250' '\u1260' '\u1268' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308' '\u1318' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'ቐ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style ari {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1260' '\u1268' '\u1270' '\u1278' '\u1290' '\u1300' '\u1308' '\u1328' '\u1340' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጨ' 'ፀ' 'ፐ' */
suffix: '/';
}
@counter-style blin {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1230' '\u1238' '\u1228' '\u1240' '\u1250' '\u1260' '\u1270' '\u1290' '\u1300' '\u1308' '\u1318' '\u1320' '\u1328' '\u1348' '\u1278' '\u1298' '\u1338' '\u1330' '\u1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ሰ' 'ሸ' 'ረ' 'ቀ' 'ቐ' 'በ' 'ተ' 'ነ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ፈ' 'ቸ' 'ኘ' 'ጸ' 'ጰ' 'ፐ' */
suffix: '/';
}
@counter-style cjk-earthly-branch {
type: alphabetic;
glyphs: '\u5B50' '\u4E11' '\u5BC5' '\u536F' '\u8FB0' '\u5DF3' '\u5348' '\u672A' '\u7533' '\u9149' '\u620C' '\u4EA5';
/* '子' '丑' '寅' '卯' '辰' '巳' '午' '未' '申' '酉' '戌' '亥' */
suffix: '、';
}
@counter-style cjk-heavenly-stem {
type: alphabetic;
glyphs: '\u7532' '\u4E59' '\u4E19' '\u4E01' '\u620A' '\u5DF1' '\u5E9A' '\u8F9B' '\u58EC' '\u7678';
/* '甲' '乙' '丙' '丁' '戊' '己' '庚' '辛' '壬' '癸' */
suffix: '、';
}
@counter-style dizi {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308' '\u1320' '\u1328' '\u1338' '\u1340' '\u1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጸ' 'ፀ' 'ፈ' */
suffix: '/';
}
@counter-style fullwidth-lower-alpha {
type: alphabetic;
glyphs: '\uFF41' '\uFF42' '\uFF43' '\uFF44' '\uFF45' '\uFF46' '\uFF47' '\uFF48' '\uFF49' '\uFF4A' '\uFF4B' '\uFF4C' '\uFF4D' '\uFF4E' '\uFF4F' '\uFF50' '\uFF51' '\uFF52' '\uFF53' '\uFF54' '\uFF55' '\uFF56' '\uFF57' '\uFF58' '\uFF59' '\uFF5A';
/* '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' */
suffix: '.';
}
@counter-style fullwidth-upper-alpha {
type: alphabetic;
glyphs: '\uFF21' '\uFF22' '\uFF23' '\uFF24' '\uFF25' '\uFF26' '\uFF27' '\uFF28' '\uFF29' '\uFF2A' '\uFF2B' '\uFF2C' '\uFF2D' '\uFF2E' '\uFF2F' '\uFF30' '\uFF31' '\uFF32' '\uFF33' '\uFF34' '\uFF35' '\uFF36' '\uFF37' '\uFF38' '\uFF39' '\uFF3A';
/* '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' */
suffix: '.';
}
@counter-style gedeo {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style gumuz {
type: alphabetic;
glyphs: '\u1200' '\u1210' '\u1208' '\u1210' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1268' '\u1270' '\u1278' '\u1290' '\u1298' '\u1308' '\u1328' '\u1330' '\u1340' '\u1350';
/* 'ሀ' 'ሐ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ገ' 'ጨ' 'ጰ' 'ፀ' 'ፐ' */
suffix: '/';
}
@counter-style hadiyya {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style harari {
type: alphabetic;
glyphs: '\u1210' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308' '\u1320' '\u1328' '\u1348';
/* 'ሐ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ፈ' */
suffix: '/';
}
@counter-style hiragana-iroha {
type: alphabetic;
glyphs: '\u3044' '\u308D' '\u306F' '\u306B' '\u307B' '\u3078' '\u3068' '\u3061' '\u308A' '\u306C' '\u308B' '\u3092' '\u308F' '\u304B' '\u3088' '\u305F' '\u308C' '\u305D' '\u3064' '\u306D' '\u306A' '\u3089' '\u3080' '\u3046' '\u3090' '\u306E' '\u304A' '\u304F' '\u3084' '\u307E' '\u3051' '\u3075' '\u3053' '\u3048' '\u3066' '\u3042' '\u3055' '\u304D' '\u3086' '\u3081' '\u307F' '\u3057' '\u3091' '\u3072' '\u3082' '\u305B' '\u3059' '\u3093';
/* 'い' 'ろ' 'は' 'に' 'ほ' 'へ' 'と' 'ち' 'り' 'ぬ' 'る' 'を' 'わ' 'か' 'よ' 'た' 'れ' 'そ' 'つ' 'ね' 'な' 'ら' 'む' 'う' 'ゐ' 'の' 'お' 'く' 'や' 'ま' 'け' 'ふ' 'こ' 'え' 'て' 'あ' 'さ' 'き' 'ゆ' 'め' 'み' 'し' 'ゑ' 'ひ' 'も' 'せ' 'す' 'ん' */
suffix: '、';
}
@counter-style hiragana {
type: alphabetic;
glyphs: '\u3042' '\u3044' '\u3046' '\u3048' '\u304A' '\u304B' '\u304D' '\u304F' '\u3051' '\u3053' '\u3055' '\u3057' '\u3059' '\u305B' '\u305D' '\u305F' '\u3061' '\u3064' '\u3066' '\u3068' '\u306A' '\u306B' '\u306C' '\u306D' '\u306E' '\u306F' '\u3072' '\u3075' '\u3078' '\u307B' '\u307E' '\u307F' '\u3080' '\u3081' '\u3082' '\u3084' '\u3086' '\u3088' '\u3089' '\u308A' '\u308B' '\u308C' '\u308D' '\u308F' '\u3092' '\u3093';
/* 'あ' 'い' 'う' 'え' 'お' 'か' 'き' 'く' 'け' 'こ' 'さ' 'し' 'す' 'せ' 'そ' 'た' 'ち' 'つ' 'て' 'と' 'な' 'に' 'ぬ' 'ね' 'の' 'は' 'ひ' 'ふ' 'へ' 'ほ' 'ま' 'み' 'む' 'め' 'も' 'や' 'ゆ' 'よ' 'ら' 'り' 'る' 'れ' 'ろ' 'わ' 'を' 'ん' */
suffix: '、';
}
@counter-style kaffa {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1220' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1280' '\u1290' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ሠ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ኀ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style katakana-iroha {
type: alphabetic;
glyphs: '\u30A4' '\u30ED' '\u30CF' '\u30CB' '\u30DB' '\u30D8' '\u30C8' '\u30C1' '\u30EA' '\u30CC' '\u30EB' '\u30F2' '\u30EF' '\u30AB' '\u30E8' '\u30BF' '\u30EC' '\u30BD' '\u30C4' '\u30CD' '\u30CA' '\u30E9' '\u30E0' '\u30A6' '\u30F0' '\u30CE' '\u30AA' '\u30AF' '\u30E4' '\u30DE' '\u30B1' '\u30D5' '\u30B3' '\u30A8' '\u30C6' '\u30A2' '\u30B5' '\u30AD' '\u30E6' '\u30E1' '\u30DF' '\u30B7' '\u30F1' '\u30D2' '\u30E2' '\u30BB' '\u30B9' '\u30F3';
/* 'イ' 'ロ' 'ハ' 'ニ' 'ホ' 'ヘ' 'ト' 'チ' 'リ' 'ヌ' 'ル' 'ヲ' 'ワ' 'カ' 'ヨ' 'タ' 'レ' 'ソ' 'ツ' 'ネ' 'ナ' 'ラ' 'ム' 'ウ' 'ヰ' 'ノ' 'オ' 'ク' 'ヤ' 'マ' 'ケ' 'フ' 'コ' 'エ' 'テ' 'ア' 'サ' 'キ' 'ユ' 'メ' 'ミ' 'シ' 'ヱ' 'ヒ' 'モ' 'セ' 'ス' 'ン' */
suffix: '、';
}
@counter-style katakana {
type: alphabetic;
glyphs: '\u30A2' '\u30A4' '\u30A6' '\u30A8' '\u30AA' '\u30AB' '\u30AD' '\u30AF' '\u30B1' '\u30B3' '\u30B5' '\u30B7' '\u30B9' '\u30BB' '\u30BD' '\u30BF' '\u30C1' '\u30C4' '\u30C6' '\u30C8' '\u30CA' '\u30CB' '\u30CC' '\u30CD' '\u30CE' '\u30CF' '\u30D2' '\u30D5' '\u30D8' '\u30DB' '\u30DE' '\u30DF' '\u30E0' '\u30E1' '\u30E2' '\u30E4' '\u30E6' '\u30E8' '\u30E9' '\u30EA' '\u30EB' '\u30EC' '\u30ED' '\u30EF' '\u30F2' '\u30F3';
/* 'ア' 'イ' 'ウ' 'エ' 'オ' 'カ' 'キ' 'ク' 'ケ' 'コ' 'サ' 'シ' 'ス' 'セ' 'ソ' 'タ' 'チ' 'ツ' 'テ' 'ト' 'ナ' 'ニ' 'ヌ' 'ネ' 'ノ' 'ハ' 'ヒ' 'フ' 'ヘ' 'ホ' 'マ' 'ミ' 'ム' 'メ' 'モ' 'ヤ' 'ユ' 'ヨ' 'ラ' 'リ' 'ル' 'レ' 'ロ' 'ワ' 'ヲ' 'ン' */
suffix: '、';
}
@counter-style kebena {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style kembata {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1268' '\u1270' '\u1278' '\u1290' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' */
suffix: '/';
}
@counter-style konso {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style korean-consonant {
type: alphabetic;
glyphs: '\u3131' '\u3134' '\u3137' '\u3139' '\u3141' '\u3142' '\u3145' '\u3147' '\u3148' '\u314A' '\u314B' '\u314C' '\u314D' '\u314E';
/* 'ㄱ' 'ㄴ' 'ㄷ' 'ㄹ' 'ㅁ' 'ㅂ' 'ㅅ' 'ㅇ' 'ㅈ' 'ㅊ' 'ㅋ' 'ㅌ' 'ㅍ' 'ㅎ' */
}
@counter-style korean-syllable {
type: alphabetic;
glyphs: '\uAC00' '\uB098' '\uB2E4' '\uB77C' '\uB9C8' '\uBC14' '\uC0AC' '\uC544' '\uC790' '\uCC28' '\uCE74' '\uD0C0' '\uD30C' '\uD558';
/* '가' '나' '다' '라' '마' '바' '사' '아' '자' '차' '카' '타' '파' '하' */
}
@counter-style kunama {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' */
suffix: '/';
}
@counter-style lower-alpha {
type: alphabetic;
glyphs: '\u61' '\u62' '\u63' '\u64' '\u65' '\u66' '\u67' '\u68' '\u69' '\u6A' '\u6B' '\u6C' '\u6D' '\u6E' '\u6F' '\u70' '\u71' '\u72' '\u73' '\u74' '\u75' '\u76' '\u77' '\u78' '\u79' '\u7A';
/* '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' */
}
@counter-style lower-belorussian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u435' '\u451' '\u436' '\u437' '\u456' '\u439' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u45E' '\u444' '\u445' '\u446' '\u447' '\u448' '\u44B' '\u44C' '\u44D' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ё' 'ж' 'з' 'і' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ў' 'ф' 'х' 'ц' 'ч' 'ш' 'ы' 'ь' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style lower-bulgarian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u435' '\u436' '\u437' '\u438' '\u439' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u444' '\u445' '\u446' '\u447' '\u448' '\u449' '\u44A' '\u44C' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ж' 'з' 'и' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ъ' 'ь' 'ю' 'я' */
suffix: ')';
}
@counter-style lower-greek {
type: alphabetic;
glyphs: '\u3B1' '\u3B2' '\u3B3' '\u3B4' '\u3B5' '\u3B6' '\u3B7' '\u3B8' '\u3B9' '\u3BA' '\u3BB' '\u3BC' '\u3BD' '\u3BE' '\u3BF' '\u3C0' '\u3C1' '\u3C3' '\u3C4' '\u3C5' '\u3C6' '\u3C7' '\u3C8' '\u3C9';
/* 'α' 'β' 'γ' 'δ' 'ε' 'ζ' 'η' 'θ' 'ι' 'κ' 'λ' 'μ' 'ν' 'ξ' 'ο' 'π' 'ρ' 'σ' 'τ' 'υ' 'φ' 'χ' 'ψ' 'ω' */
}
@counter-style lower-latin {
type: alphabetic;
glyphs: '\u61' '\u62' '\u63' '\u64' '\u65' '\u66' '\u67' '\u68' '\u69' '\u6A' '\u6B' '\u6C' '\u6D' '\u6E' '\u6F' '\u70' '\u71' '\u72' '\u73' '\u74' '\u75' '\u76' '\u77' '\u78' '\u79' '\u7A';
/* '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' */
}
@counter-style lower-macedonian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u453' '\u435' '\u436' '\u437' '\u455' '\u438' '\u458' '\u43A' '\u43B' '\u459' '\u43C' '\u43D' '\u45A' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u45C' '\u443' '\u444' '\u445' '\u446' '\u447' '\u45F' '\u448';
/* 'а' 'б' 'в' 'г' 'д' 'ѓ' 'е' 'ж' 'з' 'ѕ' 'и' 'ј' 'к' 'л' 'љ' 'м' 'н' 'њ' 'о' 'п' 'р' 'с' 'т' 'ќ' 'у' 'ф' 'х' 'ц' 'ч' 'џ' 'ш' */
suffix: ')';
}
@counter-style lower-norwegian {
type: alphabetic;
glyphs: '\u61' '\u62' '\u63' '\u64' '\u65' '\u66' '\u67' '\u68' '\u69' '\u6A' '\u6B' '\u6C' '\u6D' '\u6E' '\u6F' '\u70' '\u71' '\u72' '\u73' '\u74' '\u75' '\u76' '\u77' '\u78' '\u79' '\u7A' '\uE6' '\uF8' '\uE5';
/* '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' 'æ' 'ø' 'å' */
}
@counter-style lower-oromo-qubee {
type: alphabetic;
glyphs: '\u61' '\u61\u61' '\u62' '\u63' '\u64' '\u65' '\u65\u65' '\u66' '\u67' '\u68' '\u69' '\u69\u69' '\u6A' '\u6B' '\u6C' '\u6D' '\u6E' '\u6F' '\u6F\u6F' '\u70' '\u71' '\u72' '\u73' '\u74' '\u75' '\u75\u75' '\u76' '\u77' '\u78' '\u79' '\u7A' '\u63\u68' '\u64\u68' '\u6B\u68' '\u6E\u79' '\u70\u68' '\u73\u68';
/* 'a' 'aa' 'b' 'c' 'd' 'e' 'ee' 'f' 'g' 'h' 'i' 'ii' 'j' 'k' 'l' 'm' 'n' 'o' 'oo' 'p' 'q' 'r' 's' 't' 'u' 'uu' 'v' 'w' 'x' 'y' 'z' 'ch' 'dh' 'kh' 'ny' 'ph' 'sh' */
}
@counter-style lower-russian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u435' '\u436' '\u437' '\u438' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u444' '\u445' '\u446' '\u447' '\u448' '\u449' '\u44D' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ж' 'з' 'и' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style lower-russian-full {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u435' '\u451' '\u436' '\u437' '\u438' '\u439' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u444' '\u445' '\u446' '\u447' '\u448' '\u449' '\u44A' '\u44B' '\u44C' '\u44D' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ё' 'ж' 'з' 'и' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ъ' 'ы' 'ь' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style lower-serbo-croatian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u452' '\u435' '\u436' '\u437' '\u438' '\u458' '\u43A' '\u43B' '\u459' '\u43C' '\u43D' '\u45A' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u45B' '\u443' '\u444' '\u445' '\u446' '\u447' '\u45F' '\u448';
/* 'а' 'б' 'в' 'г' 'д' 'ђ' 'е' 'ж' 'з' 'и' 'ј' 'к' 'л' 'љ' 'м' 'н' 'њ' 'о' 'п' 'р' 'с' 'т' 'ћ' 'у' 'ф' 'х' 'ц' 'ч' 'џ' 'ш' */
suffix: ')';
}
@counter-style lower-ukrainian {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u434' '\u435' '\u454' '\u436' '\u437' '\u438' '\u456' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u444' '\u445' '\u446' '\u447' '\u448' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'є' 'ж' 'з' 'и' 'і' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'ю' 'я' */
suffix: ')';
}
@counter-style lower-ukrainian-full {
type: alphabetic;
glyphs: '\u430' '\u431' '\u432' '\u433' '\u491' '\u434' '\u435' '\u454' '\u436' '\u437' '\u438' '\u456' '\u457' '\u439' '\u43A' '\u43B' '\u43C' '\u43D' '\u43E' '\u43F' '\u440' '\u441' '\u442' '\u443' '\u444' '\u445' '\u446' '\u447' '\u448' '\u449' '\u44C' '\u44E' '\u44F';
/* 'а' 'б' 'в' 'г' 'ґ' 'д' 'е' 'є' 'ж' 'з' 'и' 'і' 'ї' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ь' 'ю' 'я' */
suffix: ')';
}
@counter-style meen {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1280' '\u1290' '\u1298' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1350' '\u1340';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ኀ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፐ' 'ፀ' */
suffix: '/';
}
@counter-style oromo {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u12A0' '\u12A8' '\u12C8' '\u12E8' '\u12F0' '\u12F8' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'አ' 'ከ' 'ወ' 'የ' 'ደ' 'ዸ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style saho {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1228' '\u1230' '\u1240' '\u1260' '\u1270' '\u1290' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ቀ' 'በ' 'ተ' 'ነ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style sidama {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u12A0' '\u12A8' '\u12C8' '\u12E8' '\u12F0' '\u12F8' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'አ' 'ከ' 'ወ' 'የ' 'ደ' 'ዸ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style silti {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' */
suffix: '/';
}
@counter-style thai-alphabetic {
type: alphabetic;
glyphs: '\uE01' '\uE02' '\uE04' '\uE07' '\uE08' '\uE09' '\uE0A' '\uE0B' '\uE0C' '\uE0D' '\uE0E' '\uE0F' '\uE10' '\uE11' '\uE12' '\uE13' '\uE14' '\uE15' '\uE16' '\uE17' '\uE18' '\uE19' '\uE1A' '\uE1B' '\uE1C' '\uE1D' '\uE1E' '\uE1F' '\uE20' '\uE21' '\uE22' '\uE23' '\uE25' '\uE27' '\uE28' '\uE29' '\uE2A' '\uE2B' '\uE2C' '\uE2D' '\uE2E';
/* 'ก' 'ข' 'ค' 'ง' 'จ' 'ฉ' 'ช' 'ซ' 'ฌ' 'ญ' 'ฎ' 'ฏ' 'ฐ' 'ฑ' 'ฒ' 'ณ' 'ด' 'ต' 'ถ' 'ท' 'ธ' 'น' 'บ' 'ป' 'ผ' 'ฝ' 'พ' 'ฟ' 'ภ' 'ม' 'ย' 'ร' 'ล' 'ว' 'ศ' 'ษ' 'ส' 'ห' 'ฬ' 'อ' 'ฮ' */
}
@counter-style tigre {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1210' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u12A0' '\u12A8' '\u12C8' '\u12D0' '\u12D8' '\u12E8' '\u12F0' '\u1300' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'አ' 'ከ' 'ወ' 'ዐ' 'ዘ' 'የ' 'ደ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style upper-alpha {
type: alphabetic;
glyphs: '\u41' '\u42' '\u43' '\u44' '\u45' '\u46' '\u47' '\u48' '\u49' '\u4A' '\u4B' '\u4C' '\u4D' '\u4E' '\u4F' '\u50' '\u51' '\u52' '\u53' '\u54' '\u55' '\u56' '\u57' '\u58' '\u59' '\u5A';
/* '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' */
}
@counter-style upper-belorussian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u415' '\u401' '\u416' '\u417' '\u406' '\u419' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u40E' '\u424' '\u425' '\u426' '\u427' '\u428' '\u42B' '\u42C' '\u42D' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ё' 'Ж' 'З' 'І' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ў' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Ы' 'Ь' 'Э' 'Ю' 'Я' */
}
@counter-style upper-bulgarian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u415' '\u416' '\u417' '\u418' '\u419' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u424' '\u425' '\u426' '\u427' '\u428' '\u429' '\u42A' '\u42C' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ж' 'З' 'И' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ъ' 'Ь' 'Ю' 'Я' */
}
@counter-style upper-greek {
type: alphabetic;
glyphs: '\u391' '\u392' '\u393' '\u394' '\u395' '\u396' '\u397' '\u398' '\u399' '\u39A' '\u39B' '\u39C' '\u39D' '\u39E' '\u39F' '\u3A0' '\u3A1' '\u3A3' '\u3A4' '\u3A5' '\u3A6' '\u3A7' '\u3A8' '\u3A9';
/* 'Α' 'Β' 'Γ' 'Δ' 'Ε' 'Ζ' 'Η' 'Θ' 'Ι' 'Κ' 'Λ' 'Μ' 'Ν' 'Ξ' 'Ο' 'Π' 'Ρ' 'Σ' 'Τ' 'Υ' 'Φ' 'Χ' 'Ψ' 'Ω' */
}
@counter-style upper-latin {
type: alphabetic;
glyphs: '\u41' '\u42' '\u43' '\u44' '\u45' '\u46' '\u47' '\u48' '\u49' '\u4A' '\u4B' '\u4C' '\u4D' '\u4E' '\u4F' '\u50' '\u51' '\u52' '\u53' '\u54' '\u55' '\u56' '\u57' '\u58' '\u59' '\u5A';
/* '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' */
}
@counter-style upper-macedonian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u403' '\u415' '\u416' '\u417' '\u405' '\u418' '\u408' '\u41A' '\u41B' '\u409' '\u41C' '\u41D' '\u40A' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u40C' '\u423' '\u424' '\u425' '\u426' '\u427' '\u40F' '\u428';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Ѓ' 'Е' 'Ж' 'З' 'Ѕ' 'И' 'Ј' 'К' 'Л' 'Љ' 'М' 'Н' 'Њ' 'О' 'П' 'Р' 'С' 'Т' 'Ќ' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Џ' 'Ш' */
}
@counter-style upper-norwegian {
type: alphabetic;
glyphs: '\u41' '\u42' '\u43' '\u44' '\u45' '\u46' '\u47' '\u48' '\u49' '\u4A' '\u4B' '\u4C' '\u4D' '\u4E' '\u4F' '\u50' '\u51' '\u52' '\u53' '\u54' '\u55' '\u56' '\u57' '\u58' '\u59' '\u5A' '\uC6' '\uD8' '\uC5';
/* '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' 'Æ' 'Ø' 'Å' */
}
@counter-style upper-oromo-qubee {
type: alphabetic;
glyphs: '\u41' '\u41\u41' '\u42' '\u43' '\u44' '\u45' '\u45\u45' '\u46' '\u47' '\u48' '\u49' '\u49\u49' '\u4A' '\u4B' '\u4C' '\u4D' '\u4E' '\u4F' '\u4F\u4F' '\u50' '\u51' '\u52' '\u53' '\u54' '\u55' '\u55\u55' '\u56' '\u57' '\u58' '\u59' '\u5A' '\u43\u48' '\u44\u48' '\u4B\u48' '\u4E\u59' '\u50\u48' '\u53\u48';
/* 'A' 'AA' 'B' 'C' 'D' 'E' 'EE' 'F' 'G' 'H' 'I' 'II' 'J' 'K' 'L' 'M' 'N' 'O' 'OO' 'P' 'Q' 'R' 'S' 'T' 'U' 'UU' 'V' 'W' 'X' 'Y' 'Z' 'CH' 'DH' 'KH' 'NY' 'PH' 'SH' */
}
@counter-style upper-russian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u415' '\u416' '\u417' '\u418' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u424' '\u425' '\u426' '\u427' '\u428' '\u429' '\u42D' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ж' 'З' 'И' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Э' 'Ю' 'Я' */
}
@counter-style upper-russian-full {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u415' '\u401' '\u416' '\u417' '\u418' '\u419' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u424' '\u425' '\u426' '\u427' '\u428' '\u429' '\u42A' '\u42B' '\u42C' '\u42D' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ё' 'Ж' 'З' 'И' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ъ' 'Ы' 'Ь' 'Э' 'Ю' 'Я' */
}
@counter-style upper-serbo-croatian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u402' '\u415' '\u416' '\u417' '\u418' '\u408' '\u41A' '\u41B' '\u409' '\u41C' '\u41D' '\u40A' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u40B' '\u423' '\u424' '\u425' '\u426' '\u427' '\u40F' '\u428';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Ђ' 'Е' 'Ж' 'З' 'И' 'Ј' 'К' 'Л' 'Љ' 'М' 'Н' 'Њ' 'О' 'П' 'Р' 'С' 'Т' 'Ћ' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Џ' 'Ш' */
}
@counter-style upper-ukrainian {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u414' '\u415' '\u404' '\u416' '\u417' '\u418' '\u406' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u424' '\u425' '\u426' '\u427' '\u428' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Є' 'Ж' 'З' 'И' 'І' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Ю' 'Я' */
}
@counter-style upper-ukrainian-full {
type: alphabetic;
glyphs: '\u410' '\u411' '\u412' '\u413' '\u490' '\u414' '\u415' '\u404' '\u416' '\u417' '\u418' '\u406' '\u407' '\u419' '\u41A' '\u41B' '\u41C' '\u41D' '\u41E' '\u41F' '\u420' '\u421' '\u422' '\u423' '\u424' '\u425' '\u426' '\u427' '\u428' '\u429' '\u42C' '\u42E' '\u42F';
/* 'А' 'Б' 'В' 'Г' 'Ґ' 'Д' 'Е' 'Є' 'Ж' 'З' 'И' 'І' 'Ї' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ь' 'Ю' 'Я' */
}
@counter-style wolaita {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1270' '\u1278' '\u1290' '\u1298' '\u1230' '\u1308' '\u1320' '\u1328' '\u1330' '\u1338' '\u1340' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ሰ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፀ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style yemsa {
type: alphabetic;
glyphs: '\u1200' '\u1208' '\u1218' '\u1228' '\u1230' '\u1238' '\u1240' '\u1260' '\u1268' '\u1270' '\u1278' '\u1290' '\u1298' '\u1300' '\u1308' '\u1318' '\u1320' '\u1328' '\u1330' '\u1348' '\u1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
/* Symbolic */
@counter-style asterisks {
type: symbolic;
glyphs: '\u2A';
/* '*' */
suffix: '';
}
@counter-style footnotes {
type: symbolic;
glyphs: '\u2A' '\u2051' '\u2020' '\u2021';
/* '*' '⁑' '†' '‡' */
suffix: '';
}
/* Non-repeating */
@counter-style circled-decimal {
type: non-repeating 0;
glyphs: '\u24EA' '\u2460' '\u2461' '\u2462' '\u2463' '\u2464' '\u2465' '\u2466' '\u2467' '\u2468' '\u2469' '\u246A' '\u246B' '\u246C' '\u246D' '\u246E' '\u246F' '\u2470' '\u2471' '\u2472' '\u2473';
/* '⓪' '①' '②' '③' '④' '⑤' '⑥' '⑦' '⑧' '⑨' '⑩' '⑪' '⑫' '⑬' '⑭' '⑮' '⑯' '⑰' '⑱' '⑲' '⑳' */
suffix: '';
}
@counter-style circled-lower-latin {
type: non-repeating 1;
glyphs: '\u24D0' '\u24D1' '\u24D2' '\u24D3' '\u24D4' '\u24D5' '\u24D6' '\u24D7' '\u24D8' '\u24D9' '\u24DA' '\u24DB' '\u24DC' '\u24DD' '\u24DE' '\u24DF' '\u24E0' '\u24E1' '\u24E2' '\u24E3' '\u24E4' '\u24E5' '\u24E6' '\u24E7' '\u24E8' '\u24E9';
/* 'ⓐ' 'ⓑ' 'ⓒ' 'ⓓ' 'ⓔ' 'ⓕ' 'ⓖ' 'ⓗ' 'ⓘ' 'ⓙ' 'ⓚ' 'ⓛ' 'ⓜ' 'ⓝ' 'ⓞ' 'ⓟ' 'ⓠ' 'ⓡ' 'ⓢ' 'ⓣ' 'ⓤ' 'ⓥ' 'ⓦ' 'ⓧ' 'ⓨ' 'ⓩ' */
suffix: '';
}
@counter-style circled-upper-latin {
type: non-repeating 1;
glyphs: '\u24B6' '\u24B7' '\u24B8' '\u24B9' '\u24BA' '\u24BB' '\u24BC' '\u24BD' '\u24BE' '\u24BF' '\u24C0' '\u24C1' '\u24C2' '\u24C3' '\u24C4' '\u24C5' '\u24C6' '\u24C7' '\u24C8' '\u24C9' '\u24CA' '\u24CB' '\u24CC' '\u24CD' '\u24CE' '\u24CF';
/* 'Ⓐ' 'Ⓑ' 'Ⓒ' 'Ⓓ' 'Ⓔ' 'Ⓕ' 'Ⓖ' 'Ⓗ' 'Ⓘ' 'Ⓙ' 'Ⓚ' 'Ⓛ' 'Ⓜ' 'Ⓝ' 'Ⓞ' 'Ⓟ' 'Ⓠ' 'Ⓡ' 'Ⓢ' 'Ⓣ' 'Ⓤ' 'Ⓥ' 'Ⓦ' 'Ⓧ' 'Ⓨ' 'Ⓩ' */
suffix: '';
}
@counter-style circled-korean-consonants {
type: non-repeating 1;
glyphs: '\u3260' '\u3261' '\u3262' '\u3263' '\u3264' '\u3265' '\u3266' '\u3267' '\u3268' '\u3269' '\u326A' '\u326B' '\u326C' '\u326D';
/* '㉠' '㉡' '㉢' '㉣' '㉤' '㉥' '㉦' '㉧' '㉨' '㉩' '㉪' '㉫' '㉬' '㉭' */
suffix: '';
}
@counter-style circled-korean-syllables {
type: non-repeating 1;
glyphs: '\u326E' '\u326F' '\u3270' '\u3271' '\u3272' '\u3273' '\u3274' '\u3275' '\u3276' '\u3277' '\u3278' '\u3279' '\u327A' '\u327B';
/* '㉮' '㉯' '㉰' '㉱' '㉲' '㉳' '㉴' '㉵' '㉶' '㉷' '㉸' '㉹' '㉺' '㉻' */
suffix: '';
}
@counter-style decimal-leading-zero {
type: non-repeating -9;
glyphs: '\u2D\u30\u39' '\u2D\u30\u38' '\u2D\u30\u37' '\u2D\u30\u36' '\u2D\u30\u35' '\u2D\u30\u34' '\u2D\u30\u33' '\u2D\u30\u32' '\u2D\u30\u31' '\u30\u30' '\u30\u31' '\u30\u32' '\u30\u33' '\u30\u34' '\u30\u35' '\u30\u36' '\u30\u37' '\u30\u38' '\u30\u39';
/* '-09' '-08' '-07' '-06' '-05' '-04' '-03' '-02' '-01' '00' '01' '02' '03' '04' '05' '06' '07' '08' '09' */
suffix: '';
}
@counter-style dotted-decimal {
type: non-repeating 1;
glyphs: '\u2488' '\u2489' '\u248A' '\u248B' '\u248C' '\u248D' '\u248E' '\u248F' '\u2490' '\u2491' '\u2492' '\u2493' '\u2494' '\u2495' '\u2496' '\u2497' '\u2498' '\u2499' '\u249A' '\u249B';
/* '⒈' '⒉' '⒊' '⒋' '⒌' '⒍' '⒎' '⒏' '⒐' '⒑' '⒒' '⒓' '⒔' '⒕' '⒖' '⒗' '⒘' '⒙' '⒚' '⒛' */
suffix: '';
}
@counter-style double-circled-decimal {
type: non-repeating 1;
glyphs: '\u24F5' '\u24F6' '\u24F7' '\u24F8' '\u24F9' '\u24FA' '\u24FB' '\u24FC' '\u24FD' '\u24FE';
/* '⓵' '⓶' '⓷' '⓸' '⓹' '⓺' '⓻' '⓼' '⓽' '⓾' */
suffix: '';
}
@counter-style filled-circled-decimal {
type: non-repeating 11;
glyphs: '\u24EB' '\u24EC' '\u24ED' '\u24EE' '\u24EF' '\u24F0' '\u24F1' '\u24F2' '\u24F3' '\u24F4';
/* '⓫' '⓬' '⓭' '⓮' '⓯' '⓰' '⓱' '⓲' '⓳' '⓴' */
suffix: '';
}
@counter-style fullwidth-upper-roman {
type: non-repeating 1;
glyphs: '\u2160' '\u2161' '\u2162' '\u2163' '\u2164' '\u2165' '\u2166' '\u2167' '\u2168' '\u2169' '\u216A' '\u216B';
/* 'Ⅰ' 'Ⅱ' 'Ⅲ' 'Ⅳ' 'Ⅴ' 'Ⅵ' 'Ⅶ' 'Ⅷ' 'Ⅸ' 'Ⅹ' 'Ⅺ' 'Ⅻ' */
suffix: '';
}
@counter-style fullwidth-lower-roman {
type: non-repeating 1;
glyphs: '\u2170' '\u2171' '\u2172' '\u2173' '\u2174' '\u2175' '\u2176' '\u2177' '\u2178' '\u2179' '\u217A' '\u217B';
/* 'ⅰ' 'ⅱ' 'ⅲ' 'ⅳ' 'ⅴ' 'ⅵ' 'ⅶ' 'ⅷ' 'ⅸ' 'ⅹ' 'ⅺ' 'ⅻ' */
suffix: '';
}
@counter-style parenthesized-decimal {
type: non-repeating 1;
glyphs: '\u2474' '\u2475' '\u2476' '\u2477' '\u2478' '\u2479' '\u247A' '\u247B' '\u247C' '\u247D' '\u247E' '\u247F' '\u2480' '\u2481' '\u2482' '\u2483' '\u2484' '\u2485' '\u2486' '\u2487';
/* '⑴' '⑵' '⑶' '⑷' '⑸' '⑹' '⑺' '⑻' '⑼' '⑽' '⑾' '⑿' '⒀' '⒁' '⒂' '⒃' '⒄' '⒅' '⒆' '⒇' */
suffix: '';
}
@counter-style parenthesized-lower-latin {
type: non-repeating 1;
glyphs: '\u249C' '\u249D' '\u249E' '\u249F' '\u24A0' '\u24A1' '\u24A2' '\u24A3' '\u24A4' '\u24A5' '\u24A6' '\u24A7' '\u24A8' '\u24A9' '\u24AA' '\u24AB' '\u24AC' '\u24AD' '\u24AE' '\u24AF' '\u24B0' '\u24B1' '\u24B2' '\u24B3' '\u24B4' '\u24B5';
/* '⒜' '⒝' '⒞' '⒟' '⒠' '⒡' '⒢' '⒣' '⒤' '⒥' '⒦' '⒧' '⒨' '⒩' '⒪' '⒫' '⒬' '⒭' '⒮' '⒯' '⒰' '⒱' '⒲' '⒳' '⒴' '⒵' */
suffix: '';
}
@counter-style parenthesized-hangul-consonants {
type: non-repeating 1;
glyphs: '\u3200' '\u3201' '\u3202' '\u3203' '\u3204' '\u3205' '\u3206' '\u3207' '\u3208' '\u3209' '\u320A' '\u320B' '\u320C' '\u320D';
/* '㈀' '㈁' '㈂' '㈃' '㈄' '㈅' '㈆' '㈇' '㈈' '㈉' '㈊' '㈋' '㈌' '㈍' */
suffix: '';
}
@counter-style parenthesized-hangul-syllable {
type: non-repeating 1;
glyphs: '\u320E' '\u320F' '\u3210' '\u3211' '\u3212' '\u3213' '\u3214' '\u3215' '\u3216' '\u3217' '\u3218' '\u3219' '\u321A';
/* '㈎' '㈏' '㈐' '㈑' '㈒' '㈓' '㈔' '㈕' '㈖' '㈗' '㈘' '㈙' '㈚' */
suffix: '';
}
@counter-style persian-abjad {
type: non-repeating 1;
glyphs: '\u627' '\u628' '\u62C' '\u62F' '\u647\u200D' '\u648' '\u632' '\u62D' '\u637' '\u6CC' '\u6A9' '\u644' '\u645' '\u646' '\u633' '\u639' '\u641' '\u635' '\u642' '\u631' '\u634' '\u62A' '\u62B' '\u62E' '\u630' '\u636' '\u638' '\u63A';
/* 'ا' 'ب' 'ج' 'د' 'ه' 'و' 'ز' 'ح' 'ط' 'ی' 'ک' 'ل' 'م' 'ن' 'س' 'ع' 'ف' 'ص' 'ق' 'ر' 'ش' 'ت' 'ث' 'خ' 'ذ' 'ض' 'ظ' 'غ' */
}
@counter-style persian-alphabetic {
type: non-repeating 1;
glyphs: '\u627' '\u628' '\u67E' '\u62A' '\u62B' '\u62C' '\u686' '\u62D' '\u62E' '\u62F' '\u630' '\u631' '\u632' '\u698' '\u633' '\u634' '\u635' '\u636' '\u637' '\u638' '\u639' '\u63A' '\u641' '\u642' '\u6A9' '\u6AF' '\u644' '\u645' '\u646' '\u648' '\u647\u200D' '\u6CC';
/* 'ا' 'ب' 'پ' 'ت' 'ث' 'ج' 'چ' 'ح' 'خ' 'د' 'ذ' 'ر' 'ز' 'ژ' 'س' 'ش' 'ص' 'ض' 'ط' 'ظ' 'ع' 'غ' 'ف' 'ق' 'ک' 'گ' 'ل' 'م' 'ن' 'و' 'ه' 'ی' */
}
/* Additive */
@counter-style hebrew {
type: additive;
range: 1 infinite;
additive-glyphs: 400 '\5EA', 300 '\5E9', 200 '\5E8', 100 '\5E7', 90 '\5E6', 80 '\5E4', 70 '\5E2', 60 '\5E1', 50 '\5E0', 40 '\5DE', 30 '\5DC', 20 '\5DB', 19 '\5D9\5D8', 18 '\5D9\5D7', 17 '\5D9\5D6', 16 '\5D8\5D6', 15 '\5D8\5D5', 10 '\5D9', 9 '\5D8', 8 '\5D7', 7 '\5D6', 6 '\5D5', 5 '\5D4', 4 '\5D3', 3 '\5D2', 2 '\5D1', 1 '\5D0';
/* 400 'ת', 300 'ש', 200 'ר', 100 'ק', 90 'צ', 80 'פ', 70 'ע', 60 'ס', 50 'נ', 40 'מ', 30 'ל', 20 'כ', 10 'י', 9 'ט', 8 'ח', 7 'ז', 6 'ו', 5 'ה', 4 'ד', 3 'ג', 2 'ב', 1 'א' */
/* This system manually specifies the values for 19-15 to force the correct display of 15 and 16, which are commonly
rewritten to avoid a close resemblance to the Tetragrammaton. */
}
@counter-style simple-upper-roman {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\u4D', 500 '\u44', 100 '\u43', 50 '\u4C', 10 '\u58', 5 '\u56', 1 '\u49';
/* 1000 'M', 500 'D', 100 'C', 50 'L', 10 'X', 5 'V', 1 'I' */
}
@counter-style simple-lower-roman {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\u6D', 500 '\u64', 100 '\u63', 50 '\u6C', 10 '\u78', 5 '\u76', 1 '\u69';
/* 1000 'm', 500 'd', 100 'c', 50 'l', 10 'x', 5 'v', 1 'i' */
}
@counter-style upper-roman {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\u4D', 900 '\u43\u4D', 500 '\u44', 400 '\u43\u44', 100 '\u43', 90 '\u58\u43', 50 '\u4C', 40 '\u58\u4C', 10 '\u58', 9 '\u49\u58', 5 '\u56', 4 '\u49\u56', 1 '\u49';
/* 1000 'M', 900 'CM', 500 'D', 400 'CD', 100 'C', 90 'XC', 50 'L', 40 'XL', 10 'X', 9 'IX', 5 'V', 4 'IV', 1 'I' */
}
@counter-style lower-roman {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\u6D', 900 '\u63\u6D', 500 '\u64', 400 '\u63\u64', 100 '\u63', 90 '\u78\u63', 50 '\u6C', 40 '\u78\u6C', 10 '\u78', 9 '\u69\u78', 5 '\u76', 4 '\u69\u76', 1 '\u69';
/* 1000 'm', 900 'cm', 500 'd', 400 'cd', 100 'c', 90 'xc', 50 'l', 40 'xl', 10 'x', 9 'ix', 5 'v', 4 'iv', 1 'i' */
}
@counter-style lower-armenian {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\u584', 8000 '\u583', 7000 '\u582', 6000 '\u581', 5000 '\u580', 4000 '\u57F', 3000 '\u57E', 2000 '\u57D', 1000 '\u57C', 900 '\u57B', 800 '\u57A', 700 '\u579', 600 '\u578', 500 '\u577', 400 '\u576', 300 '\u575', 200 '\u574', 100 '\u573', 90 '\u572', 80 '\u571', 70 '\u570', 60 '\u56F', 50 '\u56E', 40 '\u56D', 30 '\u56C', 20 '\u56B', 10 '\u56A', 9 '\u569', 8 '\u568', 7 '\u567', 6 '\u566', 5 '\u565', 4 '\u564', 3 '\u563', 2 '\u562', 1 '\u561';
/* 9000 'ք', 8000 'փ', 7000 'ւ', 6000 'ց', 5000 'ր', 4000 'տ', 3000 'վ', 2000 'ս', 1000 'ռ', 900 'ջ', 800 'պ', 700 'չ', 600 'ո', 500 'շ', 400 'ն', 300 'յ', 200 'մ', 100 'ճ', 90 'ղ', 80 'ձ', 70 'հ', 60 'կ', 50 'ծ', 40 'խ', 30 'լ', 20 'ի', 10 'ժ', 9 'թ', 8 'ը', 7 'է', 6 'զ', 5 'ե', 4 'դ', 3 'գ', 2 'բ', 1 'ա' */
}
@counter-style upper-armenian {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\u554', 8000 '\u553', 7000 '\u552', 6000 '\u551', 5000 '\u550', 4000 '\u54F', 3000 '\u54E', 2000 '\u54D', 1000 '\u54C', 900 '\u54B', 800 '\u54A', 700 '\u549', 600 '\u548', 500 '\u547', 400 '\u546', 300 '\u545', 200 '\u544', 100 '\u543', 90 '\u542', 80 '\u541', 70 '\u540', 60 '\u53F', 50 '\u53E', 40 '\u53D', 30 '\u53C', 20 '\u53B', 10 '\u53A', 9 '\u539', 8 '\u538', 7 '\u537', 6 '\u536', 5 '\u535', 4 '\u534', 3 '\u533', 2 '\u532', 1 '\u531';
/* 9000 'Ք', 8000 'Փ', 7000 'Ւ', 6000 'Ց', 5000 'Ր', 4000 'Տ', 3000 'Վ', 2000 'Ս', 1000 'Ռ', 900 'Ջ', 800 'Պ', 700 'Չ', 600 'Ո', 500 'Շ', 400 'Ն', 300 'Յ', 200 'Մ', 100 'Ճ', 90 'Ղ', 80 'Ձ', 70 'Հ', 60 'Կ', 50 'Ծ', 40 'Խ', 30 'Լ', 20 'Ի', 10 'Ժ', 9 'Թ', 8 'Ը', 7 'Է', 6 'Զ', 5 'Ե', 4 'Դ', 3 'Գ', 2 'Բ', 1 'Ա' */
}
@counter-style armenian {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\u554', 8000 '\u553', 7000 '\u552', 6000 '\u551', 5000 '\u550', 4000 '\u54F', 3000 '\u54E', 2000 '\u54D', 1000 '\u54C', 900 '\u54B', 800 '\u54A', 700 '\u549', 600 '\u548', 500 '\u547', 400 '\u546', 300 '\u545', 200 '\u544', 100 '\u543', 90 '\u542', 80 '\u541', 70 '\u540', 60 '\u53F', 50 '\u53E', 40 '\u53D', 30 '\u53C', 20 '\u53B', 10 '\u53A', 9 '\u539', 8 '\u538', 7 '\u537', 6 '\u536', 5 '\u535', 4 '\u534', 3 '\u533', 2 '\u532', 1 '\u531';
/* 9000 'Ք', 8000 'Փ', 7000 'Ւ', 6000 'Ց', 5000 'Ր', 4000 'Տ', 3000 'Վ', 2000 'Ս', 1000 'Ռ', 900 'Ջ', 800 'Պ', 700 'Չ', 600 'Ո', 500 'Շ', 400 'Ն', 300 'Յ', 200 'Մ', 100 'Ճ', 90 'Ղ', 80 'Ձ', 70 'Հ', 60 'Կ', 50 'Ծ', 40 'Խ', 30 'Լ', 20 'Ի', 10 'Ժ', 9 'Թ', 8 'Ը', 7 'Է', 6 'Զ', 5 'Ե', 4 'Դ', 3 'Գ', 2 'Բ', 1 'Ա' */
}
@counter-style georgian {
type: additive;
range: 1 19999;
additive-glyphs: 10000 '\u10F5', 9000 '\u10F0', 8000 '\u10EF', 7000 '\u10F4', 6000 '\u10EE', 5000 '\u10ED', 4000 '\u10EC', 3000 '\u10EB', 2000 '\u10EA', 1000 '\u10E9', 900 '\u10E8', 800 '\u10E7', 700 '\u10E6', 600 '\u10E5', 500 '\u10E4', 400 '\u10F3', 300 '\u10E2', 200 '\u10E1', 100 '\u10E0', 90 '\u10DF', 80 '\u10DE', 70 '\u10DD', 60 '\u10F2', 50 '\u10DC', 40 '\u10DB', 30 '\u10DA', 20 '\u10D9', 10 '\u10D8', 9 '\u10D7', 8 '\u10F1', 7 '\u10D6', 6 '\u10D5', 5 '\u10D4', 4 '\u10D3', 3 '\u10D2', 2 '\u10D1', 1 '\u10D0';
/* 10000 'ჵ', 9000 'ჰ', 8000 'ჯ', 7000 'ჴ', 6000 'ხ', 5000 'ჭ', 4000 'წ', 3000 'ძ', 2000 'ც', 1000 'ჩ', 900 'შ', 800 'ყ', 700 'ღ', 600 'ქ', 500 'ფ', 400 'ჳ', 300 'ტ', 200 'ს', 100 'რ', 90 'ჟ', 80 'პ', 70 'ო', 60 'ჲ', 50 'ნ', 40 'მ', 30 'ლ', 20 'კ', 10 'ი', 9 'თ', 8 'ჱ', 7 'ზ', 6 'ვ', 5 'ე', 4 'დ', 3 'გ', 2 'ბ', 1 'ა' */
}
@counter-style ancient-tamil {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\uBEF\uBF2', 8000 '\uBEE\uBF2', 7000 '\uBED\uBF2', 6000 '\uBEC\uBF2', 5000 '\uBEB\uBF2', 4000 '\uBEA\uBF2', 3000 '\uBE9\uBF2', 2000 '\uBE8\uBF2', 1000 '\uBF2', 900 '\uBEF\uBF1', 800 '\uBEE\uBF1', 700 '\uBED\uBF1', 600 '\uBEC\uBF1', 500 '\uBEB\uBF1', 400 '\uBEA\uBF1', 300 '\uBE9\uBF1', 200 '\uBE8\uBF1', 100 '\uBF1', 90 '\uBEF\uBF0', 80 '\uBEE\uBF0', 70 '\uBED\uBF0', 60 '\uBEC\uBF0', 50 '\uBEB\uBF0', 40 '\uBEA\uBF0', 30 '\uBE9\uBF0', 20 '\uBE8\uBF0', 10 '\uBF0', 9 '\uBEF', 8 '\uBEE', 7 '\uBED', 6 '\uBEC', 5 '\uBEB', 4 '\uBEA', 3 '\uBE9', 2 '\uBE8', 1 '\uBE7';
/* 9000 '௯௲', 8000 '௮௲', 7000 '௭௲', 6000 '௬௲', 5000 '௫௲', 4000 '௪௲', 3000 '௩௲', 2000 '௨௲', 1000 '௲', 900 '௯௱', 800 '௮௱', 700 '௭௱', 600 '௬௱', 500 '௫௱', 400 '௪௱', 300 '௩௱', 200 '௨௱', 100 '௱', 90 '௯௰', 80 '௮௰', 70 '௭௰', 60 '௬௰', 50 '௫௰', 40 '௪௰', 30 '௩௰', 20 '௨௰', 10 '௰', 9 '௯', 8 '௮', 7 '௭', 6 '௬', 5 '௫', 4 '௪', 3 '௩', 2 '௨', 1 '௧' */
}
Per http://www.ethiopic.org/w3c/css/WD-css3-lists-20020220-comments.html#armenianlists, we should have upper-coptic, lower-coptic, and coptic-numeric styles. The Coptic script was split out in Unicode 4.1 to occupy the block from U+2C80 to U+2CFF. Which characters should I use for each?
Per http://www.ethiopic.org/w3c/css/WD-css3-lists-20020220-comments.html#armenianlists, putting the circumflex above a digit in armenian numbering multiplies the digit by 1000. The draft currently states a 10,000 multiplier. Which is correct? (Having the multiplier be 1000 means that you can potentially write the thousands digit two ways, using either the set of thousands digits or the set of ones digits with a circumflex. The examples given in the note appear to use the former.)
The following people and documentation they wrote were very useful for defining the numbering systems: Alexander Savenkov, Aryeh Gregor, Frank Tang, Jonathan Rosenne, Karl Ove Hufthammer, Musheg Arakelyan, Nariné Renard Karapetyan, Randall Bart, Richard Ishida Simon Montagu
As described in the introduction section, there are significant changes in this module when compared to CSS2.