Lisez-moi S.V.P. 

W3C

L'annotation ruby

Recommandation du W3C du 31 mai 2001

Cette version :
http://www.w3.org/TR/2001/REC-ruby-20010531
(archive (zip))
Dernière version :
http://www.w3.org/TR/ruby
Version précédente :
http://www.w3.org/TR/2001/PR-ruby-20010406
Rédacteurs :
Marcin Sawicki (jusqu'au 10 octobre 1999)
Michel Suignard, Microsoft
Masayasu Ishikawa (石川 雅康), W3C
Martin Dürst, W3C
Tex Texin, Progress Software Corp.
(Cf. la section Remerciements pour les autres contributeurs)

Résumé

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].

Statut de ce document

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.


Table des matières


1. Introduction

Cette 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 :

1.1 Qu'est-ce que le ruby ?

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).

En bas à gauche, trois idéogrammes japonais allant de gauche à droite. Au dessus, six caractères hiragana à mi-taille. Sur la droite, des flèches indiquant 'texte de base' (dessous) et 'texte ruby' (dessus)

Figure 1.1 : Un texte ruby donnant la glose de chaque caractère du texte de base.

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.

Sur la gauche, trois idéogrammes japonais allant de gauche à droite. Au-dessus d'eux, six caractères hiragana à moitié de la taille. En-dessous des idéogrammes, le texte 'shinkansen'. Sur la droite, des flèches et un texte disant 'texte de base' (au milieu), 'texte ruby' (en haut) et 'texte ruby2' (en bas).

Figure 1.2 : Deux textes ruby appliqués au même texte de base.

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.

1.2 Aperçu du balisage ruby

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.

1.2.1 Le balisage ruby simple

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 :

En bas à gauche, trois grandes lettres composent 'WWW'. Au-dessus, en lettres plus petites, le texte 'World Wide Web'. À la droite, des flèches et un texte indiquant 'texte de base' (en bas), 'texte ruby' (en haut).

Figure 1.5 : Exemple de restitution pour le balisage ruby simple de la figure 1.4

Remarque : Le nom de cet élément englobant <ruby> 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.

1.2.2 Le balisage ruby simple avec parenthèses

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 :

  • Soit ne reconnaissent pas le balisage ruby mais restituent le contenu des éléments inconnus ;
  • Soit ne peuvent pas restituer le texte ruby le long du texte de base ;

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.

En bas à gauche, trois grandes lettres composent le mot 'WWW'. Au-dessus d'elles, en lettres plus petites, le texte 'World Wide Web'. À la droite, des flèches et du texte disant 'texte de base' (en bas) et 'texte ruby' (en haut).

Figure 1.8: L'élément rp est ignoré au profit d'une restitution plus sophistiquée

1.2.3 Le balisage ruby complexe

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ù :

  • La relation plus détaillée est inconnue, ou bien ;
  • La glose ou l'annotation ne sont applicables qu'à l'ensemble entier et ne peuvent pas être découpées en morceaux.

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.

1.2.4 Résumé

En résumé, l'élément ruby sert de conteneur dans l'un des cas suivants :

  • Une combinaison d'éléments rb, rt et éventuellement rp (balisage ruby simple) pour :
    • L'association d'un seul texte ruby à un seul texte de base ;
    • Un repli au cas où le balisage ruby n'est pas compris.
  • Une combinaison d'un seul élément conteneur rbc et d'un ou deux éléments conteneurs rtc (balisage ruby complexe) pour :
    • L'association de deux textes ruby au même texte de base ;
    • La définition d'associations de granularité plus fine entre des parties du texte ruby et des parties du texte de base.

2.La définition formelle du balisage ruby

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].

2.1 La définition abstraite du balisage ruby

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]).

2.2 L'élément ruby

L'é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 rb comme texte de base. Le contenu des éléments rp, 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].

2.3 L'élément rbc

L'é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.

2.4 L'élément rtc

L'é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.

2.5 L'élément rb

L'é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.

2.6 L'élément rt

L'é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.

2.7 L'élément rp

On 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.

3. Les considérations de restitution et de style

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].

3.1 Le ruby sur le Web contre l'utilisation typographique traditionnelle

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 :

3.2 Le corps de police du texte ruby

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.

3.3 Le positionnement du texte ruby

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.

En haut à gauche, trois idéogrammes japonais allant de gauche à droite. En-dessous de ceux-ci, le texte 'shinkansen'. Sur la droite, des flèches et un texte disant 'texte de base' (en haut) et 'texte de ruby' (en bas).

Figure 3.1 : Un texte ruby (en lettres romaines) après/au-dessous du texte de base (en idéogrammes japonais)

