# Ruby (linguistique)

Les annotations ruby sont, en linguistique et en informatique, des annotations en petits caractères placés à côté ou au-dessus d'un texte de base écrit en sinogrammes, afin d'en indiquer la prononciation. Historiquement, le mot ruby désignait, en typographie britannique, un corps de 5,5 points, utilisé pour des annotations.
Par exemple, ils sont utilisés avec les sinogrammes pour l'apprentissage de la prononciation. L'utilisation du sinogramme 月 (« lune ») peut ainsi être accompagnée de :
* en langues chinoises, par exemple, pour le mandarin, principalement en Chine continentale, du pinyin « yuè », ou, principalement à Taïwan, du bopomofo (ou zhuyin) « ㄩㄝˋ », ou encore, pour le cantonnais (yue, langue officielle à Hong Kong et Macao), de la translittération en jyutping « jyut⁶ » ;
* en coréen ancien, écrit en sinogramme, le principe est le même qu'en chinois, avec les hangeul écrits au-dessus, tandis qu'au contraire, en coréen moderne, le caractère de base est le hangeul (écriture contemporaine, purement phonétique), et le hanja (sinogramme en coréen) est mis entre parenthèses, pour la sémantique du terme, et non sa prononciation ;
* en japonais, des caractères en hiragana « つき », également de taille réduite, peuvent surmonter le sinogramme pour indiquer sa prononciation tsuki.
Généralement, dans le cas où c'est la phonétique qui accompagne le sinogramme, si le texte est horizontal, le ruby est au-dessus des caractères, lorsque le texte est vertical, il est à sa droite. Tandis que dans le cas du coréen, où c'est le sinogramme qui est en ruby, il est à sa droite, entre parenthèses dans un texte horizontal ou en dessous dans un texte vertical.
Les annotations ruby japonaises sont traditionnellement nommées furigana (ou yomigana) et sont couramment utilisées dans cette langue (avec la transcription en kana) notamment dans le cas des lectures inhabituelles des mots, ou pour fournir une aide à la lecture pour les enfants ou les personnes qui apprennent encore la langue. À l'occasion ils sont utilisés pour expliquer des jeux de mots ou jeux sur les kanjis, mais aussi pour les noms et prénoms car la prononciation des caractères dans le cas des noms est très souvent irrégulière. Dans les autres langues à sinogrammes, elles ne sont employées qu'à titre didactique et restent assez rares dans les publications courantes.

## Exemples par mise en page

Les exemples ci-dessous utilisent la fonctionnalité ruby HTML suivi d’exemple émulant cette fonctionnalité à l’aide de table. Les éléments ruby ne peuvent pas être lus par n'importe quel navigateur tandis que l’élément table peut l’être. La rédaction avec table est cependant bien plus complexe.
Chinois :
| | bopomofo ou zhuyin | pinyin |
| ruby | 北ㄅㄟˇ京ㄐㄧㄥ | 北běi京jīng |
| table | ㄅㄟˇ ㄐㄧㄥ 北 京 | běi jīng 北 京 |
Coréen :
| Hangeul | Romaja |
| 조 선 朝 鮮 | Cho sŏn 朝 鮮 |
Japonais :
| | hiragana | katakana | romaji |
| ruby | 東とう京きょう | 東トウ京キョウ | 東tō京kyō |
| table | とう きょう 東 京 | トウ キョウ 東 京 | tō kyō 東 京 |
Une mise en page avec un élément table empêche d'autre part que des caractères avec ruby soient insérés dans un paragraphe de texte normal, l'inclusion d'un tableau dans un bloc de texte rendant la chose sinon impossible, du moins très difficile. L’élément ruby peut être utilisé directement dans une phrase, par exemple :
    Le nom Pékin est une déformation du chinois 北běi京jīng par les missionnaires jésuites du XVIIe siècle.

## Sur Internet

En 2001, le W3C a publié un module de XHTML permettant de noter informatiquement ces annotations. Aucun navigateur ne l'a intégré, probablement car la norme stricte de XHTML est trop contraignante. Par la suite, une version simplifiée a été intégrée dans la norme HTML5 et un module CSS de mise en forme ruby est en cours de rédaction. Début 2015, Internet Explorer supporte une très ancienne version du module HTML depuis sa version 5, cette version ressemble beaucoup à sa version en HTML5. Safari et Chrome supportent uniquement la norme HTML5. Firefox, implémente une version CSS complète.

### Exemple avec l'élément HTML ruby

L'utilisation de l'élément HTML « ruby » simplifie grandement la tâche. Ainsi, le code <ruby><rb>東京</rb><rt>とう きょう</rt></ruby> est simple à utiliser :
* <ruby></ruby> encadre le texte à annoter et ses annotations ;
* à l'intérieur, <rb></rb> encadre le texte à annoter ;
* suivi de <rt></rt> pour l'annotation ;
* optionnellement, on peut encadrer l'annotation par <rp>[caractère]</rp>, qui contient un caractère à afficher pour les navigateurs ne sachant pas rendre le ruby. L'exemple ci-dessus devient alors <ruby><rb>東京</rb><rp>(</rp><rt>とう きょう</rt><rp>)</rp></ruby> , où on a utilisé des parenthèses pour que de tels navigateurs affichent le tout par 東京(とう きょう). Les navigateurs prenant en charge ce code rendront le texte annoté comme souhaité et ignoreront les caractères entre <rp></rp>. Avec le navigateur affichant cette page en ce moment même, cela donne 東京(とう きょう).