D'après la suggestion de la section 14 du
[RFC1866], le jeu d'entités Latin-1
est augmenté pour comprendre toute la partie droite de l'ISO 8859 (toutes les
positions dont le bit de poids fort est 1), y compris , ©
(©) et ® (®) déjà fortement utilisés. Les noms des entités
proviennent des appendices de SGML
[ISO-8879]. On en trouvera la
liste à la section 7.3 de ce document.
4.2. Balisage pour présentation dépendant de la langue
4.2.1. Survol
Pour le rendu correct de texte en certaines langues (sans égard au formattage), certaines entités et certains éléments additionnels sont nécessaire.
En particulier, on s'intéressera au cas suivants :
Certains de ces cas n'ont besoin que de très peu de soin ; d'autres sont
plus exigeants. Les caractéristiques supplémentaires ne sont introduites ici
qu'avec de brefs commentaires. Des explications sur les textes cursifs et/ou
bidirectionnel suivent. Dans ces deux derniers cas, ce document suit
[UNICODE] en ce que : i) la
sémantique des caractères, lorsqu'applicable, est identique à celle
d'[UNICODE], et ii) quand une
fonction est transposée vers HTML en tant que protocole de niveau supérieur,
la transposition est faite de manière à permettre une conversion immédiate
aux mécanismes de bas niveau définis dans
[UNICODE].
4.2.2. Liste des entités, éléments et attributs
D'abord, on a besoin d'un conteneur générique pour porter les attributs LANG et DIR (voir ci-bas) dans les cas ou aucun autre élément n'est approprié l'élément SPAN est introduit à cet effet.
Un jeu d'entités de caractères nommées est ajouté pour le rendu bidirectionnel et le contrôle des ligatures cursives :
<!ENTITY zwnj CDATA "‌" -- =anti-liant sans chasse --> <!ENTITY zwj CDATA "‍" -- =liant sans chasse --> <!ENTITY lrm CDATA "‎" -- =marque gauche-à-droite --> <!ENTITY rlm CDATA "‏" -- =marque droite-à-gauche -->Ces entités peuvent être utilisées en lieu et place des caractères de formattage correspondant lorsque pratique, par exemple pour faciliter la saisie ou lorsqu'un caractère de formattage n'est pas disponible dans le codage de caractères du document.
Ensuite, un attribut appelé DIR est introduit, restreint aux valeurs LTR (gauche à droite) et RTL (droite à gauche) et admis par la plupart des éléments, servant à indiquer la directionnalité en contexte bidirectionnel (voir 4.2.4 ci-bas pour détails). Puisque la directionnalité s'applique logiquement à tout texte et à plusieurs autres éléments (par ex. les tableaux), tous les éléments sauf BR, HR, BASE, NEXTID et META admettent cet attribut, tel que l'indique la DTD. À moins d'une bonne raison, tout nouvel élément introduit dans une version ultérieure d'HTML devrait aussi admettre cet attribut.
Un nouvel élément en-ligne appelé BDO (surcharge Bidi) est introduit, exigeant l'attribut DIR pour indiquer si la surcharge est de gauche-à-droite ou de droite-à-gauche. Cet élément est nécessaire pour le contrôle de texte bidirectionnel, voir les détails à la section 4.2.4.
L'élément en-ligne Q est introduit pour permettre le rendu dépendant de la langue de citations courtes selon la langue et les capacités du système. Comme le montrent les exemples suivants, les guillemets entourant la citation sont particulièrement affectés : "une citation en anglais", `une autre, un peu mieux', ,,une citation en allemand'', « une citation en français ». Le contenu de l'élément Q n'inclut pas les guillemets, qui doivent être ajoutés au moment du rendu.
NOTE — Les éléments Q peuvent s'imbriquer. En plusieurs langues, le style des citations varie selon l'imbrication, ce que les agents-usager devrait prendre en compte.
NOTE — une gestion minimale de l'élément Q consiste à entourer le contenu de quelconques guillemets, même les simples guillemets doubles ASCII. Étant donné la facilité de réalisation, et étant donné la possible perte de sens en l'absence de toute marque visible, on encourage fortement les programmeurs d'agents-usager à inclure au moins ce minimum.
Plusieurs langues exigent des exposants pour un rendu correct : par exemple,
en français le lle
de Mlle Dupont
devrait être en exposant. L'élément
SUP, et son cousin SUB pour les indices, sont introduits pour permettre le balisage
de tel texte. Le contenu de SUP et SUB est restreint à PCDATA pour éviter des problèmes
d'imbrication.
Finalement, en plusieurs langues la justification a beaucoup plus d'importance qu'en langues occidentales, et justifie du balisage. L'attribut ALIGN, admettant les valeurs LEFT, RIGHT, CENTER et JUSTIFY, est ajouté à quelques éléments pour lesquels la justification a du sens (les éléments de type bloc P, HR, H1 to H6, OL, UL, DIR, MENU, LI, BLOCKQUOTE et ADDRESS). Un agent-usager qui choisit LEFT comme valeur implicite pour des blocs de directionnalité gauche-à-droite devrait utiliser RIGHT pour des blocs droite-à-gauche.
NOTE — la section 4.2.2 du RFC 1866 indique qu'un agent-usager HTML devrait traiter une fin de ligne comme une espace de mot, sauf au sein de texte préformaté. Ceci doit être interprété dans le contexte de l'écriture traitée, puisque différentes écritures ont différentes manières de séparer les mots : une simple espace dans certaines écritures (par ex. latine), un séparateur de mot sans chasse dans d'autres (par ex. thaï), et rien du tout (totalement ignorée) dans certaines autres (par ex. japonaise).
NOTE — les implémenteurs d'agents-usager devraient porter une attention spéciale au TRAIT D'UNION VIRTUEL (U+00AD), un caractère qui se retrouve dans de nombreux jeux de caractères (dont toute la série ISO 8859 et, bien sûr, l'ISO 10646), qui peut toujours être saisi comme une référence ­, et qui est différent du simple TRAIT D'UNION : il indique où un bris de ligne est permis. Si la ligne est effectivement brisée, un trait d'union doit être affiché à la fin de la première ligne. Sinon, le caractère n'est aucunement affiché. Dans des opération comme le tri et la recherche, il devrait être complètement ignoré.Dans la DTD, les attributs LANG et DIR sont regroupés dans une entité de paramètre appelée attrs. À l'instar du RFC 1942 [RFC1942], les attributs ID et CLASS sont aussi groupés dans attrs. Les attributs ID et CLASS sont exigés par les feuilles de style, et le RFC 1942 les décrit comme suit :
On a parfois besoin de balisage pour imposer une ligature cursive dans des cas où elle ne se produirait normalement pas, ou pour l'empêcher quand elle se produrait.
Les liant et anti-liant sans chasse (‍ et ‌) sont utilisés
pour contrôler les ligatures cursives. Par exemple, la LETTRE ARABE HA' est
utilisée seule comme abbréviation de Hijri
(le calendrier islamique) ;
toutefois, on veut la forme initiale de la lettre (ه), la forme isolée
de HA' (ه) ressemblant trop au chiffre cinq de l'écriture arabe. On obtient
cet effet en mettant un liant sans chasse à la suite de HA', dont le seul effet
est de procurer du contexte. Dans des textes persans, il arrive qu'une lettre
ne se joigne pas à la suivante alors qu'elle le ferait normalement. On utilise
ici un anti-liant sans chasse.
4.2.4. Texte bidirectionnel
De nombreuses langues s'écrivent en lignes horizontales de gauche à droite, alors que d'autres s'écrivent de droite à gauche. Lorsque les deux directions d'écriture sont présentes, on parle de texte bidirectionnel (BIDI en bref). Le texte BIDI exige du balisage lorsque des ambiguïtés quant à la directionnalité de caractères doivent être levées. Ce balisage permet de rendre du texte BIDI de façon sémantiquement lisible ; sans ce balisage BIDI spécial, certains cas ne peuvent être rendu d'aucune manière qui reflète le sens du texte. Le texte simple (non-enrichi) peut contenir du balisage BIDI sous la forme de caractères de formatage spéciaux.
Ceci est aussi possible en HTML, qui admet les cinq caractères de formatage de l'ISO 10646 reliés au BIDI (202A - 202E). Comme alternative, HTML offre du balisage SGML équivalent.
Le BIDI est un sujet complexe, et la conversion de séquences de texte en ordre logique en séquences d'affichage doit être faite selon l'algorithme et les propriétés de caractères précisés par [UNICODE]. Nous ne fournissons ici que juste assez d'explications pour faire comprendre la nécessité du balisage et pour en définir le sens exact.
L'algorithme BIDI Unicode est basé sur l'enregistrement des caractères du texte en ordre logique, qui est l'ordre normal de saisie et aussi l'ordre normal d'élocution. Pour en rendre le rendu possible, l'algorithme attribue à chaque caractères une directionnalité, par ex. gauche-à-droite pour les lettres latines et droite-à-gauche pour les caractères arabes et hébreux.
Les marques gauche-à-droite et droite-à-gauche (‎ et ‏) sont utilisées pour lever l'ambiguïté sur la directionnalité des caractères neutres. Par exemple, lorsqu'un guillemet anglais double (") est coincé entre une lettre latine et une lettre arabe, sa direction est ambiguë ; si une marque directionnelle est ajoutée de part ou d'autre, de façon à ce que le guillemet soit entouré de caractères d'une seule direction, l'ambiguïté est levée. Ces caractères sont comme des espaces sans chasse avec propriété directionnelle (mais sans propriété de brisure de mot ou de ligne).
Les enchâssures de texte contra-directionnelles imbriquées, due à des citations imbriquées ou à du collage de texte d'un contexte BIDI à un autre, sont un autre cas exigeant du balisage. De plus, il est fréquemment souhaitable d'indiquer la directionnalité de base d'un bloc de texte. Pour ces fins, l'attribut DIR est utilisé.
Sur les éléments de type bloc, l'attribut DIR indique la directionnalité de base du texte du bloc ; lorsqu'omis, la directionnalité est hérité du parent. La directionnalité implicite du document HTML complet est de gauche à droite.
Sur les éléments en ligne, DIR marque le début d'un nouveau niveau d'enchâssement (expliqué ci-bas) ; lorsqu'omis, l'élément en ligne ne démarre pas un nouvel enchâssement BIDI.
NOTE — les éléments PRE, XMP and LISTING admettent l'attribut DIR, ce qui indique que le contenu ne doit pas être considéré comme pré-formatté quant à la disposition bidirectionnelle. L'algorithme BIDI doit encore être appliqué à chaque ligne.Voici un exemple d'un cas où le balisage des enchâssure est requis, en montrant l'effet :
Étant donné les lettres latines (en capitales) et arabes (en minuscule) suivantes en mémoire avec les enchâssures indiquées :
<SPAN DIR=LTR> AB <SPAN DIR=RTL> xy <SPAN DIR=LTR> CD </SPAN> zw </SPAN> EF </SPAN>
On obtient le rendu suivant, [] montrant les transitions directionnelles :
[ AB [ wz [ CD ] yx ] EF ]
Sans balisage et en contexte de gauche à droite, on aurait obtenu :
[ AB [ yx ] CD [ wz ] EF ]
Notez que le yx est à gauche et le wz à droite, à l'encontre du cas avec balisage explicite des enchâssures. Sans balisage, on n'a qu'au plus deux niveaux : un niveau directionnel de base et un seul niveau à contre-courant.
L'attribut DIR sur les éléments en ligne est équivalent aux caractères de formattage ENCHÂSSEMENT GAUCHE-À-DROITE (202A) et ENCHÂSSEMENT DROITE-À-GAUCHE (202B) de l'ISO 10646. La balise de fin est équivalente au caractère DÉPILEMENT DE FORMATAGE DIRECTIONNEL (202C).
La surchage directionnelle, fournie par l'élément BDO, est nécessaire pour de courts morceaux de texte dans lesquels la directionnalité ne peut être déterminée de façon non-ambiguë du seul contexte. Par exemple, on l'utilisera pour forcer l'affichage de gauche à droite (ou de droite à gauche) de numéros de pièces formés de lettres latines, de chiffres et de lettres hébraïques.
L'effet de BDO est d'imposer la directionnalité de tous les caractères à la valeur de DIR, sans égard à leurs propriétés directionnelles implicites. Il est équivalent à l'utilisation des caractères FORÇAGE GAUCHE-À-DROITE (202D) ou FORÇAGE DROITE-À-GAUCHE (202E) de l'ISO 10646, la balise de fin étant encore ici équivalente au caractère DÉPILEMENT DE FORMATAGE DIRECTIONNEL (202C).
NOTE — les rédacteurs et auteurs de logiciels de rédaction noteront qu'il peut y avoir conflit si l'attribut DIR est utilisé sur des éléments en ligne (y compris BDO) en même temps que les caractères de formattage correspondants de l'ISO 10646.
Il est préférable d'utiliser un ou l'autre exclusivement ; le balisage est plus à même de garantir l'intégrité structurelle du document