Section courante

A propos

Section administrative du site

Introduction

L'extension de fichier «RTF» tire son nom de l'abréviation de l'anglicisme Rich Text Format. C'est un format de fichier utilisé pour entreposer du texte enrichi, ce qui signifie qu'il peut contenir non seulement du texte brut, mais aussi des informations de mise en forme telles que : Style de police de caractères (gras, italique, souligné,...), taille et couleur des polices de caractères, alignement du texte (gauche, centre, droite, justifié), listes (à puces ou numérotées), tableaux, images insérées, liens hypertexte,... Le format RTF a été développé par Microsoft en 1987 dans le but de permettre l'échange de documents entre différents logiciels de traitement de texte, tout en préservant la mise en forme du texte. Les fichiers RTF peuvent être ouverts par de nombreux éditeurs de texte et traitement de texte, comme Microsoft Word, LibreOffice ou même des éditeurs de texte simples comme WordPad.

Les fichiers RTF sont entreposés dans un format texte lisible par l'homme, avec des balises spéciales pour gérer la mise en forme, contrairement aux formats binaires comme DOC ou DOCX.

Spécification

Spécification Description
Type Traitement de texte
Auteur Microsoft
Format Document
Date de publication 1987

La spécification RTF (Rich Text Format) est une méthode de codage de texte et de graphiques formatés pour faciliter le transfert entre applications. Les utilisateurs dépendent d'un logiciel de traduction spécial pour déplacer des documents de traitement de texte entre différentes applications MS-DOS, Windows, OS/2, Macintosh et Power Macintosh.

La spécification RTF fournit un format pour l'échange de texte et de graphiques pouvant être utilisé avec différents périphériques de sortie, environnements d'exploitation et systèmes d'exploitation. Le RTF utilise l'ensemble de caractères ANSI, PC-8, Macintosh ou IBM PC pour contrôler la représentation et le formatage d'un document, à la fois à l'écran et sur papier. Avec la spécification RTF, les documents créés sous différents systèmes d'exploitation et avec différentes applications logicielles peuvent être transférés entre ces systèmes d'exploitation et applications. Les fichiers RTF créés dans Word 6.0 (et versions ultérieures) pour Macintosh et Power Macintosh ont un type de fichier «RTF».

Le logiciel prenant un fichier formaté et le transformant en fichier RTF est appelé un écriveur. Un enregistreur RTF sépare les informations de contrôle de l'application du texte réel et écrit un nouveau fichier contenant le texte et les groupes RTF associés à ce texte. Le logiciel traduisant un fichier RTF en fichier formaté est appelé lecteur.

Syntaxe RTF

Un fichier RTF se compose de texte non formaté, de mots de contrôle, de symboles de contrôle et de groupes. Pour faciliter le transport, un fichier RTF standard ne peut être composé que de caractères ASCII 7 bits. (Les convertisseurs communiquant avec Microsoft Word pour Windows ou Microsoft Word pour Macintosh doivent s'attendre à des caractères 8 bits.) Il n'existe pas de longueur de ligne maximale définie pour un fichier RTF.

Un mot de contrôle est une commande spécialement formatée que RTF utilise pour marquer les codes de contrôle d'imprimante et les informations que les applications utilisent pour gérer les documents. Un mot de contrôle ne peut pas dépasser 32 caractères. Un mot de contrôle prend la forme suivante :

\LetterSequence<Delimiter>

Notez qu'une barre oblique inverse commence chaque mot de contrôle.

La séquence de lettres est composée de caractères alphabétiques minuscules compris entre «a» et «z» inclus. Le format RTF est sensible à la casse et tous les mots de contrôle RTF doivent être en minuscules.

Le délimiteur marque la fin d'un mot de contrôle RTF et peut être l'un des éléments suivants :

Si un espace délimite le mot de contrôle, l'espace n'apparaît pas dans le document. Tous les caractères suivant le délimiteur, y compris les espaces, apparaîtront dans le document. Pour cette raison, vous ne devez utiliser des espaces que si nécessaire ; n'utilisez pas d'espaces simplement pour diviser le code RTF.

Un symbole de contrôle se compose d'une barre oblique inverse suivie d'un seul caractère non alphabétique. Par exemple, \~ représente un espace insécable. Les symboles de contrôle n'acceptent aucun délimiteur.

Un groupe se compose de texte et de mots de contrôle ou de symboles de contrôle placés entre accolades ({ }). L'accolade ouvrante ({) indique le début du groupe et l'accolade fermante (}) indique la fin du groupe. Chaque groupe spécifie le texte affecté par le groupe et les différents attributs de ce texte. Le fichier RTF peut également inclure des groupes pour les polices de caractères, les styles, la couleur de l'écran, les images, les notes de bas de page, les commentaires (annotations), les entêtes et les pieds de page, les informations récapitulatives, les champs et les signets, ainsi que les propriétés de formatage du document, de la section, du paragraphe et des caractères. Si les groupes de polices de caractères, de fichiers, de styles, de couleurs d'écran, de marques de révision et d'informations récapitulatives ainsi que les propriétés de mise en forme du document sont inclus, ils doivent précéder le premier caractère de texte brut du document. Ces groupes forment l'entête du fichier RTF. Si le groupe des polices de caractères est inclus, il doit précéder le groupe des styles. Si un groupe n'est pas utilisé, il peut être omis. Les groupes sont abordés dans les sections suivantes.

Les propriétés de contrôle de certains mots de contrôle (tels que gras, italique, garder ensemble,...) n'ont que deux états. Lorsqu'un tel mot de contrôle n'a aucun paramètre ou a un paramètre différent de zéro, on suppose que le mot de contrôle active la propriété. Lorsqu'un tel mot de contrôle a un paramètre de 0, on suppose que le mot de contrôle désactive la propriété. Par exemple, \b active le gras, tandis que \b0 désactive le gras.

