Another abandoned server code base... this is kind of an ancestor of taskrambler.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4870 lines
178 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>CSS Lists and Counters Module Level 3</title>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
<link href="default.css" rel=stylesheet type="text/css">
<style type="text/css">
p { text-indent: 0 !important; margin: .5em 0; }
code.inline { white-space: pre-line; }
.alphabetic-example { font-family: monospace; font-size: 90%; margin: 1em 0 1em 2em; }
.alphabetic-example > span { display: inline-block; width: 50px;}
.alphabetic-example > span > img { width: 16px; height: 16px; }
</style>
<link href="http://www.w3.org/StyleSheets/TR/W3C-WD" rel=stylesheet
type="text/css">
<body>
<div class=head> <!--begin-logo-->
<p><a href="http://www.w3.org/"><img alt=W3C height=48
src="http://www.w3.org/Icons/w3c_home" width=72></a> <!--end-logo-->
<h1>CSS Lists and Counters Module Level 3</h1>
<h2 class="no-num no-toc" id=longstatus-date>W3C Working Draft 24 May 2011</h2>
<dl>
<dt>This version:
<dd><a
href="http://www.w3.org/TR/2011/WD-css3-lists-20110524">http://www.w3.org/TR/2011/WD-css3-lists-20110524</a></dd>
<!-- <a href="http://dev.w3.org/csswg/css3-lists/">http://dev.w3.org/csswg/css3-lists/</a></dd>-->
<dt>Latest version:
<dd><a
href="http://www.w3.org/TR/css3-lists/">http://www.w3.org/TR/css3-lists/</a>
<dt>Previous version:
<dd><a
href="http://www.w3.org/TR/2002/WD-css3-lists-20021107/">http://www.w3.org/TR/2002/WD-css3-lists-20021107/</a>
<dt>Editor:
<dd><a href="http://www.xanthir.com/contact">Tab Atkins Jr.</a>, Google
Inc.
<dt>Previous Editors:</dt>
<!-- in the order tantek requested -->
<dd>Ian Hickson, <a href="mailto:ian@hixie.ch">ian@hixie.ch</a>
<dd><span lang=tr>Tantek &#x00C7;el&#x0131;&#x0307;k</span>, Microsoft
Corporation, <a
href="mailto:tantekc@microsoft.com">tantekc@microsoft.com</a>
<dt>Contributors:</dt>
<!-- in order of volume of input -->
<dd>Simon Montagu, AOL-TW/Netscape, <a
href="mailto:smontagu@netscape.com">smontagu@netscape.com</a>
<dd>Daniel Yacob, <a href="mailto:yacob@geez.org">yacob@geez.org</a>
<dd>Christopher Hoess, <a
href="mailto:choess@stwing.upenn.edu">choess@stwing.upenn.edu</a>
<dd>Daniel Glazman, AOL-TW/Netscape, <a
href="mailto:glazman@netscape.com">glazman@netscape.com</a>
</dl>
<!--begin-copyright-->
<p class=copyright><a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright"
rel=license>Copyright</a> &copy; 2011 <a
href="http://www.w3.org/"><acronym title="World Wide Web
Consortium">W3C</acronym></a><sup>&reg;</sup> (<a
href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute
of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym
title="European Research Consortium for Informatics and
Mathematics">ERCIM</acronym></a>, <a
href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a
href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
and <a
href="http://www.w3.org/Consortium/Legal/copyright-documents">document
use</a> rules apply.</p>
<!--end-copyright-->
<hr title="Separator for header">
</div>
<h2 class="no-num no-toc" id=abstract> Abstract</h2>
<p>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&nbsp;3 relating to list styling. It
includes and extends the functionality of CSS level&nbsp;2 <a
href="#CSS21" rel=biblioentry>[CSS21]<!--{{!CSS21}}--></a>, which builds
on CSS level&nbsp;1 <a href="#CSS1"
rel=biblioentry>[CSS1]<!--{{CSS1}}--></a>. The main extensions compared to
level&nbsp;2 are a pseudo-element representing the list marker, a new
&lsquo;<a href="#hanging"><code class=css>hanging</code></a>&rsquo; value
for &lsquo;<a href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo;, and a method for
authors to define their own list-styles.
<h2 class="no-num no-toc" id=status> Status of this document</h2>
<!--begin-status-->
<p><em>This section describes the status of this document at the time of
its publication. Other documents may supersede this document. A list of
current W3C publications and the latest revision of this technical report
can be found in the <a href="http://www.w3.org/TR/">W3C technical reports
index at http://www.w3.org/TR/.</a></em>
<p>Publication as a Working Draft does not imply endorsement by the W3C
Membership. This is a draft document and may be updated, replaced or
obsoleted by other documents at any time. It is inappropriate to cite this
document as other than work in progress.
<p>The (<a
href="http://lists.w3.org/Archives/Public/www-style/">archived</a>) public
mailing list <a href="mailto:www-style@w3.org">www-style@w3.org</a> (see
<a href="http://www.w3.org/Mail/Request">instructions</a>) is preferred
for discussion of this specification. When sending e-mail, please put the
text &#8220;css3-lists&#8221; in the subject, preferably like this:
&#8220;[<!---->css3-lists<!---->] <em>&hellip;summary of
comment&hellip;</em>&#8221;
<p>This document was produced by the <a
href="http://www.w3.org/Style/CSS/members">CSS Working Group</a> (part of
the <a href="http://www.w3.org/Style/">Style Activity</a>).
<p>This document was produced by a group operating under the <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February
2004 W3C Patent Policy</a>. W3C maintains a <a
href="http://www.w3.org/2004/01/pp-impl/32061/status"
rel=disclosure>public list of any patent disclosures</a> made in
connection with the deliverables of the group; that page also includes
instructions for disclosing a patent. An individual who has actual
knowledge of a patent which the individual believes contains <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
Claim(s)</a> must disclose the information in accordance with <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the W3C Patent Policy</a>.</p>
<!--end-status-->
<h2 class="no-num no-toc" id=contents> Table of contents</h2>
<!--begin-toc-->
<ul class=toc>
<li><a href="#introduction"><span class=secno>1. </span> Introduction</a>
<li><a href="#declaring-a-list-item"><span class=secno>2. </span>
Declaring a List Item</a>
<li><a href="#marker-content"><span class=secno>3. </span> Marker Content:
The &lsquo;<code class=property>list-style-type</code>&rsquo; and
&lsquo;<code class=property>list-style-image</code>&rsquo; properties</a>
<li><a href="#list-style-position-property"><span class=secno>4. </span>
Marker Position: The &lsquo;<code
class=property>list-style-position</code>&rsquo; property</a>
<li><a href="#list-style-property"><span class=secno>5. </span> The
&lsquo;<code class=property>list-style</code>&rsquo; shorthand
property</a>
<li><a href="#marker-pseudoelement"><span class=secno>6. </span> Markers:
The &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element</a>
<ul class=toc>
<li><a href="#content-property"><span class=secno>6.1. </span>
Generating the computed value of the &lsquo;<code
class=property>content</code>&rsquo; property</a>
</ul>
<li><a href="#display-marker"><span class=secno>7. </span> Using Content
as Markers: the &lsquo;<code class=css>marker</code>&rsquo; value for
&lsquo;<code class=property>display</code>&rsquo;</a>
<li><a href="#counter-style"><span class=secno>8. </span> Defining Custom
Counter Styles: the &lsquo;<code class=css>@counter-style</code>&rsquo;
rule</a>
<ul class=toc>
<li><a href="#counter-style-type"><span class=secno>8.1. </span> Counter
algorithms: the &lsquo;<code class=property>type</code>&rsquo;
descriptor</a>
<ul class=toc>
<li><a href="#repeating"><span class=secno>8.1.1. </span>
repeating</a>
<li><a href="#numeric"><span class=secno>8.1.2. </span> numeric</a>
<li><a href="#alphabetic"><span class=secno>8.1.3. </span>
alphabetic</a>
<li><a href="#symbolic"><span class=secno>8.1.4. </span> symbolic</a>
<li><a href="#non-repeating"><span class=secno>8.1.5. </span>
non-repeating</a>
<li><a href="#additive"><span class=secno>8.1.6. </span> additive</a>
<li><a href="#override"><span class=secno>8.1.7. </span> override</a>
</ul>
<li><a href="#counter-style-negative"><span class=secno>8.2. </span>
Formatting negative values: the &lsquo;<code
class=property>negative</code>&rsquo; descriptor</a>
<li><a href="#counter-style-prefix"><span class=secno>8.3. </span>
Symbols before the marker: the &lsquo;<code
class=property>prefix</code>&rsquo; descriptor</a>
<li><a href="#counter-style-suffix"><span class=secno>8.4. </span>
Symbols after the marker: the &lsquo;<code
class=property>suffix</code>&rsquo; descriptor</a>
<li><a href="#counter-style-range"><span class=secno>8.5. </span>
Limiting the counter scope: the &lsquo;<code
class=property>range</code>&rsquo; descriptor</a>
<li><a href="#counter-style-fallback"><span class=secno>8.6. </span>
Defining fallback: the &lsquo;<code
class=property>fallback</code>&rsquo; descriptor</a>
<li><a href="#counter-style-glyphs"><span class=secno>8.7. </span>
Marker characters: the &lsquo;<code class=property>glyphs</code>&rsquo;
and &lsquo;<code class=property>additive-glyphs</code>&rsquo;
descriptors</a>
</ul>
<li><a href="#ua-stylesheet"><span class=secno>9. </span> Predefined
Counter Styles</a>
<ul class=toc>
<li><a href="#predefined-repeating"><span class=secno>9.1. </span>
Predefined Repeating Styles</a>
<li><a href="#predefined-numeric"><span class=secno>9.2. </span>
Predefined Numeric Styles</a>
<li><a href="#predefined-alphabetic"><span class=secno>9.3. </span>
Predefined Alphabetic Styles</a>
<li><a href="#predefined-symbolic"><span class=secno>9.4. </span>
Predefined Symbolic Styles</a>
<li><a href="#predefined-non-repeating"><span class=secno>9.5. </span>
Predefined Non-Repeating Styles</a>
<li><a href="#predefined-additive"><span class=secno>9.6. </span>
Predefined Additive Styles</a>
</ul>
<li><a href="#predefined-counters"><span class=secno>10. </span> Complex
Counter Styles</a>
<ul class=toc>
<li><a href="#glyph-counters"><span class=secno>10.1. </span> Glyphs</a>
<li><a href="#ethiopic-numeric"><span class=secno>10.2. </span> The
&lsquo;<code class=property>ethiopic-numeric</code>&rsquo; counter
style</a>
<li><a href="#cjk-counter-styles"><span class=secno>10.3. </span> The
Chinese longhand counter styles</a>
</ul>
<li><a href="#optional-extensions"><span class=secno>11. </span> Optional
Extended Counter Styles</a>
<ul class=toc>
<li><a href="#extended-cjk-longhand"><span class=secno>11.1. </span>
Extended CJK Longhand</a>
<li><a href="#extended-numbered"><span class=secno>11.2. </span>
Extended Non-Repeating Numbered Styles</a>
</ul>
<li><a href="#html4"><span class=secno>12. </span> Sample style sheet for
HTML</a>
<li class=no-num><a href="#profiles"> Profiles</a>
<li class=no-num><a href="#acknowledgments"> Acknowledgments</a>
<li class=no-num><a href="#changes"> Changes From CSS2</a>
<li class=no-num><a href="#references">References</a>
<ul class=toc>
<li class=no-num><a href="#normative-references">Normative
references</a>
<li class=no-num><a href="#other-references">Other references</a>
</ul>
<li class=no-num><a href="#property-index">Property index</a>
<li class=no-num><a href="#index">Index</a>
</ul>
<!--end-toc-->
<hr>
<!-- ====================================================================== -->
<h2 id=introduction><span class=secno>1. </span> Introduction</h2>
<p>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.
<p>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.
<div class=html-example>
<p>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:</p>
<pre>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>Creating a list with markers&lt;/title>
&lt;style>
li::marker { content: "(" counter(list-item, lower-roman) ")"; }
li { display: list-item; }
&lt;/style>
&lt;/head>
&lt;body>
&lt;ol>
&lt;li>This is the first item.&lt;/li>
&lt;li>This is the second item.&lt;/li>
&lt;li>This is the third item.&lt;/li>
&lt;/ol>
&lt;/body>
&lt;/html>
</pre>
<p>should produce something like this:</p>
<pre>
(i) This is the first item.
(ii) This is the second item.
(iii) This is the third item.
</pre>
</div>
<p>With descendant selectors and child selectors, it's possible to specify
different marker types depending on the depth of embedded lists.
<p class=issue>A future release of this module will probably include ways
to render tree lists.</p>
<!-- ====================================================================== -->
<h2 id=declaring-a-list-item><span class=secno>2. </span> Declaring a List
Item</h2>
<p>To declare a list item, the &lsquo;<code
class=property>display</code>&rsquo; property should be set to
&lsquo;<code class=css>list-item</code>&rsquo;. This, in addition to
generating a &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element
and enabling the properties described below for that element, causes that
element to increment the list item counter &lsquo;<code
class=css>list-item</code>&rsquo;. (This does not affect the specified or
computed values of the counter properties.)
<p>The &lsquo;<code class=css>list-item</code>&rsquo; counter is a real
counter, and can be directly affected using the &lsquo;<code
class=property>counter-increment</code>&rsquo; and &lsquo;<code
class=css>counter-reset</code>&rsquo; properties. It can also be used in
the &lsquo;<code class=css>counter()</code>&rsquo; and &lsquo;<code
class=css>counters()</code>&rsquo; functions.
<p class=issue>The CSS3 box module may define other &lsquo;<code
class=property>display</code>&rsquo; values which generate a list marker.
These should also affect the &lsquo;<code
class=css>list-item</code>&rsquo; counter.
<p>Note that this new model makes the &lsquo;<code
class=css>marker</code>&rsquo; display type redundant. That display type
is therefore obsolete in the CSS3 Lists model.</p>
<!-- ====================================================================== -->
<h2 id=marker-content><span class=secno>3. </span> Marker Content: The
&lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; and &lsquo;<a
href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo; properties</h2>
<table class=propdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=list-style-type>list-style-type</dfn>
<tr>
<th>Value:
<td><a href="#ltstring"><b>&lt;string></b></a> | <a
href="#ltcounter-style"><b>&lt;counter-style></b></a> | inline | none
<tr>
<th>Initial:
<td>disc
<tr>
<th>Applies To:
<td>all elements with &lsquo;<code class=css>display:
list-item</code>&rsquo;
<tr>
<th>Inherited:
<td>yes
<tr>
<th>Percentages:
<td>N/A
<tr>
<th>Media:
<td>visual
<tr>
<th>Computed Value:
<td>specified value
</table>
<p>When the &lsquo;<a href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo; property is &lsquo;<a
href="#none"><code class=css>none</code></a>&rsquo; or not a valid image,
the &lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; property is instead used
to construct the default contents of a list item's marker.
<dl>
<dt><dfn id=ltstring>&lt;string></dfn>
<dd>The &lsquo;<code class=css>::marker</code>&rsquo; pseudoelement must
use the provided string as its default contents.
<dt><dfn id=ltcounter-style>&lt;counter-style></dfn>
<dd>
<p>The &lsquo;<code class=css>::marker</code>&rsquo; pseudoelement's
default contents must be the value of the &lsquo;<code
class=css>list-item</code>&rsquo; counter, formatted according to the
given counter style. Algorithms for formatting a value according to a
counter style are given later in this spec.</p>
<p>This specification defines a method for authors to create their own
counter styles which may be used here. Additionally, many useful counter
styles are predefined in the sections on <a
href="#predefined-counters">Complex Counter Styles</a> and <a
href="#ua-stylesheet">Predefined Counter Styles</a>.</p>
<dt><dfn id=inline>inline</dfn>
<dd>The &lsquo;<code class=css>::marker</code>&rsquo; pseudoelement's
default contents must be the textual contents of the list item's first
child that is an <a href="#inline-marker-candidate"><i
title=inline-marker-candidate>inline marker candidate</i></a>, if one
exists.
<dt><dfn id=none>none</dfn>
<dd>The &lsquo;<code class=css>::marker</code>&rsquo; pseudoelement must
have no default contents. This will suppress the creation of a marker
unless the &lsquo;<code class=css>::marker</code>&rsquo; has its contents
specified directly through the &lsquo;<code
class=property>content</code>&rsquo; property.
</dl>
<table class=propdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=list-style-image>list-style-image</dfn>
<tr>
<th>Value:
<td>&lt;image> | none
<tr>
<th>Initial
<td>none
<tr>
<th>Applies To:
<td>all elements with &lsquo;<code class=css>display:
list-item</code>&rsquo;
<tr>
<th>Inherited:
<td>yes
<tr>
<th>Percentages:
<td>N/A
<tr>
<th>Media:
<td>visual
<tr>
<th>Computed Value:
<td>specified value
</table>
<p>This property sets the image that will be used as the list item marker.
When the <b>&lt;image></b> resolves to a valid image, it is used as the
default contents of &lsquo;<code class=css>::marker</code>&rsquo; instead
of the value specified by &lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo;.
<p>If the value &lsquo;<a href="#none"><code
class=css>none</code></a>&rsquo; is provided, or the <b>&lt;image></b>
doesn't resolve to a valid image, then the default contents are given by
&lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; instead.
<div class=example>
<p>The following example sets the marker at the beginning of each list
item to be the image "ellipse.png".</p>
<pre>LI { list-style-image: url("http://www.example.com/ellipse.png") }</pre>
</div>
<!-- ====================================================================== -->
<h2 id=list-style-position-property><span class=secno>4. </span> Marker
Position: The &lsquo;<a href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo; property</h2>
<table class=propdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=list-style-position>list-style-position</dfn>
<tr>
<th>Value:
<td>inside | hanging | outside
<tr>
<th>Initial:
<td>outside
<tr>
<th>Applies To:
<td>all elements with &lsquo;<code class=css>display:
list-item</code>&rsquo;
<tr>
<th>Inherited:
<td>yes
<tr>
<th>Percentages:
<td>N/A
<tr>
<th>Media:
<td>visual
<tr>
<th>Computed Value:
<td>specified value
</table>
<p>This property specifies the position of the &lsquo;<code
class=css>::marker</code>&rsquo; pseudo-element's box in the list item.
Values have the following meanings:
<dl>
<dt><dfn id=inside>inside</dfn>
<dd>The &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element is an
inline-block element placed immediately before the &lsquo;<code
class=css>::before</code>&rsquo; pseudo-element in the list item's
principle box, after which the element's content flows. Note that if
there is no inline content, this will create a line box, just as content
in an inline &lsquo;<code class=css>::before</code>&rsquo; pseudo-element
would. Also note that all the properties that apply to inline elements
apply to the &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element
in this state, and this &lsquo;<code class=css>::marker</code>&rsquo; box
participates in the inline box model in the normal manner.
<p class=issue>Inline markers have some special behavior wrt white-space
collapsing at the beginning of the list-item. Is this behavior necessary
for web-compat, or can I just spec it away? (Since I have hanging and
outside markers be abspos, it doesn't apply to them.)
<dt><dfn id=hanging>hanging</dfn>
<dd>As &lsquo;<a href="#inside"><code
class=property>inside</code></a>&rsquo;, except the marker is instead
placed immediately before the first text or significant whitespace in the
list item or its children. The marker is then absolutely positioned
(leaving behind a placeholder, per the Positioned Layout spec), with the
static position such that the "end" edge of the marker is against the
"start" edge of the placeholder, and the baseline of the marker is
aligned with the placeholder.
<p class=issue>I haven't yet defined what happens when the list item
doesn't contain any text, or when the first text is within a child
list-item. I need to figure out how much of current implementations is
accidental and how much is necessary.
<dt><dfn id=outside>outside</dfn>
<dd>As &lsquo;<a href="#hanging"><code
class=css>hanging</code></a>&rsquo;, except the horizontal static
position of the marker is such that the marker's "end" edge is placed
against the "start" edge of the list item's parent. <span class=note>The
&lsquo;<a href="#outside"><code class=css>outside</code></a>&rsquo; value
has additional implications for the marker, described in the <a
href="#marker-pseudoelement">Marker section</a>.</span>
<p class=issue>The same problems with &lsquo;<a href="#hanging"><code
class=property>hanging</code></a>&rsquo; apply here.
</dl>
<p>Note that a marker is only generated if the computed value of the
&lsquo;<code class=property>content</code>&rsquo; property for the
element's &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element is
not &lsquo;<a href="#none"><code class=css>none</code></a>&rsquo;.
<div class=example>
<p>For example:
<pre class=html-example>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>Comparison of inside/outside position&lt;/title>
&lt;style>
ul { list-style: outside; }
ul.compact { list-style: inside; }
&lt;/style>
&lt;/head>
&lt;body>
&lt;ul>
&lt;li>first list item comes first&lt;/li>
&lt;li>second list item comes second&lt;/li>
&lt;/ul>
&lt;ul class=compact>
&lt;li>first list item comes first&lt;/li>
&lt;li>second list item comes second&lt;/li>
&lt;/ul>
&lt;/body>
&lt;/html>
</pre>
<p>The above example may be formatted as:</p>
<div class=figure>
<p><img alt="list with bullets to the left of it and list with bullets
inside" id=img-list-inout src=list-inout.gif></p>
</div>
<p>In right-to-left text, the markers would have been on the right side of
the box.</p>
</div>
<!-- ====================================================================== -->
<h2 id=list-style-property><span class=secno>5. </span> The &lsquo;<a
href="#list-style"><code class=property>list-style</code></a>&rsquo;
shorthand property</h2>
<table class=propdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=list-style>list-style</dfn>
<tr>
<th>Value:
<td>&lt;&lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo;> || &lt;&lsquo;<a
href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo;> || &lt;&lsquo;<a
href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo;>
<tr>
<th>Initial:
<td>see individual properties
<tr>
<th>Applies To:
<td>all elements with &lsquo;<code class=css>display:
list-item</code>&rsquo;
<tr>
<th>Inherited:
<td>yes
<tr>
<th>Percentages:
<td>N/A
<tr>
<th>Media:
<td>visual
<tr>
<th>Computed Value:
<td>see individual properties
</table>
<p>The &lsquo;<a href="#list-style"><code
class=property>list-style</code></a>&rsquo; property is a shorthand
notation for setting the three properties &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo;, &lsquo;<a
href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo;, and &lsquo;<a
href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo; at the same place in
the style sheet.
<div class=example>
<p>For example:</p>
<pre>
UL { list-style: upper-roman inside } /* Any UL */
UL > UL { list-style: circle outside } /* Any UL child of a UL */
</pre>
</div>
<p>Using a value of &lsquo;<a href="#none"><code
class=css>none</code></a>&rsquo; in the shorthand is potentially
ambiguous, as &lsquo;<a href="#none"><code
class=css>none</code></a>&rsquo; is a valid value for both &lsquo;<a
href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo; and &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo;; to resolve this
ambiguity, a value of &lsquo;<a href="#none"><code
class=css>none</code></a>&rsquo; in the shorthand must be applied to
whichever of the two properties aren't otherwise set by the shorthand.
<pre class=css-example>
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 */
</pre>
<p>Although authors may specify &lsquo;<a href="#list-style"><code
class=property>list-style</code></a>&rsquo; 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.
<pre class=example>
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 */
</pre>
<p>Authors who use only the descendant selector may not achieve the results
they expect. Consider the following rules:
<pre class=html-example>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>WARNING: Unexpected results due to cascade&lt;/title>
&lt;style>
ol.alpha li { list-style: lower-alpha; }
ul li { list-style: disc; }
&lt;/style>
&lt;/head>
&lt;body>
&lt;ol class=alpha>
&lt;li>level 1
&lt;ul>
&lt;li>level 2&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;/body>
&lt;/html>
</pre>
<p>The desired rendering would have level 1 list items with &lsquo;<a
href="#lower-alpha"><code class=property>lower-alpha</code></a>&rsquo;
labels and level 2 items with &lsquo;<a href="#disc"><code
class=property>disc</code></a>&rsquo; 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:
<pre class=example>
OL.alpha > LI { list-style: lower-alpha }
UL LI { list-style: disc }
</pre>
<p>Another solution would be to specify &lsquo;<a href="#list-style"><code
class=property>list-style</code></a>&rsquo; information only on the list
type elements:
<pre class=example>
OL.alpha { list-style: lower-alpha }
UL { list-style: disc }
</pre>
<p>Inheritance will transfer the &lsquo;<a href="#list-style"><code
class=property>list-style</code></a>&rsquo; values from OL and UL elements
to LI elements. This is the recommended way to specify list style
information.</p>
<!-- ====================================================================== -->
<h2 id=marker-pseudoelement><span class=secno>6. </span> Markers: The
&lsquo;<code class=css>::marker</code>&rsquo; pseudo-element</h2>
<p>Markers are created by setting an element's &lsquo;<code
class=property>display</code>&rsquo; property to &lsquo;<code
class=css>list-item</code>&rsquo;. The &lsquo;<code
class=css>list-item</code>&rsquo; display type is, in every other respect,
identical to the &lsquo;<code class=css>block</code>&rsquo; display type.
The marker box is only created if the computed value of the &lsquo;<code
class=property>content</code>&rsquo; property for the pseudo-element is
not &lsquo;<a href="#none"><code class=css>none</code></a>&rsquo;.
<p>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 &lsquo;<code
class=css>::before</code>&rsquo; pseudo-element on the same superior
parent. Marker boxes are inline-block by default, and so a value of
&lsquo;<code class=css>auto</code>&rsquo; for &lsquo;<code
class=property>width</code>&rsquo; resolves to the width of the marker's
content. The value of &lsquo;<a href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo; on the marker's
superior parent can vary the marker's directionality and the initial value
of its &lsquo;<code class=css>position</code>&rsquo; property.
<div class=html-example>
<p>In the following example, the content is centered within a marker box
of a fixed width. This document:</p>
<pre class=html-example>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>Content alignment in the marker box&lt;/title>
&lt;style>
LI::marker {
content: "(" counter(counter) ")";
width: 6em;
text-align: center;
}
LI {
display: list-item;
counter-increment: counter;
}
&lt;/style>
&lt;/head>
&lt;body>
&lt;ol>
&lt;li>This is the first item.&lt;/li>
&lt;li>This is the second item.&lt;/li>
&lt;li>This is the third item.&lt;/li>
&lt;/ol>
&lt;/body>
&lt;/html>
</pre>
<p>should render something like this:</p>
<pre>
(1) This is the
first item.
(2) This is the
second item.
(3) This is the
third item.
</pre>
</div>
<p>The next example uses markers to number notes (paragraphs).
<div class=html-example>
<p>The following document:</p>
<pre class=html-example>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>Markers to create numbered notes&lt;/title>
&lt;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;
}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>This is the first paragraph in this document.&lt;/p>
&lt;p class="Note">This is a very short document.&lt;/p>
&lt;p>This is the end.&lt;/p>
&lt;/body>
&lt;/html>
</pre>
<p>should render something like this:</p>
<pre>
This is the first paragraph
in this document.
Note 1: This is a very short
document.
This is the end.
</pre>
</div>
<div class=html-example>
<p>The following example illustrates how markers may be offset from their
element. This HTML application and style sheet:</p>
<pre class=html-example>
&lt;!doctype html>
&lt;html>
&lt;head>
&lt;title>Marker example&lt;/title>
&lt;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 }
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>This is a long preceding paragraph ...&lt;/p>
&lt;ol>
&lt;li>This is the first item.&lt;/li>
&lt;li>This is the second item.&lt;/li>
&lt;li>This is the third item.&lt;/li>
&lt;/ol>
&lt;p>This is a long following paragraph ...&lt;/p>
&lt;/body>
&lt;/html>
</pre>
<p>should render something like this:</p>
<pre>
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 ...
</pre>
<p>(Note the use of the implicit counter increment.)</p>
</div>
<!-- ====================================================================== -->
<h3 id=content-property><span class=secno>6.1. </span> Generating the
computed value of the &lsquo;<code class=property>content</code>&rsquo;
property</h3>
<p>If a &lsquo;<code class=css>::marker</code>&rsquo; pseudo-element has
its &lsquo;<code class=property>content</code>&rsquo; property set to
&lsquo;<code class=css>normal</code>&rsquo;, the computed value of the
marker's &lsquo;<code class=property>content</code>&rsquo; property must
be constructed according to the following algorithm:
<ol>
<li>If the computed value of &lsquo;<a href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo; is a valid image, then
the computed value of the &lsquo;<code
class=property>content</code>&rsquo; property is the value of the
&lsquo;<a href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo; property.
<li>Otherwise, if the computed value of &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; is a string, then the
computed value of the &lsquo;<code class=property>content</code>&rsquo;
property is that string.
<li>Otherwise, if the computed value of &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; is the keyword &lsquo;<a
href="#inline"><code class=css>inline</code></a>&rsquo;, and the list
item has a child element which is an <a
href="#inline-marker-candidate"><i title=inline-marker-candidate>inline
marker candidate</i></a>, the computed value of the &lsquo;<code
class=property>content</code>&rsquo; property is the textual contents of
the list item's first <a href="#inline-marker-candidate"><i
title=inline-marker-candidate>inline marker candidate child</i></a>.
<li>Otherwise, if the computed value of &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; is the name of a counter
style, then the computed value of the &lsquo;<code
class=property>content</code>&rsquo; property is
<code>&lt;counter-prefix> counter(list-item, &lt;counter-name>)
&lt;counter-suffix></code>, where <i>&lt;counter-name></i> is the
computed value of the &lsquo;<a href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; property and
<i>&lt;counter-prefix></i> and <i>&lt;counter-suffix></i> are the values
of the <a href="#prefix"><i title=counter-prefix>prefix</i></a> and <a
href="#suffix"><i title=counter-suffix>suffix</i></a> descriptors for the
counter style with that name.
<li>Otherwise the computed value is &lsquo;<a href="#none"><code
class=css>none</code></a>&rsquo;.
</ol>
<div class=example>
<p>Given the following style sheet:</p>
<pre>
li { display: list-item; list-style-type: decimal /* initial value */; }
li::marker { content: normal /* initial value */; }
</pre>
<p>And the following document fragment:</p>
<pre>
&lt;li>List Item&lt;/li>
</pre>
<p>The computed value of the &lsquo;<code
class=property>content</code>&rsquo; property on the &lsquo;<code
class=css>::marker</code>&rsquo; pseudo-element of the list item element
is:</p>
<pre>counter(list-item, decimal) "."</pre>
</div>
<!-- ===================================================================== -->
<h2 id=display-marker><span class=secno>7. </span> Using Content as
Markers: the &lsquo;<code class=css>marker</code>&rsquo; value for
&lsquo;<code class=property>display</code>&rsquo;</h2>
<p>In some situations, such as legal proceedings or official minutes, the
precise form that the list marker takes is a vital part of the content.
It's not acceptable for the marker to change just because the UA is not
rendering CSS, or some server error is temporarily preventing the CSS file
from being loaded, as the precise marker name is used to officially refer
to that segment. The only way to guarantee that the marker will be
rendered correctly, regardless of whether CSS is applied, is to specify
the marker outside of CSS, directly in the document's markup. However, the
page author may still want to style the marker in many of the ways that
are available to them when using ordinary CSS-generated markers. To
accomodate this, a new value for the &lsquo;<code
class=property>display</code>&rsquo; property is defined.
<table class=propdef>
<tbody>
<tr>
<th>Property:
<td>&lsquo;<code class=property>display</code>&rsquo;
<tr>
<th>New Value:
<td>&lsquo;<code class=css>marker</code>&rsquo;
<tr>
<th>Initial:
<td>same as CSS2.1
<tr>
<th>Applies to:
<td>same as CSS2.1
<tr>
<th>Inherited:
<td>same as CSS2.1
<tr>
<th>Percentages:
<td>same as CSS2.1
<tr>
<th>Media:
<td>same as CSS2.1
<tr>
<th>Computed&#160;value:
<td>same as CSS2.1
</table>
<p>The <dfn id=marker>&lsquo;<code class=css>marker</code>&rsquo;</dfn>
value for &lsquo;<code class=property>display</code>&rsquo; indicates that
an element is an <dfn id=inline-marker-candidate
title=inline-marker-candidate>inline marker candidate</dfn>. If the
element is a child of a list item with &lsquo;<code
class=css>list-style-type:inline</code>&rsquo;, and none of the element's
previous siblings are inline marker candidates, the textual content of the
element (such as what would be returned by the .textContent property on
the element in HTML) must be used as the default contents of the ::marker
pseudo-element on the element's parent. Otherwise, this value must be
treated identically to &lsquo;<code class=css>inline-block</code>&rsquo;.</p>
<!-- ===================================================================== -->
<h2 id=counter-style><span class=secno>8. </span> Defining Custom Counter
Styles: the &lsquo;<code class=css>@counter-style</code>&rsquo; rule</h2>
<p>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!
<p>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
&lsquo;<code class=css>@counter-style</code>&rsquo; 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 &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; property or in the
&lsquo;<code class=css>counter()</code>&rsquo; and &lsquo;<code
class=css>counters()</code>&rsquo; functions, exactly like the Complex
Counter Styles in CSS.
<p>A <dfn id=counter-style0>counter style</dfn> defines how to construct
the representation of a counter value. Counter styles are composed of:
<ul>
<li>a <dfn id=name title=counter-name>name</dfn>, to identify the style
<li>a <dfn id=negative-sign title=counter-negative>negative sign</dfn>,
which is prepended or appended to the representation of a negative
counter value
<li>a <dfn id=prefix title=counter-prefix>prefix</dfn>, to prepend to the
representation
<li>a <dfn id=suffix title=counter-suffix>suffix</dfn>, to append to the
representation
<li>a <dfn id=fallback-style title=counter-fallback>fallback style</dfn>,
to render the representation with when the counter value is outside the
counter style's range or the counter style otherwise can't render the
counter value
<li>an <dfn id=upper title=counter-upper-bound>upper</dfn> and <dfn
id=lower-range-bound title=counter-lower-bound>lower range bound</dfn>,
to specify the (inclusive) range that the counter style can handle
<li>and an <dfn id=algorithm title=counter-algorithm>algorithm</dfn> that
transforms counter values into a string representation
</ul>
<p>The algorithm is usually specified implicitly by a combination of the
&lsquo;<a href="#descdef-type"><code class=css>type</code></a>&rsquo;,
&lsquo;<a href="#descdef-glyphs"><code class=css>glyphs</code></a>&rsquo;,
and &lsquo;<a href="#descdef-additive-glyphs"><code
class=css>additive-glyphs</code></a>&rsquo; properties, but some counter
styles instead have their algorithm explicitly defined in the <a
href="#predefined-counters">Complex Counter Styles</a> section.
<p>When asked to <i title=generate-a-counter>generate a counter
representation</i> using a particular counter style for a particular
counter value, follow these steps:
<ol>
<li>If the counter value is less than the <a href="#lower-range-bound"><i
title=counter-lower-bound>lower bound</i></a> or greater than the <a
href="#upper"><i title=counter-upper-bound>upper bound</i></a> of the
counter style, exit this algorithm and instead <i
title=generate-a-counter>generate a counter representation</i> using the
counter style's fallback style and the same counter value.
<li>If the counter value is negative, set the <a
href="#descdef-negative"><var>negative</var></a> flag and run the rest of
this algorithm with the counter value set to its absolute value instead.
<li>Using the counter value and the <a href="#algorithm"><i
title=counter-algorithm>counter algorithm</i></a> for the counter style,
generate an initial representation for the counter value.
<li>If the <a href="#descdef-negative"><var>negative</var></a> flag is
set, wrap the initial representation in the counter style's <a
href="#negative-sign"><i title=counter-negative>negative sign</i></a>, as
specified in the section for the <a
href="#counter-style-negative">negative descriptor</a>.
<li>Return the representation.
</ol>
<p>The general form of an &lsquo;<code
class=css>@counter-style</code>&rsquo; rule is:
<pre>
@counter-style <i>&lt;counter-style-name></i> {
[ descriptor: value; ]+
}
</pre>
<p>Each @counter-style <dfn id=rule>rule</dfn> specifies a value for every
counter-style descriptor, either implicitly or explicitly. Those not given
explicit value in the rule take the initial value listed with each
descriptor in this specification. These descriptors apply solely within
the ontext of the @counter-style <dfn id=rule0>rule</dfn> in which they
are defined, and do not apply to document language elements. There is no
notion of which elements the descriptors apply to or whether the values
are inherited by child elements. When a given descriptor occurs multiple
times in a given @counter-style <dfn id=rule1>rule</dfn>, only the last
specified value is used; all prior values for that descriptor are ignored.
<p>User agents which do not understand the @counter-style <dfn
id=rule2>rule</dfn> encounter the opening curly bracket and ignore forward
until the closing curly bracket. This at-rule conforms with the
forward-compatible parsing requirement of CSS; parsers may ignore these
rules without error. Any descriptors that are not recognized or
implemented by a given user agent must be ignored. @counter-style rules
require a &lsquo;<a href="#descdef-type"><code
class=property>type</code></a>&rsquo; descriptor; if this is missing the
@counter-style <dfn id=is>is</dfn> invalid and must be ignored. The
<i>&lt;counter-style-name></i> must be be a valid identifier and must not
be "decimal", "default", "hanging", "inherit", "initial", "inline",
"inside", "none", or "outside"; otherwise the @counter-style <dfn
id=is0>is</dfn> invalid and must be ignored.
<h3 id=counter-style-type><span class=secno>8.1. </span> Counter
algorithms: the &lsquo;<a href="#descdef-type"><code
class=property>type</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-type>type</dfn>
<tr>
<th>Value:
<td>repeating | numeric | alphabetic | symbolic | additive |
[non-repeating &lt;integer>?] | [ override &lt;counter-style-name> ]
<tr>
<th>Initial:
<td>N/A
</table>
<p>The &lsquo;<a href="#descdef-type"><code
class=property>type</code></a>&rsquo; descriptor specifies which algorithm
will be used to construct the counter's representation based on the
counter value. For example, &lsquo;<code class=css>repeating</code>&rsquo;
type counter styles just cycle through their glyphs repeatedly, while
&lsquo;<code class=css>numeric</code>&rsquo; type counter styles interpret
their glyphs as digits and build their representation accordingly. The
types are defined as follows:
<h4 id=repeating><span class=secno>8.1.1. </span> repeating</h4>
<p>If the type is &lsquo;<code class=css>repeating</code>&rsquo;, the
&lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must contain at least
one <a href="#counter-glyph"><i>counter glyph</i></a>. This type is
defined over all counter values.
<p>The &lsquo;<code class=css>repeating</code>&rsquo; counter type cycles
repeatedly through its provided glyphs, looping back to the beginning when
it reaches the end of the list, similar to the default &lsquo;<a
href="#disc"><code class=css>disc</code></a>&rsquo; counter style. It can
be used for simple bullets (just provide a single <a
href="#counter-glyph"><i>counter glyph</i></a>), or for cycling through
multiple bullets. The first <a href="#counter-glyph"><i>counter
glyph</i></a> is used as the representation of the value 1, the second <a
href="#counter-glyph"><i>counter glyph</i></a> (if it exists) is used as
the representation of the value 2, etc.
<p>In general, if there are <var>N</var> <i>counter glyphs</i> and a
representation is being constructed for the value <var>I</var>, the
representation is the <a href="#counter-glyph"><i>counter glyph</i></a> at
index (<var>I</var> mod <var>N</var>) of the list of <a
href="#counter-glyph"><i>counter glyph</i></a>s (0-indexed).
<div class=example>
<p>A "triangle bullet" counter style can be defined as:</p>
<pre>
@counter-style <dfn id=triangle>triangle</dfn> {
type: repeating;
glyphs: '▶';
suffix: '';
}
</pre>
<p>It will then produce lists that look like:</p>
<pre>
▶ One
▶ Two
▶ Three
</pre>
</div>
<h4 id=numeric><span class=secno>8.1.2. </span> numeric</h4>
<p>If the type is &lsquo;<code class=css>numeric</code>&rsquo;, the
&lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must contain at least
two <a href="#counter-glyph"><i>counter glyph</i></a>s. This type is
defined over all counter values.
<p>The &lsquo;<code class=css>numeric</code>&rsquo; counter type cycles
interprets the list of <a href="#counter-glyph"><i>counter glyph</i></a>s
as digits to a number system, similar to the default &lsquo;<a
href="#decimal"><code class=css>decimal</code></a>&rsquo; counter style.
The first <a href="#counter-glyph"><i>counter glyph</i></a> in the list is
interpreted as the digit 0, the second as the digit 1, and so on. If there
are <var>N</var> <a href="#counter-glyph"><i>counter glyph</i></a>s, the
representation is a base <var>N</var> number using the <a
href="#counter-glyph"><i>counter glyph</i></a>s as digits.
<p>To construct the representation, run the following algorithm. Let
<var>N</var> be the length of the list of <i>counter glyphs</i>,
<var>I</var> initially be the counter value, <var>S</var> initially be the
empty string, <a href="#descdef-negative"><var>negative</var></a> be a
boolean flag that is initially false, and <var>glyph(n)</var> be the nth
<a href="#counter-glyph"><i>counter glyph</i></a> in the list of <a
href="#counter-glyph"><i>counter glyph</i></a>s (0-indexed).
<ol>
<li>If <var>I</var> is 0, append <var>glyph(0)</var> to <var>S</var> and
return <var>S</var>.
<li>While <var>I</var> is not equal to 0:
<ol>
<li>Prepend <var>glyph( <var>I</var> mod <var>N</var> )</var> to
<var>S</var>.
<li>Set <var>I</var> to <code>floor( <var>I</var> / <var>N</var>
)</code>.
</ol>
<li>Return <var>S</var>.
</ol>
<div class=example>
<p>A "trinary" counter style can be defined as:</p>
<pre>
@counter-style <dfn id=trinary>trinary</dfn> {
type: numeric;
glyphs: '0' '1' '2';
}
</pre>
<p>It will then produce lists that look like:</p>
<pre>
1. One
2. Two
10. Three
11. Four
12. Five
20. Six
</pre>
</div>
<h4 id=alphabetic><span class=secno>8.1.3. </span> alphabetic</h4>
<p>If the type is &lsquo;<code class=css>alphabetic</code>&rsquo;, the
&lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must contain at least
two <a href="#counter-glyph"><i>counter glyph</i></a>s. This type is
defined only over positive counter values.
<p>The &lsquo;<code class=css>alphabetic</code>&rsquo; counter type
interprets the list of <i>counter glyphs</i> as digits to an
<em>alphabetic</em> numbering system, similar to the default &lsquo;<a
href="#lower-alpha"><code class=css>lower-alpha</code></a>&rsquo; counter
style. Alphabetic numbering systems are commonly used for lists, and also
appear in many spreadsheet programs to number columns. The first <a
href="#counter-glyph"><i>counter glyph</i></a> in the list is interpreted
as the digit 1, the second as the digit 2, and so on. If there are
<var>N</var> <a href="#counter-glyph"><i>counter glyph</i></a>s, the
representation is a base <var>N</var> alphabetic number using the <a
href="#counter-glyph"><i>counter glyph</i></a>s as digits. Alphabetic
numbering systems do not contain a digit representing 0.
<p>To construct the representation, run the following algorithm. Let
<var>N</var> be the length of the list of <a
href="#counter-glyph"><i>counter glyph</i></a>s, <var>I</var> initially be
the counter value, <var>S</var> initially be the empty string, and
<var>glyph(n)</var> be the nth <a href="#counter-glyph"><i>counter
glyph</i></a> in the list of <a href="#counter-glyph"><i>counter
glyph</i></a>s (0-indexed).
<p>While <var>I</var> is not equal to 0:
<ol>
<li>Set <var>I</var> to <code><var>I</var> - 1</code>.
<li>Prepend <var>glyph( <var>I</var> mod <var>N</var> )</var> to
<var>S</var>.
<li>Set <var>I</var> to <code>floor( <var>I</var> / <var>N</var> )</code>.
</ol>
<p>Finally, return <var>S</var>.
<div class=example>
<p>A counter style using go stones can be defined as:</p>
<pre>
@counter-style <dfn id=go>go</dfn> {
type: alphabetic;
glyphs: url(white.svg) url(black.svg);
suffix: '';
}
</pre>
<p>It will then produce lists that look like:</p>
<div class=alphabetic-example> <span><img alt="" src=white.svg></span>
One<br>
<span><img alt="" src=black.svg></span> Two<br>
<span><img alt="" src=white.svg><img alt="" src=white.svg></span>
Three<br>
<span><img alt="" src=white.svg><img alt="" src=black.svg></span>
Four<br>
<span><img alt="" src=black.svg><img alt="" src=white.svg></span>
Five<br>
<span><img alt="" src=black.svg><img alt="" src=black.svg></span> Six<br>
<span><img alt="" src=white.svg><img alt="" src=white.svg><img alt=""
src=white.svg></span> Seven</div>
<p class=note>This example requires support for SVG images to display
correctly.</p>
</div>
<div class=example>
<p>Alphabetic styles may also be used to simulate a fixed-width numeric
style:</p>
<pre>
@counter-style <dfn id=fixed-decimal>fixed-decimal</dfn> {
type: alphabetic;
glyphs: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';
}
ol {
list-style: fixed-decimal;
counter-reset: list-item 1111;
}
</pre>
<p>This will produce lists that look like:</p>
<pre>
0001. One
0002. Two
0003. Three
0004. Four
0005. Five
0006. Six
</pre>
<p>Two-digit numbers start at value 11, three-digit numbers start at value
111, etc..</p>
<p class=issue>Should I instead explicitly provide a fixed-width numeric
counter type? I'd like to see if this sort of numbering is used in the
wild first.</p>
</div>
<h4 id=symbolic><span class=secno>8.1.4. </span> symbolic</h4>
<p>If the type is &lsquo;<code class=css>symbolic</code>&rsquo;, the
&lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must contain at least
one <a href="#counter-glyph"><i>counter glyph</i></a>. This type is
defined only over positive counter values.
<p>The &lsquo;<code class=css>symbolic</code>&rsquo; counter type cycles
repeatedly through its provided glyphs, doubling, tripling, etc. the
glyphs on each successive pass through the list. It can be used for
footnote-style markers, and is also sometimes used for alphabetic-style
lists for a slightly different presentation than what the &lsquo;<code
class=css>alphabetic</code>&rsquo; type presents.
<p>To construct the representation, let <var>N</var> be the length of the
list of <a href="#counter-glyph"><i>counter glyph</i></a>s, <var>I</var>
initially be the counter value, <var>S</var> initially be the empty
string, and <code>glyph(n)</code> be the nth <a
href="#counter-glyph"><i>counter glyph</i></a> in the list of <a
href="#counter-glyph"><i>counter glyph</i></a>s (0-indexed). Append <code
class=inline>glyph( <var>I</var> mod <var>N</var> )</code> to <var>S</var>
<code class=inline>floor( (<var>I</var> - 1) / <var>N</var> )</code>
times, then return <var>S</var>.
<div class=example>
<p>An "unary" counter style can be defined as:</p>
<pre>
@counter-style <dfn id=unary>unary</dfn> {
type: symbolic;
glyphs: '|';
}
</pre>
<p>It will then produce lists that look like:</p>
<pre>
|. One
||. Two
|||. Three
||||. Five
|||||. Six
</pre>
</div>
<p>The &lsquo;<code class=css>symbolic</code>&rsquo; type will produce
representations with sizes that are linear in the magnitude of the counter
value. This can potentially be abused to generate excessively large
representations and consume undue amounts of the user's memory or even
hang their browser. User agents must support representations at least 20
characters long, but they may choose to instead use the fallback style for
representations that would be longer than 20 characters.
<h4 id=non-repeating><span class=secno>8.1.5. </span> non-repeating</h4>
<p>If the type is &lsquo;<code class=css>non-repeating</code>&rsquo;, the
&lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must contain at least
one <a href="#counter-glyph"><i>counter glyph</i></a>. This type is
defined over counter values in a finite range, starting with the <a
href="#first-glyph-value"><i>first glyph value</i></a> and having a length
equal to the length of the list of <a href="#counter-glyph"><i>counter
glyph</i></a>s.
<p>The &lsquo;<code class=css>non-repeating</code>&rsquo; 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.
<p>When this type is specified, it may optionally have an integer provided
after it, which sets the <dfn id=first-glyph-value>first glyph
value</dfn>. If it is omitted, the <a href="#first-glyph-value"><i>first
glyph value</i></a> is 1.
<p>The first <a href="#counter-glyph"><i>counter glyph</i></a> is the
representation for the <a href="#first-glyph-value"><i>first glyph
value</i></a>, and subsequent counter values are represented by subsequent
<a href="#counter-glyph"><i>counter glyph</i></a>s. Once the list of <a
href="#counter-glyph"><i>counter glyph</i></a>s is exhausted, further
values cannot be represented by this type, and must instead be represented
by the fallback counter style.
<div class=example>
<p>A "box-corner" counter style can be defined as:</p>
<pre>
@counter-style <dfn id=box-corner>box-corner</dfn> {
type: non-repeating;
glyphs: '◰' '◳' '◲' '◱';
suffix: ':';
}
</pre>
<p>It will then produce lists that look like:</p>
<pre>
◰: One
◳: Two
◲: Three
◱: Four
5: Five
6: Six
</pre>
</div>
<h4 id=additive><span class=secno>8.1.6. </span> additive</h4>
<p>If the type is &lsquo;<code class=css>additive</code>&rsquo;, the
&lsquo;<a href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptor must contain
at least one <a href="#additive-tuple"><i>additive tuple</i></a>. This
type is nominally defined over all positive counter values (see algorithm,
below, for exact details)
<p>The &lsquo;<code class=css>additive</code>&rsquo; counter type takes as
many of the largest glyphs that it can, then as many of the next largest
glyph, etc. until the sum of all the glyphs equals the counter value. It
can be used to implement roman numerals, and additionally is used to
represent the numbering system of several languages which use different
characters for the digits in differnt positions.
<p>To construct the representation, run this algorithm. let <var>I</var>
initially be the counter value, <var>S</var> initially be the empty
string, and <var>glyph list</var> initially be the list of <a
href="#additive-tuple"><i>additive tuple</i></a>s.
<p>If <var>I</var> is initially 0, and there is an <a
href="#additive-tuple"><i>additive tuple</i></a> with a weight of 0,
append that tuple's <a href="#counter-glyph"><i>counter glyph</i></a> to S
and return S.
<p>Otherwise, while <var>I</var> is greater than 0 and there are elements
left in the <var>glyph list</var>:
<ol>
<li>Pop the first <a href="#additive-tuple"><i>additive tuple</i></a> from
the <var>glyph list</var>. This is the <dfn id=current-tuple>current
tuple</dfn>.
<li>Append the <a href="#current-tuple"><i>current
tuple</i></a>&lsquo;<code class=css>s <a href="#counter-glyph"><i>counter
glyph</i></a> to <var>S</var> <code>floor( <var>I</var> / <a
href="#current-tuple"><var><i>current tuple</i></var></a></code>&rsquo;s
weight )</code> times (this may be 0).
</ol>
<p>If the loop ended because <var>I</var> is 0, return S. Otherwise, the
given counter value cannot be represented by this counter style, and must
instead be represented by the fallback counter style.
<div class=example>
<p>A "dice" counter style can be defined as:</p>
<pre>
@counter-style <dfn id=dice>dice</dfn> {
type: additive;
additive-glyphs: 6 '⚅', 5 '⚄', 4 '⚃', 3 '⚂', 2 '⚁', 1 '⚀';
suffix: '';
}
</pre>
<p>It will then produce lists that look like:</p>
<pre>
⚀ One
⚁ Two
⚂ Three
...
⚅⚄ Eleven
⚅⚅ Twelve
⚅⚅⚀ Thirteen
</pre>
</div>
<p>The &lsquo;<code class=css>additive</code>&rsquo; type will produce
representations with sizes that are linear in the magnitude of the counter
value. This can potentially be abused to generate excessively large
representations and consume undue amounts of the user's memory or even
hang their browser. User agents must support representations at least 20
characters long, but they may choose to instead use the fallback style for
representations that would be longer than 20 characters.
<h4 id=override><span class=secno>8.1.7. </span> override</h4>
<p>The &lsquo;<code class=css>override</code>&rsquo; type allows an author
to use the representation-construction algorithm of another counter style,
but alter other aspects, such as the negative sign or the suffix. If a
counter style uses the &lsquo;<code class=css>override</code>&rsquo; type,
any unspecified descriptors are taken from the specified counter style,
rather than taking their initial values.
<p>If a @counter-style <dfn id=uses>uses</dfn> the &lsquo;<code
class=css>override</code>&rsquo; type, it must not contain a &lsquo;<a
href="#descdef-glyphs"><code class=property>glyphs</code></a>&rsquo; or
&lsquo;<a href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptor; otherwise it
is invalid and must be ignored. If the specified counter style name isn't
the name of any currently-defined counter style, it must be treated as if
it was overriding the &lsquo;<a href="#decimal"><code
class=css>decimal</code></a>&rsquo; counter style.
<h3 id=counter-style-negative><span class=secno>8.2. </span> Formatting
negative values: the &lsquo;<a href="#descdef-negative"><code
class=property>negative</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-negative>negative</dfn>
<tr>
<th>Value:
<td>&lt;string> &lt;string>?
<tr>
<th>Initial:
<td>"\2D" ("-" hyphen-minus)
</table>
<p>The &lsquo;<a href="#descdef-negative"><code
class=property>negative</code></a>&rsquo; descriptor defines how to alter
the representation when the counter value is negative. Not all counter
types can render negative numbers.
<p>The first string in the value is prepended to the representation when
the counter value is negative. The second string, if specified, is
appended to the representation when the counter value is negative.
<div class=example>
<p>For example, specifying &lsquo;<a href="#descdef-negative"><code
class=css>negative: "(" ")";</code></a>&rsquo; will make negative values
be wrapped in parentheses, which is sometimes used in financial contexts,
like "(2) (1) 0 1 2 3...".</p>
</div>
<h3 id=counter-style-prefix><span class=secno>8.3. </span> Symbols before
the marker: the &lsquo;<a href="#descdef-prefix"><code
class=property>prefix</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-prefix>prefix</dfn>
<tr>
<th>Value:
<td>&lt;string>
<tr>
<th>Initial:
<td>"" (the empty string)
</table>
<p>The &lsquo;<a href="#descdef-prefix"><code
class=property>prefix</code></a>&rsquo; descripter specifies a string that
is prepended to the marker representation. Prefixes are only added by the
algorithm for constructing the default contents of the ::marker
pseudo-element; the prefix is not added automatically when the counter()
or counters() functions are used. Prefixes are added to the representation
after negative signs.
<h3 id=counter-style-suffix><span class=secno>8.4. </span> Symbols after
the marker: the &lsquo;<a href="#descdef-suffix"><code
class=property>suffix</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-suffix>suffix</dfn>
<tr>
<th>Value:
<td>&lt;string>
<tr>
<th>Initial:
<td>"\2E" ("." full stop)
</table>
<p>The &lsquo;<a href="#descdef-suffix"><code
class=property>suffix</code></a>&rsquo; descripter specifies a string that
is appended to the marker representation. Suffixes are only added by the
algorithm for constructing the default contents of the ::marker
pseudo-element; the suffix is not added automatically when the counter()
or counters() functions are used. Suffixes are added to the representation
after negative signs.
<h3 id=counter-style-range><span class=secno>8.5. </span> Limiting the
counter scope: the &lsquo;<a href="#descdef-range"><code
class=property>range</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-range>range</dfn>
<tr>
<th>Value:
<td>[ &lt;integer> | infinite ]{2}
<tr>
<th>Initial:
<td>infinite infinite
</table>
<p>The &lsquo;<a href="#descdef-range"><code
class=property>range</code></a>&rsquo; descriptor 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.
<p>The first value represents the lower bound of the range (with
&lsquo;<code class=property>infinite</code>&rsquo; representing negative
infinity), and the second value represents the upper bound of the range
(with &lsquo;<code class=property>infinite</code>&rsquo; representing
positive infinity). This is an inclusive range - it includes both the
lower and upper bound numbers. If the lower bound is higher than the
higher bound, the descriptor is invalid and must be ignored.
<p>Some counter style types have their own implicit ranges, specified above
in the individual descriptions for each type. The explicit range given by
the ‘<a href="#descdef-range"><code class=css>range</code></a>’
descriptor applies at the same time as the implicit range given by the
‘<a href="#descdef-type"><code class=css>type</code></a>’ descriptor -
if the counter value is less than either lower bound, or greater than
either upper bound, the fallback style must instead be used to generate
the representation.
<p class=issue>There's also an implicit range coming from implementation
limits. Should we require UAs to support all values in a signed 2-byte
int, or a signed 4-byte int?
<h3 id=counter-style-fallback><span class=secno>8.6. </span> Defining
fallback: the &lsquo;<a href="#descdef-fallback"><code
class=property>fallback</code></a>&rsquo; descriptor</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-fallback>fallback</dfn>
<tr>
<th>Value:
<td>&lt;counter-style-name>
<tr>
<th>Initial:
<td>decimal
</table>
<p>The &lsquo;<a href="#descdef-fallback"><code
class=property>fallback</code></a>&rsquo; descriptor specifies a fallback
counter style to be used when the current counter style can't create a
representation for a given counter value. For example, if a counter style
defined with a range of 1-10 is asked to represent a counter value of 11,
the counter value's representation is instead constructed with the
fallback counter style (or possibly the fallback style's fallback style,
if the fallback style can't represent that value, etc.).
<p>If the value of the &lsquo;<a href="#descdef-fallback"><code
class=property>fallback</code></a>&rsquo; descriptor isn't the name of any
currently-defined counter style, the used value of the &lsquo;<a
href="#descdef-fallback"><code class=property>fallback</code></a>&rsquo;
descriptor is &lsquo;<a href="#decimal"><code
class=css>decimal</code></a>&rsquo; instead. Similarly, while following
fallbacks to find a counter style that can render the given counter value,
if a loop in the specified fallbacks is detected, the &lsquo;<a
href="#decimal"><code class=css>decimal</code></a>&rsquo; style must be
used instead.
<p class=note>Note that it is not necessarily an error to specify fallback
loops. For example, if an author desires a counter style with
significantly different representations for even and odd counter values,
they may find it easiest to define one style that can only represent odd
values and one that can only represent even values, and specify each as
the fallback for the other one. Though the fallback graph is circular, at
no point do you encounter a loop while following these fallbacks - every
counter value is represented by one or the other counter style. <span
class=issue>Is it useful to allow this case? If it would be significantly
easier for implementations to just detect and reject circular fallback
graphs, that would probably be acceptable.</span>
<h3 id=counter-style-glyphs><span class=secno>8.7. </span> Marker
characters: the &lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; and &lsquo;<a
href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptors</h3>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-glyphs>glyphs</dfn>
<tr>
<th>Value:
<td>[ &lt;string> | &lt;image> ]+
<tr>
<th>Initial:
<td>N/A
</table>
<table class=descdef>
<tbody>
<tr>
<th>Name:
<td><dfn id=descdef-additive-glyphs>additive-glyphs</dfn>
<tr>
<th>Value:
<td>[ &lt;integer> && [ &lt;string> | &lt;image> ] ]+
<tr>
<th>Initial:
<td>N/A
</table>
<p>The &lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; and &lsquo;<a
href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptors specify the
characters used by the marker-construction algorithm specified by the
&lsquo;<a href="#descdef-type"><code class=property>type</code></a>&rsquo;
descriptor. The &lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor must be specified if
the counter type is &lsquo;<code class=css>repeating</code>&rsquo;,
&lsquo;<code class=css>numeric</code>&rsquo;, &lsquo;<code
class=css>alphabetic</code>&rsquo;, &lsquo;<code
class=css>symbolic</code>&rsquo;, or &lsquo;<code
class=css>non-repeating</code>&rsquo;, and the &lsquo;<a
href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptor must be
specified if the counter type is &lsquo;<code
class=css>additive</code>&rsquo;; otherwise, the @counter-style <dfn
id=is1>is</dfn> invalid and must be ignored.
<p>Some counter styles specify that the &lsquo;<a
href="#descdef-glyphs"><code class=property>glyphs</code></a>&rsquo;
descriptor must have at least two entries. If the counter's style is such
a type, and the &lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor has only a single
entry, the counter style is invalid and must be ignored.
<p>Each entry in the &lsquo;<a href="#descdef-glyphs"><code
class=property>glyphs</code></a>&rsquo; descriptor's value defines a <dfn
id=counter-glyph>counter glyph</dfn>, which is interpreted differently
based on the counter style's type. Each entry in the &lsquo;<a
href="#descdef-additive-glyphs"><code
class=property>additive-glyphs</code></a>&rsquo; descriptor's value
defines an <dfn id=additive-tuple>additive tuple</dfn>, which consists of
a <a href="#counter-glyph"><i>counter glyph</i></a> and a non-negative
integer weight. Each weight must be a non-negative integer, and the <a
href="#additive-tuple"><i>additive tuple</i></a>s must be specified in
order of descending weight; otherwise, the @counter-style is invalid and
must be ignored.
<p>Counter glyphs may be strings or images, and the two types can be mixed
in a single descriptor. Counter representations are constructed by
concatenating counter glyphs together. Image counter glyphs are rendered
as inline replaced elements. The <a
href="http://dev.w3.org/csswg/css3-images/#default-object-size">default
object size</a> of an image counter glyph is a 1em by 1em square.</p>
<!-- ====================================================================== -->
<h2 id=ua-stylesheet><span class=secno>9. </span> Predefined Counter Styles</h2>
<p>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.
<p>As with any &lsquo;<code class=css>@counter-style</code>&rsquo; 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.
<h3 id=predefined-repeating><span class=secno>9.1. </span> Predefined
Repeating Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=box>box</dfn> {
type: repeating;
glyphs: '\25FD';
/* '◽' */
suffix: '';
}
@counter-style <dfn id=check>check</dfn> {
type: repeating;
glyphs: '\2713';
/* '✓' */
suffix: '';
}
@counter-style <dfn id=circle>circle</dfn> {
type: repeating;
glyphs: '\25E6';
/* '◦' */
suffix: '';
}
@counter-style <dfn id=diamond>diamond</dfn> {
type: repeating;
glyphs: '\25C6';
/* '◆' */
suffix: '';
}
@counter-style <dfn id=disc>disc</dfn> {
type: repeating;
glyphs: '\2022';
/* '•' */
suffix: '';
}
@counter-style <dfn id=dash>dash</dfn> {
type: repeating;
glyphs: '\2014';
/* '—' */
suffix: '';
}
@counter-style <dfn id=square>square</dfn> {
type: repeating;
glyphs: '\25FE';
/* '◾' */
suffix: '';
}</bdo></code></pre>
<h3 id=predefined-numeric><span class=secno>9.2. </span> Predefined Numeric
Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=arabic-indic>arabic-indic</dfn> {
type: numeric;
glyphs: '\660' '\661' '\662' '\663' '\664' '\665' '\666' '\667' '\668' '\669';
/* '٠' '١' '٢' '٣' '٤' '٥' '٦' '٧' '٨' '٩' */
}
@counter-style <dfn id=bengali>bengali</dfn> {
type: numeric;
glyphs: '\9E6' '\9E7' '\9E8' '\9E9' '\9EA' '\9EB' '\9EC' '\9ED' '\9EE' '\9EF';
/* '০' '১' '২' '৩' '৪' '৫' '৬' '৭' '৮' '৯' */
}
@counter-style <dfn id=binary>binary</dfn> {
type: numeric;
glyphs: '\30' '\31';
/* '0' '1' */
}
@counter-style <dfn id=burmese>burmese</dfn> {
type: numeric;
glyphs: '\1040' '\1041' '\1042' '\1043' '\1044' '\1045' '\1046' '\1047' '\1048' '\1049';
/* '၀' '၁' '၂' '၃' '၄' '၅' '၆' '၇' '၈' '၉' */
}
@counter-style <dfn id=cambodian>cambodian</dfn> {
type: numeric;
glyphs: '\17E0' '\17E1' '\17E2' '\17E3' '\17E4' '\17E5' '\17E6' '\17E7' '\17E8' '\17E9';
/* '០' '១' '២' '៣' '៤' '៥' '៦' '៧' '៨' '៩' */
}
@counter-style <dfn id=cjk-decimal>cjk-decimal</dfn> {
type: numeric;
glyphs: '\3007' '\4E00' '\4E8C' '\4E09' '\56DB' '\4E94' '\516D' '\4E03' '\516B' '\4E5D';
/* '〇' '一' '二' '三' '四' '五' '六' '七' '八' '九' */
}
@counter-style <dfn id=decimal>decimal</dfn> {
type: numeric;
glyphs: '\30' '\31' '\32' '\33' '\34' '\35' '\36' '\37' '\38' '\39';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' */
}
@counter-style <dfn id=devanagari>devanagari</dfn> {
type: numeric;
glyphs: '\966' '\967' '\968' '\969' '\96A' '\96B' '\96C' '\96D' '\96E' '\96F';
/* '०' '१' '२' '३' '४' '५' '६' '७' '८' '९' */
}
@counter-style <dfn id=eastern-nagari>eastern-nagari</dfn> {
type: numeric;
glyphs: '\9E6' '\9E7' '\9E8' '\9E9' '\9EA' '\9EB' '\9EC' '\9ED' '\9EE' '\9EF';
/* '০' '১' '২' '৩' '৪' '৫' '৬' '৭' '৮' '৯' */
}
@counter-style <dfn id=fullwidth-decimal>fullwidth-decimal</dfn> {
type: numeric;
glyphs: '\FF10' '\FF11' '\FF12' '\FF13' '\FF14' '\FF15' '\FF16' '\FF17' '\FF18' '\FF19';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' */
}
@counter-style <dfn id=gujarati>gujarati</dfn> {
type: numeric;
glyphs: '\AE6' '\AE7' '\AE8' '\AE9' '\AEA' '\AEB' '\AEC' '\AED' '\AEE' '\AEF';
/* '૦' '૧' '૨' '૩' '૪' '૫' '૬' '૭' '૮' '૯' */
}
@counter-style <dfn id=gurmukhi>gurmukhi</dfn> {
type: numeric;
glyphs: '\A66' '\A67' '\A68' '\A69' '\A6A' '\A6B' '\A6C' '\A6D' '\A6E' '\A6F';
/* '੦' '੧' '੨' '੩' '੪' '੫' '੬' '੭' '੮' '੯' */
}
@counter-style <dfn id=kannada>kannada</dfn> {
type: numeric;
glyphs: '\CE6' '\CE7' '\CE8' '\CE9' '\CEA' '\CEB' '\CEC' '\CED' '\CEE' '\CEF';
/* '೦' '೧' '೨' '೩' '೪' '೫' '೬' '೭' '೮' '೯' */
}
@counter-style <dfn id=khmer>khmer</dfn> {
type: numeric;
glyphs: '\17E0' '\17E1' '\17E2' '\17E3' '\17E4' '\17E5' '\17E6' '\17E7' '\17E8' '\17E9';
/* '០' '១' '២' '៣' '៤' '៥' '៦' '៧' '៨' '៩' */
}
@counter-style <dfn id=lower-hexadecimal>lower-hexadecimal</dfn> {
type: numeric;
glyphs: '\30' '\31' '\32' '\33' '\34' '\35' '\36' '\37' '\38' '\39' '\61' '\62' '\63' '\64' '\65' '\66';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'a' 'b' 'c' 'd' 'e' 'f' */
}
@counter-style <dfn id=lao>lao</dfn> {
type: numeric;
glyphs: '\ED0' '\ED1' '\ED2' '\ED3' '\ED4' '\ED5' '\ED6' '\ED7' '\ED8' '\ED9';
/* '໐' '໑' '໒' '໓' '໔' '໕' '໖' '໗' '໘' '໙' */
}
@counter-style <dfn id=lepcha>lepcha</dfn> {
type: numeric;
glyphs: '\1C40' '\1C41' '\1C42' '\1C43' '\1C44' '\1C45' '\1C46' '\1C47' '\1C48' '\1C49';
/* '᱀' '᱁' '᱂' '᱃' '᱄' '᱅' '᱆' '᱇' '᱈' '᱉' */
}
@counter-style <dfn id=malayalam>malayalam</dfn> {
type: numeric;
glyphs: '\D66' '\D67' '\D68' '\D69' '\D6A' '\D6B' '\D6C' '\D6D' '\D6E' '\D6F';
/* '൦' '൧' '൨' '൩' '൪' '൫' '൬' '൭' '൮' '൯' */
}
@counter-style <dfn id=marathi>marathi</dfn> {
type: numeric;
glyphs: '\966' '\967' '\968' '\969' '\96A' '\96B' '\96C' '\96D' '\96E' '\96F';
/* '०' '१' '२' '३' '४' '५' '६' '७' '८' '९' */
}
@counter-style <dfn id=mongolian>mongolian</dfn> {
type: numeric;
glyphs: '\1810' '\1811' '\1812' '\1813' '\1814' '\1815' '\1816' '\1817' '\1818' '\1819';
/* '᠐' '᠑' '᠒' '᠓' '᠔' '᠕' '᠖' '᠗' '᠘' '᠙' */
}
@counter-style <dfn id=myanmar>myanmar</dfn> {
type: numeric;
glyphs: '\1040' '\1041' '\1042' '\1043' '\1044' '\1045' '\1046' '\1047' '\1048' '\1049';
/* '၀' '၁' '၂' '၃' '၄' '၅' '၆' '၇' '၈' '၉' */
}
@counter-style <dfn id=new-base->new-base-</dfn>60 {
type: numeric;
glyphs: '\30' '\31' '\32' '\33' '\34' '\35' '\36' '\37' '\38' '\39' '\41' '\42' '\43' '\44' '\45' '\46' '\47' '\48' '\4A' '\4B' '\4C' '\4D' '\4E' '\50' '\51' '\52' '\53' '\54' '\55' '\56' '\57' '\58' '\59' '\5A' '\5F' '\61' '\62' '\63' '\64' '\65' '\66' '\67' '\68' '\69' '\6A' '\6B' '\6D' '\6E' '\6F' '\70' '\71' '\72' '\73' '\74' '\75' '\76' '\77' '\78' '\79' '\7A';
/* '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 <dfn id=octal>octal</dfn> {
type: numeric;
glyphs: '\30' '\31' '\32' '\33' '\34' '\35' '\36' '\37';
/* '0' '1' '2' '3' '4' '5' '6' '7' */
}
@counter-style <dfn id=oriya>oriya</dfn> {
type: numeric;
glyphs: '\B66' '\B67' '\B68' '\B69' '\B6A' '\B6B' '\B6C' '\B6D' '\B6E' '\B6F';
/* '୦' '୧' '୨' '୩' '୪' '୫' '୬' '୭' '୮' '୯' */
}
@counter-style <dfn id=persian>persian</dfn> {
type: numeric;
glyphs: '\6F0' '\6F1' '\6F2' '\6F3' '\6F4' '\6F5' '\6F6' '\6F7' '\6F8' '\6F9';
/* '۰' '۱' '۲' '۳' '۴' '۵' '۶' '۷' '۸' '۹' */
}
@counter-style <dfn id=super-decimal>super-decimal</dfn> {
type: numeric;
glyphs: '\2070' '\B9' '\B2' '\B3' '\2074' '\2075' '\2076' '\2077' '\2078' '\2079';
/* '⁰' '¹' '²' '³' '⁴' '⁵' '⁶' '⁷' '⁸' '⁹' */
}
@counter-style <dfn id=tamil>tamil</dfn> {
type: numeric;
glyphs: '\BE6' '\BE7' '\BE8' '\BE9' '\BEA' '\BEB' '\BEC' '\BED' '\BEE' '\BEF';
/* '௦' '௧' '௨' '௩' '௪' '௫' '௬' '௭' '௮' '௯' */
}
@counter-style <dfn id=telugu>telugu</dfn> {
type: numeric;
glyphs: '\C66' '\C67' '\C68' '\C69' '\C6A' '\C6B' '\C6C' '\C6D' '\C6E' '\C6F';
/* '౦' '౧' '౨' '౩' '౪' '౫' '౬' '౭' '౮' '౯' */
}
@counter-style <dfn id=tibetan>tibetan</dfn> {
type: numeric;
glyphs: '\F20' '\F21' '\F22' '\F23' '\F24' '\F25' '\F26' '\F27' '\F28' '\F29';
/* '༠' '༡' '༢' '༣' '༤' '༥' '༦' '༧' '༨' '༩' */
}
@counter-style <dfn id=thai>thai</dfn> {
type: numeric;
glyphs: '\E50' '\E51' '\E52' '\E53' '\E54' '\E55' '\E56' '\E57' '\E58' '\E59';
/* '๐' '๑' '๒' '๓' '๔' '๕' '๖' '๗' '๘' '๙' */
}
@counter-style <dfn id=upper-hexadecimal>upper-hexadecimal</dfn> {
type: numeric;
glyphs: '\30' '\31' '\32' '\33' '\34' '\35' '\36' '\37' '\38' '\39' '\41' '\42' '\43' '\44' '\45' '\46';
/* '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'A' 'B' 'C' 'D' 'E' 'F' */
}</bdo></code></pre>
<h3 id=predefined-alphabetic><span class=secno>9.3. </span> Predefined
Alphabetic Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=afar>afar</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1228' '\1230' '\1260' '\1270' '\1290' '\12A0' '\12A8' '\12C8' '\12D0' '\12E8' '\12F0' '\12F8' '\1308' '\1338' '\1348';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'በ' 'ተ' 'ነ' 'አ' 'ከ' 'ወ' 'ዐ' 'የ' 'ደ' 'ዸ' 'ገ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=agaw>agaw</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1228' '\1230' '\1238' '\1240' '\1250' '\1260' '\1268' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308' '\1318' '\1320' '\1328' '\1330' '\1338' '\1348' '\1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'ቐ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=ari>ari</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1260' '\1268' '\1270' '\1278' '\1290' '\1300' '\1308' '\1328' '\1340' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጨ' 'ፀ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=blin>blin</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1230' '\1238' '\1228' '\1240' '\1250' '\1260' '\1270' '\1290' '\1300' '\1308' '\1318' '\1320' '\1328' '\1348' '\1278' '\1298' '\1338' '\1330' '\1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ሰ' 'ሸ' 'ረ' 'ቀ' 'ቐ' 'በ' 'ተ' 'ነ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ፈ' 'ቸ' 'ኘ' 'ጸ' 'ጰ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=cjk-earthly-branch>cjk-earthly-branch</dfn> {
type: alphabetic;
glyphs: '\5B50' '\4E11' '\5BC5' '\536F' '\8FB0' '\5DF3' '\5348' '\672A' '\7533' '\9149' '\620C' '\4EA5';
/* '子' '丑' '寅' '卯' '辰' '巳' '午' '未' '申' '酉' '戌' '亥' */
suffix: '、';
}
@counter-style <dfn id=cjk-heavenly-stem>cjk-heavenly-stem</dfn> {
type: alphabetic;
glyphs: '\7532' '\4E59' '\4E19' '\4E01' '\620A' '\5DF1' '\5E9A' '\8F9B' '\58EC' '\7678';
/* '甲' '乙' '丙' '丁' '戊' '己' '庚' '辛' '壬' '癸' */
suffix: '、';
}
@counter-style <dfn id=dizi>dizi</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308' '\1320' '\1328' '\1338' '\1340' '\1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጸ' 'ፀ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=fullwidth-lower-alpha>fullwidth-lower-alpha</dfn> {
type: alphabetic;
glyphs: '\FF41' '\FF42' '\FF43' '\FF44' '\FF45' '\FF46' '\FF47' '\FF48' '\FF49' '\FF4A' '\FF4B' '\FF4C' '\FF4D' '\FF4E' '\FF4F' '\FF50' '\FF51' '\FF52' '\FF53' '\FF54' '\FF55' '\FF56' '\FF57' '\FF58' '\FF59' '\FF5A';
/* '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 <dfn id=fullwidth-upper-alpha>fullwidth-upper-alpha</dfn> {
type: alphabetic;
glyphs: '\FF21' '\FF22' '\FF23' '\FF24' '\FF25' '\FF26' '\FF27' '\FF28' '\FF29' '\FF2A' '\FF2B' '\FF2C' '\FF2D' '\FF2E' '\FF2F' '\FF30' '\FF31' '\FF32' '\FF33' '\FF34' '\FF35' '\FF36' '\FF37' '\FF38' '\FF39' '\FF3A';
/* '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 <dfn id=gedeo>gedeo</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=gumuz>gumuz</dfn> {
type: alphabetic;
glyphs: '\1200' '\1210' '\1208' '\1210' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1268' '\1270' '\1278' '\1290' '\1298' '\1308' '\1328' '\1330' '\1340' '\1350';
/* 'ሀ' 'ሐ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ገ' 'ጨ' 'ጰ' 'ፀ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=hadiyya>hadiyya</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1300' '\1308' '\1320' '\1328' '\1330' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=harari>harari</dfn> {
type: alphabetic;
glyphs: '\1210' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308' '\1320' '\1328' '\1348';
/* 'ሐ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=hindi>hindi</dfn> {
type: alphabetic;
glyphs: '\915' '\916' '\917' '\918' '\919' '\91A' '\91B' '\91C' '\91D' '\91E' '\91F' '\920' '\921' '\922' '\923' '\924' '\925' '\926' '\927' '\928' '\92A' '\92B' '\92C' '\92D' '\92E' '\92F' '\930' '\932' '\935' '\936' '\937' '\938' '\939';
/* 'क' 'ख' 'ग' 'घ' 'ङ' 'च' 'छ' 'ज' 'झ' 'ञ' 'ट' 'ठ' 'ड' 'ढ' 'ण' 'त' 'थ' 'द' 'ध' 'न' 'प' 'फ' 'ब' 'भ' 'म' 'य' 'र' 'ल' 'व' 'श' 'ष' 'स' 'ह' */
}
@counter-style <dfn id=hiragana-iroha>hiragana-iroha</dfn> {
type: alphabetic;
glyphs: '\3044' '\308D' '\306F' '\306B' '\307B' '\3078' '\3068' '\3061' '\308A' '\306C' '\308B' '\3092' '\308F' '\304B' '\3088' '\305F' '\308C' '\305D' '\3064' '\306D' '\306A' '\3089' '\3080' '\3046' '\3090' '\306E' '\304A' '\304F' '\3084' '\307E' '\3051' '\3075' '\3053' '\3048' '\3066' '\3042' '\3055' '\304D' '\3086' '\3081' '\307F' '\3057' '\3091' '\3072' '\3082' '\305B' '\3059' '\3093';
/* 'い' 'ろ' 'は' 'に' 'ほ' 'へ' 'と' 'ち' 'り' 'ぬ' 'る' 'を' 'わ' 'か' 'よ' 'た' 'れ' 'そ' 'つ' 'ね' 'な' 'ら' 'む' 'う' 'ゐ' 'の' 'お' 'く' 'や' 'ま' 'け' 'ふ' 'こ' 'え' 'て' 'あ' 'さ' 'き' 'ゆ' 'め' 'み' 'し' 'ゑ' 'ひ' 'も' 'せ' 'す' 'ん' */
suffix: '、';
}
@counter-style <dfn id=hiragana>hiragana</dfn> {
type: alphabetic;
glyphs: '\3042' '\3044' '\3046' '\3048' '\304A' '\304B' '\304D' '\304F' '\3051' '\3053' '\3055' '\3057' '\3059' '\305B' '\305D' '\305F' '\3061' '\3064' '\3066' '\3068' '\306A' '\306B' '\306C' '\306D' '\306E' '\306F' '\3072' '\3075' '\3078' '\307B' '\307E' '\307F' '\3080' '\3081' '\3082' '\3084' '\3086' '\3088' '\3089' '\308A' '\308B' '\308C' '\308D' '\308F' '\3092' '\3093';
/* 'あ' 'い' 'う' 'え' 'お' 'か' 'き' 'く' 'け' 'こ' 'さ' 'し' 'す' 'せ' 'そ' 'た' 'ち' 'つ' 'て' 'と' 'な' 'に' 'ぬ' 'ね' 'の' 'は' 'ひ' 'ふ' 'へ' 'ほ' 'ま' 'み' 'む' 'め' 'も' 'や' 'ゆ' 'よ' 'ら' 'り' 'る' 'れ' 'ろ' 'わ' 'を' 'ん' */
suffix: '、';
}
@counter-style <dfn id=kaffa>kaffa</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1220' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1280' '\1290' '\1300' '\1308' '\1320' '\1328' '\1330' '\1348' '\1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ሠ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ኀ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=katakana-iroha>katakana-iroha</dfn> {
type: alphabetic;
glyphs: '\30A4' '\30ED' '\30CF' '\30CB' '\30DB' '\30D8' '\30C8' '\30C1' '\30EA' '\30CC' '\30EB' '\30F2' '\30EF' '\30AB' '\30E8' '\30BF' '\30EC' '\30BD' '\30C4' '\30CD' '\30CA' '\30E9' '\30E0' '\30A6' '\30F0' '\30CE' '\30AA' '\30AF' '\30E4' '\30DE' '\30B1' '\30D5' '\30B3' '\30A8' '\30C6' '\30A2' '\30B5' '\30AD' '\30E6' '\30E1' '\30DF' '\30B7' '\30F1' '\30D2' '\30E2' '\30BB' '\30B9' '\30F3';
/* 'イ' 'ロ' 'ハ' 'ニ' 'ホ' 'ヘ' 'ト' 'チ' 'リ' 'ヌ' 'ル' 'ヲ' 'ワ' 'カ' 'ヨ' 'タ' 'レ' 'ソ' 'ツ' 'ネ' 'ナ' 'ラ' 'ム' 'ウ' 'ヰ' 'ノ' 'オ' 'ク' 'ヤ' 'マ' 'ケ' 'フ' 'コ' 'エ' 'テ' 'ア' 'サ' 'キ' 'ユ' 'メ' 'ミ' 'シ' 'ヱ' 'ヒ' 'モ' 'セ' 'ス' 'ン' */
suffix: '、';
}
@counter-style <dfn id=katakana>katakana</dfn> {
type: alphabetic;
glyphs: '\30A2' '\30A4' '\30A6' '\30A8' '\30AA' '\30AB' '\30AD' '\30AF' '\30B1' '\30B3' '\30B5' '\30B7' '\30B9' '\30BB' '\30BD' '\30BF' '\30C1' '\30C4' '\30C6' '\30C8' '\30CA' '\30CB' '\30CC' '\30CD' '\30CE' '\30CF' '\30D2' '\30D5' '\30D8' '\30DB' '\30DE' '\30DF' '\30E0' '\30E1' '\30E2' '\30E4' '\30E6' '\30E8' '\30E9' '\30EA' '\30EB' '\30EC' '\30ED' '\30EF' '\30F2' '\30F3';
/* 'ア' 'イ' 'ウ' 'エ' 'オ' 'カ' 'キ' 'ク' 'ケ' 'コ' 'サ' 'シ' 'ス' 'セ' 'ソ' 'タ' 'チ' 'ツ' 'テ' 'ト' 'ナ' 'ニ' 'ヌ' 'ネ' 'ノ' 'ハ' 'ヒ' 'フ' 'ヘ' 'ホ' 'マ' 'ミ' 'ム' 'メ' 'モ' 'ヤ' 'ユ' 'ヨ' 'ラ' 'リ' 'ル' 'レ' 'ロ' 'ワ' 'ヲ' 'ン' */
suffix: '、';
}
@counter-style <dfn id=kebena>kebena</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1300' '\1308' '\1320' '\1328' '\1330' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=kembata>kembata</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1268' '\1270' '\1278' '\1290' '\1300' '\1308' '\1320' '\1328' '\1330' '\1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=konso>konso</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\1300' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=korean-consonant>korean-consonant</dfn> {
type: alphabetic;
glyphs: '\3131' '\3134' '\3137' '\3139' '\3141' '\3142' '\3145' '\3147' '\3148' '\314A' '\314B' '\314C' '\314D' '\314E';
/* 'ㄱ' 'ㄴ' 'ㄷ' 'ㄹ' 'ㅁ' 'ㅂ' 'ㅅ' 'ㅇ' 'ㅈ' 'ㅊ' 'ㅋ' 'ㅌ' 'ㅍ' 'ㅎ' */
}
@counter-style <dfn id=korean-syllable>korean-syllable</dfn> {
type: alphabetic;
glyphs: '\AC00' '\B098' '\B2E4' '\B77C' '\B9C8' '\BC14' '\C0AC' '\C544' '\C790' '\CC28' '\CE74' '\D0C0' '\D30C' '\D558';
/* '가' '나' '다' '라' '마' '바' '사' '아' '자' '차' '카' '타' '파' '하' */
}
@counter-style <dfn id=kunama>kunama</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1260' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' */
suffix: '/';
}
@counter-style <dfn id=lower-alpha>lower-alpha</dfn> {
type: alphabetic;
glyphs: '\61' '\62' '\63' '\64' '\65' '\66' '\67' '\68' '\69' '\6A' '\6B' '\6C' '\6D' '\6E' '\6F' '\70' '\71' '\72' '\73' '\74' '\75' '\76' '\77' '\78' '\79' '\7A';
/* '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 <dfn id=lower-belorussian>lower-belorussian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\435' '\451' '\436' '\437' '\456' '\439' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\45E' '\444' '\445' '\446' '\447' '\448' '\44B' '\44C' '\44D' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ё' 'ж' 'з' 'і' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ў' 'ф' 'х' 'ц' 'ч' 'ш' 'ы' 'ь' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=lower-bulgarian>lower-bulgarian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\435' '\436' '\437' '\438' '\439' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\444' '\445' '\446' '\447' '\448' '\449' '\44A' '\44C' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ж' 'з' 'и' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ъ' 'ь' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=lower-greek>lower-greek</dfn> {
type: alphabetic;
glyphs: '\3B1' '\3B2' '\3B3' '\3B4' '\3B5' '\3B6' '\3B7' '\3B8' '\3B9' '\3BA' '\3BB' '\3BC' '\3BD' '\3BE' '\3BF' '\3C0' '\3C1' '\3C3' '\3C4' '\3C5' '\3C6' '\3C7' '\3C8' '\3C9';
/* 'α' 'β' 'γ' 'δ' 'ε' 'ζ' 'η' 'θ' 'ι' 'κ' 'λ' 'μ' 'ν' 'ξ' 'ο' 'π' 'ρ' 'σ' 'τ' 'υ' 'φ' 'χ' 'ψ' 'ω' */
/* This style is only defined because CSS2.1 has it. It doesn't appear to actually be used in Greek texts. */
}
@counter-style <dfn id=lower-macedonian>lower-macedonian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\453' '\435' '\436' '\437' '\455' '\438' '\458' '\43A' '\43B' '\459' '\43C' '\43D' '\45A' '\43E' '\43F' '\440' '\441' '\442' '\45C' '\443' '\444' '\445' '\446' '\447' '\45F' '\448';
/* 'а' 'б' 'в' 'г' 'д' 'ѓ' 'е' 'ж' 'з' 'ѕ' 'и' 'ј' 'к' 'л' 'љ' 'м' 'н' 'њ' 'о' 'п' 'р' 'с' 'т' 'ќ' 'у' 'ф' 'х' 'ц' 'ч' 'џ' 'ш' */
suffix: ')';
}
@counter-style <dfn id=lower-oromo-qubee>lower-oromo-qubee</dfn> {
type: alphabetic;
glyphs: '\61' '\61\61' '\62' '\63' '\64' '\65' '\65\65' '\66' '\67' '\68' '\69' '\69\69' '\6A' '\6B' '\6C' '\6D' '\6E' '\6F' '\6F\6F' '\70' '\71' '\72' '\73' '\74' '\75' '\75\75' '\76' '\77' '\78' '\79' '\7A' '\63\68' '\64\68' '\6B\68' '\6E\79' '\70\68' '\73\68';
/* '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 <dfn id=lower-russian>lower-russian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\435' '\436' '\437' '\438' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\444' '\445' '\446' '\447' '\448' '\449' '\44D' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ж' 'з' 'и' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=lower-russian-full>lower-russian-full</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\435' '\451' '\436' '\437' '\438' '\439' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\444' '\445' '\446' '\447' '\448' '\449' '\44A' '\44B' '\44C' '\44D' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'ё' 'ж' 'з' 'и' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ъ' 'ы' 'ь' 'э' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=lower-serbo-croatian>lower-serbo-croatian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\452' '\435' '\436' '\437' '\438' '\458' '\43A' '\43B' '\459' '\43C' '\43D' '\45A' '\43E' '\43F' '\440' '\441' '\442' '\45B' '\443' '\444' '\445' '\446' '\447' '\45F' '\448';
/* 'а' 'б' 'в' 'г' 'д' 'ђ' 'е' 'ж' 'з' 'и' 'ј' 'к' 'л' 'љ' 'м' 'н' 'њ' 'о' 'п' 'р' 'с' 'т' 'ћ' 'у' 'ф' 'х' 'ц' 'ч' 'џ' 'ш' */
suffix: ')';
}
@counter-style <dfn id=lower-ukrainian>lower-ukrainian</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\434' '\435' '\454' '\436' '\437' '\438' '\456' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\444' '\445' '\446' '\447' '\448' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'д' 'е' 'є' 'ж' 'з' 'и' 'і' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=lower-ukrainian-full>lower-ukrainian-full</dfn> {
type: alphabetic;
glyphs: '\430' '\431' '\432' '\433' '\491' '\434' '\435' '\454' '\436' '\437' '\438' '\456' '\457' '\439' '\43A' '\43B' '\43C' '\43D' '\43E' '\43F' '\440' '\441' '\442' '\443' '\444' '\445' '\446' '\447' '\448' '\449' '\44C' '\44E' '\44F';
/* 'а' 'б' 'в' 'г' 'ґ' 'д' 'е' 'є' 'ж' 'з' 'и' 'і' 'ї' 'й' 'к' 'л' 'м' 'н' 'о' 'п' 'р' 'с' 'т' 'у' 'ф' 'х' 'ц' 'ч' 'ш' 'щ' 'ь' 'ю' 'я' */
suffix: ')';
}
@counter-style <dfn id=meen>meen</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1280' '\1290' '\1298' '\1300' '\1308' '\1320' '\1328' '\1330' '\1350' '\1340';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ኀ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፐ' 'ፀ' */
suffix: '/';
}
@counter-style <dfn id=oromo>oromo</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\12A0' '\12A8' '\12C8' '\12E8' '\12F0' '\12F8' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'አ' 'ከ' 'ወ' 'የ' 'ደ' 'ዸ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=saho>saho</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1228' '\1230' '\1240' '\1260' '\1270' '\1290' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ቀ' 'በ' 'ተ' 'ነ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=sidama>sidama</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\12A0' '\12A8' '\12C8' '\12E8' '\12F0' '\12F8' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'አ' 'ከ' 'ወ' 'የ' 'ደ' 'ዸ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=silti>silti</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308' '\1320' '\1328' '\1330' '\1348';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' */
suffix: '/';
}
@counter-style <dfn id=thai-alphabetic>thai-alphabetic</dfn> {
type: alphabetic;
glyphs: '\E01' '\E02' '\E04' '\E07' '\E08' '\E09' '\E0A' '\E0B' '\E0C' '\E0D' '\E0E' '\E0F' '\E10' '\E11' '\E12' '\E13' '\E14' '\E15' '\E16' '\E17' '\E18' '\E19' '\E1A' '\E1B' '\E1C' '\E1D' '\E1E' '\E1F' '\E20' '\E21' '\E22' '\E23' '\E25' '\E27' '\E28' '\E29' '\E2A' '\E2B' '\E2C' '\E2D' '\E2E';
/* 'ก' 'ข' 'ค' 'ง' 'จ' 'ฉ' 'ช' 'ซ' 'ฌ' 'ญ' 'ฎ' 'ฏ' 'ฐ' 'ฑ' 'ฒ' 'ณ' 'ด' 'ต' 'ถ' 'ท' 'ธ' 'น' 'บ' 'ป' 'ผ' 'ฝ' 'พ' 'ฟ' 'ภ' 'ม' 'ย' 'ร' 'ล' 'ว' 'ศ' 'ษ' 'ส' 'ห' 'ฬ' 'อ' 'ฮ' */
}
@counter-style <dfn id=tigre>tigre</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1210' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\12A0' '\12A8' '\12C8' '\12D0' '\12D8' '\12E8' '\12F0' '\1300' '\1308' '\1320' '\1328' '\1330' '\1338' '\1348' '\1350';
/* 'ሀ' 'ለ' 'ሐ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'አ' 'ከ' 'ወ' 'ዐ' 'ዘ' 'የ' 'ደ' 'ጀ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=upper-alpha>upper-alpha</dfn> {
type: alphabetic;
glyphs: '\41' '\42' '\43' '\44' '\45' '\46' '\47' '\48' '\49' '\4A' '\4B' '\4C' '\4D' '\4E' '\4F' '\50' '\51' '\52' '\53' '\54' '\55' '\56' '\57' '\58' '\59' '\5A';
/* '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 <dfn id=upper-belorussian>upper-belorussian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\415' '\401' '\416' '\417' '\406' '\419' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\40E' '\424' '\425' '\426' '\427' '\428' '\42B' '\42C' '\42D' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ё' 'Ж' 'З' 'І' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ў' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Ы' 'Ь' 'Э' 'Ю' 'Я' */
}
@counter-style <dfn id=upper-bulgarian>upper-bulgarian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\415' '\416' '\417' '\418' '\419' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\424' '\425' '\426' '\427' '\428' '\429' '\42A' '\42C' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ж' 'З' 'И' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ъ' 'Ь' 'Ю' 'Я' */
}
@counter-style <dfn id=upper-macedonian>upper-macedonian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\403' '\415' '\416' '\417' '\405' '\418' '\408' '\41A' '\41B' '\409' '\41C' '\41D' '\40A' '\41E' '\41F' '\420' '\421' '\422' '\40C' '\423' '\424' '\425' '\426' '\427' '\40F' '\428';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Ѓ' 'Е' 'Ж' 'З' 'Ѕ' 'И' 'Ј' 'К' 'Л' 'Љ' 'М' 'Н' 'Њ' 'О' 'П' 'Р' 'С' 'Т' 'Ќ' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Џ' 'Ш' */
}
@counter-style <dfn id=upper-oromo-qubee>upper-oromo-qubee</dfn> {
type: alphabetic;
glyphs: '\41' '\41\41' '\42' '\43' '\44' '\45' '\45\45' '\46' '\47' '\48' '\49' '\49\49' '\4A' '\4B' '\4C' '\4D' '\4E' '\4F' '\4F\4F' '\50' '\51' '\52' '\53' '\54' '\55' '\55\55' '\56' '\57' '\58' '\59' '\5A' '\43\48' '\44\48' '\4B\48' '\4E\59' '\50\48' '\53\48';
/* '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 <dfn id=upper-russian>upper-russian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\415' '\416' '\417' '\418' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\424' '\425' '\426' '\427' '\428' '\429' '\42D' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ж' 'З' 'И' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Э' 'Ю' 'Я' */
}
@counter-style <dfn id=upper-russian-full>upper-russian-full</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\415' '\401' '\416' '\417' '\418' '\419' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\424' '\425' '\426' '\427' '\428' '\429' '\42A' '\42B' '\42C' '\42D' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Ё' 'Ж' 'З' 'И' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ъ' 'Ы' 'Ь' 'Э' 'Ю' 'Я' */
}
@counter-style <dfn id=upper-serbo-croatian>upper-serbo-croatian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\402' '\415' '\416' '\417' '\418' '\408' '\41A' '\41B' '\409' '\41C' '\41D' '\40A' '\41E' '\41F' '\420' '\421' '\422' '\40B' '\423' '\424' '\425' '\426' '\427' '\40F' '\428';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Ђ' 'Е' 'Ж' 'З' 'И' 'Ј' 'К' 'Л' 'Љ' 'М' 'Н' 'Њ' 'О' 'П' 'Р' 'С' 'Т' 'Ћ' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Џ' 'Ш' */
}
@counter-style <dfn id=upper-ukrainian>upper-ukrainian</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\414' '\415' '\404' '\416' '\417' '\418' '\406' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\424' '\425' '\426' '\427' '\428' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Д' 'Е' 'Є' 'Ж' 'З' 'И' 'І' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Ю' 'Я' */
}
@counter-style <dfn id=upper-ukrainian-full>upper-ukrainian-full</dfn> {
type: alphabetic;
glyphs: '\410' '\411' '\412' '\413' '\490' '\414' '\415' '\404' '\416' '\417' '\418' '\406' '\407' '\419' '\41A' '\41B' '\41C' '\41D' '\41E' '\41F' '\420' '\421' '\422' '\423' '\424' '\425' '\426' '\427' '\428' '\429' '\42C' '\42E' '\42F';
/* 'А' 'Б' 'В' 'Г' 'Ґ' 'Д' 'Е' 'Є' 'Ж' 'З' 'И' 'І' 'Ї' 'Й' 'К' 'Л' 'М' 'Н' 'О' 'П' 'Р' 'С' 'Т' 'У' 'Ф' 'Х' 'Ц' 'Ч' 'Ш' 'Щ' 'Ь' 'Ю' 'Я' */
}
@counter-style <dfn id=wolaita>wolaita</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1270' '\1278' '\1290' '\1298' '\1230' '\1308' '\1320' '\1328' '\1330' '\1338' '\1340' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ሰ' 'ገ' 'ጠ' 'ጨ' 'ጰ' 'ጸ' 'ፀ' 'ፈ' 'ፐ' */
suffix: '/';
}
@counter-style <dfn id=yemsa>yemsa</dfn> {
type: alphabetic;
glyphs: '\1200' '\1208' '\1218' '\1228' '\1230' '\1238' '\1240' '\1260' '\1268' '\1270' '\1278' '\1290' '\1298' '\1300' '\1308' '\1318' '\1320' '\1328' '\1330' '\1348' '\1350';
/* 'ሀ' 'ለ' 'መ' 'ረ' 'ሰ' 'ሸ' 'ቀ' 'በ' 'ቨ' 'ተ' 'ቸ' 'ነ' 'ኘ' 'ጀ' 'ገ' 'ጘ' 'ጠ' 'ጨ' 'ጰ' 'ፈ' 'ፐ' */
suffix: '/';
}</bdo></code></pre>
<h3 id=predefined-symbolic><span class=secno>9.4. </span> Predefined
Symbolic Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=asterisks>asterisks</dfn> {
type: symbolic;
glyphs: '\2A';
/* '*' */
suffix: '';
}
@counter-style <dfn id=footnotes>footnotes</dfn> {
type: symbolic;
glyphs: '\2A' '\2051' '\2020' '\2021';
/* '*' '⁑' '†' '‡' */
suffix: '';
}
@counter-style <dfn id=lower-alpha-symbolic>lower-alpha-symbolic</dfn> {
type: symbolic;
glyphs: '\61' '\62' '\63' '\64' '\65' '\66' '\67' '\68' '\69' '\6A' '\6B' '\6C' '\6D' '\6E' '\6F' '\70' '\71' '\72' '\73' '\74' '\75' '\76' '\77' '\78' '\79' '\7A';
/* '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 <dfn id=upper-alpha-symbolic>upper-alpha-symbolic</dfn> {
type: symbolic;
glyphs: '\41' '\42' '\43' '\44' '\45' '\46' '\47' '\48' '\49' '\4A' '\4B' '\4C' '\4D' '\4E' '\4F' '\50' '\51' '\52' '\53' '\54' '\55' '\56' '\57' '\58' '\59' '\5A';
/* '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' */
}</bdo></code></pre>
<h3 id=predefined-non-repeating><span class=secno>9.5. </span> Predefined
Non-Repeating Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=circled-decimal>circled-decimal</dfn> {
type: non-repeating 0;
glyphs: '\24EA' '\2460' '\2461' '\2462' '\2463' '\2464' '\2465' '\2466' '\2467' '\2468' '\2469' '\246A' '\246B' '\246C' '\246D' '\246E' '\246F' '\2470' '\2471' '\2472' '\2473' '\3251' '\3252' '\3253' '\3254' '\3255' '\3256' '\3257' '\3258' '\3259' '\325a' '\325b' '\325c' '\325d' '\325e' '\325f' '\32b1' '\32b2' '\32b3' '\32b4' '\32b5' '\32b6' '\32b7' '\32b8' '\32b9' '\32ba' '\32bb' '\32bc' '\32bd' '\32be' '\32bf';
/* '⓪' '①' '②' '③' '④' '⑤' '⑥' '⑦' '⑧' '⑨' '⑩' '⑪' '⑫' '⑬' '⑭' '⑮' '⑯' '⑰' '⑱' '⑲' '⑳' '㉑' '㉒' '㉓' '㉔' '㉕' '㉖' '㉗' '㉘' '㉙' '㉚' '㉛' '㉜' '㉝' '㉞' '㉟' '㊱' '㊲' '㊳' '㊴' '㊵' '㊶' '㊷' '㊸' '㊹' '㊺' '㊻' '㊼' '㊽' '㊾' '㊿' */
suffix: '';
}
@counter-style <dfn id=circled-lower-latin>circled-lower-latin</dfn> {
type: non-repeating;
glyphs: '\24D0' '\24D1' '\24D2' '\24D3' '\24D4' '\24D5' '\24D6' '\24D7' '\24D8' '\24D9' '\24DA' '\24DB' '\24DC' '\24DD' '\24DE' '\24DF' '\24E0' '\24E1' '\24E2' '\24E3' '\24E4' '\24E5' '\24E6' '\24E7' '\24E8' '\24E9';
/* 'ⓐ' 'ⓑ' 'ⓒ' 'ⓓ' 'ⓔ' 'ⓕ' 'ⓖ' 'ⓗ' 'ⓘ' 'ⓙ' 'ⓚ' 'ⓛ' 'ⓜ' 'ⓝ' 'ⓞ' 'ⓟ' 'ⓠ' 'ⓡ' 'ⓢ' 'ⓣ' 'ⓤ' 'ⓥ' 'ⓦ' 'ⓧ' 'ⓨ' 'ⓩ' */
suffix: '';
}
@counter-style <dfn id=circled-upper-latin>circled-upper-latin</dfn> {
type: non-repeating;
glyphs: '\24B6' '\24B7' '\24B8' '\24B9' '\24BA' '\24BB' '\24BC' '\24BD' '\24BE' '\24BF' '\24C0' '\24C1' '\24C2' '\24C3' '\24C4' '\24C5' '\24C6' '\24C7' '\24C8' '\24C9' '\24CA' '\24CB' '\24CC' '\24CD' '\24CE' '\24CF';
/* 'Ⓐ' 'Ⓑ' 'Ⓒ' 'Ⓓ' 'Ⓔ' 'Ⓕ' 'Ⓖ' 'Ⓗ' 'Ⓘ' 'Ⓙ' 'Ⓚ' 'Ⓛ' 'Ⓜ' 'Ⓝ' 'Ⓞ' 'Ⓟ' 'Ⓠ' 'Ⓡ' 'Ⓢ' 'Ⓣ' 'Ⓤ' 'Ⓥ' 'Ⓦ' 'Ⓧ' 'Ⓨ' 'Ⓩ' */
suffix: '';
}
@counter-style <dfn id=circled-korean-consonants>circled-korean-consonants</dfn> {
type: non-repeating;
glyphs: '\3260' '\3261' '\3262' '\3263' '\3264' '\3265' '\3266' '\3267' '\3268' '\3269' '\326A' '\326B' '\326C' '\326D';
/* '㉠' '㉡' '㉢' '㉣' '㉤' '㉥' '㉦' '㉧' '㉨' '㉩' '㉪' '㉫' '㉬' '㉭' */
suffix: '';
}
@counter-style <dfn id=circled-korean-syllables>circled-korean-syllables</dfn> {
type: non-repeating;
glyphs: '\326E' '\326F' '\3270' '\3271' '\3272' '\3273' '\3274' '\3275' '\3276' '\3277' '\3278' '\3279' '\327A' '\327B';
/* '㉮' '㉯' '㉰' '㉱' '㉲' '㉳' '㉴' '㉵' '㉶' '㉷' '㉸' '㉹' '㉺' '㉻' */
suffix: '';
}
@counter-style <dfn id=decimal-leading-zero>decimal-leading-zero</dfn> {
type: non-repeating -9;
glyphs: '\2D\30\39' '\2D\30\38' '\2D\30\37' '\2D\30\36' '\2D\30\35' '\2D\30\34' '\2D\30\33' '\2D\30\32' '\2D\30\31' '\30\30' '\30\31' '\30\32' '\30\33' '\30\34' '\30\35' '\30\36' '\30\37' '\30\38' '\30\39';
/* '-09' '-08' '-07' '-06' '-05' '-04' '-03' '-02' '-01' '00' '01' '02' '03' '04' '05' '06' '07' '08' '09' */
}
@counter-style <dfn id=dotted-decimal>dotted-decimal</dfn> {
type: non-repeating;
glyphs: '\2488' '\2489' '\248A' '\248B' '\248C' '\248D' '\248E' '\248F' '\2490' '\2491' '\2492' '\2493' '\2494' '\2495' '\2496' '\2497' '\2498' '\2499' '\249A' '\249B';
/* '⒈' '⒉' '⒊' '⒋' '⒌' '⒍' '⒎' '⒏' '⒐' '⒑' '⒒' '⒓' '⒔' '⒕' '⒖' '⒗' '⒘' '⒙' '⒚' '⒛' */
suffix: '';
}
@counter-style <dfn id=double-circled-decimal>double-circled-decimal</dfn> {
type: non-repeating;
glyphs: '\24F5' '\24F6' '\24F7' '\24F8' '\24F9' '\24FA' '\24FB' '\24FC' '\24FD' '\24FE';
/* '⓵' '⓶' '⓷' '⓸' '⓹' '⓺' '⓻' '⓼' '⓽' '⓾' */
suffix: '';
}
@counter-style <dfn id=filled-circled-decimal>filled-circled-decimal</dfn> {
type: non-repeating;
glyphs: '\2776' '\2777' '\2778' '\2779' '\277a' '\277b' '\277c' '\277d' '\277e' '\277f' '\24EB' '\24EC' '\24ED' '\24EE' '\24EF' '\24F0' '\24F1' '\24F2' '\24F3' '\24F4';
/* '❶' '❷' '❸' '❹' '❺' '❻' '❼' '❽' '❾' '❿' '⓫' '⓬' '⓭' '⓮' '⓯' '⓰' '⓱' '⓲' '⓳' '⓴' */
suffix: '';
}
@counter-style <dfn id=fullwidth-upper-roman>fullwidth-upper-roman</dfn> {
type: non-repeating;
glyphs: '\2160' '\2161' '\2162' '\2163' '\2164' '\2165' '\2166' '\2167' '\2168' '\2169' '\216A' '\216B';
/* 'Ⅰ' 'Ⅱ' 'Ⅲ' 'Ⅳ' 'Ⅴ' 'Ⅵ' 'Ⅶ' 'Ⅷ' 'Ⅸ' 'Ⅹ' 'Ⅺ' 'Ⅻ' */
suffix: '';
}
@counter-style <dfn id=fullwidth-lower-roman>fullwidth-lower-roman</dfn> {
type: non-repeating;
glyphs: '\2170' '\2171' '\2172' '\2173' '\2174' '\2175' '\2176' '\2177' '\2178' '\2179' '\217A' '\217B';
/* 'ⅰ' 'ⅱ' 'ⅲ' 'ⅳ' 'ⅴ' 'ⅵ' 'ⅶ' 'ⅷ' 'ⅸ' 'ⅹ' 'ⅺ' 'ⅻ' */
suffix: '';
}
@counter-style <dfn id=parenthesized-decimal>parenthesized-decimal</dfn> {
type: non-repeating;
glyphs: '\2474' '\2475' '\2476' '\2477' '\2478' '\2479' '\247A' '\247B' '\247C' '\247D' '\247E' '\247F' '\2480' '\2481' '\2482' '\2483' '\2484' '\2485' '\2486' '\2487';
/* '⑴' '⑵' '⑶' '⑷' '⑸' '⑹' '⑺' '⑻' '⑼' '⑽' '⑾' '⑿' '⒀' '⒁' '⒂' '⒃' '⒄' '⒅' '⒆' '⒇' */
suffix: '';
}
@counter-style <dfn id=parenthesized-lower-latin>parenthesized-lower-latin</dfn> {
type: non-repeating;
glyphs: '\249C' '\249D' '\249E' '\249F' '\24A0' '\24A1' '\24A2' '\24A3' '\24A4' '\24A5' '\24A6' '\24A7' '\24A8' '\24A9' '\24AA' '\24AB' '\24AC' '\24AD' '\24AE' '\24AF' '\24B0' '\24B1' '\24B2' '\24B3' '\24B4' '\24B5';
/* '⒜' '⒝' '⒞' '⒟' '⒠' '⒡' '⒢' '⒣' '⒤' '⒥' '⒦' '⒧' '⒨' '⒩' '⒪' '⒫' '⒬' '⒭' '⒮' '⒯' '⒰' '⒱' '⒲' '⒳' '⒴' '⒵' */
suffix: '';
}
@counter-style <dfn id=parenthesized-hangul-consonants>parenthesized-hangul-consonants</dfn> {
type: non-repeating;
glyphs: '\3200' '\3201' '\3202' '\3203' '\3204' '\3205' '\3206' '\3207' '\3208' '\3209' '\320A' '\320B' '\320C' '\320D';
/* '㈀' '㈁' '㈂' '㈃' '㈄' '㈅' '㈆' '㈇' '㈈' '㈉' '㈊' '㈋' '㈌' '㈍' */
suffix: '';
}
@counter-style <dfn id=parenthesized-hangul-syllable>parenthesized-hangul-syllable</dfn> {
type: non-repeating;
glyphs: '\320E' '\320F' '\3210' '\3211' '\3212' '\3213' '\3214' '\3215' '\3216' '\3217' '\3218' '\3219' '\321A';
/* '㈎' '㈏' '㈐' '㈑' '㈒' '㈓' '㈔' '㈕' '㈖' '㈗' '㈘' '㈙' '㈚' */
suffix: '';
}
@counter-style <dfn id=persian-abjad>persian-abjad</dfn> {
type: non-repeating;
glyphs: '\627' '\628' '\62C' '\62F' '\647\200D' '\648' '\632' '\62D' '\637' '\6CC' '\6A9' '\644' '\645' '\646' '\633' '\639' '\641' '\635' '\642' '\631' '\634' '\62A' '\62B' '\62E' '\630' '\636' '\638' '\63A';
/* 'ا' 'ب' 'ج' 'د' 'ه‍' 'و' 'ز' 'ح' 'ط' 'ی' 'ک' 'ل' 'م' 'ن' 'س' 'ع' 'ف' 'ص' 'ق' 'ر' 'ش' 'ت' 'ث' 'خ' 'ذ' 'ض' 'ظ' 'غ' */
}
@counter-style <dfn id=persian-alphabetic>persian-alphabetic</dfn> {
type: non-repeating;
glyphs: '\627' '\628' '\67E' '\62A' '\62B' '\62C' '\686' '\62D' '\62E' '\62F' '\630' '\631' '\632' '\698' '\633' '\634' '\635' '\636' '\637' '\638' '\639' '\63A' '\641' '\642' '\6A9' '\6AF' '\644' '\645' '\646' '\648' '\647\200D' '\6CC';
/* 'ا' 'ب' 'پ' 'ت' 'ث' 'ج' 'چ' 'ح' 'خ' 'د' 'ذ' 'ر' 'ز' 'ژ' 'س' 'ش' 'ص' 'ض' 'ط' 'ظ' 'ع' 'غ' 'ف' 'ق' 'ک' 'گ' 'ل' 'م' 'ن' 'و' 'ه‍' 'ی' */
}</bdo></code></pre>
<h3 id=predefined-additive><span class=secno>9.6. </span> Predefined
Additive Styles</h3>
<pre class=css><code><bdo dir=ltr>
@counter-style <dfn id=hebrew>hebrew</dfn> {
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 <dfn id=simple-upper-roman>simple-upper-roman</dfn> {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\4D', 500 '\44', 100 '\43', 50 '\4C', 10 '\58', 5 '\56', 1 '\49';
/* 1000 'M', 500 'D', 100 'C', 50 'L', 10 'X', 5 'V', 1 'I' */
}
@counter-style <dfn id=simple-lower-roman>simple-lower-roman</dfn> {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\6D', 500 '\64', 100 '\63', 50 '\6C', 10 '\78', 5 '\76', 1 '\69';
/* 1000 'm', 500 'd', 100 'c', 50 'l', 10 'x', 5 'v', 1 'i' */
}
@counter-style <dfn id=upper-roman>upper-roman</dfn> {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\4D', 900 '\43\4D', 500 '\44', 400 '\43\44', 100 '\43', 90 '\58\43', 50 '\4C', 40 '\58\4C', 10 '\58', 9 '\49\58', 5 '\56', 4 '\49\56', 1 '\49';
/* 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 <dfn id=lower-roman>lower-roman</dfn> {
type: additive;
range: 1 4999;
additive-glyphs: 1000 '\6D', 900 '\63\6D', 500 '\64', 400 '\63\64', 100 '\63', 90 '\78\63', 50 '\6C', 40 '\78\6C', 10 '\78', 9 '\69\78', 5 '\76', 4 '\69\76', 1 '\69';
/* 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 <dfn id=lower-armenian>lower-armenian</dfn> {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\584', 8000 '\583', 7000 '\582', 6000 '\581', 5000 '\580', 4000 '\57F', 3000 '\57E', 2000 '\57D', 1000 '\57C', 900 '\57B', 800 '\57A', 700 '\579', 600 '\578', 500 '\577', 400 '\576', 300 '\575', 200 '\574', 100 '\573', 90 '\572', 80 '\571', 70 '\570', 60 '\56F', 50 '\56E', 40 '\56D', 30 '\56C', 20 '\56B', 10 '\56A', 9 '\569', 8 '\568', 7 '\567', 6 '\566', 5 '\565', 4 '\564', 3 '\563', 2 '\562', 1 '\561';
/* 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 <dfn id=upper-armenian>upper-armenian</dfn> {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\554', 8000 '\553', 7000 '\552', 6000 '\551', 5000 '\550', 4000 '\54F', 3000 '\54E', 2000 '\54D', 1000 '\54C', 900 '\54B', 800 '\54A', 700 '\549', 600 '\548', 500 '\547', 400 '\546', 300 '\545', 200 '\544', 100 '\543', 90 '\542', 80 '\541', 70 '\540', 60 '\53F', 50 '\53E', 40 '\53D', 30 '\53C', 20 '\53B', 10 '\53A', 9 '\539', 8 '\538', 7 '\537', 6 '\536', 5 '\535', 4 '\534', 3 '\533', 2 '\532', 1 '\531';
/* 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 <dfn id=armenian>armenian</dfn> {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\554', 8000 '\553', 7000 '\552', 6000 '\551', 5000 '\550', 4000 '\54F', 3000 '\54E', 2000 '\54D', 1000 '\54C', 900 '\54B', 800 '\54A', 700 '\549', 600 '\548', 500 '\547', 400 '\546', 300 '\545', 200 '\544', 100 '\543', 90 '\542', 80 '\541', 70 '\540', 60 '\53F', 50 '\53E', 40 '\53D', 30 '\53C', 20 '\53B', 10 '\53A', 9 '\539', 8 '\538', 7 '\537', 6 '\536', 5 '\535', 4 '\534', 3 '\533', 2 '\532', 1 '\531';
/* 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 <dfn id=georgian>georgian</dfn> {
type: additive;
range: 1 19999;
additive-glyphs: 10000 '\10F5', 9000 '\10F0', 8000 '\10EF', 7000 '\10F4', 6000 '\10EE', 5000 '\10ED', 4000 '\10EC', 3000 '\10EB', 2000 '\10EA', 1000 '\10E9', 900 '\10E8', 800 '\10E7', 700 '\10E6', 600 '\10E5', 500 '\10E4', 400 '\10F3', 300 '\10E2', 200 '\10E1', 100 '\10E0', 90 '\10DF', 80 '\10DE', 70 '\10DD', 60 '\10F2', 50 '\10DC', 40 '\10DB', 30 '\10DA', 20 '\10D9', 10 '\10D8', 9 '\10D7', 8 '\10F1', 7 '\10D6', 6 '\10D5', 5 '\10D4', 4 '\10D3', 3 '\10D2', 2 '\10D1', 1 '\10D0';
/* 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 <dfn id=ancient-tamil>ancient-tamil</dfn> {
type: additive;
range: 1 9999;
additive-glyphs: 9000 '\BEF\BF2', 8000 '\BEE\BF2', 7000 '\BED\BF2', 6000 '\BEC\BF2', 5000 '\BEB\BF2', 4000 '\BEA\BF2', 3000 '\BE9\BF2', 2000 '\BE8\BF2', 1000 '\BF2', 900 '\BEF\BF1', 800 '\BEE\BF1', 700 '\BED\BF1', 600 '\BEC\BF1', 500 '\BEB\BF1', 400 '\BEA\BF1', 300 '\BE9\BF1', 200 '\BE8\BF1', 100 '\BF1', 90 '\BEF\BF0', 80 '\BEE\BF0', 70 '\BED\BF0', 60 '\BEC\BF0', 50 '\BEB\BF0', 40 '\BEA\BF0', 30 '\BE9\BF0', 20 '\BE8\BF0', 10 '\BF0', 9 '\BEF', 8 '\BEE', 7 '\BED', 6 '\BEC', 5 '\BEB', 4 '\BEA', 3 '\BE9', 2 '\BE8', 1 '\BE7';
/* 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 <dfn id=japanese-informal>japanese-informal</dfn> {
type: additive;
range: 0 9999;
additive-glyphs: 9000 '\4E5D\5343', 8000 '\516B\5343', 7000 '\4E03\5343', 6000 '\516D\5343', 5000 '\4E94\5343', 4000 '\56DB\5343', 3000 '\4E09\5343', 2000 '\4E8C\5343', 1000 '\5343', 900 '\4E5D\767E', 800 '\516B\767E', 700 '\4E03\767E', 600 '\516D\767E', 500 '\4E94\767E', 400 '\56DB\767E', 300 '\4E09\767E', 200 '\4E8C\767E', 100 '\767E', 90 '\4E5D\5341', 80 '\516B\5341', 70 '\4E03\5341', 60 '\516D\5341', 50 '\4E94\5341', 40 '\56DB\5341', 30 '\4E09\5341', 20 '\4E8C\5341', 10 '\5341', 9 '\4E5D', 8 '\516B', 7 '\4E03', 6 '\516D', 5 '\4E94', 4 '\56DB', 3 '\4E09', 2 '\4E8C', 1 '\4E00', 0 '\3007';
/* 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 '一', 0 '〇' */
suffix: '\3001';
/* '、' */
fallback: cjk-decimal;
}
@counter-style <dfn id=japanese-formal>japanese-formal</dfn> {
type: additive;
range: 0 9999;
additive-glyphs: 9000 '\4E5D\9621', 8000 '\516B\9621', 7000 '\4E03\9621', 6000 '\516D\9621', 5000 '\4F0D\9621', 4000 '\56DB\9621', 3000 '\53C2\9621', 2000 '\5F10\9621', 1000 '\58F1\9621', 900 '\4E5D\767E', 800 '\516B\767E', 700 '\4E03\767E', 600 '\516D\767E', 500 '\4F0D\767E', 400 '\56DB\767E', 300 '\53C2\767E', 200 '\5F10\767E', 100 '\58F1\767E', 90 '\4E5D\62FE', 80 '\516B\62FE', 70 '\4E03\62FE', 60 '\516D\62FE', 50 '\4F0D\62FE', 40 '\56DB\62FE', 30 '\53C2\62FE', 20 '\5F10\62FE', 10 '\58F1\62FE', 9 '\4E5D', 8 '\516B', 7 '\4E03', 6 '\516D', 5 '\4F0D', 4 '\56DB', 3 '\53C2', 2 '\5F10', 1 '\58F1', 0 '\96F6';
/* 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 '壱', 0 '零' */
suffix: '\3001';
/* '、' */
fallback: cjk-decimal;
}
@counter-style <dfn id=korean-hangul-formal>korean-hangul-formal</dfn> {
type: additive;
range: 0 9999;
additive-glyphs: 9000 '\AD6C\CC9C', 8000 '\D314\CC9C', 7000 '\CE60\CC9C', 6000 '\C721\CC9C', 5000 '\C624\CC9C', 4000 '\C0AC\CC9C', 3000 '\C0BC\CC9C', 2000 '\C774\CC9C', 1000 '\C77C\CC9C', 900 '\AD6C\BC31', 800 '\D314\BC31', 700 '\CE60\BC31', 600 '\C721\BC31', 500 '\C624\BC31', 400 '\C0AC\BC31', 300 '\C0BC\BC31', 200 '\C774\BC31', 100 '\C77C\BC31', 90 '\AD6C\C2ED', 80 '\D314\C2ED', 70 '\CE60\C2ED', 60 '\C721\C2ED', 50 '\C624\C2ED', 40 '\C0AC\C2ED', 30 '\C0BC\C2ED', 20 '\C774\C2ED', 10 '\C77C\C2ED', 9 '\AD6C', 8 '\D314', 7 '\CE60', 6 '\C721', 5 '\C624', 4 '\C0AC', 3 '\C0BC', 2 '\C774', 1 '\C77C', 0 '\C601';
/* 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 '일', 0 '영' */
suffix: '\3001';
/* '、' */
}
@counter-style <dfn id=korean-hanja-informal>korean-hanja-informal</dfn> {
type: additive;
range: 0 9999;
additive-glyphs: 9000 '\4E5D\5343', 8000 '\516B\5343', 7000 '\4E03\5343', 6000 '\516D\5343', 5000 '\4E94\5343', 4000 '\56DB\5343', 3000 '\4E09\5343', 2000 '\4E8C\5343', 1000 '\5343', 900 '\4E5D\767E', 800 '\516B\767E', 700 '\4E03\767E', 600 '\516D\767E', 500 '\4E94\767E', 400 '\56DB\767E', 300 '\4E09\767E', 200 '\4E8C\767E', 100 '\767E', 90 '\4E5D\5341', 80 '\516B\5341', 70 '\4E03\5341', 60 '\516D\5341', 50 '\4E94\5341', 40 '\56DB\5341', 30 '\4E09\5341', 20 '\4E8C\5341', 10 '\5341', 9 '\4E5D', 8 '\516B', 7 '\4E03', 6 '\516D', 5 '\4E94', 4 '\56DB', 3 '\4E09', 2 '\4E8C', 1 '\4E00', 0 '\96F6';
/* 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 '一', 0 '零' */
suffix: '\3001';
/* '、' */
}
@counter-style <dfn id=korean-hanja-formal>korean-hanja-formal</dfn> {
type: additive;
range: 0 9999;
additive-glyphs: 9000 '\4E5D\4EDF', 8000 '\516B\4EDF', 7000 '\4E03\4EDF', 6000 '\516D\4EDF', 5000 '\4E94\4EDF', 4000 '\56DB\4EDF', 3000 '\53C3\4EDF', 2000 '\8CB3\4EDF', 1000 '\58F9\4EDF', 900 '\4E5D\767E', 800 '\516B\767E', 700 '\4E03\767E', 600 '\516D\767E', 500 '\4E94\767E', 400 '\56DB\767E', 300 '\53C3\767E', 200 '\8CB3\767E', 100 '\58F9\767E', 90 '\4E5D\62FE', 80 '\516B\62FE', 70 '\4E03\62FE', 60 '\516D\62FE', 50 '\4E94\62FE', 40 '\56DB\62FE', 30 '\53C3\62FE', 20 '\8CB3\62FE', 10 '\58F9\62FE', 9 '\4E5D', 8 '\516B', 7 '\4E03', 6 '\516D', 5 '\4E94', 4 '\56DB', 3 '\53C3', 2 '\8CB3', 1 '\58F9', 0 '\96F6';
/* 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 '壹', 0 '零' */
suffix: '\3001';
/* '、' */
}
@counter-style <dfn id=greek>greek</dfn> {
type: additive;
range: 1 999;
additive-glyphs: 900 '\3E1', 800 '\3C9', 700 '\3C8', 600 '\3C7', 500 '\3C6', 400 '\3C5', 300 '\3C4', 200 '\3C3', 100 '\3C1', 90 '\3DF', 80 '\3C0', 70 '\3BF', 60 '\3BE', 50 '\3BD', 40 '\3BC', 30 '\3BB', 20 '\3BA', 10 '\3B9', 9 '\3B8', 8 '\3B7', 7 '\3B6', 6 '\3C3\3C4', 5 '\3B4', 4 '\3B3', 3 '\3B2', 2 '\3B1', 1 '\3B0';
/* 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 'α' */
}</bdo></code></pre>
<p class=issue>Per <a
href="http://www.ethiopic.org/w3c/css/WD-css3-lists-20020220-comments.html#armenianlists">http://www.ethiopic.org/w3c/css/WD-css3-lists-20020220-comments.html#armenianlists</a>,
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.)
<p class=issue>According to a native Greek speaker, the lower-greek and
upper-greek styles aren't actually used. I've removed upper-greek for now,
but kept lower-greek because CSS2.1 included the keyword. Do these have
actual use-cases?</p>
<!-- ======================================================================= -->
<h2 id=predefined-counters><span class=secno>10. </span> Complex Counter
Styles</h2>
<p>While authors may define their own counter styles using the &lsquo;<code
class=css>@counter-style</code>&rsquo; rule defined in this spec or rely
on the set of <a href="#ua-stylesheet">predefined counter styles</a>, a
few counter styles are described by rules that are too complex to be
captured by the predefined algorithms. These counter styles are described
in this section.
<p>The counter styles specified in this section have custom <a
href="#algorithm"><i title=counter-algorithm>algorithms for generating
counter values</i></a>, but are otherwise identical to a counter style
defined via the &lsquo;<code class=css>@counter-style</code>&rsquo; rule,
described below. For example, an author can reference one of these styles
in an &lsquo;<code class=property>override</code>&rsquo; type, reusing the
algorithm but swapping out some of the other descriptors.
<h3 id=glyph-counters><span class=secno>10.1. </span> Glyphs</h3>
<p>CSS 2.1 defined three single-glyph counter styles (&lsquo;<a
href="#circle"><code class=css>circle</code></a>&rsquo;, &lsquo;<a
href="#disc"><code class=css>disc</code></a>&rsquo;, and &lsquo;<a
href="#square"><code class=css>square</code></a>&rsquo;), but didn't
define precisely how to render them, instead opting to describe generally
how they should look and leaving it up to the UA to decide how to render
the markers.
<p>The <a href="#ua-stylesheet">Predefined Counter Styles</a> section gives
normative definitions for these styles, but UAs may instead default to
rendering these styles using a browser-generated image matching the
description below. This only describes the rendering of the default
counter styles associated with these names - if an author or user creates
their own counter style with one of these names (overriding the UA-default
version), they must be honored as normal.
<p>If the UA chooses to use an image for the default rendering of these
counter styles, the image must be scalable and designed to attractively
fill a box 1em wide and 1em tall.
<dl>
<dt>circle
<dd>A hollow circle, similar to ◦ U+25E6 WHITE BULLET.
<dt>disc
<dd>A filled circle, similar to • U+2022 BULLET.
<dt>square
<dd>A filled square, similar to ◾ U+25FE BLACK MEDIUM SMALL SQUARE.
</dl>
<h3 id=ethiopic-numeric><span class=secno>10.2. </span> The &lsquo;<code
class=property>ethiopic-numeric</code>&rsquo; counter style</h3>
<p>The Ethiopian numbering system is defined for all positive non-zero
numbers. The following algorithm converts decimal digits to ethiopic
numbers.
<ol>
<li>Split the number into groups of two digits, starting with the least
significant decimal digit.
<li>Index each group sequentially, starting from the least significant as
group number zero.
<li>If the group has an odd index (as given in the previous step) and has
the value 1, or if the group is the most significant one and has the
value 1, or if the group has the value zero, then remove the digit (but
leave the group, so it still has a separator appended below).
<li>For each remaining digit, substitute the relevant ethiopic character
from the list below.
<table>
<caption>Ethiopic numbering system</caption>
<thead>
<tr>
<th colspan=3>Tens
<th colspan=3>Units
<tr>
<th>Values
<th colspan=2>Codepoints
<th>Values
<th colspan=2>Codepoints
<tbody>
<tr>
<td>10
<td>፲
<td>U+1372
<td>1
<td>፩
<td>U+1369
<tr>
<td>20
<td>፳
<td>U+1373
<td>2
<td>፪
<td>U+136A
<tr>
<td>30
<td>፴
<td>U+1374
<td>3
<td>፫
<td>U+136B
<tr>
<td>40
<td>፵
<td>U+1375
<td>4
<td>፬
<td>U+136C
<tr>
<td>50
<td>፶
<td>U+1376
<td>5
<td>፭
<td>U+136D
<tr>
<td>60
<td>፷
<td>U+1377
<td>6
<td>፮
<td>U+136E
<tr>
<td>70
<td>፸
<td>U+1378
<td>7
<td>፯
<td>U+136F
<tr>
<td>80
<td>፹
<td>U+1379
<td>8
<td>፰
<td>U+1370
<tr>
<td>90
<td>፺
<td>U+137A
<td>9
<td>፱
<td>U+1371
</table>
<li>For each group with an odd index (as given in the second step) that
did not have its digits removed in the third step, append ፻ U+137B.
<li>For each group with an even index (as given in the second step),
except the group with number 0, append ፼ U+137C.
<li>Concatenate the groups into one string.
</ol>
<p>For this system, the <a href="#name"><i title=counter-name>name</i></a>
is "ethiopian-numeric", the <a href="#lower-range-bound"><i
title=counter-lower-bound>lower range bound descriptor</i></a> is 1, the
<a href="#upper"><i title=counter-upper-bound>upper range bound
descriptor</i></a> is infinity, and the rest of the descriptors have their
initial value.
<p class=issue>Is there a better suffix to use than the initial (".")? The
alphabetic ethiopic systems use a different suffix.
<div class=example>
<p>The decimal number 100, in ethiopic, is ፻ U+137B <!-- odd --></p>
<p> The decimal number 78010092, in ethiopic, is ፸፰፻፩፼፻፺፪
U+1378 U+1370 U+137B <!-- 70 8 odd --> U+1369 U+137C <!-- 1 even -->
U+137B <!-- odd --> U+137A U+136A. <!-- 90 2 --></p>
<p> The decimal number 780000001092, in ethiopic, is
፸፰፻፩፼፻፼፻፺፪ U+1378 U+1370 U+137B <!-- 70 8 odd -->
U+1369 U+137C <!-- 1 even --> U+137B <!-- odd --> U+137C <!-- even -->
U+137B <!-- odd --> U+137A U+136A. <!-- 90 2 --></p>
</div>
<h3 id=cjk-counter-styles><span class=secno>10.3. </span> The Chinese
longhand counter styles</h3>
<p>Chinese, Japanese, and Korean have longhand counter styles, which have a
structure similar to "one hundred thirteen thousand and twenty-three" in
English. Each has both formal and informal variants. <span class=note> The
formal styles are typically used in financial and legal documents, as
their characters are more difficult to alter.</span>
<p>The Japanese and Korean longhand counter styles are expressed using the
&lsquo;<code class=css>additive</code>&rsquo; counter algorithm, in the <a
href="#ua-stylesheet">Predefined Counter Styles</a> section. The Chinese
longhand styles have slightly more complex requirements that prevent them
from being defined as &lsquo;<code class=css>additive</code>&rsquo; style,
so instead the following counter styles are defined in this section:
<dl>
<dt>simp-chinese-informal
<dd>The simplified Chinese informal style.
<dt>simp-chinese-formal
<dd>The simplified Chinese formal style
<dt>trad-chinese-informal
<dd>The traditional Chinese informal style
<dt>trad-chinese-formal
<dd>The traditional Chinese formal style
<dt>cjk-ideographic
<dd>For legacy reasons, this counter-style must be treated as an alias for
&lsquo;<a href="#trad-chinese-informal0"><code
class=css>trad-chinese-informal</code></a>&rsquo;.
</dl>
<p class=issue>Add an example to each of the above types.
<p>The Chinese longhand styles are defined over the range -9999 to 9999.
For numbers outside this range, the &lsquo;<a href="#cjk-decimal"><code
class=css>cjk-decimal</code></a>&rsquo; style is used. 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.
<ol>
<li>If the counter value is 0, the representation is the character for 0
specified for the given counter style. Skip the rest of this algorithm.
<li>Initially represent the counter value as a decimal number. For each
digit that is not 0, append the appropriate digit marker to the digit.
The ones digit has no marker.
<li>For the informal styles, if the counter value is between ten and
nineteen, remove the tens digit (leave the digit marker).
<li>Drop any trailing zeros and collapse any remaining zeros into a single
zero digit.
<li>Replace the digits 0-9 with the appropriate character for the given
counter style. Return the resultant string as the representation of the
counter value.
</ol>
<p>For all of these counter styles, the <a href="#suffix"><i
title=counter-suffix>suffix descriptor</i></a> is "、" U+3001, the <a
href="#fallback-style"><i title=counter-fallback>fallback
descriptor</i></a> is &lsquo;<a href="#cjk-decimal"><code
class=css>cjk-decimal</code></a>&rsquo;, the <a
href="#lower-range-bound"><i title=counter-lower-bound>lower bound
descriptor</i></a> is -9999, the <a href="#upper"><i
title=counter-upper-bound>upper bound descriptor</i></a> is 9999, and the
<a href="#negative-sign"><i title=counter-negative>negative sign</i></a>
is given in the table of glyphs for each style.
<p>The following tables define the characters used in these styles:
<table class=data>
<thead>
<tr>
<th rowspan=2 scope=col>Values
<th colspan=4 scope=col>Codepoints
<tr>
<th><dfn id=simp-chinese-informal>simp-chinese-informal</dfn>
<th><dfn id=simp-chinese-formal>simp-chinese-formal</dfn>
<th><dfn id=trad-chinese-informal>trad-chinese-informal</dfn>
<th><dfn id=trad-chinese-formal>trad-chinese-formal</dfn>
<tbody>
<tr>
<th scope=row>Digit 0
<td>零 U+96F6
<td>零 U+96F6
<td>零 U+96F6
<td>零 U+96F6
<tr>
<th scope=row>Digit 1
<td>一 U+4E00
<td>壹 U+58F9
<td>一 U+4E00
<td>壹 U+58F9
<tr>
<th scope=row>Digit 2
<td>二 U+4E8C
<td>贰 U+8D30
<td>二 U+4E8C
<td>貳 U+8CB3
<tr>
<th scope=row>Digit 3
<td>三 U+4E09
<td>叁 U+53C1
<td>三 U+4E09
<td>參 U+53C3
<tr>
<th scope=row>Digit 4
<td>四 U+56DB
<td>肆 U+8086
<td>四 U+56DB
<td>肆 U+8086
<tr>
<th scope=row>Digit 5
<td>五 U+4E94
<td>伍 U+4F0D
<td>五 U+4E94
<td>伍 U+4F0D
<tr>
<th scope=row>Digit 6
<td>六 U+516D
<td>陆 U+9646
<td>六 U+516D
<td>陸 U+9678
<tr>
<th scope=row>Digit 7
<td>七 U+4E03
<td>柒 U+67D2
<td>七 U+4E03
<td>柒 U+67D2
<tr>
<th scope=row>Digit 8
<td>八 U+516B
<td>捌 U+634C
<td>八 U+516B
<td>捌 U+634C
<tr>
<th scope=row>Digit 9
<td>九 U+4E5D
<td>玖 U+7396
<td>九 U+4E5D
<td>玖 U+7396
<tr>
<th scope=row>Tens Digit Marker
<td>十 U+5341
<td>拾 U+62FE
<td>十 U+5341
<td>拾 U+62FE
<tr>
<th scope=row>Hundreds Digit Marker
<td>百 U+767E
<td>佰 U+4F70
<td>百 U+767E
<td>佰 U+4F70
<tr>
<th scope=row>Thousands Digit Marker
<td>千 U+5343
<td>仟 U+4EDF
<td>千 U+5343
<td>仟 U+4EDF
<tr>
<th scope=row>Negative Sign
<td>负 U+8D1F
<td>負 U+8D1F
<td>負 U+8CA0
<td>負 U+8CA0
</table>
<p class=note>Note: Chinese, Japanese, and Korean longhand numbering is
actually defined up to 10<sup>72</sup>. In practice, lists are rarely
numbered above ten thousand, so these styles have been limited to their
first "group".</p>
<!-- ====================================================================== -->
<h2 id=optional-extensions><span class=secno>11. </span> Optional Extended
Counter Styles</h2>
<p>Some counter styles described in earlier chapters have been limited to
an artifically small (though still useful) range to reduce the overall
complexity of the spec and the task of implementing those styles. However,
some implementations might consider the extra complexity worthwhile for
the additional range it offers to authors. To accomodate this, this
section describes how to extend the limited counter-styles to a larger
range.
<p>This entire section is normative, but <strong>optional</strong>.
User-agents may ignore it and still be conformant. If a user-agent
implements some of the extended forms described in this section, they must
be implemented as described here.
<h3 id=extended-cjk-longhand><span class=secno>11.1. </span> Extended CJK
Longhand</h3>
<p>The Chinese longhand styles are defined out to 10k with a <a
href="#cjk-counter-styles">specialized algorithm</a>, while the Japanese
and Korean longhand styles are defined similarly as &lsquo;<code
class=css>additive</code>&rsquo; styles. However, these styles are defined
out to 10<sup>16</sup> in common usage. The following section describes an
alternative algorithm for these styles.
<p>The Chinese and Japanese styles are defined for all numbers between
-10<sup>16</sup> and 10<sup>16</sup>, exclusive; the Korean styles are
defined for all non-negative numbers less than 10<sup>16</sup>. For
numbers outside this range, the &lsquo;<a href="#cjk-decimal"><code
class=css>cjk-decimal</code></a>&rsquo; style is used. 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.
<ol>
<li>If the counter value is 0, the representation is the character for 0
specified for the given counter style. Skip the rest of this algorithm.
<li>Initially represent the counter value as a decimal number. Starting
from the right (ones place), split the decimal number into groups of four
digits.
<li>For each group with a non-zero value, append the appropriate group
marker to the group. The ones group has no marker.
<li>Within each group, for each digit that is not 0, append the
appropriate digit marker to the digit. The ones digit of each group has
no marker.
<li>Drop ones:
<ul>
<li>For the Chinese informal styles, for any group with a value between
ten and nineteen, remove the tens digit (leave the digit marker).
<li>For the Japanese informal and Korean informal styles, if any of the
digit markers are preceded by the digit 1, and that digit is not the
first digit of the group, remove the digit (leave the digit marker).
<li>For Korean informal styles, if the value of the ten-thousands group
is 1, drop the digit (leave the digit marker).
</ul>
<li>Drop zeros:
<ul>
<li>For the Japanese and Korean styles, drop all zero digits.
<li>For the Chinese styles, drop any trailing zeros for all non-zero
groups and collapse (across groups) each remaining consecutive group of
zeros into a single zero digit.
</ul>
<li>For the Korean styles, insert a space (" " U+0020) between each group.
<li>Replace the digits 0-9 with the appropriate character for the given
counter style. Return the resultant string as the representation of the
counter value.
</ol>
<p>For all of these counter styles, the <a href="#suffix"><i
title=counter-suffix>suffix descriptor</i></a> is "、" U+3001, the <a
href="#fallback-style"><i title=counter-fallback>fallback
descriptor</i></a> is &lsquo;<a href="#cjk-decimal"><code
class=css>cjk-decimal</code></a>&rsquo;, and the <a
href="#negative-sign"><i title=counter-negative>negative sign</i></a> is
given in the tables below, or else is the initial value of the descriptor.
For Chinese and Japanese, the <i title=counter-lower-range>lower range
bound descriptor</i> is -9999 9999 9999 9999 (-10<sup>16</sup>+1), while
for Korean it's 0. For all of them, the <i title=counter-upper-range>upper
range bound descriptor</i> is 9999 9999 9999 9999 (10<sup>16</sup>-1).
<p>The following tables define the characters used in these styles:
<table class=data>
<thead>
<tr>
<th rowspan=2 scope=col>Values
<th colspan=4 scope=col>Codepoints
<tr>
<th><dfn id=simp-chinese-informal0>simp-chinese-informal</dfn>
<th><dfn id=simp-chinese-formal0>simp-chinese-formal</dfn>
<th><dfn id=trad-chinese-informal0>trad-chinese-informal</dfn>
<th><dfn id=trad-chinese-formal0>trad-chinese-formal</dfn>
<tbody>
<tr>
<th scope=row>Digit 0
<td>零 U+96F6
<td>零 U+96F6
<td>零 U+96F6
<td>零 U+96F6
<tr>
<th scope=row>Digit 1
<td>一 U+4E00
<td>壹 U+58F9
<td>一 U+4E00
<td>壹 U+58F9
<tr>
<th scope=row>Digit 2
<td>二 U+4E8C
<td>贰 U+8D30
<td>二 U+4E8C
<td>貳 U+8CB3
<tr>
<th scope=row>Digit 3
<td>三 U+4E09
<td>叁 U+53C1
<td>三 U+4E09
<td>參 U+53C3
<tr>
<th scope=row>Digit 4
<td>四 U+56DB
<td>肆 U+8086
<td>四 U+56DB
<td>肆 U+8086
<tr>
<th scope=row>Digit 5
<td>五 U+4E94
<td>伍 U+4F0D
<td>五 U+4E94
<td>伍 U+4F0D
<tr>
<th scope=row>Digit 6
<td>六 U+516D
<td>陆 U+9646
<td>六 U+516D
<td>陸 U+9678
<tr>
<th scope=row>Digit 7
<td>七 U+4E03
<td>柒 U+67D2
<td>七 U+4E03
<td>柒 U+67D2
<tr>
<th scope=row>Digit 8
<td>八 U+516B
<td>捌 U+634C
<td>八 U+516B
<td>捌 U+634C
<tr>
<th scope=row>Digit 9
<td>九 U+4E5D
<td>玖 U+7396
<td>九 U+4E5D
<td>玖 U+7396
<tr>
<th scope=row>Second Digit Marker
<td>十 U+5341
<td>拾 U+62FE
<td>十 U+5341
<td>拾 U+62FE
<tr>
<th scope=row>Third Digit Marker
<td>百 U+767E
<td>佰 U+4F70
<td>百 U+767E
<td>佰 U+4F70
<tr>
<th scope=row>Fourth Digit Marker
<td>千 U+5343
<td>仟 U+4EDF
<td>千 U+5343
<td>仟 U+4EDF
<tr>
<th scope=row>Second Group Marker
<td>万 U+4E07
<td>万 U+4E07
<td>萬 U+842C
<td>萬 U+842C
<tr>
<th scope=row>Second Group Marker
<td>亿 U+4EBF
<td>亿 U+4EBF
<td>億 U+5104
<td>億 U+5104
<tr>
<th scope=row>Second Group Marker
<td>万亿 U+4E07 U+4EBF
<td>万亿 U+4E07 U+4EBF
<td>兆 U+5146
<td>兆 U+5146
<tr>
<th scope=row>Negative Sign
<td>负 U+8D1F
<td>負 U+8D1F
<td>負 U+8CA0
<td>負 U+8CA0
</table>
<table class=data>
<thead>
<tr>
<th rowspan=2 scope=col>Values
<th colspan=2 scope=col>Codepoints
<tr>
<th><dfn id=japanese-informal0>japanese-informal</dfn>
<th><dfn id=japanese-formal0>japanese-formal</dfn>
<tbody>
<tr>
<th scope=row>Digit 0
<td>〇 U+3007
<td>零 U+96F6
<tr>
<th scope=row>Digit 1
<td>一 U+4E00
<td>壱 U+58F1
<tr>
<th scope=row>Digit 2
<td>二 U+4E8C
<td>弐 U+5F10
<tr>
<th scope=row>Digit 3
<td>三 U+4E09
<td>参 U+53C2
<tr>
<th scope=row>Digit 4
<td>四 U+56DB
<td>四 U+56DB
<tr>
<th scope=row>Digit 5
<td>五 U+4E94
<td>伍 U+4f0D
<tr>
<th scope=row>Digit 6
<td>六 U+516D
<td>六 U+516D
<tr>
<th scope=row>Digit 7
<td>七 U+4E03
<td>七 U+4E03
<tr>
<th scope=row>Digit 8
<td>八 U+516B
<td>八 U+516B
<tr>
<th scope=row>Digit 9
<td>九 U+4E5D
<td>九 U+4E5D
<tr>
<th scope=row>Second Digit Marker
<td>十 U+5341
<td>拾 U+62FE
<tr>
<th scope=row>Third Digit Marker
<td>百 U+767E
<td>百 U+767E
<tr>
<th scope=row>Fourth Digit Marker
<td>千 U+5343
<td>阡 U+9621
<tr>
<th scope=row>Second Group Marker
<td>万 U+4E07
<td>萬 U+842C
<tr>
<th scope=row>Third Group Marker
<td>億 U+5104
<td>億 U+5104
<tr>
<th scope=row>Fourth Group Marker
<td>兆 U+5146
<td>兆 U+5146
<tr>
<th scope=row>Negative Sign
<td colspan=2>マイナス U+30DE U+30A4 U+30CA U+30B9
</table>
<table class=data>
<thead>
<tr>
<th rowspan=2 scope=col>Values
<th colspan=3 scope=col>Codepoints
<tr>
<th><dfn id=korean-hangul-formal0>korean-hangul-formal</dfn>
<th><dfn id=korean-hanja-informal0>korean-hanja-informal</dfn>
<th><dfn id=korean-hanja-formal0>korean-hanja-formal</dfn>
<tbody>
<tr>
<th scope=row>Digit 0
<td>영 U+C601
<td>零 U+96F6
<td>零 U+96F6
<tr>
<th scope=row>Digit 1
<td>일 U+C77C
<td>一 U+4E00
<td>壹 U+58F9
<tr>
<th scope=row>Digit 2
<td>이 U+C774
<td>二 U+4E8C
<td>貳 U+8CB3
<tr>
<th scope=row>Digit 3
<td>삼 U+C0BC
<td>三 U+4E09
<td>參 U+53C3
<tr>
<th scope=row>Digit 4
<td>사 U+C0AC
<td>四 U+56DB
<td>四 U+56DB
<tr>
<th scope=row>Digit 5
<td>오 U+C624
<td>五 U+4E94
<td>五 U+4E94
<tr>
<th scope=row>Digit 6
<td>육 U+C721
<td>六 U+516D
<td>六 U+516D
<tr>
<th scope=row>Digit 7
<td>칠 U+CE60
<td>七 U+4E03
<td>七 U+4E03
<tr>
<th scope=row>Digit 8
<td>팔 U+D314
<td>八 U+516B
<td>八 U+516B
<tr>
<th scope=row>Digit 9
<td>구 U+AD6C
<td>九 U+4E5D
<td>九 U+4E5D
<tr>
<th scope=row>Second Digit Marker
<td>십 U+C2ED
<td>十 U+5341
<td>拾 U+62FE
<tr>
<th scope=row>Third Digit Marker
<td>백 U+BC31
<td>百 U+767E
<td>百 U+767E
<tr>
<th scope=row>Fourth Digit Marker
<td>천 U+CC9C
<td>千 U+5343
<td>仟 U+4EDF
<tr>
<th scope=row>Second Group Marker
<td>만 U+B9CC
<td>萬 U+842C
<td>萬 U+842C
<tr>
<th scope=row>Third Group Marker
<td>억 U+C5B5
<td>億 U+5104
<td>億 U+5104
<tr>
<th scope=row>Fourth Group Marker
<td>조 U+C870
<td>兆 U+5146
<td>兆 U+5146
</table>
<h3 id=extended-numbered><span class=secno>11.2. </span> Extended
Non-Repeating Numbered Styles</h3>
<p>Several non-repeating styles are numeric in nature, but are represented
by single Unicode characters. As such, they are limited to the range of
characters that Unicode saw fit to define for them. However, new glyphs
can be generated by the UA over a somewhat extended range.
<p>All of the following styles are defined over the range 1-99. The glyphs
for each counter value must be the unicode glyph already defined for that
value in the existing @counter-style <dfn id=rule3>rule</dfn>, or a
generated image in the same style with the counter value changed as
appropriate:
<ul>
<li>&lsquo;<a href="#circled-decimal"><code
class=property>circled-decimal</code></a>&rsquo;
<li>&lsquo;<a href="#dotted-decimal"><code
class=property>dotted-decimal</code></a>&rsquo;
<li>&lsquo;<a href="#double-circled-decimal"><code
class=property>double-circled-decimal</code></a>&rsquo;
<li>&lsquo;<a href="#filled-circled-decimal"><code
class=property>filled-circled-decimal</code></a>&rsquo;
<li>&lsquo;<a href="#parenthesized-decimal"><code
class=property>parenthesized-decimal</code></a>&rsquo;
</ul>
<!-- ======================================================================= -->
<h2 id=html4><span class=secno>12. </span> Sample style sheet for HTML</h2>
<p>This section is informative, not normative. HTML itself defines the
actual default properties that apply to HTML lists.
<pre>
/* 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;<!-- XXX interaction with default increase -->
}
/* 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 */
}
</pre>
<!-- ====================================================================== -->
<h2 class=no-num id=profiles> Profiles</h2>
<p>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.
<p>The CSS Level 1 module consists of &lsquo;<a href="#list-style"><code
class=property>list-style</code></a>&rsquo;, &lsquo;<a
href="#list-style-position"><code
class=property>list-style-position</code></a>&rsquo;, &lsquo;<a
href="#list-style-image"><code
class=property>list-style-image</code></a>&rsquo;, and &lsquo;<a
href="#list-style-type"><code
class=property>list-style-type</code></a>&rsquo; (but only the following
values: &lsquo;<a href="#disc"><code
class=property>disc</code></a>&rsquo;, &lsquo;<code class=css>circle,
square</code>&rsquo;, &lsquo;<a href="#decimal"><code
class=property>decimal</code></a>&rsquo;, &lsquo;<a
href="#lower-roman"><code class=property>lower-roman</code></a>&rsquo;,
&lsquo;<a href="#upper-roman"><code
class=property>upper-roman</code></a>&rsquo;, &lsquo;<a
href="#lower-alpha"><code class=property>lower-alpha</code></a>&rsquo;,
&lsquo;<a href="#upper-alpha"><code
class=property>upper-alpha</code></a>&rsquo;, &lsquo;<a href="#none"><code
class=property>none</code></a>&rsquo;). It does not include the ::marker
pseudo element.
<p>The Full profile contains everything.</p>
<!-- ====================================================================== -->
<h2 class=no-num id=acknowledgments> Acknowledgments</h2>
<p>The following people and documentation they wrote were very useful for
defining the numbering systems: <!-- alphabetical by full name -->
Alexander Savenkov, Arron Eicholz, Aryeh Gregor, Frank Tang, Jonathan
Rosenne, Karl Ove Hufthammer, Musheg Arakelyan, Nariné Renard Karapetyan,
Randall Bart, Richard Ishida, Simon Montagu (Mozilla,
smontagu@smontagu.org)</p>
<!-- see http://www.damowmow.com/temp/csswg/lists/part2.html
http://www.qsm.co.il/Hebrew/Gimatria.htm
http://people.netscape.com/smontagu/writings/HebrewNumbers.html
http://www.ethiopic.org/Collation/OrderedLists.html
http://bugzilla.mozilla.org/show_bug.cgi?id=102252 -->
<!-- ====================================================================== -->
<h2 class=no-num id=changes> Changes From CSS2</h2>
<p>As described in the introduction section, there are significant changes
in this module when compared to CSS2.
<ol>
<li>&lsquo;<code class=css>display:marker</code>&rsquo; has been replaced
with &lsquo;<code class=css>::marker</code>&rsquo;
<li>It is no longer possible to make end markers.
<li>The &lsquo;<code class=property>marker-offset</code>&rsquo; property
is obsoleted.
<li>Markers are now aligned relative to the line box edge, rather than the
border edge.
<li>Markers now have margins.
<li>The introduction of many new list style types as well as explicit
algorithms for all list style types.
<li>Error handling rules for unknown list style types were changed to be
consistent with the normal parsing error handling rules.
<li>The list-item predefined counter identifier has been introduced.
</ol>
<!-- ====================================================================== -->
<h2 class=no-num id=references>References</h2>
<h3 class=no-num id=normative-references>Normative references</h3>
<!--begin-normative-->
<!-- Sorted by label -->
<dl class=bibliography>
<dt style="display: none"><!-- keeps the doc valid if the DL is empty -->
<!---->
<dt id=CSS21>[CSS21]
<dd>Bert Bos; et al. <a
href="http://www.w3.org/TR/2009/CR-CSS2-20090423"><cite>Cascading Style
Sheets Level 2 Revision 1 (CSS&#160;2.1) Specification.</cite></a> 23
April 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a
href="http://www.w3.org/TR/2009/CR-CSS2-20090423">http://www.w3.org/TR/2009/CR-CSS2-20090423</a>
</dd>
<!---->
</dl>
<!--end-normative-->
<h3 class=no-num id=other-references>Other references</h3>
<!--begin-informative-->
<!-- Sorted by label -->
<dl class=bibliography>
<dt style="display: none"><!-- keeps the doc valid if the DL is empty -->
<!---->
<dt id=CSS1>[CSS1]
<dd>H&#229;kon Wium Lie; Bert Bos. <a
href="http://www.w3.org/TR/2008/REC-CSS1-20080411"><cite>Cascading Style
Sheets (CSS1) Level 1 Specification.</cite></a> 11 April 2008. W3C
Recommendation. URL: <a
href="http://www.w3.org/TR/2008/REC-CSS1-20080411">http://www.w3.org/TR/2008/REC-CSS1-20080411</a>
</dd>
<!---->
</dl>
<!--end-informative-->
<h2 class=no-num id=property-index>Property index</h2>
<!--begin-properties-->
<table class=proptable>
<thead>
<tr>
<th>Property
<th>Values
<th>Initial
<th>Applies&nbsp;to
<th>Inh.
<th>Percentages
<th>Media
<tbody>
<tr>
<td><a class=property href="#list-style">list-style</a>
<td>&lt;&lsquo;list-style-type&rsquo;> ||
&lt;&lsquo;list-style-position&rsquo;> ||
&lt;&lsquo;list-style-image&rsquo;>
<td>see individual properties
<td>all elements with &lsquo;display: list-item&rsquo;
<td>yes
<td>N/A
<td>visual
<tr>
<td><a class=property href="#list-style-image">list-style-image</a>
<td>&lt;image> | none
<td>none
<td>all elements with &lsquo;display: list-item&rsquo;
<td>yes
<td>N/A
<td>visual
<tr>
<td><a class=property
href="#list-style-position">list-style-position</a>
<td>inside | hanging | outside
<td>outside
<td>all elements with &lsquo;display: list-item&rsquo;
<td>yes
<td>N/A
<td>visual
<tr>
<td><a class=property href="#list-style-type">list-style-type</a>
<td>&lt;string> | &lt;counter-style> | inline | none
<td>disc
<td>all elements with &lsquo;display: list-item&rsquo;
<td>yes
<td>N/A
<td>visual
<tr>
<td><span class=property>&lsquo;display&rsquo;</span>
<td>&lsquo;marker&rsquo;
<td>same as CSS2.1
<td>same as CSS2.1
<td>same as CSS2.1
<td>same as CSS2.1
<td>same as CSS2.1
</table>
<!--end-properties-->
<h2 class=no-num id=index>Index</h2>
<!--begin-index-->
<ul class=indexlist>
<li>additive-glyphs, <a href="#descdef-additive-glyphs"
title=additive-glyphs><strong>8.7.</strong></a>
<li>additive tuple, <a href="#additive-tuple" title="additive
tuple"><strong>8.7.</strong></a>
<li>afar, <a href="#afar" title=afar><strong>9.3.</strong></a>
<li>agaw, <a href="#agaw" title=agaw><strong>9.3.</strong></a>
<li>ancient-tamil, <a href="#ancient-tamil"
title=ancient-tamil><strong>9.6.</strong></a>
<li>arabic-indic, <a href="#arabic-indic"
title=arabic-indic><strong>9.2.</strong></a>
<li>ari, <a href="#ari" title=ari><strong>9.3.</strong></a>
<li>armenian, <a href="#armenian" title=armenian><strong>9.6.</strong></a>
<li>asterisks, <a href="#asterisks"
title=asterisks><strong>9.4.</strong></a>
<li>bengali, <a href="#bengali" title=bengali><strong>9.2.</strong></a>
<li>binary, <a href="#binary" title=binary><strong>9.2.</strong></a>
<li>blin, <a href="#blin" title=blin><strong>9.3.</strong></a>
<li>box, <a href="#box" title=box><strong>9.1.</strong></a>
<li>box-corner, <a href="#box-corner"
title=box-corner><strong>8.1.5.</strong></a>
<li>burmese, <a href="#burmese" title=burmese><strong>9.2.</strong></a>
<li>cambodian, <a href="#cambodian"
title=cambodian><strong>9.2.</strong></a>
<li>check, <a href="#check" title=check><strong>9.1.</strong></a>
<li>circle, <a href="#circle" title=circle><strong>9.1.</strong></a>
<li>circled-decimal, <a href="#circled-decimal"
title=circled-decimal><strong>9.5.</strong></a>
<li>circled-korean-consonants, <a href="#circled-korean-consonants"
title=circled-korean-consonants><strong>9.5.</strong></a>
<li>circled-korean-syllables, <a href="#circled-korean-syllables"
title=circled-korean-syllables><strong>9.5.</strong></a>
<li>circled-lower-latin, <a href="#circled-lower-latin"
title=circled-lower-latin><strong>9.5.</strong></a>
<li>circled-upper-latin, <a href="#circled-upper-latin"
title=circled-upper-latin><strong>9.5.</strong></a>
<li>cjk-decimal, <a href="#cjk-decimal"
title=cjk-decimal><strong>9.2.</strong></a>
<li>cjk-earthly-branch, <a href="#cjk-earthly-branch"
title=cjk-earthly-branch><strong>9.3.</strong></a>
<li>cjk-heavenly-stem, <a href="#cjk-heavenly-stem"
title=cjk-heavenly-stem><strong>9.3.</strong></a>
<li>counter-algorithm, <a href="#algorithm"
title=counter-algorithm><strong>8.</strong></a>
<li>counter-fallback, <a href="#fallback-style"
title=counter-fallback><strong>8.</strong></a>
<li>counter glyph, <a href="#counter-glyph" title="counter
glyph"><strong>8.7.</strong></a>
<li>counter-lower-bound, <a href="#lower-range-bound"
title=counter-lower-bound><strong>8.</strong></a>
<li>counter-name, <a href="#name"
title=counter-name><strong>8.</strong></a>
<li>counter-negative, <a href="#negative-sign"
title=counter-negative><strong>8.</strong></a>
<li>counter-prefix, <a href="#prefix"
title=counter-prefix><strong>8.</strong></a>
<li>&lt;counter-style>, <a href="#ltcounter-style"
title="&lt;counter-style>"><strong>3.</strong></a>
<li>counter style, <a href="#counter-style0" title="counter
style"><strong>8.</strong></a>
<li>counter-suffix, <a href="#suffix"
title=counter-suffix><strong>8.</strong></a>
<li>counter-upper-bound, <a href="#upper"
title=counter-upper-bound><strong>8.</strong></a>
<li>current tuple, <a href="#current-tuple" title="current
tuple"><strong>8.1.6.</strong></a>
<li>dash, <a href="#dash" title=dash><strong>9.1.</strong></a>
<li>decimal, <a href="#decimal" title=decimal><strong>9.2.</strong></a>
<li>decimal-leading-zero, <a href="#decimal-leading-zero"
title=decimal-leading-zero><strong>9.5.</strong></a>
<li>devanagari, <a href="#devanagari"
title=devanagari><strong>9.2.</strong></a>
<li>diamond, <a href="#diamond" title=diamond><strong>9.1.</strong></a>
<li>dice, <a href="#dice" title=dice><strong>8.1.6.</strong></a>
<li>disc, <a href="#disc" title=disc><strong>9.1.</strong></a>
<li>dizi, <a href="#dizi" title=dizi><strong>9.3.</strong></a>
<li>dotted-decimal, <a href="#dotted-decimal"
title=dotted-decimal><strong>9.5.</strong></a>
<li>double-circled-decimal, <a href="#double-circled-decimal"
title=double-circled-decimal><strong>9.5.</strong></a>
<li>eastern-nagari, <a href="#eastern-nagari"
title=eastern-nagari><strong>9.2.</strong></a>
<li>fallback, <a href="#descdef-fallback"
title=fallback><strong>8.6.</strong></a>
<li>filled-circled-decimal, <a href="#filled-circled-decimal"
title=filled-circled-decimal><strong>9.5.</strong></a>
<li>first glyph value, <a href="#first-glyph-value" title="first glyph
value"><strong>8.1.5.</strong></a>
<li>fixed-decimal, <a href="#fixed-decimal"
title=fixed-decimal><strong>8.1.3.</strong></a>
<li>footnotes, <a href="#footnotes"
title=footnotes><strong>9.4.</strong></a>
<li>fullwidth-decimal, <a href="#fullwidth-decimal"
title=fullwidth-decimal><strong>9.2.</strong></a>
<li>fullwidth-lower-alpha, <a href="#fullwidth-lower-alpha"
title=fullwidth-lower-alpha><strong>9.3.</strong></a>
<li>fullwidth-lower-roman, <a href="#fullwidth-lower-roman"
title=fullwidth-lower-roman><strong>9.5.</strong></a>
<li>fullwidth-upper-alpha, <a href="#fullwidth-upper-alpha"
title=fullwidth-upper-alpha><strong>9.3.</strong></a>
<li>fullwidth-upper-roman, <a href="#fullwidth-upper-roman"
title=fullwidth-upper-roman><strong>9.5.</strong></a>
<li>gedeo, <a href="#gedeo" title=gedeo><strong>9.3.</strong></a>
<li>georgian, <a href="#georgian" title=georgian><strong>9.6.</strong></a>
<li>glyphs, <a href="#descdef-glyphs"
title=glyphs><strong>8.7.</strong></a>
<li>go, <a href="#go" title=go><strong>8.1.3.</strong></a>
<li>greek, <a href="#greek" title=greek><strong>9.6.</strong></a>
<li>gujarati, <a href="#gujarati" title=gujarati><strong>9.2.</strong></a>
<li>gumuz, <a href="#gumuz" title=gumuz><strong>9.3.</strong></a>
<li>gurmukhi, <a href="#gurmukhi" title=gurmukhi><strong>9.2.</strong></a>
<li>hadiyya, <a href="#hadiyya" title=hadiyya><strong>9.3.</strong></a>
<li>hanging, <a href="#hanging" title=hanging><strong>4.</strong></a>
<li>harari, <a href="#harari" title=harari><strong>9.3.</strong></a>
<li>hebrew, <a href="#hebrew" title=hebrew><strong>9.6.</strong></a>
<li>hindi, <a href="#hindi" title=hindi><strong>9.3.</strong></a>
<li>hiragana, <a href="#hiragana" title=hiragana><strong>9.3.</strong></a>
<li>hiragana-iroha, <a href="#hiragana-iroha"
title=hiragana-iroha><strong>9.3.</strong></a>
<li>inline, <a href="#inline" title=inline><strong>3.</strong></a>
<li>inline-marker-candidate, <a href="#inline-marker-candidate"
title=inline-marker-candidate><strong>7.</strong></a>
<li>inside, <a href="#inside" title=inside><strong>4.</strong></a>
<li>is, <a href="#is" title=is><strong>8.</strong></a>, <a href="#is0"
title=is><strong>8.</strong></a>, <a href="#is1"
title=is><strong>8.7.</strong></a>
<li>japanese-formal, <a href="#japanese-formal"
title=japanese-formal><strong>9.6.</strong></a>, <a
href="#japanese-formal0" title=japanese-formal><strong>11.1.</strong></a>
<li>japanese-informal, <a href="#japanese-informal"
title=japanese-informal><strong>9.6.</strong></a>, <a
href="#japanese-informal0"
title=japanese-informal><strong>11.1.</strong></a>
<li>kaffa, <a href="#kaffa" title=kaffa><strong>9.3.</strong></a>
<li>kannada, <a href="#kannada" title=kannada><strong>9.2.</strong></a>
<li>katakana, <a href="#katakana" title=katakana><strong>9.3.</strong></a>
<li>katakana-iroha, <a href="#katakana-iroha"
title=katakana-iroha><strong>9.3.</strong></a>
<li>kebena, <a href="#kebena" title=kebena><strong>9.3.</strong></a>
<li>kembata, <a href="#kembata" title=kembata><strong>9.3.</strong></a>
<li>khmer, <a href="#khmer" title=khmer><strong>9.2.</strong></a>
<li>konso, <a href="#konso" title=konso><strong>9.3.</strong></a>
<li>korean-consonant, <a href="#korean-consonant"
title=korean-consonant><strong>9.3.</strong></a>
<li>korean-hangul-formal, <a href="#korean-hangul-formal"
title=korean-hangul-formal><strong>9.6.</strong></a>, <a
href="#korean-hangul-formal0"
title=korean-hangul-formal><strong>11.1.</strong></a>
<li>korean-hanja-formal, <a href="#korean-hanja-formal"
title=korean-hanja-formal><strong>9.6.</strong></a>, <a
href="#korean-hanja-formal0"
title=korean-hanja-formal><strong>11.1.</strong></a>
<li>korean-hanja-informal, <a href="#korean-hanja-informal"
title=korean-hanja-informal><strong>9.6.</strong></a>, <a
href="#korean-hanja-informal0"
title=korean-hanja-informal><strong>11.1.</strong></a>
<li>korean-syllable, <a href="#korean-syllable"
title=korean-syllable><strong>9.3.</strong></a>
<li>kunama, <a href="#kunama" title=kunama><strong>9.3.</strong></a>
<li>lao, <a href="#lao" title=lao><strong>9.2.</strong></a>
<li>lepcha, <a href="#lepcha" title=lepcha><strong>9.2.</strong></a>
<li>list-style, <a href="#list-style"
title=list-style><strong>5.</strong></a>
<li>list-style-image, <a href="#list-style-image"
title=list-style-image><strong>3.</strong></a>
<li>list-style-position, <a href="#list-style-position"
title=list-style-position><strong>4.</strong></a>
<li>list-style-type, <a href="#list-style-type"
title=list-style-type><strong>3.</strong></a>
<li>lower-alpha, <a href="#lower-alpha"
title=lower-alpha><strong>9.3.</strong></a>
<li>lower-alpha-symbolic, <a href="#lower-alpha-symbolic"
title=lower-alpha-symbolic><strong>9.4.</strong></a>
<li>lower-armenian, <a href="#lower-armenian"
title=lower-armenian><strong>9.6.</strong></a>
<li>lower-belorussian, <a href="#lower-belorussian"
title=lower-belorussian><strong>9.3.</strong></a>
<li>lower-bulgarian, <a href="#lower-bulgarian"
title=lower-bulgarian><strong>9.3.</strong></a>
<li>lower-greek, <a href="#lower-greek"
title=lower-greek><strong>9.3.</strong></a>
<li>lower-hexadecimal, <a href="#lower-hexadecimal"
title=lower-hexadecimal><strong>9.2.</strong></a>
<li>lower-macedonian, <a href="#lower-macedonian"
title=lower-macedonian><strong>9.3.</strong></a>
<li>lower-oromo-qubee, <a href="#lower-oromo-qubee"
title=lower-oromo-qubee><strong>9.3.</strong></a>
<li>lower-roman, <a href="#lower-roman"
title=lower-roman><strong>9.6.</strong></a>
<li>lower-russian, <a href="#lower-russian"
title=lower-russian><strong>9.3.</strong></a>
<li>lower-russian-full, <a href="#lower-russian-full"
title=lower-russian-full><strong>9.3.</strong></a>
<li>lower-serbo-croatian, <a href="#lower-serbo-croatian"
title=lower-serbo-croatian><strong>9.3.</strong></a>
<li>lower-ukrainian, <a href="#lower-ukrainian"
title=lower-ukrainian><strong>9.3.</strong></a>
<li>lower-ukrainian-full, <a href="#lower-ukrainian-full"
title=lower-ukrainian-full><strong>9.3.</strong></a>
<li>malayalam, <a href="#malayalam"
title=malayalam><strong>9.2.</strong></a>
<li>marathi, <a href="#marathi" title=marathi><strong>9.2.</strong></a>
<li>&lsquo;<code class=css>marker</code>&rsquo;, <a href="#marker"
title="''marker''"><strong>7.</strong></a>
<li>meen, <a href="#meen" title=meen><strong>9.3.</strong></a>
<li>mongolian, <a href="#mongolian"
title=mongolian><strong>9.2.</strong></a>
<li>myanmar, <a href="#myanmar" title=myanmar><strong>9.2.</strong></a>
<li>negative, <a href="#descdef-negative"
title=negative><strong>8.2.</strong></a>
<li>new-base-, <a href="#new-base-"
title=new-base-><strong>9.2.</strong></a>
<li>none, <a href="#none" title=none><strong>3.</strong></a>
<li>octal, <a href="#octal" title=octal><strong>9.2.</strong></a>
<li>oriya, <a href="#oriya" title=oriya><strong>9.2.</strong></a>
<li>oromo, <a href="#oromo" title=oromo><strong>9.3.</strong></a>
<li>outside, <a href="#outside" title=outside><strong>4.</strong></a>
<li>parenthesized-decimal, <a href="#parenthesized-decimal"
title=parenthesized-decimal><strong>9.5.</strong></a>
<li>parenthesized-hangul-consonants, <a
href="#parenthesized-hangul-consonants"
title=parenthesized-hangul-consonants><strong>9.5.</strong></a>
<li>parenthesized-hangul-syllable, <a
href="#parenthesized-hangul-syllable"
title=parenthesized-hangul-syllable><strong>9.5.</strong></a>
<li>parenthesized-lower-latin, <a href="#parenthesized-lower-latin"
title=parenthesized-lower-latin><strong>9.5.</strong></a>
<li>persian, <a href="#persian" title=persian><strong>9.2.</strong></a>
<li>persian-abjad, <a href="#persian-abjad"
title=persian-abjad><strong>9.5.</strong></a>
<li>persian-alphabetic, <a href="#persian-alphabetic"
title=persian-alphabetic><strong>9.5.</strong></a>
<li>prefix, <a href="#descdef-prefix"
title=prefix><strong>8.3.</strong></a>
<li>range, <a href="#descdef-range" title=range><strong>8.5.</strong></a>
<li>rule, <a href="#rule" title=rule><strong>8.</strong></a>, <a
href="#rule0" title=rule><strong>8.</strong></a>, <a href="#rule1"
title=rule><strong>8.</strong></a>, <a href="#rule2"
title=rule><strong>8.</strong></a>, <a href="#rule3"
title=rule><strong>11.2.</strong></a>
<li>saho, <a href="#saho" title=saho><strong>9.3.</strong></a>
<li>sidama, <a href="#sidama" title=sidama><strong>9.3.</strong></a>
<li>silti, <a href="#silti" title=silti><strong>9.3.</strong></a>
<li>simp-chinese-formal, <a href="#simp-chinese-formal"
title=simp-chinese-formal><strong>10.3.</strong></a>, <a
href="#simp-chinese-formal0"
title=simp-chinese-formal><strong>11.1.</strong></a>
<li>simp-chinese-informal, <a href="#simp-chinese-informal"
title=simp-chinese-informal><strong>10.3.</strong></a>, <a
href="#simp-chinese-informal0"
title=simp-chinese-informal><strong>11.1.</strong></a>
<li>simple-lower-roman, <a href="#simple-lower-roman"
title=simple-lower-roman><strong>9.6.</strong></a>
<li>simple-upper-roman, <a href="#simple-upper-roman"
title=simple-upper-roman><strong>9.6.</strong></a>
<li>square, <a href="#square" title=square><strong>9.1.</strong></a>
<li>&lt;string>, <a href="#ltstring"
title="&lt;string>"><strong>3.</strong></a>
<li>suffix, <a href="#descdef-suffix"
title=suffix><strong>8.4.</strong></a>
<li>super-decimal, <a href="#super-decimal"
title=super-decimal><strong>9.2.</strong></a>
<li>tamil, <a href="#tamil" title=tamil><strong>9.2.</strong></a>
<li>telugu, <a href="#telugu" title=telugu><strong>9.2.</strong></a>
<li>thai, <a href="#thai" title=thai><strong>9.2.</strong></a>
<li>thai-alphabetic, <a href="#thai-alphabetic"
title=thai-alphabetic><strong>9.3.</strong></a>
<li>tibetan, <a href="#tibetan" title=tibetan><strong>9.2.</strong></a>
<li>tigre, <a href="#tigre" title=tigre><strong>9.3.</strong></a>
<li>trad-chinese-formal, <a href="#trad-chinese-formal"
title=trad-chinese-formal><strong>10.3.</strong></a>, <a
href="#trad-chinese-formal0"
title=trad-chinese-formal><strong>11.1.</strong></a>
<li>trad-chinese-informal, <a href="#trad-chinese-informal"
title=trad-chinese-informal><strong>10.3.</strong></a>, <a
href="#trad-chinese-informal0"
title=trad-chinese-informal><strong>11.1.</strong></a>
<li>triangle, <a href="#triangle"
title=triangle><strong>8.1.1.</strong></a>
<li>trinary, <a href="#trinary" title=trinary><strong>8.1.2.</strong></a>
<li>type, <a href="#descdef-type" title=type><strong>8.1.</strong></a>
<li>unary, <a href="#unary" title=unary><strong>8.1.4.</strong></a>
<li>upper-alpha, <a href="#upper-alpha"
title=upper-alpha><strong>9.3.</strong></a>
<li>upper-alpha-symbolic, <a href="#upper-alpha-symbolic"
title=upper-alpha-symbolic><strong>9.4.</strong></a>
<li>upper-armenian, <a href="#upper-armenian"
title=upper-armenian><strong>9.6.</strong></a>
<li>upper-belorussian, <a href="#upper-belorussian"
title=upper-belorussian><strong>9.3.</strong></a>
<li>upper-bulgarian, <a href="#upper-bulgarian"
title=upper-bulgarian><strong>9.3.</strong></a>
<li>upper-hexadecimal, <a href="#upper-hexadecimal"
title=upper-hexadecimal><strong>9.2.</strong></a>
<li>upper-macedonian, <a href="#upper-macedonian"
title=upper-macedonian><strong>9.3.</strong></a>
<li>upper-oromo-qubee, <a href="#upper-oromo-qubee"
title=upper-oromo-qubee><strong>9.3.</strong></a>
<li>upper-roman, <a href="#upper-roman"
title=upper-roman><strong>9.6.</strong></a>
<li>upper-russian, <a href="#upper-russian"
title=upper-russian><strong>9.3.</strong></a>
<li>upper-russian-full, <a href="#upper-russian-full"
title=upper-russian-full><strong>9.3.</strong></a>
<li>upper-serbo-croatian, <a href="#upper-serbo-croatian"
title=upper-serbo-croatian><strong>9.3.</strong></a>
<li>upper-ukrainian, <a href="#upper-ukrainian"
title=upper-ukrainian><strong>9.3.</strong></a>
<li>upper-ukrainian-full, <a href="#upper-ukrainian-full"
title=upper-ukrainian-full><strong>9.3.</strong></a>
<li>uses, <a href="#uses" title=uses><strong>8.1.7.</strong></a>
<li>wolaita, <a href="#wolaita" title=wolaita><strong>9.3.</strong></a>
<li>yemsa, <a href="#yemsa" title=yemsa><strong>9.3.</strong></a>
</ul>
<!--end-index-->