Re: [css3-speech] ISSUE-153 speak: none; usage incompatible with other values of speak

Thank you for the explanation Koji,
I knew how Ruby is used to provide textual annotations using phonetic  
glyphs (for example in Japanese). However I was unsure about the "toe- 
MAH-toe" example, because it illustrates the use of a author-defined  
string of roman characters, which we assume is to be interpreted by a  
TTS engine as individual tokens written in the english language (or  
whatever the lang() value is), but which may still be read aloud  
differently depending on the speech synthesizer used by the user-agent.

Pronunciations can really only be predictable when using a particular  
phonetic alphabet, and I realize that the phonetic variant of the  
Japanese script is particularly suitable here. In this case, it would  
indeed be desirable to pass the textual contents of the "rt" element  
directly to the speech interface, whilst skipping the ruby-base text  
in the audio output.

Let's rework your example (@media rules added only for clarification  
of intent, they're not strictly necessary):

<ruby class="tasty_red_fruit">
tomato
<rt>toe-MAH-toe</rt>
</ruby>

@media screen
{
ruby { display: block; } /* just to be explicit in this example */

rt { display: none; } /* authored by content producer, or enforced by  
user stylesheet (can be turned on or off) */
}

@media speech
{
ruby { speakability: auto; } /* effectively resolves to the "normal"  
used value, because 'display' is not 'none' */
}

(1) Let's use "phonemes" (assuming this feature remains in CSS3-Speech):

@phonetic-alphabet "ipa";
@media speech
{
rt { speakability: none; } /* note that this is redundant if 'display'  
is 'none' */
ruby.tasty_red_fruit { phonemes: "t\0252 m\0251 to\028a"; }
}

Ideally, the value of the 'phonemes' property would be fetched from  
the "rt" element's contents...but we would have to enable features  
similar to those found in CSS3 Generated and Replaced Content Module  
(see below).

(2) Let's use standard CSS content replacement (although I admit, this  
is a really cumbersome technique for such a seemingly simple use-case):

@media speech
{
ruby { speakability: none; } /* note that this affects descendants  
too, with no override possible */
ruby.tasty_red_fruit rt { string-set: phonetics_tasty_red_fruit  
contents; }
ruby.tasty_red_fruit::before { content:  
strings(phonetics_tasty_red_fruit); }
}

To conclude, none of these techniques fits the bill in an elegant way,  
so it may indeed be necessary to enable "speakability:none" to be  
overridden by descendants (which was actually the previous behavior of  
"speak:none", i.e. in the 2004 draft of CSS3-Speech). I can't actually  
find any situation where this would cause problems: it is clear that  
an element's pauses, cues, and rests get "deactivated" when  
'speakability' is 'none', and that the element's content (i.e.  
descendants) is subject to potential individual overrides of the  
'speakability' property (with the expected consequences in terms of  
collapsing pauses and additive rests).

I will restore the ability to override 'speakability:none' in  
descendants.
Regards, Daniel

On 6 Feb 2011, at 13:37, Koji Ishii wrote:

> Thank you for your response, Daniel.
>
>> in your example, am I right to assume that *both* base-text and  
>> ruby- text
>> are designed to be displayed in the visual canvas ?
>
> Yes, like the one in the sample picture[1].
>
>> If yes, why should only ruby-text be rendered in the aural  
>> dimension ?
>
> Ruby is a layout method to display phonetic along with the text. You  
> don't want to read both text and its phonetic. It's commonly used in  
> Japan and sometime in China where characters do not represent sounds  
> and therefore some readers may not be able to guess how it reads.
>
> You can think this similar to the previous example Steve brought up:
>
> <ruby>
>  tomato
>  <rt>toe-MAH-toe</rt>
> </ruby>
>
> Readers may or may not want to display "toe-MAH-toe" in visual  
> canvas, it depends on reader's preferences, but from TTS  
> perspective, "toe-MAH-toe" is the sound for the whole element. If  
> TTS reads both, it will be "tomato toe-MAH-toe", right?
>
> [1] http://dev.w3.org/csswg/css3-ruby/#ruby-def
>
>
> Regards,
> Koji
>
> -----Original Message-----
> From: Daniel Weck [mailto:daniel.weck@gmail.com]
> Sent: Sunday, February 06, 2011 10:00 PM
> To: www-style@w3.org list; Koji Ishii
> Subject: Re: [css3-speech] ISSUE-153 speak: none; usage incompatible  
> with other values of speak
>
> Hi Koji,
>
> in your example, am I right to assume that *both* base-text and  
> ruby- text are designed to be displayed in the visual canvas ? If  
> yes, why should only ruby-text be rendered in the aural dimension ?
>
> Thanks, Daniel
>
> On 6 Feb 2011, at 12:20, Koji Ishii wrote:
>
>> Could we add a 'force' value, so that it can override 'none' in
>> descendant elements?
>>
>> Current HTML5/EPUB3 does not allow rb element within ruby element.
>> It is being discussed[1], but we haven't get conclusions yet. If this
>> issue wasn't resolved, we might end up with this mark up:
>>
>> <ruby>
>> base-text
>> <rt>ruby-text</rt>
>> </ruby>
>>
>> To skip base-text while speakable ruby-text, UA style sheet would  
>> want
>> to use styles like this:
>>
>> ruby { speakability: none; }
>> rt { speakability: force; }
>>
>> [1] http://www.w3.org/Bugs/Public/show_bug.cgi?id=10830
>>
>>
>> Regards,
>> Koji
>>
>> -----Original Message-----
>> From: www-style-request@w3.org [mailto:www-style-request@w3.org] On
>> Behalf Of Daniel Weck
>> Sent: Saturday, February 05, 2011 9:15 PM
>> To: Mark Kenny; www-style@w3.org list; Charles Belov
>> Subject: Re: [css3-speech] ISSUE-153 speak: none; usage incompatible
>> with other values of speak
>>
>> The latest editor's draft now includes a new 'speakability' property.
>> The 'none' value of the 'speak' property has been removed. Note how
>> "speakability:none" is analogous to "display:none" (the prose is
>> near- identical).
>>
>> Please review [1].
>>
>> Regards, Daniel
>>
>> [1]
>> http://dev.w3.org/csswg/css3-speech/#speaking-props
>>
>> On 23 Jan 2011, at 06:05, fantasai wrote:
>>> Maybe something like
>>>
>>> speakability: auto | none | normal
>>> inherits: yes
>>> initial: auto
>>>
>>> auto - Computes to 'none' when 'display' is 'none'.
>>>     A computed value of 'auto' yields a used value of 'none'.
>>> none - The element is not rendered aurally. (It's pauses, cues,
>>> rests,
>>>     and content are not rendered.)
>>> normal - The element is rendered aurally.
>>>
>>> That would hook into "display: none" rules when wanted, but allow
>>> other interpretations as wanted.
>>>
>>> (I can't say I've fully thought this through, however.)
>>>
>>> ~fantasai
>>
>>
>
> Daniel Weck
> daniel.weck@gmail.com
>
>
>

Daniel Weck
daniel.weck@gmail.com

Received on Sunday, 6 February 2011 23:38:30 UTC