Certains mots de contrôle, appelés destinations, marquent le début d'une collection de textes apparentés qui pourraient apparaître à une autre position, ou destination, dans le document. Les destinations peuvent également être du texte utilisé mais qui ne doit pas apparaître du tout dans le document. Un exemple de destination est le groupe \footnote, où le texte de la note de bas de page suit le mot de contrôle. Les sauts de page ne peuvent pas se produire dans le texte de destination. Les mots de contrôle de destination et leur texte suivant doivent être placés entre accolades. Aucun autre mot de contrôle ou texte ne peut apparaître dans le groupe de destination. Les destinations ajoutées après la spécification RTF publiée dans le Microsoft Systems Journal de mars 1987 peuvent être précédées du symbole de contrôle \*. Ce symbole de contrôle identifie les destinations dont le texte associé doit être ignoré si le lecteur RTF ne reconnaît pas la destination. (Les rédacteurs RTF doivent suivre la convention d'utilisation de ce symbole de contrôle lors de l'ajout de nouvelles destinations ou de nouveaux groupes.) Les destinations dont le texte associé doit être inséré dans le document même si le lecteur RTF ne reconnaît pas la destination ne doivent pas utiliser \*. Toutes les destinations qui n'étaient pas incluses dans la révision de mars 1987 de la spécification RTF sont indiquées avec \* comme partie du mot de contrôle.

Le formatage spécifié dans un groupe affecte uniquement le texte de ce groupe. En règle générale, le texte d'un groupe hérite de la mise en forme du texte du groupe précédent. Cependant, les implémentations Microsoft de RTF supposent que les groupes de notes de bas de page, d'annotations, d'entêtes et de pieds de page n'héritent pas de la mise en forme du texte précédent. Par conséquent, pour garantir que ces groupes sont toujours correctement mis en forme, vous devez définir la mise en forme de ces groupes sur la valeur par défaut avec les mots de contrôle \sectd, \pard et \plain, puis ajouter la mise en forme souhaitée.

Les mots de contrôle, les symboles de contrôle et les accolades constituent des informations de contrôle. Tous les autres caractères du fichier sont du texte brut. Voici un exemple de texte brut n'existant pas dans un groupe :

{\rtf\ansi\deff0{\fonttbl{\f0\froman Tms Rmn;}{\f1\fdecor
Symbol;}{\f2\fswiss Helv;}}{\colortbl;\red0\green0\blue0;
\red0\green0\blue255;\red0\green255\blue255;\red0\green255\
blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\
green255\blue0;\red255\green255\blue255;}{\stylesheet{\fs20 \snext0Normal;}}{\info{\author Sylvain Maltais}
{\creatim\yr1990\mo7\dy30\hr10\min48}{\version1}{\edmins0}
{\nofpages1}{\nofwords0}{\nofchars0}{\vern8351}}\widoctrl\ftnbj \sectd\linex0\endnhere \pard\plain \fs20 Ceci est du texte brut.\par}

L'expression «Ceci est du texte brut» ne fait pas partie d'un groupe et est traitée comme du texte de document.

Comme mentionné précédemment, la barre oblique inverse (\) et les accolades ({ }) ont une signification particulière dans RTF. Pour utiliser ces caractères comme texte, faites-les précéder d'une barre oblique inverse, comme dans \\, \{ et \}.

Conventions d'un lecteur RTF

Le lecteur d'un flux RTF est concerné par les tâches suivantes :

L'action sur les informations de contrôle est conçue pour être un processus relativement simple. Certaines informations de contrôle contribuent simplement à l'ajout de caractères spéciaux au flux de texte brut. D'autres informations servent à modifier l'état du programme, incluant les propriétés du document dans son ensemble, ou à modifier l'un des états de groupe qui s'appliquent à certaines parties du document.

Comme mentionné précédemment, un état de groupe peut spécifier les éléments suivants :

En pratique, un lecteur RTF évaluera chaque caractère qu'il lit dans l'ordre comme suit :

Si le lecteur RTF ne trouve pas un mot de contrôle ou un symbole de contrôle particulier dans la table de recherche décrite ci-dessus, le mot de contrôle ou le symbole de contrôle doit être ignoré. Si un mot de contrôle ou un symbole de contrôle est précédé d'une accolade ouvrante ({), il fait partie d'un groupe. L'état actuel doit être enregistré sur la pile, mais aucun changement d'état ne doit se produire. Lorsqu'une accolade fermante (}) est rencontrée, l'état actuel doit être récupéré de la pile, réinitialisant ainsi l'état actuel. Si le symbole de contrôle \* précède un mot de contrôle, il définit alors un groupe de destination et était lui-même précédé d'une accolade ouvrante ({). Le lecteur RTF doit ignorer tout le texte jusqu'à et y compris l'accolade fermante (}) qui ferme ce groupe. Tous les lecteurs RTF doivent reconnaître toutes les destinations définies dans la spécification RTF de mars 1987. Le lecteur peut ignorer le groupe, mais il n'est pas autorisé à ignorer simplement le mot de contrôle. Les destinations définies depuis mars 1987 sont marquées du symbole de contrôle \*.

Remarque : tous les lecteurs RTF doivent implémenter le symbole de contrôle \* pour pouvoir lire les fichiers RTF écrits par des rédacteurs RTF plus récents.

Pour les mots de contrôle ou les symboles de contrôle que le lecteur RTF peut trouver dans la table de recherche, les actions possibles sont les suivantes :

