Remerciementspour les autres contributeurs)
Copyright © 1998-2001 W3C® (MIT, INRIA, Keio), tous droits réservés. Les règles de responsabilité, de nom de marque, d'utilisation de documents et de licence de logiciels du W3C s'appliquent.
Un ruby
est un passage de text court au long du texte de base,
utilisé habituellement dans les documents asiatiques orientaux pour fournir une glose ou une annotation brève.
Cette spécification définit un balisage de ruby sous la forme d'un module XHTML
[XHTMLMOD].
Cette section décrit le statut de ce document au moment de sa publication. D'autres documents peuvent venir le remplacer. Le dernier état de cette série de documents est conservé au W3C.
Ce document a été revu par les membres du W3C et les tiers intéressés, et il a été approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être utilisé comme document de référence ou être cité comme référence normative par un autre document. Le rôle du W3C en produisant cette recommandation consiste à attirer l'attention sur la spécification et d'en promouvoir le large déploiement. Cela participe à améliorer la fonctionnalité et l'interopérabilité du Web.
Ce document a été produit par le groupe de travail Internationalization (I18N WG, accès réservé aux membres) partie de l'activité Internationalization du W3C avec l'aide du groupe d'intérêt Internationalisation (I18N IG). Les commentaires devraient être envoyés à la liste de diffusion www-i18n-comments@w3.org dont les archives sont publiques. Les commentaires en d'autres langues que l'anglais, notamment en japonais, sont également les bienvenus. Le débat public autour de ce document se tient sur la liste de diffusion www-international@w3.org (archives).
En raison du sujet et pour rendre les exemples plus réalistes, ce document utilise des caractères très divers. Les agents utilisateurs ne sont pas tous capables d'afficher la totalité de ces caractères. Selon l'agent utilisateur, on peut améliorer la situation en changeant sa configuration. On a aussi pris soin de servir ce document dans des codages de caractères divers afin de couvrir une large gamme d'agents utilisateurs et de configurations.
On peut trouver des informations apparentées à ce document sur la page publique de ruby (http://www.w3.org/International/O-HTML-ruby). Elle contient des traductions de cette spécification ainsi qu'un éventuel errata. La liste courante des recommandations et autres documents techniques du W3C se trouve à http://www.w3.org/TR.
Il n'y a aucune déclaration de brevet concernant cette spécification au sein du groupe de travail I18N WG.
rubyrbcrtcrbrtrpCette section est informative.
Ce document présente une vue d'ensemble de l'annotation ruby et définit son balisage. Plusieurs exemples sont fournis. Toutefois, ce document ne définit pas de mécanisme de présentation ou de style de l'annotation ruby : cette part revient aux langages de feuille de style respectifs.
Le document est organisé de la façon suivante :
La section 1.1 présente un aperçu de l'annotation ruby.
La section 1.2 présente un aperçu du balisage de l'annotation ruby.
La section 2 fournit la définition normative du balisage ruby.
La section 3 discute de restitution et style habituels du texte ruby.
La section 4 concerne les critères de conformité.
Le terme ruby
désigne un passage de texte associé à un autre passage de texte, appelé texte de base
.
Le texte ruby sert à fournir une brève annotation au texte de base associé. Il est utilisé le plus souvent pour fournir
une glose
(guide de prononciation). Les annotations ruby
sont fréquemment utilisées au Japon dans beaucoup de types de publications, y compris les livres et les magazines.
On l'utilise également en Chine, notamment dans les livres scolaires.
Le texte ruby se présente habituellement le long du texte de base avec des caractères plus petits. Le nom ruby
provient
en réalité du nom du corps de police 5,5 pt de la tradition typographique anglaise,
correspondant à peu près à la moitié du corps de police 10 pt servant habituellement pour le texte normal.
La figure 1.1 est un exemple avec trois idéogrammes (kanji)
comme texte de base et six caractères hiragana donnant la glose (shinkansen, c'est-à-dire le train à grande vitesse japonais).
La typographie asiatique orientale a développé plusieurs caractéristiques qui n'apparaissent pas dans la typographie occidentale. Pour la plupart, ces caractéristiques peuvent être traitées adéquatement par les langages de feuille de style, tels que CSS ou XSL. Par contre, il faut un balisage supplémentaire pour définir l'association existant entre le texte de base et le texte ruby.
La présente spécification définit un tel balisage, utilisable avec XHTML, afin que le texte ruby soit disponible sur le Web sans utiliser de palliatifs ou graphiques spéciaux. Bien que cette spécification offre des exemples de restitution réelle, afin que la majorité des lecteurs comprenne mieux le balisage, ils ne sont qu'informatifs. Ce document ne définit aucun mécanisme de présentation ou de style ; cette part revient aux langages de feuille de style respectifs.
Plusieurs textes ruby sont parfois associés au même texte de base. Un exemple typique indiquerait à la fois la signification et la prononciation du même texte de base. Auquel cas, les textes ruby peuvent apparaître des deux côtés du texte de base. Le texte ruby avant le texte de base sert souvent à indiquer la prononciation, celui après le texte de base à indiquer la signification. La figure 1.2 montre un exemple de texte de base avec deux textes ruby, donnant une glose avec des caractères hiragana et des lettres latines.
En outre, chaque texte ruby peut être associé à des parties différentes mais chevauchantes du texte de base, comme dans l'exemple suivant :
| Jour | Mois | Année |
| 31 | 10 | 2002 |
| Date d'expiration | ||
Figure 1.3 : Texte de base avec deux textes ruby utilisant des associations différentes
Dans cet exemple, le texte de base est la date 31 10 2002
. Un texte ruby est la phrase
Date d'expiration
. Ce texte ruby est associé à la totalité du texte de base. L'autre texte ruby est constitué de trois parties :
Jour
, Mois
et Année
. Chacune est associée à une partie différente du texte de base. La partie Jour
est associée à 31
, la partie Mois
à 10
, et la partie 2002
à Année
.
Le balisage définit dans cette spécification est conçu pour couvrir tous les cas précédents, à savoir le balisage d'un ou deux textes ruby associés au même texte de base et le balisage d'associations de sous-chaînes du (ou des) texte(s) ruby aux composants du texte de base.
Il existe deux variantes de balisage ruby, appelés balisage ruby simple
et balisage ruby complexe
. Le balisage ruby simple
associe un seul texte ruby au passage de texte de base. Le balisage ruby simple peut également définir un
mécanisme de repli qui permet un affichage du texte ruby par les navigateurs
(anciens) ne reconnaissant pas le balisage ruby. Le balisage ruby complexe permet d'associer deux textes ruby à un seul texte de base,
et de définir une association de granularité plus fine entre les composants du texte ruby et le texte de base. Par contre,
le balisage ruby complexe n'offre aucun mécanisme de repli aux navigateurs qui ne reconnaissent pas le balisage ruby.
Cette section présente un aperçu du balisage ruby défini dans cette spécification. La définition formelle complète se trouve dans la section 2.
Dans le cas le plus simple, le balisage ruby définit un élément ruby contenant un élément
rb pour le texte de base et un élément rt pour le texte ruby. Cet élément ruby
crée donc une association entre le texte de base et le texte ruby, qui suffit dans la plupart des cas.
Voici un exemple de balisage ruby simple :
<ruby> <rb>WWW</rb> <rt>World Wide Web</rt> </ruby>
Figure 1.4 : Exemple de balisage ruby simple
Une restitution pourrait être la suivante :
![]()
Figure 1.5 : Exemple de restitution pour le balisage ruby simple de la figure 1.4
Remarque : Le nom de cet élément englobant <
devrait être interprété
dans le sens où les éléments contenus associent le texte ruby au texte de base. Il ne doit pas être mal compris
comme signifiant que tout son contenu, y compris le texte de base, est le ruby. Le nom de l'élément
englobant a été choisi pour identifier de façon concise et claire la fonction de la structure du balisage ;
les noms des autres éléments ont été choisis pour que la dimension d'ensemble reste faible.ruby>
Certains agents utilisateurs ne comprendront peut-être pas le balisage ruby, ou seront incapables de restituer correctement le
texte ruby. Quelle que soit la situation, il est en général préférable de restituer le texte ruby pour ne pas perdre d'informations.
Une solution de repli acceptable en général consiste à placer le texte ruby immédiatement après le texte de base et à mettre
le texte ruby entre des parenthèses. Les parenthèses réduisent le risque de confondre le texte ruby avec un autre texte.
(À remarquer que, dans la typographie japonaise, le texte entre parenthèses n'est jamais appelé ruby
).
Pour la compatibilité avec les agents utilisateurs anciens, qui ne reconnaissent pas le balisage ruby et qui restituent simplement
le contenu des éléments s'ils ne les comprennent pas, on peut ajouter des éléments rp au balisage ruby simple
afin de distinguer le texte ruby.
Le nom de l'élément rp provient de parenthèse ruby
(N.d.T. ruby parenthesis).
Les éléments rp et les parenthèses (ou d'autres caractères) qui y sont contenus constituent seulement un mécanisme de repli.
Les agents utilisateurs qui ignorent les éléments inconnus mais restituent leur contenu afficheront le contenu de
chaque élément rp. L'élément rp peut ainsi servir à indiquer le début ou la fin du texte ruby.
Les agents utilisateurs compatibles avec le balisage ruby reconnaîtront l'élément rp et ne restitueront
pas son contenu volontairement. Au lieu de cela, ils restitueront le balisage ruby simple d'une façon plus appropriée.
L'exemple suivant démontre l'utilisation de l'élément rp :
<ruby> <rb>WWW</rb> <rp>(</rp><rt>World Wide Web</rt><rp>)</rp> </ruby>
Figure 1.6 : Exemple de balisage ruby simple comprenant des éléments rp en repli
Les agents utilisateurs qui :
Ils restitueront le balisage précédent de cette façon :
WWW (World Wide Web)
Figure 1.7 : Restitution du balisage ruby avec des parenthèses de repli
Les agents utilisateurs qui reconnaissent le balisage ruby, et qui permettent des styles de présentation plus sophistiqués pour le texte ruby, vont choisir de ne pas restituer les parenthèses. Par exemple, le balisage de la figure 1.6 pourra être restitué comme illustré dans la figure suivante.
Le balisage ruby complexe sert à associer plusieurs textes ruby à un texte de base, ou à associer des parties du texte ruby à des parties du texte de base.
Le balisage ruby complexe se compose de plusieurs éléments rb et rt. Cette spécification
définit des éléments conteneurs qui font apparaître clairement l'association entre les éléments individuels.
L'élément conteneur de base ruby rbc (N.d.T. ruby base container)
englobe les éléments rb. Il peut y avoir un ou deux éléments conteneurs de texte ruby
rtc (N.d.T. ruby text container) englobant les éléments rt.
Ceci permet d'associer deux conteneurs de texte ruby au même texte de base. Avec le balisage complexe de ruby, on peut également
associer des parties du texte de base à des parties d'un texte ruby en utilisant plusieurs éléments rb
et un nombre correspondant d'éléments rt. En outre, l'élément rt peut utiliser l'attribut rbspan
pour indiquer qu'un seul élément rt couvre (est associé à)
plusieurs éléments rb. Il est similaire à l'attribut colspan
des éléments th et td des tables ([HTML4], section 11.2.6).
La position et l'aspect de la restitution de chaque partie d'un balisage ruby complexe sont définies par les langages de feuilles de style respectifs ; cf. également la section 3 pour des précisions.
L'exemple suivant illustre tous ces aspects :
<ruby>
<rbc>
<rb>31</rb>
<rb>10</rb>
<rb>2002</rb>
</rbc>
<rtc>
<rt>Jour</rt>
<rt>Mois</rt>
<rt>Année</rt>
</rtc>
<rtc>
<rt rbspan="3">Date d'expiration</rt>
</rtc>
</ruby>
Figure 1.9 : Un balisage ruby complexe qui associe deux textes ruby à des parties différentes du même texte de base.
Dans cet exemple, le premier conteneur de texte ruby englobe trois composants (Jour
, Mois
, Année
).
Chaque composant est associé à un composant correspondant dans le texte de base (31
, 10
, 2002
).
Le second conteneur de texte ruby (Date d'expiration
) se compose d'un seul texte ruby associé au texte de base dans son ensemble
(10 31 2002
). Il peut être restitué comme le montre la figure 1.10.
| Jour | Mois | Année |
| 31 | 10 | 2002 |
| Date d'expiration | ||
Figure 1.10: Restitution du balisage ruby complexe de la figure 1.9
L'exemple montre que l'association du texte ruby au texte de base peut au besoin être plus ou moins granulaire. Par exemple, le texte ruby peut être associé au texte de base entier au cas où :
On peut aussi faire des associations plus granulaires si les relations sont connues. Auxquels cas, une meilleure restitution peut donc être prodiguée. Par exemple, le nom d'une personne peut être décomposé en un nom de famille et un prénom, ou un mot composé ou phrase kanji peuvent être décomposés en sous-parties sémantiques ou en caractères individuels. Quelle que soit la granularité, fine ou bien successive, on peut définir les couvertures du texte ruby avec l'espacement correspondant dans le texte de base, et obtenir une meilleure lisibilité et une composition plus équilibrée.
L'élément rp n'est pas disponible pour le balisage ruby complexe. Deux raisons à cela.
Premièrement, l'élément rp n'est qu'un mécanisme de repli, et on a jugé qu'il était beaucoup plus important
pour le balisage simple plus fréquent. Deuxièmement, pour les cas plus complexes, il est difficile de parvenir à un affichage de repli
acceptable, et il peut être encore plus difficile voire impossible de construire le balisage de ces cas.
En résumé, l'élément ruby sert de conteneur dans l'un des cas suivants :
rb, rt et éventuellement rp
(balisage ruby simple) pour :
rbc et d'un ou deux éléments conteneurs rtc
(balisage ruby complexe) pour :
Cette section est normative.
Cette section contient la définition de syntaxe formelle et la spécification de la fonctionnalité du balisage ruby. Le lecteur est censé avoir une bonne connaissance du cadre de modularisation XHTML, notamment la spécification La modularisation XHTML [XHTMLMOD].
Voici la définition abstraite des éléments du balisage ruby compatible avec le cadre de modularisation XHTML [XHTMLMOD]. On peut trouver d'autres définitions de modules abstraits XHTML dans [XHTMLMOD].
| Éléments | Attributs | Modèle de contenu minimal |
|---|---|---|
| ruby | Common | (rb, (rt | (rp, rt, rp))) |
| rbc | Common | rb+ |
| rtc | Common | rt+ |
| rb | Common | (PCDATA | Inline - ruby)* |
| rt | Common, rbspan (CDATA) | (PCDATA | Inline - ruby)* |
| rp | Common | PCDATA* |
Le modèle de contenu maximal de l'élément ruby est le suivant :
((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))
Le modèle de contenu minimal de l'élément ruby correspond au balisage ruby simple.
L'option (rbc, rtc, rtc?) du modèle de contenu maximal de l'élément ruby correspond au
balisage ruby complexe.
On peut trouver une mise en œuvre de cette définition abstraite sous la forme d'une définition DTD XHTML dans l'annexe A. La mise en œuvre d'un schéma XML [XMLSchema] est en cours d'élaboration (cf. [ModSchema]).
rubyL'élément ruby est un élément de type en-ligne (ou au niveau du texte) qui sert de conteneur global.
Il contient des éléments rb, rt
et des éléments optionnels rp (balisage ruby simple),
ou bien des éléments rbc et rtc (balisage ruby complexe).
Pour un balisage ruby simple, l'élément ruby contient un élément rb
suivi d'un élément rt, ou bien la séquence formée par un élément rb,
un élément rp, un élément rt et un autre élément rp.
Le contenu de l'élément rt est pris comme texte ruby et associé au contenu de
l'élément comme texte de base. Le contenu des éléments rbrp,
si présents, est ignoré.
Pour un balisage ruby complexe, l'élément ruby contient un élément rbc
suivi par un ou deux éléments rtc. Le contenu des sous-éléments de
chaque élément rtc est pris comme texte ruby et associé au contenu des sous-éléments de
l'élément rbc comme texte de base.
L'élément ruby n'accepte que les attributs communs. Comme exemples d'attributs communs :
id, class ou xml:lang. Les attributs communs dépendent du langage de balisage avec lequel
est utilisé le balisage ruby. Dans le cas de [XHTML 1.1],
ils sont définis dans la spécification de la modularisation XHTML, section 5.1
[XHTMLMOD].
rbcL'élément rbc (N.d.T. ruby base container) sert de conteneur aux éléments rb
dans le cas du balisage ruby complexe. Un seul élément rbc peut apparaître dans un élément ruby.
L'élément rbc n'accepte que les attributs communs.
rtcL'élément rtc (N.d.T. ruby text container) sert de conteneur aux éléments rt
dans le cas du balisage ruby complexe. Un ou deux éléments rtc peuvent apparaître dans un
élément ruby pour associer les textes ruby au seul texte de base,
représenté par l'élément rbc. Il NE DOIT PAS y avoir
plus de deux éléments rtc dans un élément ruby.
L'élément rtc n'accepte que les attributs communs.
rbL'élément rb (N.d.T. ruby base) sert à baliser le texte de base. Dans un balisage ruby simple,
un seul élément rb peut apparaître. Dans un balisage ruby complexe, plusieurs éléments rb
peuvent apparaître au sein d'un élément rbc. Chaque élément rb est associé à un
élément rt correspondant, pour un contrôle à grains fins de la présentation ruby.
L'élément rb peut contenir des éléments ou des données textuelles en-ligne,
mais l'élément ruby est interdit comme élément descendant.
L'élément rb n'accepte que les attributs communs.
rtL'élément rt est le balisage du texte ruby. Dans un balisage ruby simple, un seul élément rt
peut apparaître. Dans un balisage ruby complexe, plusieurs éléments rt peuvent apparaître au sein d'un
élément rtc, et chaque élément rt contient le texte ruby du texte de base concerné,
représenté par l'élément rb correspondant.
L'élément rt peut contenir des éléments ou des données textuelles en-ligne,
mais l'élément ruby est interdit comme élément descendant.
L'élément rt accepte les attributs communs et l'attribut rbspan. Dans un balisage ruby complexe,
l'attribut rbspan permet à un élément rt de couvrir plusieurs éléments rb.
La valeur devra être un entier supérieur à zéro ("0"). La valeur par défaut de cet attribut est un ("1"). On ne devrait pas utiliser
l'attribut rbspan dans un balisage ruby simple et, le cas échéant, les agents utilisateurs devraient l'ignorer.
rpOn peut utiliser l'élément rp dans le cas d'un balisage ruby simple pour définir les caractères dénotant le début
et la fin du texte ruby, lorsque les agents utilisateurs ne disposent d'aucun autre moyen pour présenter le texte ruby
distinctement du texte de base. Les parenthèses (ou des caractères similaires) peuvent constituer une solution de repli acceptable.
Dans cette situation, le texte ruby sera seulement restitué en-ligne, enfermé entre les parenthèses de repli.
C'est la restitution la moins mauvaise lorsque seule une restitution en-ligne est possible. On ne peut pas utiliser l'élément rp
dans un balisage ruby complexe.
L'élément rp n'accepte que les attributs communs.
L'utilisation de parenthèses en repli entraînera peut-être une confusion entre les passages de texte à traduire en texte ruby et ceux déjà entourés de parenthèses. L'auteur du document (ou de la feuille de style) devrait avoir conscience du risque de confusion, et il lui est conseillé de choisir un délimiteur non équivoque pour le repli.
Cette section est informative.
Cette section aborde les divers aspects de la restitution et du style dans le contexte du balisage ruby comme défini dans ce document. Toutefois, ce document ne définit aucun mécanisme de présentation/style ; c'est le rôle des langages de feuille de style respectifs. Les propriétés de mise en forme du stylage de ruby sont en cours de développement pour CSS et XSL. Par exemple, cf. Le module CSS3 Ruby [CSS3-RUBY] (travaux en cours) pour des précisions.
On peut avoir des précisions sur la mise en forme ruby dans un contexte d'impression japonais dans le document JIS-X-4051 [JIS4051].
Le japonais utilise le terme ruby
seulement pour désigner le texte restitué visuellement le long du texte de base.
Ces cas sont considérés dans la section 3.2 (le corps de la police), la section 3.3
(le positionnement) et la section 3.4 (la présentation du balisage ruby). On devrait utiliser
ce type de présentation à chaque fois que possible. Toutefois, l'introduction de ruby dans le Web peut amener des phénomènes
et des problèmes qui n'existent pas dans la typographie traditionnelle. Le balisage structurel de ruby,
comme défini dans cette spécification, ne garantit pas toujours une restitution du texte ruby le long du texte de base.
Beaucoup de périphériques de sortie divers peuvent traiter ou traiteront
les documents balisés avec XHTML. Voici les scénarios et raisons possibles de ces restitutions différentes :
En utilisation habituelle, le corps de police du texte ruby fait normalement la moitié de celui du texte de base. En fait, l'origine
du nom ruby
remonte au nom du corps de police de 5,5 pt de la tradition typographique anglaise,
correspondant à environ la moitié du corps de police 10 pt utilisé couramment pour un texte normal.
Le texte ruby peut apparaître à des positions différentes par rapport à son texte de base. Comme le texte asiatique oriental
peut être restitué tant verticalement qu'horizontalement, on emploie les termes avant
et après
plutôt que au-dessus
et au-dessous
, ou à gauche
et à droite
. On devrait comprendre avant
et après
comme signifiant
avant
/après
la ligne contenant le texte de base. La correspondance apparaît dans le tableau suivant :
| Terminologie | Disposition horizontale (de gauche à droite, de haut en bas) |
Disposition verticale (de haut en bas, de droite à gauche) |
|---|---|---|
| avant | au-dessus | à droite |
| après | au-dessous | à gauche |
Les textes ruby se placent le plus souvent avant le texte de base (cf. la figure 1.1 et la figure 3.2). Parfois, notamment dans les documents éducatifs horizontaux, le texte ruby peut apparaître après le texte de base, c'est-à-dire au-dessous (cf. la figure 3.1). En chinois, le texte ruby Pinyin apparaît assez couramment après le texte de base. Le texte ruby peut aussi apparaître après le texte de base dans une composition verticale (cf. la figure 3.3). Dans tous ces cas, la direction d'écriture du texte ruby est la même que celle de son texte de base, c'est-à-dire verticale quand le texte de base est vertical, et horizontale quand le texte de base est horizontal.
Figure 3.1 : Un texte ruby (en lettres romaines) après/au-dessous du texte de base (en idéogrammes japonais)
Dans les textes chinois traditionnels, le texte ruby Bopomofo
peut apparaître le long à droite
du texte de base, même dans une composition horizontale.
Figure 3.4 : Un texte ruby Bopomofo
en chinois traditionnel (le texte ruby est en bleu/rouge pour la lisibilité) dans une composition horizontale
Remarquez que les signes de ton Bopomofo
(en rouge dans l'exemple précédent pour la lisibilité)
semblent apparaître dans une colonne séparée (le long à droite du texte ruby Bopomofo
),
et peuvent donc être perçus comme des ruby de ruby
. Elles font pourtant partie du codage du texte ruby.
Le détail de ce codage n'est pas traité dans ce document.
Cette spécification ne prescrit pas comment afficher le balisage ruby. On utilisera généralement les feuilles de style pour définir le comportement exact du balisage ruby.
Remarque : Les feuilles de style devraient contrôler la restitution des textes ruby, mais si l'auteur ou l'utilisateur ne fournissent aucune information de style, on recommande aux agents utilisateurs de placer le texte ruby avant le texte de base seulement si un seul texte ruby est utilisé. C'est le cas aussi pour le balisage ruby simple. Pour deux textes ruby, le premier texte ruby devrait se placer avant le texte de base, et le deuxième après le texte de base. Un exemple de feuille de style par défaut d'agent utilisateur décrivant cette mise en forme sera fourni par [CSS3-RUBY], ou le document qui lui succèdra.
Pour une restitution non visuelle, sans information provenant d'une feuille de style, on recommande de restituer le texte de base et le(s) texte(s) ruby, en indiquant la nature de chacun d'eux (par exemple, avec une voix différente, une tonalité différente, etc.).
<ruby xml:lang="ja">
<rbc>
<rb>斎</rb>
<rb>藤</rb>
<rb>信</rb>
<rb>男</rb>
</rbc>
<rtc class="prononciation">
<rt>さい</rt>
<rt>とう</rt>
<rt>のぶ</rt>
<rt>お</rt>
</rtc>
<rtc class="annotation">
<rt rbspan="4" xml:lang="en">Vice-Président du W3C</rt>
</rtc>
</ruby>
Figure 3.5 : Un balisage ruby avec des attributs class et xml:lang.
Avec une feuille de style pour définir un texte horizontal, pour restituer la prononciation avant le texte de base et pour restituer l'annotation après le texte de base, le balisage précédent pourrait être restitué ainsi :
Les documents contenant du balisage ruby seront parfois restitués par des agents utilisateurs non visuels, tels que des navigateurs vocaux et des agents utilisateurs Braille. Pour ces scénarios de restitution, il importe de noter que :
Selon les besoins de l'utilisateur, la façon de lire un texte peut varier d'une lecture très rapide et superficielle
à une lecture attentionnée et précise. Cela peut conduire à traiter le texte ruby de différentes façons dans une restitution non visuelle,
allant de l'abandon du texte ruby en lecture rapide jusqu'à l'exploration détaillée
de la structure de ruby et des caractères réels en lecture approfondie.
Dans le cas fréquent du texte ruby représentant une prononciation, la restitution du texte de base et du texte ruby peut produire des répétitions ennuyeuses. Un synthétiseur de parole sera peut-être capable de prononcer correctement le texte de base d'après un dictionnaire volumineux, ou sinon de sélectionner la bonne prononciation en fonction de celle indiquée par le texte ruby.
Les textes ruby ne représentent pas tous des prononciations. Les auteurs devraient distinguer les textes ruby utilisés pour autre chose
en utilisant l'attribut class. Cela a été illustré dans l'exemple précédent avec la déclaration class="prononciation"
du texte ruby pour indiquer une prononciation.
Le texte ruby indiquant une prononciation ne produira peut-être pas la prononciation exacte, même dans les cas où l'écriture
utilisée semble parfaitement phonétique au premier abord. Par exemple, un Bopomofo
est associé indépendamment pour chaque caractère du texte de base ; les changements de son ou de tonalité dépendant du contexte
ne sont pas reflétés. De même en japonais, il peut se produire des irrégularités de diction, comme utiliser le son は
(hiragana ha) pour le suffixe de substantif prononcé
わ
(wa), ou encore utiliser des voyelles pour indiquer un allongement.
Pour ces cas, les auteurs voudront peut-être fournir la prononciation réelle à l'aide d'un balisage spécial conçu pour cet usage,
ou compter sur la capacité du système de restitution sonore
à manipuler correctement ces cas.
rpSi l'auteur ne se préoccupe pas de fournir des solutions de repli aux agents utilisateurs ne reconnaissant pas le balisge de ruby
ni ne gérant les feuilles de style CSS2 [CSS2]
ou XSL [XSL], alors les éléments rp ne sont pas nécessaires.
Néanmoins, il est possible de placer le texte ruby entre parenthèses en solution de repli, par exemple, lorsque la
résolution de l'appareil n'est pas adaptée à une restitution traditionnelle de ruby.
Dans le cas de [CSS2], les parenthèses peuvent être générées avec la
propriété 'content' ([CSS2], section 12.2)
et les pseudo-éléments :before et :after
([CSS2], section 12.1), comme par exemple dans le fragment de feuille de style suivant :
rt:before { content: "(" }
rt:after { content: ")" }
Figure 3.8 : Un fragment de style CSS2 générant des parenthèses autour de l'élément rt
Dans l'exemple ci-dessus, les parenthèses seront automatiquement créées autour de l'élément rt.
Les règles de style précédentes sont censées servir en même temps que des règles de style pour positionner le texte ruby en-ligne.
Avec XSLT [XSLT], la génération des parenthèses est directe.
Cette section est normative.
Dans le contexte de cette spécification, on peut revendiquer la conformité du balisage, des types de documents,
des mises en œuvre de modules, des documents, des générateurs
et des interpréteurs. Dans la plupart des cas, on dispose de
deux niveaux de conformité : la conformité simple et la conformité complète. La conformité simple signifie que l'objet conforme
gère le modèle de contenu minimal de l'élément ruby de la section 2.1,
c'est-à-dire seulement le balisage ruby simple. La conformité complète signifie que l'objet conforme gère le
modèle de contenu maximal de l'élément ruby de la section 2.1,
c'est-à-dire que les balisages ruby simples et complexes sont tous gérés.
Un balisage est dit balisage ruby simple conforme
s'il contient un ou plusieurs éléments ruby et si le contenu de tous ces éléments (y compris leurs sous-éléments)
est conforme au modèle de contenu minimal de la section 2.1 (c'est-à-dire que le balisage ruby simple
est seul permis). Un balisage est dit balisage ruby complet conforme
s'il contient un ou plusieurs éléments ruby et si le contenu de tous ces éléments (y compris leurs sous-éléments)
est conforme au modèle de contenu maximal de la section 2.1 (c'est-à-dire que les
balisages ruby simples et complexes sont tous permis).
Un type de document est dit type de document de balisage ruby simple conforme
s'il intègre un balisage ruby simple conforme en ajoutant l'élément ruby aux éléments appropriés
(tels que les éléments en-ligne) et en définissant les éléments et attributs nécessaires.
Un type de document est dit type de document de balisage ruby complet conforme
s'il intègre un balisage ruby complet conforme en ajoutant l'élément ruby aux éléments et attributs nécessaires.
La mise en œuvre d'un module (par exemple, avec une définition DTD ou une technologie XML Schema) est dite mise en œuvre de module ruby simple conforme si elle est conçue pour intégrer un balisage ruby simple avec d'autres modules aux types de documents décrits précédemment. La mise en œuvre d'un module est dite mise en œuvre de module ruby complexe conforme si elle est conçue pour intégrer un balisage ruby complet avec d'autres modules aux types de documents décrits précédemment. La mise en œuvre d'un module est dite mise en œuvre de module ruby complète conforme si elle est conçue pour intégrer un balisage ruby simple ou bien complet avec d'autres modules aux types de documents décrits précédemment (par exemple, en fournissant un aiguillage ou en fournissant deux mises en œuvre de modules séparées).
Un document est dit document de balisage ruby simple conforme s'il contient un balisage ruby simple conforme et ne contient pas de balisage ruby complexe ou non conforme. Un document est dit document de balisage ruby complet conforme s'il contient un balisage ruby complet conforme et ne contient pas de balisage ruby non conforme.
Un générateur est dit générateur de balisage ruby simple conforme s'il génère un balisage ruby simple conforme et ne génère pas de balisage ruby complexe ou non conforme. Un générateur est dit générateur de balisage ruby complet conforme s'il génère du balisage ruby complet conforme et ne génère pas de balisage ruby non conforme.
Un interpréteur est dit interpréteur de balisage ruby simple conforme s'il rejette le balisage ruby simple non conforme, accepte le balisage ruby simple conforme et interprète le balisage ruby selon cette spécification. Un interpréteur est dit interpréteur de balisage ruby complet conforme s'il rejette le balisage ruby non conforme, accepte le balisage ruby complet conforme et interprète le balisage ruby selon cette spécification. Comme exemples d'interpréteurs, les outils d'analyse ou de transformation côté serveur et les moteurs de rendu.
Pour la conformité avec la modularisation XHTML, veuillez consulter la section 3 de [XHTMLMOD].
Cette annexe est informative.
Voici un lien vers la définition DTD du module Ruby utilisé par XHTML 1.1 [XHTML11].
Cette annexe est informative. Elle contient quelques remarques à propos des décisions de conception, et elle se fonde sur les questions et les commentaires reçus pendant la revue de dernier appel.
Des propositions visaient à changer, par exemple, <rbc><rb>...</rbc> pour <rb><rbc>...</rb> (et de même pour rt/rtc). Cela semble plus naturel d'une certaine manière. Toutefois, dans XML, un élément a soit un contenu mixte (à la fois des données textuelles et des éléments, sans restriction d'ordre ni d'occurence), soit un contenu d'éléments (seulement des éléments, avec des restrictions). Il est donc impossible de dire si <rb> contient seulement des éléments, ou bien seulement des données textuelles et des éléments en-ligne.
Il y a eu plusieurs propositions pour supprimer l'élément rp du modèle de contenu minimal.
Elles ont été examinées mais rejetées pour les raisons suivantes :
rp
par un récepteur comprenant le balisage ruby est extrêment facile ; la charge est minimale pour les mises en œuvre.
Les langages CSS et XSL offrent tous deux des mécanismes simples pour supprimer les éléments rp
ou pour empêcher leur affichage ;Il a été suggéré de changer les noms des éléments, notamment de changer <ruby> pour <gloss>. Cependant, quoique le balisage ruby soit en effet similaire à certains points de vue au balisage qui serait nécessaire pour des commentaires, il n'est pas conçu dans ce but.
Cette annexe est informative.
Pour des raisons historiques, certains outils de créations sont susceptibles de générer du balisage ruby sans les
balises d'ouverture et de fermeture de l'élément rb, ainsi :
<ruby> A <rp>(</rp><rt>aaa</rt><rp>)</rp> </ruby>
Au lieu du balisage suivant :
<ruby> <rb>A</rb> <rp>(</rp><rt>aaa</rt><rp>)</rp> </ruby>
Le premier balisage n'est pas conforme à cette spécification, mais les agents utilisateurs soucieux de compatibilité avec les documents générés par ces outils de création peuvent traiter le premier cas de la même façon que s'il était codé comme le second.
Cette annexe est informative.
texte de base) et sert d'annotation ou de guide de prononciation associés à la base.
Cette annexe est informative.
Les changements depuis la recommandation proposée (http://www.w3.org/TR/2001/PR-ruby-20010406) :
texte rubyet
texte de base;
partie depour
utilisé pardans l'annexe A ([XHTML11] ne contient aucune définition de module) ;
Cette section est informative.
Takao Suzuki (鈴木 孝雄) et Chris Wilson ont participé en tant que rédacteurs aux versions de travail précédentes.
Cette spécification n'aurait pas été possible sans l'aide des membres du groupe de travail I18N WG du W3C, en particulier Mark Davis et Hideki Hiura (樋浦 秀樹), et des membres du groupe d'intérêt I18N IG du W3C.
Les autres contributeurs sont les suivants : Murray Altheim, Laurie Anna Edlund, Arye Gittelma, Koji Ishii, Rick Jelliffe, Eric LeVine, Chris Lilley, Charles McCathieNevile, Shigeki Moro (師 茂樹), Chris Pratley, Nobuo Saito (斎藤 信男), Rahul Sonnad, Chris Thrasher.
Le balisage défini dans cette spécification a été harmonisé avec le balisage ruby dans
[JIS4052], développé par le deuxième groupe de travail (Composition)
du comité Electronic Document Processing System Standardization Investigation and Research Committee
du Japanese Standards Association. Nous voudrions remercier les membres du deuxième groupe de travail, en particulier
Kohji Shibano (芝野 耕司, président) et Masafumi Yabe (家辺 勝文, liaison),
pour leur collaboration. Techniquement, le balisage ruby dans [JIS4052] diffère du balisage dans
cette spécification en deux points : premièrement, il y a une autre forme de balisage non compatible avec XML,
basée sur des symboles spéciaux, et deuxièmement, l'élément rp n'est pas admis.
Des commentaires précieux ont été apportés en dernier appel par les groupes de travail HTML, CSS, XSL, WAI P&F, ainsi que par Steven Pemberton, Trevor Hill, Susan Lesch, et Frank Yung-Fong Tang. Akira Uchida (内田 明) a donné son point de vue de traducteur.
Une ancienne proposition de balisage ruby utilisant des attributs est décrite dans [DUR97].