Re: [counter-styles] At-risk list

On Wed, Oct 30, 2013 at 11:11 AM, Reece Dunn <msclrhd@googlemail.com> wrote:
> On 30 October 2013 17:38, Tab Atkins Jr. <jackalmage@gmail.com> wrote:
>> On Tue, Oct 29, 2013 at 6:37 PM, Reece Dunn <msclrhd@googlemail.com> wrote:
>>> On 30 October 2013 01:02, fantasai <fantasai.lists@inkedblade.net> wrote:
>>>> I think we should add 'pad' and 'speak-as' to the at-risk list.
>>>> Not that I think 'speak-as' is unworthy, but we don't really
>>>> have much in the way of CSS speech implementations. :/
>>>
>>> FWIW, I have an experimental implementation of a slightly older draft
>>> of the CSS Counter Styles spec (dated 2012-10-09) that I am using in
>>> my text-to-speech project (http://reecedunn.co.uk/cainteoir/engine).
>>>
>>> This does not currently support 'speak-as' (the property was not
>>> introduced in the revision I used). However, I intend to improve and
>>> update the implementation to the current version of the Counter Styles
>>> spec. When I do this, I can provide feedback on the 'speak-as'
>>> property.
>>>
>>> A cursory inspection of the property looks ok.
>>>
>>> I have 2 comments regarding named style lookup:
>>>
>>> 1. Is that handling recursive counter style lookup is undefined -- for example:
>>>
>>>     @counter-style foo {
>>>         speak-as: foo;
>>>     }
>>>
>>> Should the style be treated as not existing (i.e. default to auto) in this case?
>>
>> Ah, thanks for catching that.  Cycle detection is currently defined
>> for the 'fallback' descriptor, so I'll just copy that behavior over to
>> 'speak-as'.  In the case of cycles, yes, it'll default to 'auto'.
>
> The note in the fallback descriptor mentions that cycles are not
> strictly an error. The example given is an odd/even counter style
> pair. It is not clear in the note when a cycle constitutes an error --
> is it that if no matching value is found after walking the graph a
> complete cycle, then there is an error? That would make sense.

Yeah.  The note is just a warning against deciding that there's a
cycle based on a naive check of 'fallback' values on the counter
styles themselves, as you're supposed to do fallback on a per-value
basis, and each individual value might be cycle-free.

> So if I am reading the spec correctly, the traversal be something like:
> 1.  traverse the counter styles via the speak-as property, resolving
> cycles and default values accordingly;
> 2.  traverse the fallback chain as done for resolving the presentation
> counter style from the counter style resolved in (1).

Yup.

> Thus, if you have:
>
> @counter-style odd_even { speak-as: 'odd_even_speak'; }
> @counter-style odd_even_speak { speak-as: 'odd_speak'; }
> @counter-style odd_speak { symbols: 'odd'; fallback: 'even_speak'; ... }
> @counter-style even_speak { symbols: 'even'; fallback: 'odd_speak'; ... }
>
> Then the text being spoken will resolve as 'odd', 'even', 'odd', ...
> as the fallback chain is resolved.

Yes.

> NOTE: I am not sure exactly how you
> would specify an alternating fallback chain as described in the note
> within the fallback property description.

You can't, actually, at least not through to infinity.  Any additive
style that can produce a representation for 1 can produce a
representation for *any* positive value.  But you can produce
something that produces *some* of the odd numbers: for example, if you
provide symbols for 4, 3, and 2, it'll produce all numbers except for
those that are 4n+1 (1, 5, 9, 13, etc.).

Don't worry too much about it. ^_^

~TJ

Received on Wednesday, 30 October 2013 23:14:19 UTC