Action Description
Changer la destination Le lecteur RTF change la destination en la destination décrite dans l'entrée de table. Les changements de destination ne sont autorisés qu'immédiatement après une accolade ouvrante ({ ). (D'autres restrictions peuvent également s'appliquer ; par exemple, les notes de bas de page ne peuvent pas être imbriquées.) De nombreux changements de destination impliquent que les paramètres de propriété actuels seront réinitialisés à leurs paramètres par défaut. Des exemples de mots de contrôle changeant la destination sont \footnote, \header, \footer, \pict, \info, \fonttbl, \stylesheet et \colortbl. Cette note d'application identifie tous les mots de contrôle de destination lorsqu'ils apparaissent dans les tables de mots de contrôle.
Changer la propriété de formatage Le lecteur RTF modifie la propriété comme décrit dans l'entrée de table. L'entrée spécifiera si un paramètre est requis. Si un paramètre est nécessaire et n'est pas spécifié, une valeur par défaut sera utilisée. La valeur par défaut utilisée dépend du mot de contrôle. Si le mot de contrôle ne spécifie pas de valeur par défaut, tous les lecteurs RTF doivent supposer une valeur par défaut de 0.
Insérer un caractère spécial Le lecteur insère dans le document le ou les codes de caractère décrits dans l'entrée de la table.
Insérer un caractère spécial et exécuter une action Le lecteur insère dans le document le ou les codes de caractère décrits dans l'entrée de la table et exécute toute autre action spécifiée par l'entrée. Par exemple, lorsque Microsoft Word interprète \par, une marque de paragraphe est insérée dans le document et un code spécial est exécuté pour enregistrer les propriétés de paragraphe appartenant à cette marque de paragraphe.

Syntaxe formelle

Cette note d'application décrit le format RTF à l'aide de la syntaxe suivante, basée sur la forme Backus-Naur :

Syntaxe Description
#PCDATA Texte (sans mots de contrôle).
#SDATA Données hexadécimales.
#BDATA Données binaires.
'c' Un littéral.
<text> Un non-terminal.
A Le mot de contrôle (terminal) a, sans paramètre.
a ou aN Le mot de contrôle (terminal) a, avec un paramètre.
a? L'élément a est facultatif.
a+ Une ou plusieurs répétitions de l'élément a.
a* Zéro ou plusieurs répétitions de l'élément a.
a b Élément a suivi de l'élément b.
a | b Item a ou item b.
a & b Item a et/ou item b, dans n'importe quel ordre.

Contenu d'un fichier RTF

Un fichier RTF a la syntaxe suivante :

<;File> '{' <header> <document>'}'

Cette syntaxe est la syntaxe RTF standard ; tout lecteur RTF doit être capable d'interpréter correctement le RTF écrit selon cette syntaxe. Il convient de mentionner à nouveau que les lecteurs RTF ne sont pas obligés d'utiliser tous les mots de contrôle, mais ils doivent être capables d'ignorer sans danger les mots de contrôle inconnus (ou inutilisés) et ils doivent ignorer correctement les destinations marquées du symbole de contrôle \*. Il peut cependant y avoir des rédacteurs RTF générant du RTF n'étant pas conforme à cette syntaxe, et en tant que tels, les lecteurs RTF doivent être suffisamment robustes pour gérer certaines variations mineures. Néanmoins, si un rédacteur RTF génère du RTF conforme à cette spécification, alors tout lecteur RTF correct doit être capable de l'interpréter.

Entête

L'entête a la syntaxe suivante :

<header>
  \rtf <charset> \deff? <fonttbl> <filetbl>? <colortbl>? <stylesheet>? <listtables>? <revtbl>?

Chacune des différentes tables d'entête doit apparaître, si elles existent, dans l'ordre ci-dessus. Les propriétés du document peuvent apparaître avant et entre les tables d'entête. Une propriété doit être définie avant d'être référencée. Plus précisément :

Version RTF

Un fichier RTF entier est considéré comme un groupe et doit être entouré d'accolades. Le mot de contrôle \rtfN doit suivre l'accolade ouvrante. Le paramètre numérique N identifie la version principale de la spécification RTF utilisée. La norme RTF décrite dans cette note d'application, bien que intitulée version 1.5, continue de correspondre syntaxiquement à la version 1 de la spécification RTF. Par conséquent, le paramètre numérique N pour le mot de contrôle \rtf doit toujours être émis comme 1.

Ensemble de caractères

Après avoir spécifié la version RTF, vous devez déclarer l'ensemble de caractères utilisé dans ce document. Le mot de contrôle de l'ensemble de caractères doit précéder tout texte brut ou tout mot de contrôle de tableau. La spécification RTF prend actuellement en charge les ensembles de caractères suivants.

Mot de contrôle Ensemble de caractères
\ansi ANSI (par défaut)
\mac Apple Macintosh
\pc Page de codes 437 du IBM PC
\pca Page de codes IBM PC 850, utilisée par IBM Personal System/2 (non implémentée dans la version 1 de Microsoft Word pour OS/2)

RTF Unicode

Word 97 est une application partiellement compatible Unicode. Le texte est traité à l'aide du schéma de codage de caractères Unicode 16 bits. L'expression de ce texte au format RTF nécessite un nouveau mécanisme, car jusqu'à cette version (version 1.5), RTF ne traitait directement que les caractères 7 bits et les caractères 8 bits codés en hexadécimal. Le mécanisme Unicode décrit ici peut être appliqué à n'importe quelle destination RTF ou corps de texte.

Mot de contrôle Description
\ansicpgN Ce mot-clef représente la page de codes ANSI utilisée pour effectuer la conversion Unicode vers ANSI lors de l'écriture de texte RTF. N représente la page de codes en décimal. Il s'agit généralement de la page de codes ANSI par défaut de l'environnement d'exécution (par exemple \ansicpg1252 pour Windows aux États-Unis). Le lecteur peut utiliser la même page de codes ANSI pour reconvertir le texte ANSI en Unicode. Ce mot-clef doit être émis dans la section d'entête RTF juste après le mot-clef \ansi, \mac, \pc ou \pca.
\upr Ce mot clef représente une destination avec deux destinations intégrées, l'une représentée à l'aide d'Unicode et l'autre à l'aide d'ANSI. Ce mot clef fonctionne en conjonction avec le mot clef \ud pour assurer la compatibilité ascendante. La syntaxe générale est la suivante :

{\upr{keyword ansi_text}{\*\ud{keyword Unicode_text}}}

Notez que ce mot-clef-destination n'utilise pas le mot-clef \* ; cela oblige les anciens lecteurs RTF à reprendre la représentation ANSI et à abandonner celle Unicode.
\ud Il s'agit d'une destination représentée en Unicode. Le texte est représenté à l'aide d'un mélange de traduction ANSI et de l'utilisation de mots-clefs \uN pour représenter des caractères n'ayant pas d'équivalent ANSI exact.
\uN Ce mot-clef représente un caractère Unicode unique n'ayant pas de représentation ANSI équivalente basée sur la page de codes ANSI actuelle. N représente la valeur du caractère Unicode exprimée sous forme de nombre décimal. Ce mot-clef est immédiatement suivi par un ou plusieurs caractères équivalents dans la représentation ANSI. De cette façon, les anciens lecteurs ignoreront le mot-clef \uN et reprendront correctement la représentation ANSI. Lorsque ce mot-clef est rencontré, le lecteur doit ignorer les N caractères suivants, où N correspond à la dernière valeur \ucN rencontrée. Comme pour tous les mots-clefs RTF, un espace de fin de mot-clef peut être présent (avant les caractères ANSI) qui n'est pas compté dans les caractères à ignorer. Bien que cela ne soit pas susceptible de se produire (ou recommandé), un mot-clef \bin, son argument et les données binaires qui suivent sont considérés comme un seul caractère à des fins d'omission. Si un caractère délimiteur de portée RTF (c'est-à-dire une accolade ouvrante ou fermante) est rencontré lors de l'analyse des données pouvant être ignorées, les données pouvant être ignorées sont considérées comme terminées avant le délimiteur. Cela permet à un lecteur d'effectuer une récupération d'erreur rudimentaire. Pour inclure un délimiteur RTF dans des données pouvant être ignorées, il doit être représenté à l'aide du symbole de contrôle approprié (c'est-à-dire échappé avec une barre oblique inverse), comme dans le texte brut. Tout mot ou symbole de contrôle RTF est considéré comme un caractère unique aux fins du comptage des caractères pouvant être ignorés. Un rédacteur RTF, lorsqu'il rencontre un caractère Unicode sans caractère ANSI correspondant, doit générer \uN suivi de la meilleure représentation ANSI qu'il peut gérer. De plus, si le caractère Unicode se traduit par un flux de caractères ANSI avec un nombre d'octets différent du nombre d'octets de caractères Unicode actuel, il doit émettre le mot-clef \ucN avant le mot-clef \uN pour informer le lecteur du changement. Les mots de contrôle RTF acceptent généralement des nombres signés de 16 bits comme paramètres. Pour cette raison, les valeurs Unicode supérieures à 32767 doivent être exprimées sous forme de nombres négatifs.
\ucN Ce mot-clef représente le nombre d'octets correspondant à un caractère Unicode \uN donné. Ce mot-clef peut être utilisé à tout moment et les valeurs sont définies comme des propriétés de caractère. Autrement dit, un mot-clef \ucN s'applique uniquement au texte suivant le mot-clef et dans les mêmes accolades imbriquées (ou plus profondes). En quittant le groupe, la valeur \uc précédente est restaurée. Le lecteur doit conserver une pile de comptages vus et utiliser le plus récent pour ignorer le nombre approprié de caractères lorsqu'il rencontre un mot-clef \uN. En quittant un groupe RTF spécifiant une valeur \uc, le lecteur doit revenir à la valeur précédente. Une valeur par défaut de 1 doit être supposée si aucun mot-clef \uc n'a été vu dans les portées actuelles ou externes. Une pratique courante consiste à n'émettre aucune représentation ANSI pour les caractères Unicode dans un contexte de destination Unicode (c'est-à-dire à l'intérieur d'une destination \ud). En règle générale, la destination contiendra une séquence de contrôle \uc0. Il n'est pas nécessaire de réinitialiser le compteur en quittant la destination \ud, car les règles de portée garantissent que la valeur précédente est restaurée.

