1. 序論
CSS 1 では、 ~HTMLが伝統的に[ 有順序/無順序 ]~listで許容していた~styleに基づいて, 少数の有用な~counter~styleを定義していた。 これは CSS2.1 にて少しばかり拡げられたが、 世界中の~typographyの必要性には取組んでいなかった。 ◎ CSS 1 defined a handful of useful counter styles based on the styles that HTML traditionally allowed on ordered and unordered lists. While this was expanded slightly by CSS2.1, it doesn’t address the needs of worldwide typography.
この~moduleは、 `counter-style$at 規則を導入して,これに自由方式で取組めるようにする。 それは、 作者が自前の~counter~styleを定義した上で,それらを `list-style-type$p ~propや `counter$f / `counters$f 関数の中で利用できるようにする。 また、 いくつかの追加的な定義済み~counter~styleも定義する — 特に、 共通的にあったが, `counter-style$at で表現するには込み入っていたものを。 ◎ This module introduces the @counter-style rule which allows CSS to address this in an open-ended manner, by allowing the author to define their own counter styles. These styles can then be used in the list-style-type property or in the counter() and counters() functions. It also defines some additional predefined counter styles, particularly ones which are common but complicated to represent with @counter-style.
【この訳に特有な表記規約】
◎表記記号2. ~counter~style
`~counter~style@ は、 所与の整数~counter値を文字列に変換する方法を定義する。 各~counter~styleは、 次のものから構成される: ◎ A counter style defines how to convert a counter value into a string. Counter styles are composed of:
- `名前$は、 当の~counter~styleを識別する。 ◎ a name, to identify the style
- `~algo$(~system)は、 ~counter値から 基になる`初期~counter表現$を生成する。 ◎ an algorithm, which transforms integer counter values into a basic string representation
- `~counter記号$は、 `初期~counter表現$を成す,文字や画像を供する。
- `負-符号$は、 ~counter値が負であるときに,表現の[ 先頭/末尾 ]に付加される。 ◎ a negative sign, which is prepended or appended to the representation of a negative counter value.
- `接頭辞$は、 表現の先頭に付加される。 ◎ a prefix, to prepend to the representation
- `接尾辞$は、 表現の末尾に付加される。 ◎ a suffix to append to the representation
- `範囲$は、 ~counter~styleが取扱える値を制限する。 ◎ a range, which limits the values that a counter style handles
- `発話形$は、 発話~合成器で~counter~styleを読上げる方法について記述する。 ◎ a spoken form, which describes how to read out the counter style in a speech synthesizer
- `~fallback~style$は、 所与の~counter値が,[ ~counter~styleの`範囲$ 外にあるか, ~counter~styleでは具現化できない ]ときに、 ~counter表現を具現化するために用いられる`~counter~style$を与える。 ◎ and a fallback style, 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
- ~pad記号( `pad$d )は、 表現を一定幅に保つように,表現の先頭に付加される。
【 ~counter記号, ~pad記号 の項は、 訳者による補完。 】
特定0の~counter~style %style を利用して,特定0の~counter値 %V 用の `~counter表現を生成-@ するときは、 次の手続きに従う: ◎ When asked to generate a counter representation using a particular counter style for a particular counter value, follow these steps:
- ~IF[ %style は【その~systemが】未知な~counter~styleである ] ⇒ ~RET `decimal$v ~styleを利用して, %V 用の`~counter表現を生成-$した結果 ◎ If the counter style is unknown, exit this algorithm and instead generate a counter representation using the decimal style and the same counter value.
- ~IF[ %V ~NIN %style の`範囲$ ] ⇒ ~RET %style の`~fallback~style$を利用して, %V 用の`~counter表現を生成-$した結果 ◎ If the counter value is outside the range of the counter style, exit this algorithm and instead generate a counter representation using the counter style’s fallback style and the same counter value.
- %負-符号あり ~LET [ 次が満たされるならば 真 / ~ELSE_ 偽 ] ⇒ [ %V ~LT 0 ]~AND[ %style は `負-符号を利用する$ ] ◎ ↓
-
%表現 ~LET %style の~counter`~algo$を利用して[ %負-符号あり ならば ~MINUS %V / ~ELSE_ %V ]用の表現を構築した結果
この結果を指して、 ~counter値 %V 用の `初期~counter表現@ という。
◎ Using the counter value and the counter algorithm for the counter style, generate an initial representation for the counter value. If the counter value is negative and the counter style uses a negative sign, instead generate an initial representation using the absolute value of the counter value. - %表現 の先頭に, `pad$d 記述子により指定されている記号を付加する ◎ Prepend symbols to the representation as specified in the pad descriptor.
- ~IF[ %負-符号あり ] ⇒ %表現 の[ 先頭/末尾 ]に[ `negative$d 記述子にて指定されている %style の`負-符号$(たち) ]を付加する ◎ If the counter value is negative and the counter style uses a negative sign, wrap the representation in the counter style’s negative sign as specified in the negative descriptor.
- ~RET %表現 ◎ Return the representation.
注記: `接頭辞$( `prefix$d ), `接尾辞$( `suffix$d )は、 この~algoには関わらない — これは意図的である。 よって、 `counter$f/`counters$f 関数が返す文字列の一部を成すこともない。 代わりに、 `marker$pe 疑似要素~用に `content$p ~propの値を構築する~algoにより追加される。 このことはまた、 実際の表現が`~fallback~style$により構築されるときでも,`接頭辞$, `接尾辞$は 常に指定された~counter~styleから得られることを含意する。 ◎ Note: prefix and suffix don’t play a part in this algorithm. This is intentional; the prefix and suffix aren’t part of the string returned by the counter() or counters() functions. Instead, the prefix and suffix are added by the algorithm that constructs the value of the content property for the ::marker pseudo-element. This also implies that the prefix and suffix always come from the specified counter-style, even if the actual representation is constructed by a fallback style.
`system$d 用の一部の値( `symbolic$v, `additive$v ), および 一部の記述子( `pad$d )には、 作者から給される数に比例する~sizeの表現を生成するものもある。 これは、 過度に大きい表現を生成するようにも濫用し得る — その結果、 利用者の~memoryを不当に消費したり,~browserを~hangさせかねない。 ~UAは,少なくとも 60 個までの~Unicode符号位置からなる表現を~supportするモノトスルが、 より長い表現に対しては,`~fallback~style$を利用してもヨイ。 ◎ Some values of system (symbolic, additive) and some descriptors (pad) can generate representations with size linear to an author-supplied number. 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 60 Unicode codepoints long, but they may choose to instead use the fallback style for representations that would be longer than 60 codepoints.
3. ~custom~counter~styleの定義-法: `counter-style^at 規則
`counter-style@at 規則は、[ ~customな`~counter~style$を定義する ]ことを作者に許容する。 `~counter~style$を成す各~成分は、 `counter-style$at 規則~内の記述子で指定される。 その`~algo$は,[ `system$d, および[ `symbols$d / `additive-symbols$d ]]記述子の組合nで暗黙的に指定される。 ◎ The @counter-style rule allows authors to define a custom counter style. The components of a counter style are specified by descriptors in the @counter-style rule. The algorithm is specified implicitly by a combination of the system, symbols, and additive-symbols properties.
`counter-style$at 規則の一般~形は: ◎ The general form of an @counter-style rule is:
@counter-style `counter-style-name$t { `declaration-list$t }
`counter-style-name@t は、 `~ASCII大小無視$で `none$v に合致しない `custom-ident$t であり, ~counter~styleの `名前@ を与える。 この `custom-ident$t は、 ~counter~styleを定義するために利用するときは, `上書き不能な~counter~style名$をとり得ない (単に,~counter~styleを参照するために他で利用するとき — 【!extend】`extends$v ~systemなど — には、 許容される)。 `counter-style-name$t は、 `~tree視野な名前$を与える。 ◎ <counter-style-name> is a <custom-ident> that is not an ASCII case-insensitive match for none. When used here, to define a counter style, it also cannot be any of the non-overridable counter-style names (in other uses that merely reference a counter style, such as the extend system, these are allowed). The <counter-style-name> is a tree-scoped name.
次に挙げる~keywordが `上書き不能な~counter~style名@ である ⇒# `decimal$v, `disc$v, `square$v, `circle$v, `disclosure-open$v, `disclosure-closed$v ◎ The non-overridable counter-style names are the keywords decimal, disc, square, circle, disclosure-open, and disclosure-closed.
注記: `custom-ident$t では、 `~CSS全域~keyword$も自動的に除外されることに注意。 加えて、 `inside$v の様な一部の名前は,~counter~style名としては妥当であるが、 `list-style$p などの 【~counter~style名を値の成分にとるような】 ~propの既存の~keyword値と競合するため、 ここでは実用にならない。 ◎ Note: Note that <custom-ident> also automatically excludes the CSS-wide keywords. In addition, some names, like inside, are valid as counter style names, but conflict with the existing values of properties like list-style, and so won’t be usable there.
`~counter~style$の`名前$は、 文字大小区別である。 しかしながら、 この仕様で定義される各~名前は、 ~counter~styleとして利用される所では — 例えば[ 各種 `list-style-*$p ~prop / `counter-style$at 規則 / `counter$f 関数 / `counters$f 関数 ]にて — 構文解析-時に `~ASCII小文字~化$される。 ◎ Counter style names are case-sensitive. However, the names defined in this specification are ASCII lower-cased on parse wherever they are used as counter styles, e.g. in the list-style set of properties, in the @counter-style rule, and in the counter() functions.
各 `counter-style$at 規則は、 すべての~counter~style記述子~用に,暗黙的または明示的に値を指定する。 規則にて明示的に与えられていない値は、 この仕様にて各種~記述子に挙げられる初期~値をとる。 これらの記述子が適用されるのは、 もっぱら,それらを定義した `counter-style$at 規則の文脈の中に限られ、 文書~言語の要素には適用されない。 記述子がどの要素に適用されるかや、 値の子~要素への継承の観念はない。 `counter-style$at 規則~内に,同じ名前の記述子が複数あるときは、 最後に指定された妥当な記述子のみが利用され,他の記述子は無視されるモノトスル。 ◎ Each @counter-style rule 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 context of the @counter-style rule 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 rule, only the last-specified valid value is used; all prior values for that descriptor must be ignored.
`counter-style$at 規則で定義された~custom~counterは、 規則を含んでいる文書~全体で可用になる。 同じ`名前$を伴う複数個の `counter-style$at 規則が定義されている場合、 標準な~cascade規則に則って, それらのうち一つが~~選抜され,他の規則は`まるごと^em無視される — 他の規則の記述子が[ ~~選抜された規則に指定されなかった記述子 ]を与えることはない【!@counter-style rules cascade "atomically…】。 ◎ Defining a @counter-style makes it available to the entire document in which it is included. If multiple @counter-style rules are defined with the same name, only one wins, according to standard cascade rules. @counter-style rules cascade "atomically": if one replaces another of the same name, it replaces it entirely, rather than just replacing the specific descriptors it specifies.
注記: 定義済み~counter~styleであっても,上書きできる — ~UA~stylesheetの`優先順位$は、 他の~stylesheetより低いので。 ◎ Note: Note that even the predefined counter styles can be overridden; the UA stylesheet occurs before any other stylesheets, so the predefined ones always lose in the cascade.
この~at-規則は、 ~CSSの前方-互換な構文解析~要件に適合する — この規則を解さない適合t構文解析器は、 ~errorを伴うことなく,それを無視することになる。 ~UAはまた、 次のいずれかに該当する記述子をまるごと無視するモノトスル — そのような記述子は、 `counter-style$at 規則を無効にしない:
- 自身が[ 認識しない/実装していない ]
- その値は、この仕様 — その将来の~versionも含む — で与えられる文法に合致していない
3.1. ~counter~algo: `system^d 記述子
◎述 `system@d ◎用 `counter-style$at ◎値 `cyclic$v | `numeric$v | `alphabetic$v | `symbolic$v | `additive$v | [ `fixed$v `integer$t? ] | [ `extends$v `counter-style-name$t ] ◎初 `symbolic$v ◎表終`system$d 記述子は、 ~counter値に基づいて~counterの表現を構築するときに,どの `~algo@ を利用するかを指定する。 例えば、 `cyclic$v ~counter~styleは,単に自身の記号を繰返し巡回する一方で、 `numeric$v ~counter~styleは,自身の記号を数字†として解釈して,それに則って自身の表現を築く。 各種~systemは、 以下の各~下位節で定義される。 ◎ The system descriptor specifies which algorithm will be used to construct the counter’s representation based on the counter value. For example, cyclic counter styles just cycle through their symbols repeatedly, while numeric counter styles interpret their symbols as digits and build their representation accordingly. The systems are defined in the following subsections.
【† この仕様における “数字( `digit^en )” は、 "0" 〜 "9" に限らず,抽象的な数(~counter値)の表現に利用される(~counter表現の中の “一桁” を表記するための)任意の記号を意味する。 】
`system$d 用の各~値には、[ `symbols$d, `additive-symbols$d ]どちらの記述子が要求されるか,および[ その記述子が適切になるために要求される最小な長さ ]が結付けられる — これらは、 以下において各~値ごとに定義される。 `counter-style$at 規則が,これらの要件を満たさない場合、 その規則は`~counter~style$を定義しない(その場合でも、 規則は構文上は妥当であるが,その効果は無くなる)。 ◎ Each system value is associated with either the symbols or additive-symbols descriptors, and has a minimum length that the appropriate descriptor must have; each entry below defines what this is. If a @counter-style rule fails to meet this requirement, it does not define a counter style. (The rule is still syntactically valid, but has no effect.)
3.1.1. 一連の記号の巡回: `cyclic^v ~system
`cyclic@v ~counter~systemは、 供された記号~listを,その終端に達したら先頭に戻るように繰返し巡回する。 それは、 (単に 1 個の`~counter記号$を供する)単純な~bulletに対しても,複数の記号を巡回するときにも利用できる。 1 個目の`~counter記号$は 値 1 用の表現として利用される, 2 個目の`~counter記号$は(もし在れば) 値 2 用の表現として利用される, …等々になる。 ◎ The cyclic counter system cycles repeatedly through its provided symbols, looping back to the beginning when it reaches the end of the list. It can be used for simple bullets (just provide a single counter symbol), or for cycling through multiple symbols. The first counter symbol is used as the representation of the value 1, the second counter symbol (if it exists) is used as the representation of the value 2, etc.
~systemが `cyclic$v ならば、 `symbols$d 記述子は, 1 個~以上の`~counter記号$を包含していなければナラナイ。 この~systemは、 すべての~counter値にわたって定義される。 ◎ If the system is cyclic, the symbols descriptor must contain at least one counter symbol. This system is defined over all counter values.
“三角~bullet” ~counter~styleは、 次で定義できる: ◎ A "triangle bullet" counter style can be defined as:
@counter-style triangle { `system$d: `cyclic$v; `symbols$d: ‣; `suffix$d: " "; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
‣ One ‣ Two ‣ Three
`~counter記号$が %N 個あるならば、 所与の整数 %I 用に構築される表現は,`~counter記号~list$の中で ( ( %I ~MINUS 1 ) `mod^op %N ) 番( 0 番が最初)の`~counter記号$になる。 ◎ If there are N counter symbols and a representation is being constructed for the integer value, the representation is the counter symbol at index ( (value-1) mod N) of the list of counter symbols (0-indexed).
3.1.2. 一巡限りの記号: `fixed^v ~system
`fixed@v ~counter~systemは、 その`~counter記号~list$を一巡だけして,それ以降は~fall-backする。 これは、 表現の個数が有限な~counter~styleを表現するときに有用になる。 例えば~Unicodeには、 丸囲み数字など,~list用として[ 限られた長さの連なりを成す,特別な文字~~群 ]が いくつか定義されている。 ◎ The fixed counter system runs through its list of counter symbols once, then falls back. It is useful 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.
~systemが `fixed$v ならば、 `symbols$d 記述子は, 1 個~以上の`~counter記号$を包含していなければナラナイ。 この~systemは、[ `最初の記号~値$から `~counter記号~list$の長さまで ]の有限~範囲の~counter値にわたって定義される。 ◎ If the system is fixed, the symbols descriptor must contain at least one counter symbol. This system is defined over counter values in a finite range, starting with the first symbol value and having a length equal to the length of the list of counter symbols.
この~systemが指定されたときは、 その後【どの後?】に任意選択で, `最初の記号~値@ を設定する整数が供されてもヨイ。 この整数が省略された場合の`最初の記号~値$は 1 になる。 ◎ When this system is specified, it may optionally have an integer provided after it, which sets the first symbol value. If it is omitted, the first symbol value is 1.
“四隅” ~counter~styleは、 次で定義できる: ◎ A "box-corner" counter style can be defined as:
@counter-style box-corner { `system$d: `fixed$v; `symbols$d: ◰ ◳ ◲ ◱; `suffix$d: ': '; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
◰: One ◳: Two ◲: Three ◱: Four 5: Five 6: Six
最初の`~counter記号$は,`最初の記号~値$用の表現になり、 後続な各~counter値は,後続な`~counter記号$で表現される。 `~counter記号~list$が尽きて以降は、 更なる値は,この~counter~styleでは表現できないので,`~fallback~counter~style$で表現されなければナラナイ。 ◎ The first counter symbol is the representation for the first symbol value, and subsequent counter values are represented by subsequent counter symbols. Once the list of counter symbols is exhausted, further values cannot be represented by this counter style, and must instead be represented by the fallback counter style.
3.1.3. 記号の繰返法: `symbolic^v ~system
`symbolic@v ~counter~systemは,供された記号たちを繰返し巡回するが、 一巡し終える度に 記号を二重三重に重ねるようにする。 例えば、 元の記号が[ `*^l, `†^l ]であったなら、 2 巡目では[ `**^l, `††^l ]になり, 3 巡目では[ `***^l, `†††^l ], 等々になる。 これは、 脚注~style~markerに利用できる。 また、 `alphabetic$v ~systemと少し異ならせた~alphabetic~styleによる~listを呈示するときにも,ときどき利用される。 ◎ The symbolic counter system cycles repeatedly through its provided symbols, doubling, tripling, etc. the symbols on each successive pass through the list. For example, if the original symbols were "*" and "†", then on the second pass they would instead be "**" and "††", while on the third they would be "***"and "†††", etc. 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 alphabetic system presents.
~systemが `symbolic$v の場合、 `symbols$d 記述子は, 1 個~以上の`~counter記号$を包含していなければナラナイ。 この~systemは、 正な~counter値のみにわたって定義される。 ◎ If the system is symbolic, the symbols descriptor must contain at least one counter symbol. This system is defined only over strictly positive counter values.
“脚注” ~counter~styleは、 次で定義できる: ◎ An "footnote" counter style can be defined as:
@counter-style footnote { `system$d: `symbolic$v; `symbols$d: '*' ⁑ † ‡; `suffix$d: " "; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
* One ⁑ Two † Three ‡ Four ** Five ⁑⁑ Six
一部の~style手引きは、 ~listに対する付番を その見かけは `upper-alpha$v に似つつ,最初の 26 個の値から先は異なり、[ `AA^l, `BB^l, `CC^l, … 等々 ]のように繰返すことを義務付けている。 これは,次の `symbolic$v ~systemで達成できる: ◎ Some style guides mandate a list numbering that looks similar to upper-alpha, but repeats differently after the first 26 values, instead going "AA", "BB", "CC", etc. This can be achieved with the symbolic system:
@counter-style upper-alpha-legal { `system$d: `symbolic$v; `symbols$d: 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; }
この~styleは、 最初の 27 個の値までは `upper-alpha$v と一致するが、 そこから先は,分岐する: `upper-alpha$v が[ ( 27 個目から) `AA^l, `AB^l, `AC^l, … ( 53 個目から) `BA^l, `BB^l, `BC^l, … 等々 ]へ進む一方で、 この~styleでは,数字を重ねて[ ( 27 個目から) `AA^l, `BB^l, `CC^l, … ( 53 個目から) `AAA^l, `BBB^l, `CCC^l, … 等々 ]へ進む。 ◎ This style is identical to upper-alpha through the first 27 values, but they diverge after that, with upper-alpha going "AB", "AC", "AD", etc. Starting at the 53rd value, upper-alpha goes "BA", "BB", "BC", etc., while this style jumps into triple digits with "AAA", "BBB", "CCC", etc.
この~systemの下で,~counter値 %V から表現を構築するための`~algo$は: ◎ To construct the representation, run the following algorithm:
- %記号~list ~LET `~counter記号~list$ ◎ ↓
- %N ~LET %記号~list の長さ ◎ Let N be the length of the list of counter symbols, value initially be the counter value, S initially be the empty string, and symbol(n) be the nth counter symbol in the list of counter symbols (0-indexed).
- %記号 ~LET %記号~list 内の ( ( %V ~MINUS 1 ) `mod^op %N ) 番の `~counter記号$( 0 番が最初) ◎ Let the chosen symbol be symbol( (value - 1) mod N).
- ~RET `ceil^op( %V ~DIV %N ) 個の同じ %記号 からなる文字列 ◎ Let the representation length be ceil( value / N ). ◎ Append the chosen symbol to S a number of times equal to the representation length. ◎ Finally, return S.
3.1.4. 全単射~命数法: `alphabetic^v ~system
`alphabetic@v ~counter~systemは、 `~counter記号~list$を[ `~alphabetic^em 付番~systemの数字 ]として解釈する。 これは、 既定の `lower-alpha$v ~counter~styleに似るが、[ `a^l, `b^l, `c^l, … ]の次は[ `aa^l, `ab^l, `ac^l, … ], 等々と続く 【参考: `Bijective numeration@https://en.wikipedia.org/wiki/Bijective_numeration$en】 。 ~alphabetic付番~systemには、 0 を表現する数字はないので、 桁が増えたときの最初の表現は、 もっぱら[ 同じ,最初の数字 ]のみから構成される 【例えば `aaaaa…^l 】 。 ~alphabetic付番~systemは、 ~listに共通的に利用される。 また、 多くの~spreadsheet~programでも,各~columnを付番するときに現れる。 記号~listの最初の`~counter記号$は 数字 1 に解釈され, 2 個目の記号は数字 2 に, 等々になる。 ◎ The alphabetic counter system interprets the list of counter symbols as digits to an alphabetic numbering system, similar to the default lower-alpha counter style, which wraps from "a", "b", "c", to "aa", "ab", "ac". Alphabetic numbering systems do not contain a digit representing 0; so the first value when a new digit is added is composed solely of the first digit. Alphabetic numbering systems are commonly used for lists, and also appear in many spreadsheet programs to number columns. The first counter symbol in the list is interpreted as the digit 1, the second as the digit 2, and so on.
~systemが `alphabetic$v の場合、 `symbols$d 記述子は, 2 個以上の`~counter記号$を包含していなければナラナイ。 この~systemは、 正な~counter値のみにわたって定義される。 ◎ If the system is alphabetic, the symbols descriptor must contain at least two counter symbols. This system is defined only over strictly positive counter values.
碁石を利用する~counter~styleは、 次で定義できる: ◎ A counter style using go stones can be defined as:
@counter-style go { `system$d: `alphabetic$v; `symbols$d: url(white.svg) url(black.svg); /* */ `suffix$d: " "; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
One Two Three Four Five Six Seven
注記: この例を正しく表示するためには SVG 画像の~supportを要する。 ◎ Note: This example requires support for SVG images to display correctly.
`~counter記号$が %N 個あるならば、 表現は,[ 各~桁に いずれかの`~counter記号$を利用するような,基数 %N の~alphabeticの数 ]になる。 この~systemの下で,~counter値 %V から表現を構築するための`~algo$は: ◎ If there are N counter symbols, the representation is a base N alphabetic number using the counter symbols as digits. To construct the representation, run the following algorithm:
- %記号~list ~LET `~counter記号~list$ ◎ ↓
- %N ~LET %記号~list の長さ ◎ Let N be the length of the list of counter symbols, value initially be the counter value, S initially be the empty string, and symbol(n) be the nth counter symbol in the list of counter symbols (0-indexed).
- %S ~LET 空~文字列 ◎ ↑
-
~WHILE[ %V ~NEQ 0 ]: ◎ While value is not equal to 0:
- %V ~SET %V ~MINUS 1 ◎ Set value to value - 1.
- %S の先頭に,[ %記号~list 内の ( %V `mod^op %N ) 番の`~counter記号$( 0 番が最初) ]を付加する ◎ Prepend symbol( value mod N ) to S.
- %V ~SET `floor^op( %V ~DIV %N ) ◎ Set value to floor( value / N ).
- ~RET %S ◎ Finally, return S.
3.1.5. 位取り命数法: `numeric^v ~system
`numeric@v ~counter~systemは、 既定の `decimal$v ~counter~styleと同様に,各`~counter記号$を[ “~~位取り( `place-value^en )” 付番~systemにおける各~数字 ]として解釈する。 `~counter記号~list$内の[ 1 個目の記号は 数字 0 ,2 個目の記号は数字 1,等々 ]と解釈される。 ◎ The numeric counter system interprets the list of counter symbols as digits to a "place-value" numbering system, similar to the default decimal counter style. The first counter symbol in the list is interpreted as the digit 0, the second as the digit 1, and so on.
~systemが `numeric$v の場合、 `symbols$d 記述子は, 2 個以上の`~counter記号$を包含しなければナラナイ。 この~systemは、 すべての~counter値にわたって定義される。 ◎ If the system is numeric, the symbols descriptor must contain at least two counter symbols. This system is defined over all counter values.
“三進数” ~counter~styleは、 次で定義できる: ◎ A "trinary" counter style can be defined as:
@counter-style trinary { `system$d: `numeric$v; `symbols$d: '0' '1' '2'; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
1. One 2. Two 10. Three 11. Four 12. Five 20. Six
`~counter記号$が %N 個あるならば、 表現は,各`~counter記号$を[ 基数 %N の数 ]の数字として利用する。 この~systemの下で,~counter値 %V から表現を構築するための`~algo$は: ◎ If there are N counter symbols, the representation is a base N number using the counter symbols as digits. To construct the representation, run the following algorithm:
- %記号~list ~LET `~counter記号~list$ ◎ ↓
- ~IF[ %V ~EQ 0 ] ⇒ ~RET[ %記号~list 内の最初の`~counter記号$ ] ◎ ↓
- %N ~LET %記号~list の長さ ◎ ↓
- %S ~LET 空~文字列 ◎ Let N be the length of the list of counter symbols, value initially be the counter value, S initially be the empty string, and symbol(n) be the nth counter symbol in the list of counter symbols (0-indexed). ◎ If value is 0, append symbol(0) to S and return S.
-
~WHILE[ %V ~NEQ 0 ]: ◎ While value is not equal to 0:
- %S の先頭に,[ %記号~list 内の ( %V `mod^op %N ) 番の`~counter記号$( 0 番が最初) ]を付加する ◎ Prepend symbol( value mod N ) to S.
- %V ~SET `floor^op( %V ~DIV %N ) ◎ Set value to floor( value / N ).
- ~RET %S ◎ Return S.
3.1.6. 合算式~命数法: `additive^v ~system
`additive@v ~counter~systemは、 “`sign-value^en” 付番~systemを表現するときに利用される — それは、 各~数字を異なる桁~位置にも再利用して~~多様な値を表すのではなく、 “桁違いな” 値を持つ追加的な数字を定義して、 すべての数字の総和をとれば,元の数~値を得せるようにする。 これは、 ~Roman-numeralsその他,世界~各地の付番~systemで利用されている。 ◎ The additive counter system is used to represent "sign-value" numbering systems, which, rather than reusing digits in different positions to change their value, define additional digits with much larger values, so that the value of the number can be obtained by adding all the digits together. This is used in Roman numerals and other numbering systems around the world.
~systemが `additive$v の場合、 `additive-symbols$d 記述子で `~additive~tuple$たちが成す空でない~listも指定されなければナラナイ。 この~systemは、 名目上,すべての~counter値にわたって定義される(正確な詳細は下の~algoを見よ)。 ◎ If the system is additive, the additive-symbols descriptor must contain at least one additive tuple. This system is nominally defined over all counter values (see algorithm, below, for exact details).
“賽子” ~counter~styleは、 次で定義できる: ◎ A "dice" counter style can be defined as:
@counter-style dice { `system$d: `additive$v; `additive-symbols$d: 6 ⚅, 5 ⚄, 4 ⚃, 3 ⚂, 2 ⚁, 1 ⚀; `suffix$d: " "; }
これは、 次に似た見かけの~listを生産することになる: ◎ It will then produce lists that look like:
⚀ One ⚁ Two ⚂ Three ... ⚅⚄ Eleven ⚅⚅ Twelve ⚅⚅⚀ Thirteen
この~systemの下で,~counter値 %V から表現を構築するための`~algo$は: ◎ To construct the representation:
- %記号~list ~LET ~counter~styleに与えられた`~additive~tuple$たちが成す~list ◎ ↑Let value initially be the counter value,\ ↓S initially be the empty string,\ and symbol list initially be the list of additive tuples.
-
~IF[ %V ~EQ 0 ]: ◎ If value is zero:
- ~IF[ %記号~list を成す ある~tupleは[ `重み^i ~EQ 0 ]を満たす ] ⇒ ~RET その~tupleの`~counter記号$ ◎ If symbol list contains a tuple with a weight of zero, append that tuple’s counter symbol to S and return S.
- (この~counter~styleでは、 %V を表現できない) ⇒ ~RET %V を`~fallback~counter~style$で表現した結果 ◎ Otherwise, the given counter value cannot be represented by this counter style, and must instead be represented by the fallback counter style.
- %S ~LET 空~文字列 ◎ ↑
- %C ~LET %V ◎ ↓
-
%記号~list を成す ~EACH( %~tuple ) に対し: ◎ For each tuple in symbol list:
- %記号 ~LET %~tuple の`~counter記号$ ◎ ↓
- %重み ~LET %~tuple の`重み^i ◎ Let symbol and weight be tuple’s counter symbol and weight, respectively.
- ~IF[ %重み ~EQ 0 ]~OR[ %重み ~GT %C ] ⇒ ~CONTINUE ◎ If weight is zero, or weight is greater than value, continue.
- %回数 ~LET `floor^op( %C ~DIV %重み ) ◎ Let reps be floor( value / weight ).
- %S に %回数 個の %記号 を付加する ◎ Append symbol to S reps times.
- %C ~DECBY %重み ~MUL %回数 ◎ Decrement value by weight * reps.
- ~IF[ %C ~EQ 0 ] ⇒ ~RET %S ◎ If value is zero, return S.
- ~Assert: %C ~NEQ 0 ◎ Assertion: value is still non-zero.
- (この~counter~styleでは、 %V を表現できない) ⇒ ~RET %V を `~fallback~counter~style$で表現した結果 ◎ The given counter value cannot be represented by this counter style, and must instead be represented by the fallback counter style.
注記: この仕様にて定義済みな[ `additive$v `counter-style$at 規則 ]については,その`範囲$に入る どの~counter値からも表現を生産するが、 他の `additive-symbols$d に対しては,[ 理論的には表現を見出せても,上の~algoでは見出せない ]ような~counter値もあり得る。 例えば, `counter-style$at にて `additive-symbols$d: 3 "a", 2 "b"; が定義されている場合、 上の~algoは,~counter値 4 に対する表現を見出せない — 理論的には,表現 `bb^l がそれに該当するとしても。 あいにく,このことは、 ~algoの~~実行を~counter値に線形な時間に抑えるために要求される。 ◎ Note: All of the predefined additive @counter-style rules in this specification produce representations for every value in their range, but it’s possible to produce values for additive-symbols that will fail to find a representation with the algorithm defined above, even though theoretically a representation could be found. For example, if a @counter-style was defined with additive-symbols: 3 "a", 2 "b";, the algorithm defined above will fail to find a representation for a counter value of 4, even though theoretically a "bb" representation would work. While unfortunate, this is required to maintain the property that the algorithm runs in linear time relative to the size of the counter value.
3.1.7. 既存の~counter~styleから築くとき: `extends^v ~system
`extends@v ~systemは、[ 別の~counter~styleの`~algo$【および記号】を利用しつつ, `負-符号$や`接尾辞$などの他の側面を改める ]ことを作者に許容する。 ~counter~styleが `extends$v ~systemを利用する場合、 未指定な記述子~用の値は,その初期~値ではなく,その`拡張元~counter~style$から得なければナラナイ。 ◎ The extends system allows an author to use the algorithm of another counter style, but alter other aspects, such as the negative sign or the suffix. If a counter style uses the extends system, any unspecified descriptors must be taken from the extended counter style specified, rather than taking their initial values.
`extends$v ~systemを利用する `counter-style$at 規則は、[ `symbols$d / `additive-symbols$d ]記述子を包含してはナラナイ — さもなければ、 当の `counter-style^at 規則は無効になる。 ◎ If a @counter-style uses the extends system, it must not contain a symbols or additive-symbols descriptor, or else the @counter-style rule is invalid.
`extends$v 【!extend】の利用は、 その`拡張元~counter~style$が[ `disc$v / `circle$v / `square$v / `disclosure-open$v / `disclosure-closed$v ](定義済みな記号的~counter~style)である場合には,[ 規範的な~stylesheet内に供される規則の “標準な” 定義 ]を拡張する([ それらを~UAに特有な異なる流儀で描くこと ]を許容する例外を伴うことなく)。 ◎ If the specified <counter-style-name> is an ASCII case-insensitive match for disc, circle, square, disclosure-open, or disclosure-closed (any of the predefined symbolic counter styles), using extend extends from the “standard” definition of the rules provided in the normative stylesheet (rather than the exception allowing them to be drawn in a different, user-agent-specific fashion.)
`extends$v ~systemの `拡張元~counter~style@ は、 所与の %名前 — `system$d 記述子にて `extends$v ~keywordに伴って指定された `counter-style-name$t — から,次に従って定義される:
- %名前 は[ この仕様に定義される ある`~counter~style$の`名前$ ]に`~ASCII大小無視$で合致するならば、 その~counter~style
-
他の場合, %名前 に一致する`名前$を持つ`~counter~style$は在る(それを定義する妥当な `counter-style$at 規則が在る)ならば、 その~counter~style
ただし, `counter-style$at 規則が `extends$v 値を通して循環する場合、 この `extends$v ~systemにおいては,[ その循環に関与している どの~counter~styleも、 その`拡張元~counter~style$は `decimal$v である ]として扱うモノトスル。
- 他の場合, `decimal$v ~counter~style
【 用語 `拡張元~counter~style$は、 他所を明確化する/集約するために,この訳にて明示的な定義として導入している(加えて、 ~ASCII大小無視に関する取扱いを明確化するよう,原文を補完している)。 】
◎ If the specified counter style name isn’t the name of any defined counter style, it must be treated as if it was extending the decimal counter style.\ If one or more @counter-style rules form a cycle with their extends values, all of the counter styles participating in the cycle must be treated as if they were extending the decimal counter style instead.例えば、 ~counter~styleは `decimal$v に一致しつつ,次の様に その後に~periodでなく 丸括弧を利用したいならば: ◎ For example, if you wanted a counter style that was identical to decimal, but used a parenthesis rather than a period after it, like:
1) first item 2) second item 3) third item
これは、 新たな~counter~style全体を書き上げなくとも, `decimal$v を拡張するだけで行える: ◎ Rather than writing up an entirely new counter style, this can be done by just extending decimal:
@counter-style decimal-paren { `system$d: `extends$v `decimal$v; `suffix$d: ") "; }
3.2. 負な値の整形: `negative^d 記述子
◎述 `negative@d ◎用 `counter-style$at ◎値 `symbol$t `symbol$t? ◎初 `-^l ◎表終`negative$d 記述子は、 ~counter値が負であるときに,表現の[ 先頭/末尾 ]に付加される `負-符号@ たちを定義する。 ◎ The negative descriptor defines how to alter the representation when the counter value is negative.
~counter値が負であるときは、 値を成す 1 個目の `symbol$t が表現の先頭に付加され、 2 個目の `symbol$t も指定されていれば,それも表現の末尾に付加される。 ◎ The first <symbol> in the value is prepended to the representation when the counter value is negative. The second <symbol>, if specified, is appended to the representation when the counter value is negative.
例えば, `negative$d: "(" ")"; と指定すれば、 負な値は丸括弧で括られるようになる。 これは、 金融~文脈でときどき利用される — `(2) (1) 0 1 2 3...^l の様に。 ◎ For example, specifying negative: "(" ")"; will make negative values be wrapped in parentheses, which is sometimes used in financial contexts, like "(2) (1) 0 1 2 3...".
すべての `system$d 値が`負-符号$を利用するわけではない。 特に、 次のいずれかに該当する~counter~styleは, `負-符号を利用する@ とされる: ◎ Not all system values use a negative sign. In particular, a counter style uses a negative sign\
- その `system$d は次に挙げるいずれかを値にとるもの ⇒# `symbolic$v / `alphabetic$v / `numeric$v / `additive$v ◎ if its system value is symbolic, alphabetic, numeric, additive,\
- その `system$d は `extends$v を値にとり, `拡張元~counter~style$自身が`負-符号を利用する$もの。 ◎ or extends if the extended counter style itself uses a negative sign.\
`負-符号を利用-$しない~counter~styleは、 `~counter表現を生成-$するときに`負-符号$を無視する。 ◎ If a counter style does not use a negative sign, it ignores the negative sign when generating a counter representation.
3.3. ~markerの前に置く記号: `prefix^d 記述子
◎述 `prefix@d ◎用 `counter-style$at ◎値 `symbol$t ◎初 "" 【空~文字列】 ◎表終`prefix$d 記述子は、 ~marker表現の先頭に付加される `接頭辞@ を `symbol$t で指定する。 `接頭辞$は、 `負-符号$より前に置かれる。 ◎ The prefix descriptor specifies a <symbol> that is prepended to the marker representation. Prefixes come before any negative sign.
注記: `接頭辞$は、 `marker$pe 疑似要素の既定の内容を構築する~algoのみにより追加され、[ `counter$f/`counters$f ]関数の利用-時に自動的に追加されることはない。 ◎ Note: 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.
3.4. ~markerの後に置く記号: `suffix^d 記述子
◎述 `suffix@d ◎用 `counter-style$at ◎値 `symbol$t ◎初 `. ^l 【 `.^l と 1 個の~space 】 ◎表終`suffix$d 記述子は、 ~marker表現の末尾に付加される `接尾辞@ を `symbol$t で指定する。 `接尾辞$は、 `負-符号$より後に置かれる。 ◎ The suffix descriptor specifies a <symbol> that is appended to the marker representation. Suffixes are added to the representation after negative signs.
注記: `接尾辞$は、 `marker$pe 疑似要素の既定の内容を構築する~algoのみにより追加され、[ `counter$f/`counters$f ]関数の利用-時に自動的に追加されることはない。 ◎ Note: 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.
3.5. ~counter視野の制限-法: `range^d 記述子
◎述 `range@d ◎用 `counter-style$at ◎値 [ [ `integer$t | `infinite$v ]{2} ]# | `auto$v ◎初 `auto$v ◎表終`range$d 記述子は、 ~counter~styleが定義される ~counter値の `範囲@ を定義する。 ~counter~styleは、 この範囲に入らない~counter値に対しては,その`~fallback~counter~style$を利用して~counter表現を構築することになる。 ◎ The range descriptor defines the ranges over which the counter style is defined. If a counter style is used to represent a counter value outside of its ranges, the counter style instead drops down to its fallback counter style.
各種 値の意味は:
- `auto@v
-
`範囲$は、 ~counter~systemに依存する — `system@d に応じて: ◎ The range depends on the counter system:
- `cyclic$v
- `numeric$v
- `fixed$v
- 負な無限大 〜 正な無限大。 ◎ For cyclic, numeric, and fixed systems, the range is negative infinity to positive infinity.
- `alphabetic$v
- `symbolic$v
- 1 〜 正な無限大。 ◎ For alphabetic and symbolic systems, the range is 1 to positive infinity.
- `additive$v
- 0 〜 正な無限大。 ◎ For additive systems, the range is 0 to positive infinity.
- `extends$v
- その`拡張元~counter~style$【!extends system】が `auto$v 用に生産することになる`範囲$ — `複階的な定義済み~counter~style@#complex-predefined-counters$を拡張している場合の`範囲$は,その~styleにて定義される。 ◎ For extends systems, the range is whatever auto would produce for the extended system; if extending a complex predefined style (§ 7 Complex Predefined Counter Styles), the range is the style’s defined range.
- [ [ `integer$t | `infinite$v ]{2} ]#
- これは、 ~commaで分離された範囲たちが成す~listを定義する。 各~範囲に対し、[ 1 個目の値/ 2 個目の値 ]が範囲の[ 下限/上限 ]を与える。 下限, 上限とも範囲に含まれる。 `infinite@v が範囲の[ 1 個目の値/ 2 個目の値 ]に利用された場合は[ 負な無限大/正な無限大 ]を表現する。 ~counter~styleの`範囲$は、 ~listにて定義されたすべての範囲の和集合になる。 ◎ This defines a comma-separated list of ranges. For each individual range, the first value is the lower bound and the second value is the upper bound. This range is inclusive - it contains both the lower and upper bound numbers. If infinite is used as the first value in a range, it represents negative infinity; if used as the second value, it represents positive infinity. The range of the counter style is the union of all the ranges defined in the list.
- ある範囲にて,その下限が上限より高い場合、 記述子~全体が無効になり,無視されるモノトスル。 ◎ If the lower bound of any range is higher than the upper bound, the entire descriptor is invalid and must be ignored.
実装は、 `範囲$の[ 下限/上限 ]に対し,少なくとも[ −215 以上 / 215 未満 ](有符号 16-bit 整数の範囲)までは~supportするモノトスル。 また、 より広い範囲を~supportしてもヨイ。 実装は、 指定された下上限を[ 自身が~supportする下上限の範囲 ]内に切り詰めるモノトスル。 ◎ Implementations must support ranges with a lower bound of at least -215 and an upper bound of at least 215-1 (the range of a signed 2-byte int). They may support higher ranges. If any specified bound is outside of the implementation’s supported bounds, it must be treated as the closest bound that the implementation does support.
3.6. ~zero~pad法などによる一定幅の表現: `pad^d 記述子
◎述 `pad@d ◎用 `counter-style$at ◎値 `integer [0,∞]$t && `symbol$t ◎初 `0 ""^v ◎表終`pad$d 記述子は、[ “固定幅” な~counter~styleを指定する ]ことを作者に許容する — ~pad値より短い表現は、 特定0の `symbol$t で~padされる。 指定された~pad値より大きい表現は、 通常通り構築される。 ◎ The pad descriptor allows an author to specify a "fixed-width" counter style, where representations shorter than the pad value are padded with a particular <symbol>. Representations larger than the specified pad value are constructed as normal.
- `integer [0,∞]$t && `symbol$t
-
`integer$t は、 どの~counter表現も到達するモノトスル %最小~長さ を指定する。 ◎ The <integer> specifies a minimum length that all counter representations must reach.
%差分 を次の式の結果とするとき ⇒ %最小~長さ ~MINUS ( %A + %B ) — ここで:
-
%A は、[ ~counter値~用の`初期~counter表現$を成す`書記素~cluster$ ]の個数。
注記: これは、 `~counter表現を生成-$する~algoの中で,[ `接頭辞$/`接尾辞$/`負-符号$ ]を追加する前の結果を指していることに注意。
- %B は、[ ~counter値は負である ]かつ[ ~counter~styleは`負-符号を利用する$ ]ならば, ( [ ~counter~styleの`負-符号$(たち) ]を成す`書記素~cluster$の個数 ) / 他の場合は 0 。
[ %差分 ~GT 0 ]ならば、 表現の先頭に,[ %差分 個の指定された `symbol$t ]を付加する。 ◎ If difference is greater than zero, prepend difference copies of the specified <symbol> to the representation.
-
- 負な %最小~長さ は許容されない。 ◎ Negative <integer> values are not allowed.
“固定幅” 付番の最も共通的な例は、 ~zeroで~padする十進~付番である。 例えば作者は、 利用される数が 1000 未満になることを知っているならば, ~zeroで~padする単純な記述子 `pad$d: 3 "0"; で,どの表現も 3 桁~幅になることを確保できる。 ◎ The most common example of "fixed-width" numbering is zero-padded decimal numbering. If an author knows that the numbers used will be less than a thousand, for example, it can be zero-padded with a simple pad: 3 "0"; descriptor, ensuring that all of the representations are 3 digits wide.
これにより、 例えば[ 1 は `001^l / 20 は `020^l / 300 は `300^l / 4000 は `4000^l / −5 は `-05^l ]として表現されるようになる。 ◎ This will cause, for example, 1 to be represented as "001", 20 to be represented as "020", 300 to be represented as "300", 4000 to be represented as "4000", and -5 to be represented as "-05".
注記: `pad$d 記述子は、 表現を成す`書記素~cluster$の個数を数えるが、 それを `symbol$t で~padする。 指定された `pad$d `symbol$t が複数~文字からなる場合、 これは欲される効果にならないであろう。 あいにく、 有用な拘束に違反することなく, `pad$d `symbol$t を成す`書記素~cluster$の個数を利用する仕方はない。 作者には、 `pad$d 記述子においては, 1 個の`書記素~cluster$からなる `symbol$t のみを指定することが推奨される。 ◎ Note: The pad descriptor counts the number of grapheme clusters in the representation, but pads it with <symbol>s. If the specified pad <symbol> is multi-character, this will likely not have the desired effect. Unfortunately, there’s no way to use the number of grapheme clusters in the pad <symbol> without violating useful constraints. It is recommended that authors only specify <symbol>s of a single grapheme cluster in the pad descriptor.
3.7. ~fallbackの定義-法: `fallback^d 記述子
◎述 `fallback@d ◎用 `counter-style$at ◎値 `counter-style-name$t ◎初 `decimal$v ◎表終`fallback$d 記述子は、[ 現在の~counter~styleが,所与の~counter値~用に表現を作成できないとき ]に利用される, `~fallback~counter~style@ を指定する。 例えば、 `範囲$ 1 〜 10 として定義された~counter~style用に,~counter値 11 を表現するよう依頼された場合、 ~counter値の表現は,代わりに`~fallback~counter~style$で構築される — `~fallback~style$もその値を表現できない場合は、 その~fallback~styleの`~fallback~style$で構築される, 等々になる。 ◎ The fallback 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.).
`fallback$d 記述子の値が,定義された どの~counter~styleの`名前$でもない場合、 この記述子の使用~値は `decimal$v になる。 同様に、[ 所与の~counter値を具現化できるような~counter~styleを見出すべく~fallbackを追っている間 ]に[ 指定された~fallbackにて~loopが検出された場合 ]も, `decimal$v ~styleを利用するモノトスル。 ◎ If the value of the fallback descriptor isn’t the name of any defined counter style, the used value of the fallback descriptor is decimal 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 decimal style must be used instead.
注記: ~fallbackが~loopするように指定されたとしても, ~errorになるとは限らないことに注意。 例えば、 作者が[ ~counter値の偶数か奇数かで表現が有意に異なるような~counter~style ]を欲するならば、[ 奇数~値のみを表現できる~style, 偶数~値のみを表現できる~style ]を定義して,互いを他方の~fallbackとして指定するのが最も容易であろう。 ~fallback~graphは循環的になるが、 これらの~fallbackを追っている間に~loopに遭遇することはなく、 どの~counter値も,どちらかの~counter~styleで表現される。 ◎ 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.
3.8. ~marker文字: `symbols^d, `additive-symbols^d 記述子
◎述 `symbols@d ◎用 `counter-style$at ◎値 `symbol$t+ ◎初 なし ◎表終 ◎述 `additive-symbols@d ◎用 `counter-style$at ◎値 [ `integer [0,∞]$t && `symbol$t ]# ◎初 なし ◎表終`symbol@t = `string$t | `image$t | `custom-ident$t
[ `symbols$d / `additive-symbols$d ]記述子の値を成す各 `symbol^t は、[ `system$d 記述子で指定される ~marker構築~algo ]に利用される~~一連の記号 — `~counter記号@ — を指定する。 `symbols$d 記述子は、 ~counter~systemが[ `cyclic$v / `numeric$v / `alphabetic$v / `symbolic$v / `fixed$v ]の場合には指定されなければナラナイ。 `additive-symbols$d 記述子は、 ~counter~systemが[ `additive$v ]の場合には指定されなければナラナイ — さもなければ、 当の `counter-style$at は`~counter~style$を定義しない(それでも、 `~at-規則$としては妥当である)。 ◎ The symbols and additive-symbols descriptors specify the symbols used by the marker-construction algorithm specified by the system descriptor. The @counter-style rule must have a valid symbols descriptor if the counter system is cyclic, numeric, alphabetic, symbolic, or fixed, or a valid additive-symbols descriptor if the counter system is additive; otherwise, the @counter-style does not define a counter style (but is still a valid at-rule).
一部の~counter~systemでは、 `symbols$d 記述子に 2 個以上の~entryが要求されている — 1 個しかない場合、 当の `counter-style$at は`~counter~style$を定義しない。 ◎ Some counter systems specify that the symbols descriptor must have at least two entries. If the counter style’s system is such, and the symbols descriptor has only a single entry, the @counter-style rule does not define a counter style.
`symbols$d 記述子~内の`~counter記号$の解釈は、 ~counter~styleの~systemに応じて異なる。 ◎ Each entry in the symbols descriptor’s value defines a counter symbol, which is interpreted differently based on the counter style’s system.\
`additive-symbols$d 記述子の値は、 一連の `~additive~tuple@ — ( `~counter記号$, `integer$t による `重み^i ) が成す~tuple — たちが成す~listを定義する。 この~listは、 その各 `重み^i が[ 互いに異なる, かつ降順に~~現れる整数 ]として指定されなければナラナイ — さもなければ、 当の宣言は無効になり,無視されるモノトスル。 ◎ Each entry in the additive-symbols descriptor’s value defines an additive tuple, which consists of a counter symbol and an integer weight. Each weight must be a non-negative integer, and the additive tuples must be specified in order of strictly descending weight; otherwise, the declaration is invalid and must be ignored.
各`~counter記号$は、[ 文字列( `string$t ), 画像( `image$t ), `識別子$( `custom-ident$t ) ]いずれかをとり、 この 3 種を単独の記述子に混在させることもできる。 ~counter表現は、 ~counter記号をいくつか連結して構築される。 識別子は、 同じ文字を包含する文字列として具現化される。 画像は`行内~level$の`置換d要素$として具現化される。 画像による`~counter記号$の`既定の~obj~size$は `1em^v 平方になる。 ◎ Counter symbols may be strings, images, or identifiers, and the three types can be mixed in a single descriptor. Counter representations are constructed by concatenating counter symbols together. Identifiers are rendered as strings containing the same characters. Images are rendered as inline replaced elements. The default object size of an image counter symbol is a 1em by 1em square.
注記: `symbol$t における `image$t 構文は、 現在は~risk下にある。 現在,それを実装しようと計画している実装は無い上、 `counter$f の一部の用法を全部的に取扱わない仕方で複雑化させる。 ◎ Note: The <image> syntax in <symbol> is currently at-risk. No implementations have plans to implement it currently, and it complicates some usages of counter() in ways that haven’t been fully handled.
注記: 文字列でなく`識別子$を利用して記号を定義するときは、 識別子の構文に~~注意。 特に, `*^l の様な普通字でない~ASCIIは、 識別子でないので,引用符で~~括って文字列にしなければナラナイ。 この仕様で定義される~counter~styleのうち一部で利用される~hex~escapeは,(その後に数字を~~続けても多義的にならないようにするため)直後の~spaceを “食べる” ので、 その直後の数字と分離するためには,~spaceを 2 個挟む必要がある — さもなければ、 同じ識別子~内の隣接する一部分と見なされることになる。 例えば `symbols: \660 \661;^css は、 文字 `0660^U, `0661^U からなる単独の記号を定義する — 2 個の文字を定義するためには、 `symbols: "\660" "\661"^css の様に~escapeされた各 文字を引用符で括るか,それらの合間に 2 個の~spaceを挟む必要がある。 ◎ Note: If using identifiers rather than strings to define the symbols, be aware of the syntax of identifiers. In particular, ascii non-letters like "*" are not identifiers, and so must be quoted in a string. Hex escapes, used in several of the counter styles defined in this specification, "eat" the following space (to allow a digit to follow a hex escape without ambiguity), so two spaces must be put after a hex escape to separate it from the following one, or else they’ll be considered adjacent, and part of the same identifier. For example, symbols: \660 \661; only defines a single symbol, consisting of the U+0660 and U+0661 characters, rather than the two that were intended; either quote the escapes in strings, like symbols: "\660" "\661", or put two spaces between the escapes.
3.9. 発話~合成: `speak-as^d 記述子
◎述 `speak-as@d ◎用 `counter-style$at ◎値 `~auto0$v | `bullets$v | `numbers$v | `words$v | `spell-out$v | `counter-style-name$t ◎初 `~auto0$v ◎表終~counter~styleは、 視覚的には明白な意味を持つように構築できても、[ 発話~合成器や他の視覚的でない手段 ]を介して有意義に表現することは,[ アリでない/ アリであっても,素朴に読上げると見当外れになる ]こともある。 `speak-as$d 記述子は、 所与の~counter~styleで整形される~counterの `発話形@ を合成する方法を記述する。 支援技術は ⇒# 当の~counter~styleを読上げるときは,この発話形を利用するベキである/ 発話~以外の出力に変形nを伝えるためとして, `speak-as$d の値を利用してもヨイ ◎ A counter style can be constructed with a meaning that is obvious visually, but impossible to meaningfully represent via a speech synthesizer or other non-visual means, or possible but nonsensical when naively read out loud. The speak-as descriptor describes how to synthesize the spoken form of a counter formatted with the given counter style. Assistive technologies should use this spoken form when reading out the counter style, and may use the speak-as value to inform transformations to outputs other than speech.\
各種~値の意味は: ◎ Values have the following meanings:
- `~auto0@v
-
この値の効果は、 ~counter~styleの `system$d に応じて:
- `alphabetic$v
- `spell-out$v と同じになる。
- `cyclic$v
- `bullets$v と同じになる。
- `extends$v
- `拡張元~counter~style$【!拡張元~style】に対する `~auto0$v の効果と同じになる。
- 他の場合
- `numbers$v と同じになる。
- `bullets@v
- ~UAは、 次を発話する ⇒ 読上げられている無順序~list~itemを表現するような,~UAにより定義される[ 句/指示音 ] ◎ The UA speaks a UA-defined phrase or audio cue that represents an unordered list item being read out.
- `numbers@v
- ~counterの数量-値は、 `内容~言語$の下で,数として発話される。 ◎ The counter’s numeric value is spoken as a number in the content language.
- `words@v
- 通常通り,~counterの値~用の`~counter表現を生成-$して、 通常通り,`内容~言語$における~textとして発話する。 当の~counter表現が画像を包含する場合、 代わりに `numbers$v のときと同じに取扱うモノトスル。 ◎ Generate a counter representation for the value as normal, then speak it as normal text in the content language. If the counter representation contains images, instead handle the value as for numbers.
- `spell-out@v
-
[ 通常通り,~counterの値~用の`~counter表現を生成-$した結果 ]を成す各~普通字ごとに,その綴りを`内容~言語$の下で読上げる。 ~UAは,[ 記号を発音する方法を知らない/当の~counter表現は画像を包含する ]場合、 代わりに `numbers$v のときと同じに取扱うモノトスル。 ◎ Generate a counter representation for the value as normal, then spell it out letter-by-letter in the content language. If the UA does not know how to pronounce the symbols (or the counter representation contains images), it must instead handle the value as for numbers.
例えば,~Englishでの `lower-greek$v は、[ “`alpha^en”, “`beta^en”, “`gamma^en”, … 等々 ]と読上げられる。 対して,~Frenchでの `upper-latin$v は、 (音標表記で)[ /a/, /be/, /se/, … 等々 ]と読上げられることになる。 ◎ For example, lower-greek in English would be read out as "alpha", "beta", "gamma", etc. Conversely, upper-latin in French would be read out as (in phonetic notation) /a/, /be/, /se/, etc.
- `counter-style-name$t
- ~counterの値は、 代わりに指定された~styleで発話される(~counter値~用の表現を生成するときの `fallback$d 記述子の挙動に類似する)。 指定された~styleが存在しない場合、 この値は `~auto0$v として扱われる。 `speak-as$d 参照を追っているときに~loopが検出された場合も、 この値は,その~loopに関与している~counter~style用には `~auto0$v として扱われる。 ◎ The counter’s value is instead spoken out in the specified style (similar to the behavior of the fallback descriptor when generating representations for a counter value). If the specified style does not exist, this value is treated as auto. If a loop is detected when following speak-as references, this value is treated as auto for the counter styles participating in the loop.
利用されている記号が実際には普通字でないときには、 発音を別の~counter~styleに委ねる能が役立つことがある。 例えば、 特別な~Unicode文字を利用する “丸囲み小文字~Latin” ~counter~styleとして,次の定義がアリになる: ◎ The ability to defer pronunciation to another counter style can help when the symbols being used aren’t actually letters. For example, here’s a possible definition of a circled-lower-latin counter-style, using some special Unicode characters:
@counter-style circled-lower-latin { `system$d: `alphabetic$v; `speak-as$d: `lower-latin$v; `symbols$d: ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ; `suffix$d: " "; }
`system$d を `alphabetic$v に設定すると、 通常は,文字の名前を読上げるよう ~UAに試行させるが、 この事例でそうすると, 【`内容~言語$が英語の場合は】 “`Circled Letter A^en” の様な、 およそイミを成さないものになる。 代わりに, `speak-as$d を明示的に `lower-latin$v に設定すれば、 意図されるとおり,各自に対応する~Latin普通字として読上げられることが確保される。 ◎ Setting its system to alphabetic would normally make the UA try to read out the names of the characters, but in this case that might be something like "Circled Letter A", which is unlikely to make sense. Instead, explicitly setting speak-as to lower-latin ensures that they get read out as their corresponding latin letters, as intended.
4. 匿名な~counter~styleの定義-法: `symbols^f 関数
~counter~styleが ~stylesheet内で一度しか利用されず, `counter-style$at 規則を全部的に定義するのは過剰になることもある。 `symbols$f 関数を用いれば、 `~counter~style$を,~prop値の中で~inlineに定義できる。 これは、 `counter-style$at 規則の特能を全部的には供さないが,それでも有用になる下位集合を供する。 `symbols$f 規則の構文は: ◎ The symbols() function allows a counter style to be defined inline in a property value, for when a style is used only once in a stylesheet and defining a full @counter-style rule would be overkill. It does not provide the full feature-set of the @counter-style rule, but provides a sufficient subset to still be useful. The syntax of the symbols() rule is:
`symbols@f = symbols( `symbols-type$t? [ `string$t | `image$t ]+ ); `symbols-type@t = `cyclic$v | `numeric$v | `alphabetic$v | `symbolic$v | `fixed$v
`symbols$f 関数は、 匿名な~counter~style — [ 各種~記述子の値が次の表tで与えられる,~counter~style ]と等価な,`名前$が無い~counter~style — を定義する:
記述子 | 値 |
---|---|
`system$d | `symbols-type$t に供された~system(省略-時は `symbolic$v ) |
`prefix$d | 空~文字列 |
`suffix$d | `\20^l ( ` ^l `SPACE^cn ) |
`range$d | `auto$v |
`fallback$d | `decimal$v |
`negative$d | `\2D^l ( `-^l `HYPHEN-MINUS^cn ) |
`pad$d | `0 ""^css |
`speak-as$d | `~auto0$v |
`symbols$d | 供された `string$t や `image$t |
`counter-style$at 規則による~counter~styleと同様に:
- ~counter~styleの`~algo$は、 供された~systemにしたがって,前~節にて定義された~algoになる
- ~systemが `fixed$v ならば `最初の記号~値$は `1^v になる。
- ~systemが[ `alphabetic$v, `numeric$v ]いずれかならば、 2 個以上の[ `string$t /`image$t ]が供されなければナラナイ — さもなければ当の関数は無効になる。
次の~codeは: ◎ This code:
ol { list-style: symbols("*" "\2020" "\2021" "\A7"); }
次に似た見かけの~listを生産することになる: ◎ will produce lists that look like:
* One † Two ‡ Three § Four ** Five †† Six ‡‡ Seven
他方、 ~counterの~systemを次の様に指定したならば: ◎ On the other hand, specifying the system of counter, like so:
ol { list-style: symbols(cyclic "*" "\2020" "\2021" "\A7"); }
次に似た見かけの~listを生産することになる: ◎ will produce lists that look like:
* One † Two ‡ Three § Four * Five † Six ‡ Seven
注記: `counter-style$at 規則の `symbols$d 記述子で許容されている`識別子$は、 `symbols$f 関数では許容されないことに注意 — 許容されるのは文字列と画像に限られる。 ◎ Note: the symbols() function only allows strings and images, while the symbols descriptor of a @counter-style rule also allows identifiers.
5. `list-style-type^p, `counter^f, `counters^f の拡張-法
`CSS21$r における `list-style-type$p ~propと[ `counter$f / `counters$f ]記法は、 何らかの定義済み~counter~styleを識別するような,様々な~keywordを受容する。 この~moduleは、 それに代わり,次に定義する `counter-style$t 型をとるように これらの特能を拡張する: ◎ In CSS Level 2 [CSS21] the list-style-type property and the counter() and counters() notations accept various pre-defined keywords, each identifying a counter style. This module extends these features to take instead the <counter-style> type, defined below:
`counter-style@t = `counter-style-name$t | `symbols()$t
`counter-style-name$t が既存の~counter~styleを指していない場合、 `decimal$v ~counter~styleと一致するように動作するモノトスル(が、 算出d値は `decimal$v にはならない)。 ◎ If a <counter-style-name> is used that does not refer to any existing counter style, it must act identically to the decimal counter style (but does not compute to decimal).
これらの文脈に利用される `counter-style-name$t は、 `~tree視野な参照$になる。 ◎ When used in these contexts, a <counter-style-name> is a tree-scoped reference.
6. 単純な定義済み~counter~style
下に示す~stylesheetが利用する `counter-style$at 規則は、 CSS 2/ CSS 2.1 にて定義された すべての~counter~styleを定義し直す。 この~stylesheetは,規範的であり、 ~UAは,自身の~UA~stylesheetに含めるモノトスル(または,そうであったかのように動作するモノトスル)。 ◎ The following stylesheet uses the @counter-style rule to redefine all of the counter styles defined in CSS 2 and CSS 2.1. This stylesheet is normative—UAs must include it in their UA stylesheet (or at least act as if these rules were defined at that level).
6.1. 数量-~counter~style
- `decimal@v
- ~Western十進~数 ◎ Western decimal numbers
- 1, 2, 3, ..., 98, 99, 100
- `decimal-leading-zero@v
- 頭部が~zeroで~padされる十進~数 ◎ Decimal numbers padded by initial zeros
- 01, 02, 03, ..., 98, 99, 100
- `arabic-indic@v
- ~Arabic-indicによる付番 ◎ Arabic-indic numbering
- ١, ٢, ٣, ٤, ..., ٩٨, ٩٩, ١٠٠
- `armenian@v
- `upper-armenian@v
- 伝統的な大文字~Armenianによる付番 ◎ Traditional uppercase Armenian numbering
- Ա, Բ, Գ, ..., ՂԸ, ՂԹ, Ճ
- `lower-armenian@v
- 小文字~Armenianによる付番 ◎ Lowercase Armenian numbering
- ա, բ, գ, ..., ղը, ղթ, ճ
- `bengali@v
- ~Bengaliによる付番 ◎ Bengali numbering
- ১, ২, ৩, ..., ৯৮, ৯৯, ১০০
- `cambodian@v
- `khmer@v
- ~Cambodian/~Khmerによる付番 ◎ Cambodian/Khmer numbering
- ១, ២, ៣, ..., ៩៨, ៩៩, ១០០
- `cjk-decimal@v
- ~Hanによる十進~数 ◎ Han decimal numbers
- 一, 二, 三, ..., 九八, 九九, 一〇〇
- `devanagari@v
- ~Devanagariによる付番 ◎ devanagari numbering
- १, २, ३, ..., ९८, ९९, १००
- `georgian@v
- 伝統的な~Georgianによる付番 ◎ Traditional Georgian numbering
- ა, ბ, გ, ..., ჟჱ, ჟთ, რ
- `gujarati@v
- ~Gujaratiによる付番 ◎ Gujarati numbering
- ૧, ૨, ૩, ..., ૯૮, ૯૯, ૧૦૦
- `gurmukhi@v
- ~Gurmukhiによる付番 ◎ Gurmukhi numbering
- ੧, ੨, ੩, ..., ੯੮, ੯੯, ੧੦੦
- `hebrew@v
- 伝統的な~Hebrewによる付番 ◎ Traditional Hebrew numbering
- א, ב, ג, ..., צח, צט, ק
- `kannada@v
- ~Kannadaによる付番 ◎ Kannada numbering
- ೧, ೨, ೩, ..., ೯೮, ೯೯, ೧೦೦
- `lao@v
- ~Laotianによる付番 ◎ Laotian numbering
- ໑, ໒, ໓, ..., ໙໘, ໙໙, ໑໐໐
- `malayalam@v
- ~Malayalamによる付番 ◎ Malayalam numbering
- ൧, ൨, ൩, ..., ൯൮, ൯൯, ൧൦൦
- `mongolian@v
- ~Mongolianによる付番 ◎ Mongolian numbering
- ᠑, ᠒, ᠓, ..., ᠙᠘, ᠙᠙, ᠑᠐᠐
- `myanmar@v
- ~Myanmar(~Burmese)による付番 ◎ Myanmar (Burmese) numbering
- ၁, ၂, ၃, ..., ၉၈, ၉၉, ၁၀၀
- `oriya@v
- ~Oriya(~Odia)による付番 ◎ Oriya numbering
- ୧, ୨, ୩, ..., ୯୮, ୯୯, ୧୦୦
- `persian@v
- ~Persianによる付番 ◎ Persian numbering
- ۱, ۲, ۳, ۴, ..., ۹۸, ۹۹, ۱۰۰
- `lower-roman@v
- 小文字~ASCIIによる~Roman-numerals ◎ Lowercase ASCII Roman numerals
- i, ii, iii, ..., xcviii, xcix, c
- `upper-roman@v
- 大文字~ASCIIによる~Roman-numerals ◎ Uppercase ASCII Roman numerals
- I, II, III, ..., XCVIII, XCIX, C
- `tamil@v
- ~Tamilによる付番 ◎ Tamil numbering
- ௧, ௨, ௩, ..., ௯௮, ௯௯, ௧௦௦
- `telugu@v
- ~Teluguによる付番 ◎ Telugu numbering
- ౧, ౨, ౩, ..., ౯౮, ౯౯, ౧౦౦
- `thai@v
- ~Thai(~Siamese)による付番 ◎ Thai (Siamese) numbering
- ๑, ๒, ๓, ..., ๙๘, ๙๙, ๑๐๐
- `tibetan@v
- ~Tibetanによる付番 ◎ Tibetan numbering
- ༡, ༢, ༣, ..., ༩༨, ༩༩, ༡༠༠
これらの定義済み~counter~styleの規範的な定義は、 次の~stylesheet片で供される: ◎ The following stylesheet fragment provides the normative definition of these predefined counter styles:
@counter-style decimal { `system$d: `numeric$v; `symbols$d: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'; } @counter-style `decimal-leading-zero$v { `system$d: `extends$v `decimal$v; `pad$d: 2 '0'; } @counter-style `arabic-indic$v { `system$d: `numeric$v; `symbols$d: "\660" "\661" "\662" "\663" "\664" "\665" "\666" "\667" "\668" "\669"; /* ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ */ } @counter-style `armenian$v { `system$d: `additive$v; `range$d: 1 9999; `additive-symbols$d: 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 `upper-armenian$v { `system$d: `extends$v `armenian$v; } @counter-style `lower-armenian$v { `system$d: `additive$v; `range$d: 1 9999; `additive-symbols$d: 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 `bengali$v { `system$d: `numeric$v; `symbols$d: "\9E6" "\9E7" "\9E8" "\9E9" "\9EA" "\9EB" "\9EC" "\9ED" "\9EE" "\9EF"; /* ০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ */ } @counter-style `cambodian$v { `system$d: `numeric$v; `symbols$d: "\17E0" "\17E1" "\17E2" "\17E3" "\17E4" "\17E5" "\17E6" "\17E7" "\17E8" "\17E9"; /* ០ ១ ២ ៣ ៤ ៥ ៦ ៧ ៨ ៩ */ } @counter-style `khmer$v { `system$d: `extends$v `cambodian$v; } @counter-style `cjk-decimal$v { `system$d: `numeric$v; `range$d: 0 infinite; `symbols$d: \3007 \4E00 \4E8C \4E09 \56DB \4E94 \516D \4E03 \516B \4E5D; /* 〇 一 二 三 四 五 六 七 八 九 */ `suffix$d: "\3001"; /* "、" */ } @counter-style `devanagari$v { `system$d: `numeric$v; `symbols$d: "\966" "\967" "\968" "\969" "\96A" "\96B" "\96C" "\96D" "\96E" "\96F"; /* ० १ २ ३ ४ ५ ६ ७ ८ ९ */ } @counter-style `georgian$v { `system$d: `additive$v; `range$d: 1 19999; `additive-symbols$d: 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 `gujarati$v { `system$d: `numeric$v; `symbols$d: "\AE6" "\AE7" "\AE8" "\AE9" "\AEA" "\AEB" "\AEC" "\AED" "\AEE" "\AEF"; /* ૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯ */ } @counter-style `gurmukhi$v { `system$d: `numeric$v; `symbols$d: "\A66" "\A67" "\A68" "\A69" "\A6A" "\A6B" "\A6C" "\A6D" "\A6E" "\A6F"; /* ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ */ } @counter-style `hebrew$v { `system$d: `additive$v; `range$d: 1 10999; `additive-symbols$d: 10000 \5D9\5F3, 9000 \5D8\5F3, 8000 \5D7\5F3, 7000 \5D6\5F3, 6000 \5D5\5F3, 5000 \5D4\5F3, 4000 \5D3\5F3, 3000 \5D2\5F3, 2000 \5D1\5F3, 1000 \5D0\5F3, 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; /* 10000 י׳, 9000 ט׳, 8000 ח׳, 7000 ז׳, 6000 ו׳, 5000 ה׳, 4000 ד׳, 3000 ג׳, 2000 ב׳, 1000 א׳, 400 ת, 300 ש, 200 ר, 100 ק, 90 צ, 80 פ, 70 ע, 60 ס, 50 נ, 40 מ, 30 ל, 20 כ, 19 יט, 18 יח, 17 יז, 16 טז, 15 טו, 10 י, 9 ט, 8 ח, 7 ז, 6 ו, 5 ה, 4 ד, 3 ג, 2 ב, 1 א */ /* この~systemは、 15, 16 の表示が正しくなるよう強制するため, 19 〜 15 用の値を手動で指定する。 15, 16 は、 神聖四文字( `Tetragrammaton^en )に~~酷似するのを避けるため,書き直されるのが常なので。 【`参考:~Hebrew数字@https://ja.wikipedia.org/wiki/%E3%83%98%E3%83%96%E3%83%A9%E3%82%A4%E6%95%B0%E5%AD%97$】 ◎ 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. */ /* 実装は、 これを より広い範囲まで手動で実装することを選んでもヨイ — 下の注記を見よ。 ◎ Implementations MAY choose to implement this manually to a higher range; see note below. */ } @counter-style `kannada$v { `system$d: `numeric$v; `symbols$d: "\CE6" "\CE7" "\CE8" "\CE9" "\CEA" "\CEB" "\CEC" "\CED" "\CEE" "\CEF"; /* ೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ */ } @counter-style `lao$v { `system$d: `numeric$v; `symbols$d: "\ED0" "\ED1" "\ED2" "\ED3" "\ED4" "\ED5" "\ED6" "\ED7" "\ED8" "\ED9"; /* ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙ */ } @counter-style `malayalam$v { `system$d: `numeric$v; `symbols$d: "\D66" "\D67" "\D68" "\D69" "\D6A" "\D6B" "\D6C" "\D6D" "\D6E" "\D6F"; /* ൦ ൧ ൨ ൩ ൪ ൫ ൬ ൭ ൮ ൯ */ } @counter-style `mongolian$v { `system$d: `numeric$v; `symbols$d: "\1810" "\1811" "\1812" "\1813" "\1814" "\1815" "\1816" "\1817" "\1818" "\1819"; /* ᠐ ᠑ ᠒ ᠓ ᠔ ᠕ ᠖ ᠗ ᠘ ᠙ */ } @counter-style `myanmar$v { `system$d: `numeric$v; `symbols$d: "\1040" "\1041" "\1042" "\1043" "\1044" "\1045" "\1046" "\1047" "\1048" "\1049"; /* ၀ ၁ ၂ ၃ ၄ ၅ ၆ ၇ ၈ ၉ */ } @counter-style `oriya$v { `system$d: `numeric$v; `symbols$d: "\B66" "\B67" "\B68" "\B69" "\B6A" "\B6B" "\B6C" "\B6D" "\B6E" "\B6F"; /* ୦ ୧ ୨ ୩ ୪ ୫ ୬ ୭ ୮ ୯ */ } @counter-style `persian$v { `system$d: `numeric$v; `symbols$d: "\6F0" "\6F1" "\6F2" "\6F3" "\6F4" "\6F5" "\6F6" "\6F7" "\6F8" "\6F9"; /* ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ */ } @counter-style `lower-roman$v { `system$d: `additive$v; `range$d: 1 3999; `additive-symbols$d: 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 `upper-roman$v { `system$d: `additive$v; `range$d: 1 3999; `additive-symbols$d: 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 `tamil$v { `system$d: `numeric$v; `symbols$d: "\BE6" "\BE7" "\BE8" "\BE9" "\BEA" "\BEB" "\BEC" "\BED" "\BEE" "\BEF"; /* ௦ ௧ ௨ ௩ ௪ ௫ ௬ ௭ ௮ ௯ */ } @counter-style `telugu$v { `system$d: `numeric$v; `symbols$d: "\C66" "\C67" "\C68" "\C69" "\C6A" "\C6B" "\C6C" "\C6D" "\C6E" "\C6F"; /* ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯ */ } @counter-style `thai$v { `system$d: `numeric$v; `symbols$d: "\E50" "\E51" "\E52" "\E53" "\E54" "\E55" "\E56" "\E57" "\E58" "\E59"; /* ๐ ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙ */ } @counter-style `tibetan$v { `system$d: `numeric$v; `symbols$d: "\F20" "\F21" "\F22" "\F23" "\F24" "\F25" "\F26" "\F27" "\F28" "\F29"; /* ༠ ༡ ༢ ༣ ༤ ༥ ༦ ༧ ༨ ༩ */ }
実装は、 少なくとも上の `counter-style$at 規則で指定される`範囲$の `hebrew$v を実装するモノトスルが、 より広い範囲で実装してもヨイ。 そうする場合、 対応する `range$d 記述子も実装された範囲を反映するモノトスル。 ◎ Implementations must implement hebrew at least to the range specified in the @counter-style rule above, but may implement it to a higher range. If they do so, the corresponding range descriptor must reflect the implemented range.
6.2. ~alphabetic~counter~style
- `lower-alpha@v
- `lower-latin@v
- 小文字~ASCII普通字 ◎ Lowercase ASCII letters
- a, b, c, ..., z, aa, ab
- `upper-alpha@v
- `upper-latin@v
- 大文字~ASCII普通字 ◎ Uppercase ASCII letters
- A, B, C, ..., Z, AA, AB
- `lower-greek@v
- 小文字~古典的~Greek ◎ Lowercase classical Greek
- α, β, γ, ..., ω, αα, αβ
- `hiragana@v
- 辞書~順序による平仮名~lettering ◎ Dictionary-order hiragana lettering
- あ, い, う, ..., ん, ああ, あい
- `hiragana-iroha@v
- イロハ順の平仮名~lettering ◎ Iroha-order hiragana lettering
- い, ろ, は, ..., す, いい, いろ
- `katakana@v
- 辞書~順序による片仮名~lettering ◎ Dictionary-order katakana lettering
- ア, イ, ウ, ..., ン, アア, アイ
- `katakana-iroha@v
- イロハ順の片仮名~lettering ◎ Iroha-order katakana lettering
- イ, ロ, ハ, ..., ス, イイ, イロ
これらの定義済み~counter~styleの規範的な定義は、 次の~stylesheet片で供される: ◎ The following stylesheet fragment provides the normative definition of these predefined counter styles:
@counter-style lower-alpha { `system$d: `alphabetic$v; `symbols$d: a b c d e f g h i j k l m n o p q r s t u v w x y z; } @counter-style `lower-latin$v { `system$d: `extends$v `lower-alpha$v; } @counter-style `upper-alpha$v { `system$d: `alphabetic$v; `symbols$d: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; } @counter-style `upper-latin$v { `system$d: `extends$v `upper-alpha$v; } @counter-style `lower-greek$v { `system$d: `alphabetic$v; `symbols$d: "\3B1" "\3B2" "\3B3" "\3B4" "\3B5" "\3B6" "\3B7" "\3B8" "\3B9" "\3BA" "\3BB" "\3BC" "\3BD" "\3BE" "\3BF" "\3C0" "\3C1" "\3C3" "\3C4" "\3C5" "\3C6" "\3C7" "\3C8" "\3C9"; /* α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω */ } @counter-style `hiragana$v { `system$d: `alphabetic$v; `symbols$d: "\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" "\3090" "\3091" "\3092" "\3093"; /* あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ ゐ ゑ を ん */ `suffix$d: "、"; } @counter-style `hiragana-iroha$v { `system$d: `alphabetic$v; `symbols$d: "\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"; /* い ろ は に ほ へ と ち り ぬ る を わ か よ た れ そ つ ね な ら む う ゐ の お く や ま け ふ こ え て あ さ き ゆ め み し ゑ ひ も せ す */ `suffix$d: "、"; } @counter-style `katakana$v { `system$d: `alphabetic$v; `symbols$d: "\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" "\30F0" "\30F1" "\30F2" "\30F3"; /* ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヰ ヱ ヲ ン */ `suffix$d: "、"; } @counter-style `katakana-iroha$v { `system$d: `alphabetic$v; `symbols$d: "\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"; /* イ ロ ハ ニ ホ ヘ ト チ リ ヌ ル ヲ ワ カ ヨ タ レ ソ ツ ネ ナ ラ ム ウ ヰ ノ オ ク ヤ マ ケ フ コ エ テ ア サ キ ユ メ ミ シ ヱ ヒ モ セ ス */ `suffix$d: "、"; }
6.3. 記号的~counter~style
- `disc@v
- 次に似た黒塗りな丸 ⇒ • `2022^U `BULLET^cn ◎ A filled circle, similar to • U+2022 BULLET.
- `circle@v
- 次に似た中空な丸 ⇒ ◦ `25E6^U `WHITE BULLET^cn ◎ A hollow circle, similar to ◦ U+25E6 WHITE BULLET.
- `square@v
- 次に似た黒塗りな方形 ⇒ ▪ `25AA^U `BLACK SMALL SQUARE^cn ◎ A filled square, similar to ▪ U+25AA BLACK SMALL SQUARE.
- `disclosure-open@v
- `disclosure-closed@v
- `details$e 要素などの,開閉~状態をとり得る開閉式~widgetを指示するために適切な記号。 ◎ Symbols appropriate for indicating an open or closed disclosure widget, such as the HTML details element.
これらの定義済み~counter~styleの規範的な定義は、 次の~stylesheet片で供される: ◎ The following stylesheet fragment provides the normative definition of these predefined counter styles:
@counter-style `disc$v { `system$d: `cyclic$v; `symbols$d: \2022; /* • */ `suffix$d: " "; } @counter-style `circle$v { `system$d: `cyclic$v; `symbols$d: \25E6; /* ◦ */ `suffix$d: " "; } @counter-style `square$v { `system$d: `cyclic$v; `symbols$d: \25AA; /* ▪ */ `suffix$d: " "; } @counter-style `disclosure-open$v { `system$d: `cyclic$v; `suffix$d: " "; /* `symbols$d については、 下の規範的~textを見よ。 ◎ for symbols, see normative text below */ } @counter-style `disclosure-closed$v { `system$d: `cyclic$v; `suffix$d: " "; /* `symbols$d については、 下の規範的~textを見よ。 ◎ for symbols, see normative text below */ }
これらの~styleが `list-style-type$p 内で利用された場合、 ~UAは,指定された文字を — 当の要素の自前の~fontで描画する代わりに — 自身が[ 生成した画像/選んだ~font ]を利用して描画してもヨイ。 画像を利用する場合、 ~~元の文字に類似な見かけにした上で, `1em^v 平方をきれいに埋める~sizeにするモノトスル。 ◎ When used in list-style-type, a UA may instead render these styles using a UA-generated image or a UA-chosen font instead of rendering the specified character in the element’s own font. If using an image, it must look similar to the character, and must be sized to attractively fill a 1em by 1em square.
[ `disclosure-open$v / `disclosure-closed$v ]~counter~style用の~markerは、[ ~HTMLの `details$e 要素などの,開閉式~widget ]の開閉~状態を指示するに相応しい 画像または文字にするモノトスル。 画像が方向的である場合、 要素の`書字~mode$に応答するモノトスル — `CSS-IMAGES-4^r の `§ 双向性に応じる画像@~CSSIMAGE4#bidi-images$ 特能に類似な。 例えば, `disclosure-closed$v ~styleに利用される文字は、 書字~modeに応じて[ `25B8^U `BLACK RIGHT-POINTING SMALL TRIANGLE^cn ( ▸ ), `25C2^U `BLACK LEFT-POINTING SMALL TRIANGLE^cn ( ◂ ) ]どちらかになろう。 一方で, `disclosure-open$v ~styleに利用される文字は、 `25BE^U `BLACK DOWN-POINTING SMALL TRIANGLE^cn ( ▾ ) になろう。 ◎ For the disclosure-open and disclosure-closed counter styles, the marker must be an image or character suitable for indicating the open and closed states of a disclosure widget, such as HTML’s details element. If the image is directional, it must respond to the writing mode of the element, similar to the bidi-sensitive images feature of the Images 4 module. For example, the disclosure-closed style might use the characters U+25B8 BLACK RIGHT-POINTING SMALL TRIANGLE (▸) and U+25C2 BLACK LEFT-POINTING SMALL TRIANGLE (◂), while the disclosure-open style might use the character U+25BE BLACK DOWN-POINTING SMALL TRIANGLE (▾).
6.4. `fixed$v ~counter~style
- `cjk-earthly-branch@v
- ~Hanによる “十二支” 序数 ◎ Han "Earthly Branch" ordinals
- ~~子, 丑, 寅, ..., 亥
- `cjk-heavenly-stem@v
- ~Hanによる “十干” 序数 ◎ Han "Heavenly Stem" ordinals
- 甲, 乙, 丙, ..., 癸
これらの定義済み~counter~styleの規範的な定義は、 次の~stylesheet片で供される: ◎ The following stylesheet fragment provides the normative definition of these predefined counter styles:
@counter-style `cjk-earthly-branch$v { `system$d: `fixed$v; `symbols$d: "\5B50" "\4E11" "\5BC5" "\536F" "\8FB0" "\5DF3" "\5348" "\672A" "\7533" "\9149" "\620C" "\4EA5"; /* ~~子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥 */ `suffix$d: "、"; `fallback$d: `cjk-decimal$v; } @counter-style `cjk-heavenly-stem$v { `system$d: `fixed$v; `symbols$d: "\7532" "\4E59" "\4E19" "\4E01" "\620A" "\5DF1" "\5E9A" "\8F9B" "\58EC" "\7678"; /* 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 */ `suffix$d: "、"; `fallback$d: `cjk-decimal$v; }
7. 複階的な定義済み~counter~style
作者は, `counter-style$at 規則を利用して自前の~counter~styleを定義したり,定義済み~counter~styleの集合に依拠できるが、 少数の~counter~styleは,定義済み`~algo$で捕捉するには複階的に過ぎる規則で記述される。 この節では、 これらの~counter~styleについて述べる。 ◎ While authors may define their own counter styles using the @counter-style rule or rely on the set of predefined counter styles, 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.
この節で指定される~counter~styleのうち一部のものは,~counter値を生成するための~customな`~algo$を備えているが、 他のものは `counter-style$at 規則を介して定義される~counter~styleの`~algo$と一致する。 例えば作者は、 `extends$v ~systemにて,これらの~styleのうちいずれかを参照できる — その`~algo$を再利用しつつ 他の記述子のうち一部は入替えるように。 ◎ Some of the counter styles specified in this section have custom algorithms for generating counter values, but are otherwise identical to a counter style defined via the @counter-style rule. For example, an author can reference one of these styles in an extends system, reusing the algorithm but swapping out some of the other descriptors.
この節にて定義される どの~counter~styleも、 その`発話形$は `numbers$v であり,`負-符号を利用する$。 ◎ All of the counter styles defined in this section have a spoken form of numbers, and use a negative sign.
7.1. 東Asian冗長形~counter~style
[ ~Chinese / ~Japanese / ~Korean ]の~counter~styleは、 ~Englishでの “`thirteen thousand one hundred and twenty-three^en” に類似な, “冗長な” ~~書法を備えている。 それぞれには、[ 正式( `formal^en ), 非正式 ]の 2 種類の変種がある。 正式な~styleは、 概して,金融や法的~文書で利用される — それらの文字は、 より改竄が困難なので。 ◎ Chinese, Japanese, and Korean have counter styles which have a “longhand” nature, similar to “thirteen thousand one hundred and twenty-three” in English. Each has both formal and informal variants. The formal styles are typically used in financial and legal documents, as their characters are more difficult to alter into each other.
次の表tに、 これらの~styleの特に相違する部分を例に示す: ◎ The following table shows examples of these styles, particularly some ways in which they differ.
~counter~style | 0 | 1 | 2 | 3 | 10 | 11 | 99 | 100 | 101 | 6001 |
---|---|---|---|---|---|---|---|---|---|---|
`japanese-informal$v | 〇 | 一 | 二 | 三 | 十 | 十一 | 九十九 | 百 | 百一 | 六千一 |
`japanese-formal$v | 零 | 壱 | 弐 | 参 | 壱拾 | 壱拾壱 | 九拾九 | 壱百 | 壱百壱 | 六阡壱 |
`korean-hangul-formal$v | 영 | 일 | 이 | 삼 | 일십 | 일십일 | 구십구 | 일백 | 일백일 | 육천일 |
`korean-hanja-informal$v | 零 | 一 | 二 | 三 | 十 | 十一 | 九十九 | 百 | 百一 | 六千一 |
`korean-hanja-formal$v | 零 | 壹 | 貳 | 參 | 壹拾 | 壹拾壹 | 九拾九 | 壹百 | 壹百壹 | 六仟壹 |
`simp-chinese-informal$v | 零 | 一 | 二 | 三 | 十 | 十一 | 九十九 | 一百 | 一百零一 | 六千零一 |
`simp-chinese-formal$v | 零 | 壹 | 贰 | 叁 | 壹拾 | 壹拾壹 | 玖拾玖 | 壹佰 | 壹佰零壹 | 陆仟零壹 |
`trad-chinese-informal$v | 零 | 一 | 二 | 三 | 十 | 十一 | 九十九 | 一百 | 一百零一 | 六千零一 |
`trad-chinese-formal$v | 零 | 壹 | 貳 | 參 | 壹拾 | 壹拾壹 | 玖拾玖 | 壹佰 | 壹佰零壹 | 陸仟零壹 |
10000 以上の数を日中韓の冗長形~styleを利用して表現するときに,どれが最善かについては、 相違する意見がいくつかあるので、 この節で定義される どの~counter~styleも,`範囲$[ −9999 〜 9999 ]に定義されている。 実装は、 より広い範囲を~supportしてもヨイ。 実装が~supportする範囲に入らないものに対する~fallbackは `cjk-decimal$v である。 ◎ Because opinions differ on how best to represent numbers 10k or greater using the longhand CJK styles, all of the counter styles defined in this section are defined to have a range of -9999 to 9999, but implementations may support a larger range. Outside the implementation-supported range, the fallback is cjk-decimal.
注記: 実装には、 10000 を超える~counter表現を事実調査した上で実装して,一般に受容される答えが発見されたなら、 ~CSS~WGにその~dataを報告することが奨励される。 この論題に関する これまでの事実調査は, `以前の草案@~TR/2013/WD-css-counter-styles-3-20130718/#extended-cjk$ に包含されている。 ◎ Note: Implementations are encouraged to research and implement counter representations beyond 10k and report back to the CSS Working Group with data when a generally-accepted answer is discovered. Some previous research on this topic is contained in an earlier draft.
7.1.1. ~Japanese: `japanese-informal^v, `japanese-formal^v
- `japanese-informal@v
- 非正式な~Japanese漢字( `Kanji^en )による付番 ◎ Informal Japanese Kanji numbering
- 千百十一
- `japanese-formal@v
- 正式な~Japanese漢字( `Kanji^en )による付番 ◎ Formal Japanese Kanji numbering
- 壱阡壱百壱拾壱
@counter-style `japanese-informal$v { `system$d: `additive$v; `range$d: -9999 9999; `additive-symbols$d: 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$d: '\3001'; /* 、 */ `negative$d: "\30DE\30A4\30CA\30B9"; /* マイナス */ `fallback$d: `cjk-decimal$v; } @counter-style `japanese-formal$v { `system$d: `additive$v; `range$d: -9999 9999; `additive-symbols$d: 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$d: '\3001'; /* 、 */ `negative$d: "\30DE\30A4\30CA\30B9"; /* マイナス */ `fallback$d: `cjk-decimal$v; }
7.1.2. ~Korean: `korean-hangul-formal^v, `korean-hanja-informal^v, `korean-hanja-formal^v
- `korean-hangul-formal@v
- ~Korean~Hangulによる付番 ◎ Korean Hangul numbering
- 일천일백일십일
- `korean-hanja-informal@v
- 非正式な~Korean漢字( `Hanja^en )による付番 ◎ Informal Korean Hanja numbering
- 千百十一
- `korean-hanja-formal@v
- 正式な~Korean漢字( `Hanja^en )による付番 ◎ Formal Korean Han (Hanja) numbering
- 壹仟壹百壹拾壹
@counter-style `korean-hangul-formal$v { `system$d: `additive$v; `range$d: -9999 9999; `additive-symbols$d: 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$d: ', '; `negative$d: "\B9C8\C774\B108\C2A4 "; /* 마이너스 (followed by a space) */ `fallback$d: cjk-decimal; } @counter-style `korean-hanja-informal$v { `system$d: `additive$v; `range$d: -9999 9999; `additive-symbols$d: 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$d: ', '; `negative$d: "\B9C8\C774\B108\C2A4 "; /* 마이너스 (followed by a space) */ `fallback$d: cjk-decimal; } @counter-style `korean-hanja-formal$v { `system$d: `additive$v; `range$d: -9999 9999; `additive-symbols$d: 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$d: ', '; `negative$d: "\B9C8\C774\B108\C2A4 "; /* 마이너스 (followed by a space) */ `fallback$d: cjk-decimal; }
7.1.3. ~Chinese: `simp-chinese-informal^v, `simp-chinese-formal^v, `trad-chinese-informal^v, `trad-chinese-formal^v
- `simp-chinese-informal@v
- 簡体字~Chineseによる非正式な付番 ◎ Simplified Chinese informal numbering
- 一千一百一十一
- `simp-chinese-formal@v
- 簡体字~Chineseによる正式な付番 ◎ Simplified Chinese formal numbering
- 壹仟壹佰壹拾壹
- `trad-chinese-informal@v
- 繁体字~Chineseによる非正式な付番 ◎ Traditional Chinese informal numbering
- 一千一百一十一
- `trad-chinese-formal@v
- 繁体字~Chineseによる正式な付番 ◎ Traditional Chinese formal numbering
- 壹仟壹佰壹拾壹
- `cjk-ideographic@v
- この~counter~styleは、 `trad-chinese-informal$v に一致する(旧来の理由のため存在する)。 ◎ This counter style is identical to trad-chinese-informal. (It exists for legacy reasons.)
~Chineseの各種 冗長形~styleは、 ほぼ一致する~algoで定義されるが (以下では、 相違する所を そう記した上で,単独の`~algo$として指定される)、 利用する文字の集合は異なる — それらは、 ~algoに後続する表tに指定される: ◎ The Chinese longhand 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, as specified by the table following the algorithm.
- ~IF [ ~counter値 ~EQ 0 ] ⇒ ~RET 所与の~counter~styleにて 0 に指定される文字による表現 ◎ 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.
- %表現 ~LET 所与の~counter値の十進~数による表現 ◎ ↓
- %表現 を成す ~EACH( 数字 ) に対し ⇒ ~IF[ 数字 ~NEQ `0^l ]~AND[ 数字は一の位でない ] ⇒ 数字の末尾に,適切な位~markerを付加する ◎ 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.
- 非正式な~styleに対しては ⇒ ~IF[ %表現 の十の位の数字 ~EQ `1^l ] ⇒ %表現 から十の位の数字を除去する (位~markerは残す) ◎ For the informal styles, if the counter value is between ten and nineteen, remove the tens digit (leave the digit marker).
- %表現 内の末尾の~zeroは落として、 他の~zeroは単独の~zero数字に縮約する ◎ Drop any trailing zeros and collapse any remaining zeros into a single zero digit.
- ~RET %表現 内の数字 0 〜 9 を,所与の~counter~styleに適切な文字で置換した結果 ◎ 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.
これらの どの~counter~styleに対しても:
- `suffix$d は: `3001^U( `、^l )
- `fallback$d は: `cjk-decimal$v
- `range$d は: `-9999 9999^v
- `negative$d 値は: 各~styleに対し,下の記号~表tで与えられる。
これらの~styleに利用される各~文字は、 次の表tで定義される: ◎ The following tables define the characters used in these styles:
値 | 符号位置 | |||
---|---|---|---|---|
`simp-chinese-informal$v
| `simp-chinese-formal$v
| `trad-chinese-informal$v
| `trad-chinese-formal$v
| |
数字 0 | 零 `96F6^U | 零 `96F6^U | 零 `96F6^U | 零 `96F6^U |
数字 1 | 一 `4E00^U | 壹 `58F9^U | 一 `4E00^U | 壹 `58F9^U |
数字 2 | 二 `4E8C^U | 贰 `8D30^U | 二 `4E8C^U | 貳 `8CB3^U |
数字 3 | 三 `4E09^U | 叁 `53C1^U | 三 `4E09^U | 參 `53C3^U |
数字 4 | 四 `56DB^U | 肆 `8086^U | 四 `56DB^U | 肆 `8086^U |
数字 5 | 五 `4E94^U | 伍 `4F0D^U | 五 `4E94^U | 伍 `4F0D^U |
数字 6 | 六 `516D^U | 陆 `9646^U | 六 `516D^U | 陸 `9678^U |
数字 7 | 七 `4E03^U | 柒 `67D2^U | 七 `4E03^U | 柒 `67D2^U |
数字 8 | 八 `516B^U | 捌 `634C^U | 八 `516B^U | 捌 `634C^U |
数字 9 | 九 `4E5D^U | 玖 `7396^U | 九 `4E5D^U | 玖 `7396^U |
十の位 | 十 `5341^U | 拾 `62FE^U | 十 `5341^U | 拾 `62FE^U |
百の位 | 百 `767E^U | 佰 `4F70^U | 百 `767E^U | 佰 `4F70^U |
千の位 | 千 `5343^U | 仟 `4EDF^U | 千 `5343^U | 仟 `4EDF^U |
`負-符号$ | 负 `8D1F^U | 负 `8D1F^U | ~~負 `8CA0^U | ~~負 `8CA0^U |
参照~用に、 `simp-chinese-informal$v ~style用の値を 最初から 120 個まで,以下に挙げる: ◎ For reference, here are the first 120 values for the simp-chinese-informal style:
1 一 41 四十一 81 八十一 2 二 42 四十二 82 八十二 3 三 43 四十三 83 八十三 4 四 44 四十四 84 八十四 5 五 45 四十五 85 八十五 6 六 46 四十六 86 八十六 7 七 47 四十七 87 八十七 8 八 48 四十八 88 八十八 9 九 49 四十九 89 八十九 10 十 50 五十 90 九十 11 十一 51 五十一 91 九十一 12 十二 52 五十二 92 九十二 13 十三 53 五十三 93 九十三 14 十四 54 五十四 94 九十四 15 十五 55 五十五 95 九十五 16 十六 56 五十六 96 九十六 17 十七 57 五十七 97 九十七 18 十八 58 五十八 98 九十八 19 十九 59 五十九 99 九十九 20 二十 60 六十 100 一百 21 二十一 61 六十一 101 一百零一 22 二十二 62 六十二 102 一百零二 23 二十三 63 六十三 103 一百零三 24 二十四 64 六十四 104 一百零四 25 二十五 65 六十五 105 一百零五 26 二十六 66 六十六 106 一百零六 27 二十七 67 六十七 107 一百零七 28 二十八 68 六十八 108 一百零八 29 二十九 69 六十九 109 一百零九 30 三十 70 七十 110 一百一十 31 三十一 71 七十一 111 一百一十一 32 三十二 72 七十二 112 一百一十二 33 三十三 73 七十三 113 一百一十三 34 三十四 74 七十四 114 一百一十四 35 三十五 75 七十五 115 一百一十五 36 三十六 76 七十六 116 一百一十六 37 三十七 77 七十七 117 一百一十七 38 三十八 78 七十八 118 一百一十八 39 三十九 79 七十九 119 一百一十九 40 四十 80 八十 120 一百二十
7.2. ~Ethiopicによる数量-~counter~style: `ethiopic-numeric^v
`ethiopic-numeric@v ~counter~styleは、 正な数すべてに対し定義される。 次の`~algo$は、 所与の数 %C を~Ethiopicによる表現に変換する: ◎ The ethiopic-numeric counter style is defined for all positive non-zero numbers. The following algorithm converts decimal digits to ethiopic numbers:
- ~IF[ %C ~EQ 1 ] ⇒ ~RET `1369^U ( `፩^l ) ◎ If the number is 1, return "፩" (U+1369).
-
%C の十進~数字による表現 %D の各~桁を,最低の位から 2 桁ずつ,一連の~groupに分ける — 各~groupは、 次のものを持つ:
- ~index
- 各~groupには、 %D における位が最低のものから昇順に,~indexがあてがわれる(最初が 0 番)
- 十進~値
- ~groupが %D の中で占める 2 桁(以下)の十進~数字
- 値
- ~groupの十進~値で表現される数
- 文字列
- 初期時は空~文字列
-
~EACH( ~group %G ) に対し:
-
~IF[ %G の値 ~NEQ 1 ]~OR[ %G の~indexは[ 偶数, かつ~groupたちの中で最大でない ]] ⇒ %G の文字列 ~SET [ %G の十進~値の各~桁を,下の表tの対応する~Ethiopic文字で代用した結果 ] — ただし、 数字 0 は空~文字列で代用する ◎ If the group has the value zero, or if the group is the most significant one and has the value 1, or if the group has an odd index (as given in the previous step) and has the value 1, then remove the digits (but leave the group, so it still has a separator appended below). ◎ For each remaining digit, substitute the relevant ethiopic character from the list below.
十の位 一の位 値 符号位置 値 符号位置 10 ፲ `1372^U 1 ፩ `1369^U 20 ፳ `1373^U 2 ፪ `136A^U 30 ፴ `1374^U 3 ፫ `136B^U 40 ፵ `1375^U 4 ፬ `136C^U 50 ፶ `1376^U 5 ፭ `136D^U 60 ፷ `1377^U 6 ፮ `136E^U 70 ፸ `1378^U 7 ፯ `136F^U 80 ፹ `1379^U 8 ፰ `1370^U 90 ፺ `137A^U 9 ፱ `1371^U - ~IF[ %G の~indexは奇数 ]~AND[ %G の値 ~NEQ 0 ] ⇒ %G の文字列の末尾に, `137B^U ( ፻ )を付加する ◎ For each group with an odd index (as given in the second step), except groups which originally had a value of zero, append ፻ U+137B.
- ~IF[ %G の~indexは 0 でない偶数である ] ⇒ %G の文字列の末尾に, `137C^U ( ፼ )を付加する ◎ For each group with an even index (as given in the second step), except the group with index 0, append ፼ U+137C.
-
- ~RET [ 一連の~groupの文字列を,~indexの大きいものから順に,一つの文字列に連結した結果 ] ◎ Concatenate the groups into one string, and return it.
この~systemに対しては:
- `名前$は `ethiopic-numeric^l
- `range$d は `1 infinite^v
- `suffix$d は `\2F\20^l ( `/ ^l — [ `002F^U `SOLIDUS^cn, `0020^U `SPACE^cn ])
- 残りの記述子は、 各自の初期~値をとる。
十進~数 | 表現 | ~Unicode |
---|---|---|
100 | ፻ | `137B^U |
78010092 | ፸፰፻፩፼፺፪ | `1378^U `1370^U `137B^U `1369^U `137C^U `137A^U `136A^U |
780100000092 | ፸፰፻፩፼፼፺፪ | `1378^U `1370^U `137B^U `1369^U `137C^U `137C^U `137A^U `136A^U |
8. 追加的な “既製の” 定義済み~counter~style
`国際-化~WG@https://www.w3.org/International/$は、 `既製の~counter~style$cite `predefined-counter-styles$r において, 世界の様々な自然言語~用の追加的な `counter-style$at 規則たちが成す~collectionを保守する。 ◎ The Internationalization Working Group maintains a collection of additional @counter-style rules for various world languages in Ready-made Counter Styles. [predefined-counter-styles]
`§ 単純な定義済み~counter~style@#predefined-counters$ にて定義される~counter~styleと同じく、 ~UAは,これらの規則を自身に~UA~stylesheetに含める (または、少なくとも,これらが~UA~levelにて定義されたかのように動作する) モノトスル。 ◎ As with the counter styles defined in § 6 Simple Predefined Counter Styles, UAs must include these in their UA stylesheet (or at least act as if these rules were defined at that level).
注記: 作者は、 `既製の~counter~style$cite を~supportしない~UAにおいても, これらの規則を自身の~stylesheetの中に直に複製することにより利用できる。 ◎ Note: Authors can use the Ready-made Counter Styles even in UAs that don’t support them by copying the rules directly into their style sheets.
9. API
9.1. `CSSRule^I ~interfaceに対する拡張
`CSSRule^I ~interfaceは、 次のように拡張される: ◎ The CSSRule interface is extended as follows:
partial interface `CSSRule$I { const unsigned short `COUNTER_STYLE_RULE@m = 11; };
9.2. `CSSCounterStyleRule^I ~interface
`CSSCounterStyleRule$I ~interfaceは、 `counter-style$at 規則を表現する。 ◎ The CSSCounterStyleRule interface represents a @counter-style rule.
[`Exposed$=Window] interface `CSSCounterStyleRule@I : `CSSRule$I { attribute `CSSOMString$ `name$m; attribute `CSSOMString$ `system$m; attribute `CSSOMString$ `symbols$m; attribute `CSSOMString$ `additiveSymbols$m; attribute `CSSOMString$ `negative$m; attribute `CSSOMString$ `prefix$m; attribute `CSSOMString$ `suffix$m; attribute `CSSOMString$ `range$m; attribute `CSSOMString$ `pad$m; attribute `CSSOMString$ `speakAs$m; attribute `CSSOMString$ `fallback$m; };
以下では、 この~interfaceを実装する~objが表現する `counter-style$at 規則を,単に “この規則” と記す。
- `name@m
- 取得子~手続きは ⇒ ~RET この規則に定義された `counter-style-name$t を直列化した結果の `CSSOMString$I 型~値 ◎ The name attribute on getting must return a CSSOMString object that contains the serialization of the <counter-style-name> defined for the associated rule.
-
設定子~手続きは: ◎ On setting the name attribute, run the following steps:
- %名前 ~LET 所与の値 ◎ ↓
- ~IF[ %名前 は[ `none^l /ある`上書き不能な~counter~style名$ ]に`~ASCII大小無視$で合致する ] ⇒ ~RET ◎ If the value is an ASCII case-insensitive match for "none" or one of the non-overridable counter-style names, do nothing and return.
- ~IF[ %名前 は[ ある定義済み`~counter~style$の名前 ]に`~ASCII大小無視$で合致する ] ⇒ %名前 ~SET `~ASCII小文字~化する$( %名前 ) ] ◎ If the value is an ASCII case-insensitive match for any of the predefined counter styles, lowercase it.
- この規則の`名前$を[ %名前 に等しい`~CSS識別子$ ]に置換する ◎ Replace the associated rule’s name with an identifier equal to the value.
- `system@m
- `symbols@m
- `additiveSymbols@m
- `negative@m
- `prefix@m
- `suffix@m
- `range@m
- `pad@m
- `speakAs@m
- `fallback@m
- これらの属性の取得子~手続きは ⇒ ~RET 次で与えられる `CSSOMString$I 型~値 ⇒# この規則に当の属性と同じ名前の~counter~style記述子が指定されているならば その値を直列化した結果 / ~ELSE_ 空~文字列 ◎ The remaining attributes on getting must return a CSSOMString object that contains the serialization of the associated descriptor defined for the associated rule. If the descriptor was not specified in the associated rule, the attribute must return an empty string.
-
これらの属性の設定子~手続きは: ◎ On setting, run the following steps:
- %値 ~LET `所与の値$を当の属性に結付けられた記述子の`文法に則って構文解析する$ ◎ parse the given value as the descriptor associated with the attribute.
- ~IF[ %値 は、 当の属性と同じ名前の~counter~style記述子の文法に則って妥当でない ] ⇒ ~RET ◎ If the result is invalid according to the given descriptor’s grammar, or\
- ~IF[ %値 は、 この規則を無効にさせるものである (例えば、 一部の~systemは, `symbols$d 記述子が 2 個以上の値を包含することを要求する) ] ⇒ ~RET ◎ would cause the @counter-style rule to become invalid, do nothing and abort these steps. (For example, some systems require the symbols descriptor to contain two values.)
-
~IF[ 当の属性は `system$m である ]~AND[ %値 は利用される`~algo$を変更することになる ] ⇒ ~RET ◎ If the attribute being set is system, and the new value would change the algorithm used, do nothing and abort these steps.\
注記: `fixed$v ~systemの`最初の記号~値$の様な,~algoの ある側面を変更することは、 この段には関わらない。 ◎ It’s okay to change an aspect of the algorithm, like the first symbol value of a fixed system.
- この規則の,当の属性と同じ名前の記述子の値 ~SET %値 ◎ Set the descriptor to the value.
10. ~HTML用の見本~stylesheet
◎非規範的~HTMLは、 自身の要素に適用する~styleを定義し,一部の事例では ~UAの裁量に委ねる。 ◎ This section is informative, not normative. HTML itself defines the styles that apply to its elements, and in some cases defers to the user agent’s discretion.
details > summary { `display$p: list-item; `list-style$p: disclosure-closed inside; } details[open] > summary { `list-style$p: disclosure-open inside; }
変更点
【 変更箇所の引用は省略する。 】
- `2021年 7月 27日 勧告候補@~TR/2021/CR-css-counter-styles-3-20210727/$ からの有意な変更点 ◎ Changes since the July 2021 Candidate Recommendation ◎ Significant changes since the July 27 2021 Candidate Recommendation:
-
[
`cjk-earthly-branch$v, `cjk-heavenly-stem$v
]用の `counter-style^at 規則に記述子
`fallback$d: `cjk-decimal$v
を追加した。 ( `8975$issue ) ◎ Added fallback: cjk-decimal descriptor to cjk-earthly-branch and cjk-heavenly-stem. (Issue 8975) -
~Korean~styleに記述子
`fallback$d: `cjk-decimal$v
を復旧した ( `この~commit@https://github.com/w3c/csswg-drafts/commit/20a3d9ca02f235d8af13aa2bb05f725448371ad2$にて不用意に落とされたもの)。 ( `8870$issue ) ◎ Restored the fallback: cjk-decimal descriptor to the Korean styles which was accidentally dropped in this commit. (Issue 8870) - 名前に許容されない~keywordが,構文と~OMで同期cしてなかった不備を修正した。 ( `8186$issue ) ◎ Fixed the accidental desync between disallowed name keywords in the syntax vs the OM. (Issue 8186)
- `既製の~counter~style$cite を~supportするための適合性~要件を追加した。 ( `8636$issue ) ◎ Added conformance requirement to support Ready-made Counter Styles. (Issue 8636)
- `2017年 12 月 14日 勧告候補@~TR/2017/CR-css-counter-styles-3-20171214/$ からの有意な変更点は: ◎ Changes since the December 2017 Candidate Recommendation ◎ Significant changes since the December 14 2017 Candidate Recommendation:
- [ `none$v, `decimal$v, `disc$v, `circle$v, `square$v, `disclosure-open$v, `disclosure-closed$v【!`disclosure-close^v】 ]を上書き不能にした。 ( `3584$issue ) 【 `counter-style^at に指定する`名前$としては妥当でないとした。】 ◎ Made none, decimal, disc, circle, square, disclosure-open, disclosure-close non-overridable. (Issue 3584)
- `counter-style^at は,~shadow~DOM内で検索されることを明確化した。 【!`~tree視野な参照$/`~tree視野な名前$】 ( `5693$issue ) ◎ Clarified counter-style lookups in Shadow DOM. (Issue 5693)
- `counter-style$at が無効になる様々な状況において,何が起こるかを明確化した。 ( `5698$issue, `5717$issue ) ◎ Clarified what happens in various invalid @counter-style situations. (Issue 5698, Issue 5717)
- ~additive~algo内で 0 で除算していた~errorを修正した。 ( `5784$issue ) ◎ Fixed divide-by-zero error in additive algorithm. (Issue 5784)
- `square$v 用の記号に絵文字~記号を利用しないよう修正した。 ( `6200$issue ) ◎ Fixed square symbol to not use an emoji symbol. (Issue 6200)
- 定義済みな記号的~counter~style用に選ぶ~fontを上書きすることを~UAに許容した。 ( `6201$issue ) ◎ Allowed UAs to override the font choice of predefined symbolic counter styles. (Issue 6201)
- 定義済みな記号的~counter~styleに対する特別な具現化を[ `list-style-type$p を介する~list~markerとしての用法 ]に制約した。 ( `6201$issue ) ◎ Restricted special rendering of predefined symbolic counter styles to usage as a list marker via list-style-type. (Issue 6201)
- `speak-as$d は、[ 発話形を表現すること,他の支援技術に利用されてもヨイこと ]を明確化した。 ( `6040$issue ) ◎ Clarified that speak-as represents spoken output; it may be used for other AT. (Issue 6040) ◎ A counter style can be constructed with a meaning that is obvious visually, but impossible to meaningfully represent via a speech synthesizer or other non-visual means, or possible but nonsensical when naively read out loud . The speak-as descriptor describes how to synthesize the spoken form of a counter formatted with the given counter style. Assistive technologies should use this spoken form when reading out the counter style, and may use the speak-as value to inform transformations to outputs other than speech.
- `各~commentに対する処置集@~CSSWG/css-counter-styles-3/issues-cr-2017$もある。 ◎ A Disposition of Comments is available.
- `2015 年 6 月 11 日 勧告候補@~TR/2015/CR-css-counter-styles-3-20150611/$ からの有意な変更点は: ◎ Changes since the June 2015 Candidate Recommendation ◎ Significant changes since the June 11 2015 CR draft:
- ~counter~styleの`名前$から `none$v, `disc$v を除外した。 ◎ Exclude none and disc from being the name of a counter style.
- `CSSCounterStyleRule$I の `name$m 設定子は、 文字列を `ident^t の`文法に則って構文解析する$ことなく,直にとるようにした。 ◎ When setting CSSCounterStyle.name, take the string directly; don’t parse it as an ident.
- ~counter~styleは、 要素の内容~言語で読上げられることを明確化した。 ◎ Clarify that counter styles are read out in the element’s content language.
- 一連の`~additive~tuple$に指定する各 `重み^i は、 互いに異なる, かつ降順で指定されなければナラナイことを明確化した。 ◎ Clarified that additive-symbols tuples must be of strictly decreasing weight.
- 無効な値により無効~化されるのは、 規則~全体ではなく,当の宣言に限られることを指定した。 ◎ Specified that invalid values just invalidate the declaration, not the whole rule.
- 記述子を欠くことに因り無効にされた `counter-style$at 規則は、 `~counter~style$を作成しないだけで,他は妥当な規則であるものとした。 ◎ @counter-style rules that are invalid due to missing descriptors just fail to create a counter style; they’re otherwise still valid rules.
- 注釈文による負な値に対する制約を反映するよう,構文を`角括弧付き範囲~記法$を利用するよう変更した。 ◎ Changed syntax to use CSS bracketed range notation to reflect the prose restrictions on negative values.
- `各~commentに対する処置集@~CSSWG/css-counter-styles-3/issues-cr-20150611$もある。 ◎ A Disposition of Comments is available.
- 2015 年 2 月の勧告候補からの変更点は: ◎ Changes since the Feb 2015 Candidate Recommendation
- ~UAには、 `hebrew$v ~styleを,この仕様が定義する制限sを超えて拡張することも許容される(現在の制限sは、 単に,現在の `counter-style$at に基づく定義では,より広い`範囲$にすると不味い結果になるため、 そうなっている)。 ◎ Allowed UAs to extend the hebrew style past the spec-defined limits (since the current limits are mostly just an artifact of how annoying it is to go higher with the @counter-style-based definition).
謝辞
次の方々に。 彼らの手による文書化は、 付番~systemの定義-時にとても役立った: ◎ The following people and documentation they wrote were very useful for defining the numbering systems:
Alexander Savenkov, Arron Eicholz, Aryeh Gregor, Christopher Hoess, Daniel Yacob, Frank Tang, Jonathan Rosenne, Karl Ove Hufthammer, Musheg Arakelyan, Nariné Renard Karapetyan, Randall Bart, Richard Ishida, Simon Montagu (Mozilla, smontagu@smontagu.org)
この仕様のすべての側面について,`多方面にわたり^em考査された `Xidorn Quan^en 氏に~~特別な謝意を。 考査~commentを寄せられた `Simon Sapin^en, `Håkon Wium Lie^en 両氏にも。 ◎ Special thanks to Xidorn Quan for extensive reviews of all aspects of the spec, and also to Simon Sapin and Håkon Wium Lie for their review comments.
~privacyの考慮点
この仕様が導入する新たな~privacyの考慮点は無い。 ◎ This specification introduces no new privacy considerations.
~securityの考慮点
この仕様が導入する新たな~securityの考慮点は無い。 ◎ This specification introduces no new security considerations.