En haut à gauche, trois idéogrammes japonais allant de haut en bas. À leur droite, six caractères hiragana demi-corps. En bas, des flèches et un texte disant 'texte de base' (à gauche) et 'texte de ruby' (à droite).

Figure 3.2 : Un texte ruby dans une écriture verticale (avant/à droite)

Exemple montrant un texte ruby à gauche d'un texte vertical en japonais

Figure 3.3 : Un texte ruby dans une écriture verticale (après/à gauche).

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.

En partant de la droite, un grand idéogramme chinois, trois lettres bopomofo plus petites de haut en bas (en bleu), un accent bopomofo (en rouge), un autre grand idéogramme chinois, deux lettres bopomofo plus petites de haut en bas (en bleu) et un autre accent bopomofo (en rouge).

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.

3.4 La présentation du balisage ruby

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.).

Pour que les feuilles de style puissent s'appliquer, ou que d'autres mécanismes puissent correctement restituer un texte ruby, il est très important de fournir des informations suffisantes à propos de la fonction de chaque composant. L'exemple suivant montre l'utilisation de l'attribut class pour permettre aux feuilles de style de définir la présentation exacte du texte ruby. La classe "prononciation" sert pour un texte ruby indiquant la prononciation. La classe "annotation" sert pour un texte ruby indiquant une annotation. L'attribut xml:lang indique la langue du texte.

<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 :

Au milieu, quatre idéogrammes japonais allant de gauche à droite. Au-dessus, des lettres hiragana plus petites (deux hiragana pour chacun des trois premiers idéogrammes, un hiragana pour le dernier). En-bas, le texte 'Vice-Président du W3C'.

Figure 3.6 : Restitution horizontale de deux textes ruby associés à un seul texte de base.

3.5 Les considérations de restitution non visuelle

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.

3.6 Les remplacements de l'élément rp

Si 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.

4. Les critères de conformité

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].


5. Annexes

A. Le module Ruby de XHTML

Cette annexe est informative.

Voici un lien vers la définition DTD du module Ruby utilisé par XHTML 1.1 [XHTML11].

B. Remarques à propos des décisions de conception

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 :

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.

C. Remarques à propos de la rétrocompatibilité

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.

D. Glossaire

Cette annexe est informative.

Balisage de ruby complexe
Dans cette spécification : un balisage ruby qui permet l'association de deux textes ruby à un seul texte de base ainsi que des associations fines entre des parties des textes ruby et du texte de base.
Balisage de ruby simple
Dans cette spécification : un balisage ruby qui associe un seul texte ruby à une seule base ruby un seul texte de base, en fournissant des délimiteurs optionnels telles que des parenthèses en solution de repli.
Bopomofo
Ce sont 37 caractères et 4 signes de ton employés en phonétique chinoise, notamment pour le mandarin ordinaire.
Glose
Pour les idéogrammes : un terme technique ; une indication de la prononciation possible. Elle diffère de la prononciation à plusieurs égards : l'écriture utilisée n'est peut-être pas entièrement phonétique ; la prononciation réelle dépend de l'orateur ; la prononciation n'intervient peut être pas pendant la lecture silencieuse du texte. En chinois ou en coréen, certains idéogrammes ont plusieurs prononciations. En japonais, la plupart des idéogrammes ont au moins deux prononciations, et certains en ont beaucoup plus. Les prononciations peuvent aussi dépendre du contexte.
Hiragana
Une écriture syllabique japonaise, ou un caractère de cette écriture. Elle a un aspect arrondi et cursif. Un sous-ensemble du système d'écriture japonais, utilisé conjointement au kanji et au katakana. Récemment, utilisé principalement pour écrire les mots japonais lorsque les caractères kanji sont indisponibles ou inadéquats, ou les terminaisons et les particules des mots.
Idéogramme
Un caractère utilisé pour représenter une idée, un mot ou le composant d'un mot, contrairement au caractère d'une écriture alphabétique ou syllabique. L'écriture idéographique est plus couramment utilisée (avec des variantes) en Asie orientale (Chine, Japon, Corée, etc.).
Kana
Un terme collectif pour le hiragana et le katakana.
Kanji
Le terme japonais pour désigner les idéogrammes ; les idéogrammes utilisés en japonais. Un sous-ensemble du système d'écriture japonais, utilisé conjointement à l'hiragana et au katakana.
Katakana
Une écriture syllabique japonaise, ou un caractère de cette écriture. Elle a un aspect anguleux. Un sous-ensemble du système d'écriture japonais, utilisé conjointement au kanji et à l'hiragana. Récemment, utilisé principalement pour écrire des mots étrangers.
Monoruby
En typographie japonaise : un ruby associé à seul caractère du texte de base.
Ruby de groupe
En typographie japonaise : un texte ruby associé à plusieurs caractères du texte de base.
Texte de base
Le passage de texte auquel est associé un texte ruby.
Texte ruby
Un passage de texte qui apparaît dans la proximité immédiate d'un autre passage de texte (qu'on appelle base ruby texte de base) et sert d'annotation ou de guide de prononciation associés à la base.