Texte du document

Le texte du document doit être émis sous forme de caractères ANSI. S'il y a des caractères Unicode n'ayant pas de caractères ANSI correspondants, ils doivent être générés à l'aide des mots-clefs \ucN et \uN.

Par exemple, le texte Lab[Gamma]Value (caractères Unicode 0x004c, 0x0061, 0x0062, 0x0393, 0x0056, 0x0061, 0x006c, 0x0075, 0x0065) doit être représenté comme suit (en supposant un \ucl précédent) :

Lab\u915Gvalue

Texte de destination

Le texte de destination est défini comme tout texte représenté dans une destination RTF. Un bon exemple est le nom du signet dans la destination \bkmkstart.

Toute destination contenant des caractères Unicode doit être émise sous forme de deux destinations dans une destination \upr pour garantir que les anciens lecteurs peuvent la lire correctement et qu'aucun codage de caractères Unicode n'est perdu lors de la lecture avec un nouveau lecteur.

Par exemple, un nom de signet Lab[Gamma]Value (caractères Unicode 0x004c, 0x0061, 0x0062, 0x0393, 0x0056, 0x0061, 0x006c, 0x0075, 0x0065) doit être représenté comme suit :

{\upr{\*\bkmkstart LabGValue}{\*\ud{\*\bkmkstart Lab\u915 Value}}}

La première sous-destination contient uniquement des caractères ANSI et est la représentation que verront les anciens lecteurs. La deuxième sous-destination est une destination \*\ud contenant une deuxième copie de la destination \bkmkstart. Cette copie peut contenir des caractères Unicode et est la représentation à laquelle les lecteurs connaissant Unicode doivent prêter attention, en ignorant la version ANSI uniquement.

Table des polices de caractères

Le mot de contrôle \fonttbl introduit le groupe de tables de polices de caractères. Des mots de contrôle \fN uniques définissent chaque police de caractères disponible dans le document et sont utilisés pour référencer cette police dans tout le document. Ce groupe a la syntaxe répertoriée dans le tableau suivant :

Mot de contrôle Groupe de tables de police de caractères
<fonttbl> '{' \fonttbl (<fontinfo> | ('{' <fontinfo> '}'))+ '}'
<fontinfo> <fontnum><fontfamily><fcharset>?<fprq>?<panose>?<nontaggedname>?<fontemb>?

<codepage>? <fontname><fontaltname>? ';'
<fontnum> \f
<fontfamily> \fnil | \froman | \fswiss | \fmodern | \fscript | \fdecor | \ftech | \fbidi
<fcharset> \fcharset
<fprq> \fprq
<panose> <data>
<nontaggedname> \*\fname
<fontname> #PCDATA
<fontaltname> '{\*' \falt #PCDATA '}'
<fontemb> '{\*' \fontemb <fonttype> <fontfname>? <data>? '}'
<fonttype> \ftnil | \fttruetype
<fontfname> '{\*' \fontfile <codepage>? #PCDATA '}'
<codepage> \cpg

Notez que pour <fontemb>, soit <fontfname> soit <data> doivent être présents, bien que les deux puissent être présents.

Toutes les polices de caractères disponibles pour le rédacteur RTF peuvent être incluses dans la table des polices de caractères, même si le document n'utilise pas toutes les polices de caractères.

Le RTF prend également en charge les familles de polices de caractères, de sorte que les applications peuvent tenter de choisir intelligemment les polices de caractères si la police de caractères exacte n'est pas présente sur le système de lecture. Le RTF utilise les mots de contrôle suivants pour décrire les différentes familles de polices de caractères.

Mot de contrôle Famille de police de caractères Exemples
\fnil Polices de caractères inconnues ou par défaut (par défaut)  
\froman Polices de caractères serif romaines à espacement proportionnel Times New Roman, Palatino
\fswiss Polices de caractères suisses sans serif à espacement proportionnel Arial
\fmodern Polices de caractères serif et sans serif à pas fixe Courier New, Pica
\fscript Polices de caractères scriptes Cursive
\fdecor Polices de caractères décoratives Old English, ITC Zapf Chancery
\ftech Polices de caractères techniques, symboliques et mathématiques Symbol
\fbidi Police de caractères arabe, hébraïque ou autre police de caractères bidirectionnelle Miriam

Si un fichier RTF utilise une police de caractères par défaut, le numéro de police de caractères par défaut est spécifié avec le mot de contrôle \deffN, qui doit précéder le groupe de table de polices de caractères. Le rédacteur RTF fournit le numéro de police de caractères par défaut utilisé dans la création du document comme paramètre numérique N. Le lecteur RTF traduit ensuite ce numéro via la table de polices de caractères en la police de caractères la plus similaire disponible sur le système du lecteur.

Les mots de contrôle suivants spécifient l'ensemble de caractères, le nom de police de caractères alternatif, la hauteur d'une police de caractères dans la table de polices de caractères et le nom de police de caractères non balisé.