E. Les changements depuis la recommandation proposée

Cette annexe est informative.

Les changements depuis la recommandation proposée (http://www.w3.org/TR/2001/PR-ruby-20010406) :

6. Remerciements

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].

7. Références

Les références normatives

[XHTML11]
XHTML 1.1 - XHTML basé sur des modules, recommandation du W3C
M. Altheim, S. McCarron, rédacteurs, 31 mai 2001
Disponible à : http://www.w3.org/TR/2001/REC-xhtml11-20010531
La dernière version est disponible à : http://www.w3.org/TR/xhtml11
[XHTMLMOD]
La modularisation XHTML, recommandation du W3C
M. Altheim et al., rédacteurs, 10 avril 2001
Disponible à : http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410
La dernière version est disponible à : http://www.w3.org/TR/xhtml-modularization
[XML]
Le langage de balisage extensible (XML) 1.0 (deuxième édition), recommandation du W3C
T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, rédacteurs, 6 octobre 2000
Disponible à : http://www.w3.org/TR/2000/REC-xml-20001006
La dernière version est disponible à : http://www.w3.org/TR/REC-xml

Les références informatives

[CSS2]
La spécification des feuilles de style en cascade niveau 2 (CSS2), recommandation du W3C
B. Bos, H. W. Lie, C. Lilley et I. Jacobs, rédacteurs, 12 mai 1998
Disponible à : http://www.w3.org/TR/1998/REC-CSS2-19980512
La dernière version est disponible à : http://www.w3.org/TR/REC-CSS2
[CSS3-RUBY]
Module CSS3 : Ruby, version de travail du W3C
M. Suignard, rédacteur, 16 février 2001
Disponible à : http://www.w3.org/TR/2001/WD-css3-ruby-20010216/
La dernière version est disponible à : http://www.w3.org/TR/css3-ruby
[DUR97]
Le ruby dans le langage de balisage hypertexte, brouillon Internet
Martin Dürst, 28 février 1997, expiré
Disponible à : http://www.w3.org/International/draft-duerst-ruby-01
[HTML4]
La spécification HTML 4.01, recommandation du W3C
D. Raggett, A. LeHors, I. Jacobs, rédacteurs, 24 décembre 1999
Disponible à : http://www.w3.org/TR/1999/REC-html401-19991224
La dernière version est disponible à : http://www.w3.org/TR/html4
[JIS4051]
Les règles de composition des lignes des documents en japonais (日本語文書の行組版方法)
JIS X 4051-1995, Japanese Standards Association, 1995 (en japonais)
[JIS4052]
Le format d'échange des documents en japonais avec un balisage de composition (日本語文書の組版指定交換形式)
JIS X 4052:2000, Japanese Standards Association, 2000 (en japonais)
[ModSchema]
La modularisation XHTML dans XML Schema, version de travail du W3C
Daniel Austin et Shane McCarron, rédacteurs, 22 mars 2001
Disponible à : http://www.w3.org/TR/2001/WD-xhtml-m12n-schema-20010322
La dernière version est disponible à : http://www.w3.org/TR/xhtml-m12n-schema
[XMLSchema]
XML Schema tome 1 : Structures, recommandation du W3C
H. S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, rédacteurs, 2 mai 2001
Disponible à : http://www.w3.org/TR/2001/REC-xmlschema-1-20010502
La dernière version est disponible à : http://www.w3.org/TR/xmlschema-1
Voir également XML Schema tome 2 : Types de données, disponible à : http://www.w3.org/TR/xmlschema-2
[XSL]
Le langage de feuille de style extensible (XSL), recommandation candidate du W3C
S. Adler et al., rédacteurs, 21 novembre 2000
Disponible à : http://www.w3.org/TR/2000/CR-xsl-20001121
La dernière version est disponible à : http://www.w3.org/TR/xsl
[XSLT]
Les transformations XSL (XSLT) version 1.0, recommandation du W3C
J. Clark, rédacteur, 16 novembre 1999
Disponible à : http://www.w3.org/TR/1999/REC-xslt-19991116
La dernière version est disponible à : http://www.w3.org/TR/xslt