Mot de contrôle Définition
\fcharsetN Spécifie l'ensemble de caractères d'une police de caractères dans la table des polices de caractères. Les valeurs pour N sont définies par les fichiers d'entête Windows et dans le fichier RTFDEFS.H.
\falt Indique le nom de police de caractères alternatif à utiliser si la police de caractères spécifiée dans la table des polices de caractères n'est pas disponible. '{\*' \falt <Nom de police alternatif>'}'
\fprqN Spécifie la hauteur d'une police de caractères dans la table des polices de caractères.
\*\panose  
\*\fname Il s'agit d'un mot de contrôle facultatif dans la table des polices de caractères pour définir le nom de police non balisé. Il s'agit du nom réel de la police de caractères sans la balise, utilisé pour indiquer quel ensemble de caractères est utilisé. Par exemple, Arial est un nom de police de caractères non balisé et Arial (cyrillique) est un nom de police de caractères balisé. Ce mot de contrôle est utilisé par WordPad. Word ignore ce mot de contrôle (et ne le crée jamais).
\fbiasN Utilisé pour arbitrer entre deux polices de caractères lorsqu'un caractère particulier peut exister dans une police de caractères autre que celle d'Extrême-Orient ou d'Extrême-Orient. Word 97 émet le mot-clef \fbiasN uniquement dans le contexte de puces ou d'informations de liste (c'est-à-dire une destination \listlevel). La valeur par défaut de 0 pour N indique une police de caractères autre que celle d'Extrême-Orient. Une valeur de 1 indique une police de caractères d'Extrême-Orient. Des valeurs supplémentaires pourront être définies dans les versions futures.

Si \fprq est spécifié, le paramètre N peut être l'une des valeurs suivantes :

Pas Valeur
Pas par défaut 0
Pas fixe 1
Pas variable 2

Incorporation de polices de caractères

Le RTF prend en charge les polices de caractères incorporées avec le groupe \fontemb situé à l'intérieur d'une définition de police de caractères. Une police de caractères incorporée peut être spécifiée par un nom de fichier, ou les données de police de caractères réelles peuvent être situées à l'intérieur du groupe. Si un nom de fichier est spécifié, il est contenu dans le groupe \fontfile. Le mot de contrôle \cpg peut être utilisé pour spécifier l'ensemble de caractères du nom de fichier.

Le RTF prend en charge TrueType et d'autres polices de caractères incorporées. Le type de police de caractères incorporée est décrit par les mots de contrôle suivants :

Mot de contrôle Type de police incorporée
\ftnil Type de police de caractères inconnu ou par défaut (par défaut)
\fttruetype Police de caractères TrueType

Prise en charge des pages de code

Une police de caractères peut avoir un ensemble de caractères différent de celui du document. Par exemple, la police de caractères Symbol possède les mêmes caractères aux mêmes positions sur Macintosh et Windows. Le RTF décrit cela avec le mot de contrôle \cpg, désignant l'ensemble de caractères utilisé par la police de caractères. De plus, les noms de fichiers (utilisés dans les instructions de champ et dans les polices de caractères intégrées) peuvent ne pas être nécessairement identiques au ensemble de caractères du document ; le mot de contrôle \cpg peut également modifier l'ensemble de caractères pour ces noms de fichiers. Cependant, tous les documents RTF doivent toujours déclarer un ensemble de caractères (c'est-à-dire \ansi, \mac, \pc ou \pca) pour maintenir la compatibilité avec les lecteurs RTF antérieurs.

Le tableau ci-dessous décrit les valeurs valides pour \cpg :

Valeur Description
437 États-Unis IBM
708 Arabe (ASMO 708)
709 Arabe (ASMO 449+, BCON V4)
710 Arabe (arabe transparent)
711 Arabe (Nafitha améliorée)
720 Arabe (ASMO transparent)
819 Windows 3.1 (États-Unis et Europe occidentale)
850 IBM multilingue
852 Europe de l'Est
860 Portugais
862 Hébreu
863 Français canadien
864 Arabe
865 Norvégien
866 Union soviétique
932 Japonais
1250 Windows 3.1 (Europe de l'Est)
1251 Windows 3.1 (cyrillique)

Table de fichiers

Le mot de contrôle \filetbl introduit la destination de la table de fichiers. La seule fois où une table de fichiers est créée au format RTF, c'est lorsque le document contient des sous-documents. Ce groupe définit les fichiers référencés dans le document et possède la syntaxe suivante :

Mot de contrôle Destination de la table de fichiers
<filetbl> '{\*' \filetbl ('{' <fileinfo> '}')+ '}'
<fileinfo> \file <filenum><relpath>?<osnum>? <filesource>+ <file name>
<filenum> \fid
<relpath> \frelative
<osnum> \fosnum
<filesource> \fvalidmac | \fvaliddos | \fvalidntfs | \fvalidhpfs | \fnetwork
<file name> #PCDATA

Notez que le nom du fichier peut être n'importe quelle chaîne alphanumérique valide pour le système de fichiers nommé, indiquant le chemin complet et le nom du fichier.

Mot de contrôle Définition
\filetbl Liste des documents référencés par le document actuel. La table des fichiers possède une structure analogue à la table des styles ou des polices. Il s'agit d'un mot de contrôle de destination affiché dans l'entête du document.
\file Marque le début d'un groupe de fichiers, répertoriant les informations pertinentes sur le fichier référencé. Il s'agit d'un mot de contrôle de destination.
\fidN Numéro d'identification du fichier.
\frelativeN La position du caractère dans le chemin (à partir de 0) où le chemin du fichier référencé commence à être relatif au chemin du document propriétaire. Par exemple, si un document est enregistré dans le chemin C:\Private\Resume\File1.doc et que sa table de fichiers contient le chemin C:\Private\Resume\Edu\File2.doc, alors cette entrée dans la table de fichiers sera \frelative18, pour pointer vers le caractère «e» dans «edu». Cela permet de préserver les chemins relatifs.
\fosnumN Actuellement, il n'est renseigné que pour les chemins d'accès du système de fichiers Macintosh. Il s'agit d'un numéro spécifique au système d'exploitation permettant d'identifier le fichier, pouvant être utilisé pour accélérer l'accès au fichier ou le retrouver si le fichier a été déplacé vers un autre dossier ou disque. Le nom du système d'exploitation Macintosh pour ce numéro est «identificateur de fichier». D'autres significations du mot de contrôle \fosnumN pourront être définies pour d'autres systèmes de fichiers à l'avenir.
\fvalidmac Système de fichiers Macintosh.
\fvaliddos Système de fichiers MS-DOS.
\fvalidntfs Système de fichiers NTFS.
\fvalidhpfs Système de fichiers HPFS.
\fnetwork Système de fichiers réseau. Ce mot de contrôle peut être utilisé conjointement avec l'un des mots de contrôle source de fichier précédents.

Table des couleurs

Le mot de contrôle \colortbl introduit le groupe de tables de couleurs, définissant les couleurs de l'écran, les couleurs des caractères et d'autres informations sur les couleurs. Ce groupe a la syntaxe suivante :

Mot de contrôle Groupe de tables de couleurs
<colortbl> '{' \colortbl <colordef>+ '}'
<colordef> \red ? & \green ? & \blue ? ';'

Les mots de contrôle suivants sont valides pour ce groupe :

Mot de contrôle Signification
\redN Index rouge
\greenN Index vert
\blueN Index bleu

Chaque définition doit être délimitée par un point-virgule, même si la définition est omise. Si une définition de couleur est omise, le lecteur RTF utilise sa couleur par défaut. L'exemple ci-dessous définit la table de couleurs par défaut utilisée par Word. La première couleur est omise, comme indiqué par le point-virgule suivant le mot de contrôle \colortbl. La définition manquante indique que la couleur 0 est la couleur «auto».

{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}

Les couleurs de premier plan et d'arrière-plan utilisent des index dans la table des couleurs pour définir une couleur.

L'exemple suivant définit un bloc de texte en couleur (si pris en charge). Notez que l'index cf/cb est l'index d'une entrée dans la table des couleurs, représentant une combinaison de couleurs rouge/vert/bleu.

{\f1\cb1\cf2 Il s'agit d'un texte en couleur. L'arrière-plan est de couleur 1
et le premier plan est de couleur 2. }

Si le fichier est traduit pour un logiciel n'affichant pas de couleur, le lecteur ignore le groupe de tables de couleurs.

Feuille de style

Le mot de contrôle \stylesheet introduit le groupe de feuilles de style, contenant les définitions et les descriptions des différents styles utilisés dans le document. Tous les styles de la feuille de style du document peuvent être inclus, même si tous les styles ne sont pas utilisés. Dans RTF, un style est une forme de raccourci utilisée pour spécifier un ensemble de mise en forme de caractères, de paragraphes ou de sections.

Le groupe de feuilles de style a la syntaxe suivante :

Mot de contrôle Groupe de feuilles de style
<stylesheet> '{' \stylesheet <style>+ '}'
<style> '{' <styledef>?<keycode>? <formatting> <additive>? <based>? <next>? <stylename>? ';' '}'
<styledef> \s |\*\cs | \ds
<keycode> '{' \keycode <keys> '}'
<additive> \additive
<based> \sbasedon
<next> \snext
<autoupd> \sautoupd
<hidden> \shidden
<formatting> (<brdrdef> | <parfmt> | <apoctl> | <tabdef> | <shading> | <chrfmt>)+
<stylename> #PCDATA
<keys> ( \shift? & \ctrl? & \alt?) <key>
<key> \fn | #PCDATA

Pour <style>, <styledef> et <stylename> sont tous deux facultatifs ; la valeur par défaut est le style de paragraphe 0. Notez que pour <stylename>, Microsoft Word pour Macintosh interprète les virgules dans #PCDATA comme des synonymes de style de séparation. De plus, pour <key>, les données doivent être constituées d'un seul caractère.

Mot de contrôle Signification
\*\csN Désigne le style de caractère. Comme \s, \cs n'est pas un mot de contrôle de destination. Cependant, il est important de le traiter comme tel dans la feuille de style ; c'est-à-dire que \cs doit être préfixé par \* et doit apparaître comme premier élément à l'intérieur d'un groupe. Cela permet de garantir que les lecteurs ne comprenant pas les styles de caractères ignoreront correctement les informations sur le style de caractère. Lorsqu'il est utilisé dans le corps du texte pour indiquer qu'un style de caractère a été appliqué, n'incluez pas le préfixe \*
\sN Désigne le style de paragraphe.
\dsN Désigne le style de section.
\additive Utilisé dans une définition de style de caractère ('{\*'\cs...'}'). Indique que les attributs de style de caractère doivent être ajoutés aux attributs de style de paragraphe actuels, plutôt que de définir les attributs de paragraphe uniquement sur ceux définis dans la définition de style de caractère.
\sbasedonN Définit le numéro du style sur lequel le style actuel est basé (la valeur par défaut est 222 - aucun style).
\snextN Définit le style suivant associé au style actuel ; s'il est omis, le style suivant est le style actuel.
\sautoupd Mettre à jour automatiquement les styles.
\shidden Le style n'apparaît pas dans la liste déroulante Styles de la boîte de dialogue Style.

(dans le menu Format, cliquez sur Styles).

Mot de contrôle Signification
\keycode Ce groupe est spécifié dans la description d'un style dans la feuille de style de l'en-tête RTF. La syntaxe de ce groupe est '{\*'\keycode <keys>'}' où <keys> sont les caractères utilisés dans le code de touche. Par exemple, un style, Normal, peut être défini {\s0 {\*\keycode \shift\ctrl n}Normal;} dans la feuille de style RTF.
\alt La touche de modification ALT. Utilisée pour décrire les codes de raccourcis clavier pour les styles.
\shift La touche de modification SHIFT. Utilisée pour décrire les codes de raccourcis clavier pour les styles.
\ctrl La touche de modification CTRL. Utilisée pour décrire les codes de raccourcis clavier pour les styles.
\fnN Spécifie une touche de fonction où N est le numéro de la touche de fonction. Utilisé pour décrire les codes de raccourcis clavier pour les styles.

Voici un exemple de feuille de style RTF :

{\stylesheet{\fs20 \sbasedon222\snext0{\*\keycode \shift\ctrl n}
Normal;}{\s1\qr \fs20 \sbasedon0\snext1 FLUSHRIGHT;}{\s2\fi-720\li720\fs20\ri2880\sbasedon0\snext2 IND;}}

et les paragraphes RTF auxquels les styles sont appliqués :

\widowctrl\ftnbj\ftnrestart \sectd \linex0\endnhere \pard\plain
\fs20 C'est un style normal.
\par \pard\plain \s1\qr\fs20

Ceci est justifié à droite. On appelle ce style FLUSHRIGHT.

\par \pard\plain \s2\fi-720\li720\fs20\ri2880

Il s'agit d'un paragraphe en retrait. On appelle ce style IND. Il produit :

un retrait suspendu.
\par}

Dans l'exemple, notez que les propriétés du style ont été émises après l'application du style. Cela a été fait pour deux raisons : (1) pour permettre aux lecteurs RTF ne prenant pas en charge les styles de conserver tout le formatage ; et (2) pour permettre le modèle additif pour les styles, où des modifications de propriétés supplémentaires sont «ajoutées» au-dessus du style défini. Certains lecteurs RTF peuvent ne pas «appliquer» un style en ne rencontrant que le numéro de style sans les informations de formatage qui l'accompagnent à cause de cela.

Tableau de liste

Word 97 entrepose les puces et les informations de numérotation très différemment des versions antérieures de Word. Dans Word 6.0, par exemple, les données de formatage des nombres sont stockées individuellement avec chaque paragraphe. Dans Word 97, cependant, toutes les informations de formatage sont entreposées dans une paire de tableaux de liste à l'échelle du document agissant comme une feuille de style, et chaque paragraphe individuel ne stocke qu'un index vers l'un des tableaux, comme un index de style.

Word contient deux tables de listes : la table Liste (destination \listtable) et la table Remplacement de liste (destination \listoverridetable).

La première table que Word entrepose est la table Liste. Une table Liste est une liste de listes (destination \list). Chaque liste contient un certain nombre de propriétés de liste se rapportant à la liste entière, ainsi qu'une liste de niveaux (destination \listlevel), chacun contenant des propriétés se rapportant uniquement à ce niveau.

Voici les propriétés de la liste de niveau supérieur :

Mot de contrôle Signification
\listidN Chaque liste doit avoir un identificateur de liste unique devant être généré de manière aléatoire. La valeur N est un entier long. L'identificateur de liste ne peut pas être compris entre -1 et -5.
\listtemplateidN Chaque liste doit également avoir un identifiant de modèle unique, qui doit également être généré de manière aléatoire. L'identifiant de modèle ne peut pas être -1. La valeur N est un entier long.
\listsimpleN 1 si la liste a un niveau ; 0 si la liste a neuf niveaux.
\listrestarthdnN 1 si la liste redémarre à chaque section ; 0 sinon. Utilisé uniquement pour la compatibilité avec Word 7.0.
\listname Le paramètre de \listname est une chaîne de caractères correspondant au nom de cette liste. Les noms permettent aux champs ListNum de spécifier la liste à laquelle ils appartiennent. Il s'agit d'un mot de contrôle de destination.

Niveaux de liste

Chaque liste se compose d'un ou de neuf niveaux de liste selon que l'indicateur \listsimple est défini ou non. Chaque niveau de liste contient un certain nombre de propriétés spécifiant le formatage de ce niveau, comme la valeur de départ, la chaîne de caractères de texte entourant le nombre, sa justification et ses retraits,... :

Mot de contrôle Signification
\levelstartatN N spécifie la valeur de départ pour le niveau.
\levelnfcN Spécifie le type de numéro pour le niveau :
Valeur Description
0 Arabe (1, 2, 3)
1 Chiffre romain majuscule (I, II, III)
2 Chiffre romain minuscule (i, ii, iii)
3 Lettre majuscule (A, B, C)
4 Lettre minuscule (a, b, c)
5 Nombre ordinal (1er, 2e, 3e)
6 Numéro de texte cardinal (Un, Deux, Trois,..)
7 Numéro de texte ordinal (premier, deuxième, troisième)
22 Arabe avec zéro non significatif (01, 02, 03, ..., 10, 11)
23 Puce (pas de numéro du tout)
255 Pas de numéro
\leveljcN Type de justification :
Valeur Description
0 Justifié à gauche
1 Justifié au centre
2 Justifié à droite
\leveloldN 1 si ce niveau a été converti à partir de Word 6.0 ou Word 7.0, 0 s'il s'agit d'un niveau natif de Word 97.
\levelprevN 1 si ce niveau inclut le texte du niveau précédent (utilisé uniquement pour la compatibilité avec Word 7.0) ; sinon, la valeur est 0. Ce mot-clef ne sera valide que si le mot-clef \leveloldN est émis.
\levelprevspaceN 1 si ce niveau inclut l'indentation du niveau précédent (utilisé uniquement pour la compatibilité avec Word 7.0) ; sinon, la valeur est 0. Ce mot-clef ne sera valide que si le mot-clef \leveloldN est émis.
\levelindentN Distance minimale entre le retrait gauche et le début du texte du paragraphe (utilisée uniquement pour la compatibilité avec Word 7.0). Ce mot-clef ne sera valide que si le mot-clef \leveloldN est émis.
\levelspaceN Distance minimale entre le bord droit du numéro et le début du texte du paragraphe (utilisée uniquement pour la compatibilité avec Word 7.0). Ce mot-clé ne sera valide que si le mot-clé \leveloldN est émis.
\leveltext L'argument de ce niveau doit être la chaîne de format numérique de ce niveau. Le premier caractère correspond à la longueur de la chaîne et tous les nombres contenus dans le niveau doivent être remplacés par l'index du niveau qu'ils représentent. Par exemple, un nombre de niveau trois tel que « 1.1.1. » génère le RTF suivant : « {\leveltext \'06\'00.\'01.\'02.} » où « 06 » correspond à la longueur de la chaîne, « \'00, \'01 et \'02 sont les espaces réservés au niveau et les points sont le texte environnant. Il s'agit d'un mot de contrôle de destination.
\levelnumbers Le paramètre de cette destination doit être une chaîne de caractères donnant les déplacements dans le \leveltext des espaces réservés au niveau. Dans l'exemple ci-dessus, le RTF \levelnumbers doit être :

{\levelnumbers \'01\'03\'05}


car les espaces réservés aux niveaux ont les indices 1, 3 et 5. Il s'agit d'un mot de contrôle de destination.
\levelfollowN Spécifie quel caractère suit le texte du niveau :
Valeur Description
0 Tabulation
1 Espace
2 Rein
\levellegalN 1 si des numéros de liste des niveaux précédents doivent être convertis en nombres arabes ; 0 s'ils doivent être laissés avec le format spécifié par la définition de leur propre niveau.
\levelnorestartN 1 si ce niveau ne redémarre pas son décompte à chaque fois qu'un nombre d'un niveau supérieur est atteint, 0 si ce niveau redémarre son décompte à chaque fois qu'un nombre d'un niveau supérieur est atteint.

Bibliothèques et classes

Il existe des bibliothèques ou des classes existante pour manipuler le format RTF. Voici quelles classes ou bibliothèques en fonction des langages de programmation :

Langage Bibliothèque, classe,...
C# RichTextBox
Java javax.swing.text.rtf
Turbo Pascal RTFLIB-TP

Code source

Voici des exemples de code source d'utilitaires pour manipuler les .RTF :

Lien Langage de programmation Description Projet Syntaxe
RTF2TXT.PAS Free Pascal, Turbo Pascal Cette commande permet de convertir un fichier RTF en format TXT. Corail RTF2TXT
TXT2RTF.PAS Free Pascal, Turbo Pascal Cette commande permet de convertir un fichier TXT en format RTF. Corail TXT2RTF


Dernière mise à jour : Mercredi, le 2 octobre 2024