Texte brut
Le texte brut, ou pur ou simple, traduction de l'anglais plain text[1], est une notion liée à la représentation du texte utilisée entre dispositifs électroniques.
Texte brut Unicode (Unicode plain text)
La notion de fichier texte se rapproche des propriétés que le standard Unicode attribue au format nommé plain text en langue anglaise et signifiant texte brut :
- le texte brut représente le contenu basique et échangeable et inter-opérable du texte ;
- le texte brut représente seulement les caractères contenus, sans leur apparence (ceci signifie que seule une numérotation des caractères est utilisée, la police de caractères étant fournie par un mécanisme indépendant) ;
- le texte brut peut être affiché de diverses façons et nécessite un processus de rendu pour le rendre visible ;
- si la séquence de texte brut est donnée à des processus de rendu divers rien ne garantit que le texte aura la même apparence (la police de caractères ou la couleur par exemple peuvent varier) ;
- les différents processus de rendu du texte doivent rendre le code lisible dans une intention de lecture (ceci revient à éviter le problème des mojibake) ;
- la contrainte de lisibilité contraint les apparences possibles ;
- le standard Unicode définit le texte brut ;
- la distinction entre le texte brut et d'autres formats de données dans le même flux est du ressort de protocoles supérieurs et n'est pas spécifié par le standard Unicode lui-même.
Généralités et controverses
On peut trouver du texte brut, par exemple, dans un fichier ou dans un courriel.
La notion de texte brut (plain text) a comme la notion de texte enrichi (fancy text) été introduite par Unicode[1].
Linux Information Project en donne une vision plus restrictive dans laquelle seuls les 96 caractères américains de l'ASCII peuvent faire partie du texte brut, la limite à la seule langue anglaise excluant de ce fait les caractères accentués des langues étrangères[2].
En pratique, on peut avoir généralement à préciser, d'une manière ou d'une autre, le répertoire de caractères ou l'encodage associé à un format texte brut. En anglais, on peut donc dire plain ASCII text ou plain UTF-8 text. En français on dira plus facilement texte brut UTF-8 ou texte brut ISO-8859-1 pour du texte en français, ou texte brut ASCII dans des contextes en langue anglaise ou protocolaires. En effet, si l'encodage est inconnu, un texte brut quelconque est inexploitable.
Histoire
La notion de texte brut est implicitement assez ancienne puisque vraisemblablement elle remonte au moins, si ce n'est à la notion de machine à écrire, aux premiers langages de programmation utilisant cette technologie.
Dès 1958 et 1961, le fait de concevoir des programmes en Algol n'a vraisemblablement pas pu être réalisé sans avoir recours à la notion de texte brut, tout comme le langage DEL en 1969 (RFC 5[3]).
Le , la RFC 680[4] fait déjà référence à la notion de texte brut, sans pour autant le définir.
Le , un effort de la DARPA aboutit à la RFC 733[5], Standard for the Format of Arpa Network Text Messages, qui définit un standard de protocole pour les messages texte.
Le 13 aout 1982, la RFC 822[6], Standard for the Format of Arpa Network Internet Messages définit un format de texte brut particulier, limité aux seuls caractères de l'ASCII, en en excluant certains des caractères de contrôle et en introduisant des séquences d'échappement multi-octet (quoted printable).
En , la RFC 1951[7] introduit la notion de texte brut (plain text)[8].
La notion de texte brut est par la suite clarifiée par d'autres RFC, notamment en 1999.
La notion de texte brut a également été clarifiée par le standard Unicode entre 1992 et 2012.
Protocoles
L'usage du texte brut peut varier entre protocole et fichier. Le protocole spécifie généralement l'encodage utilisé et selon le protocole la longueur du texte peut ne pas être limitée.
Fichier texte
Un fichier a généralement une taille limitée, alors qu'un protocole peut transférer un flot de données virtuellement infini. Il est généralement admis qu'un système de fichier ne fournit pas d'information sur l'encodage utilisé pour encoder un texte brut donné. Cette information essentielle est alors déterminée à travers un ensemble d'heuristiques.
Texte brut dans un courriel
La notion de standardisation du texte brut dans les courriel est abordée par la RFC 2646[9], The Text/Plain Format Parameter, de 1999 et la RFC 3676[10], The Text/Plain Format and DelSp Parameters.
La notion de texte brut est également abordée dans la RFC 2046[11]. Cette RFC précise que la notion de texte brut s'accompagne de la définition d'un encodage des caractères. Toutefois, il se peut que cette RFC ne traite que des problématiques de longueur des lignes, sans définir exactement ce qu'est le texte brut.
Évolutions et perspectives
Balisage
La RFC 2482[12], Language Tagging in Unicode Plain Text, discute des perspectives de balisages du texte brut Unicode[13].
Texte brut approché en mathématiques
La note technique 28 de l'Unicode traite de la problématique de la représentation des symboles mathématiques sous forme de texte brut approché et aborde des notions techniques dépassant les limites de la définition du texte brut[14].
Alors que les mathématiques sont un langage international, en tout ou partie, leur représentation informatique a pu être négligée lors de la création de différents systèmes de codage des caractères. Toutefois, ces symboles ont bénéficié d'une forte prise en charge par l'Unicode [15], à partir de la version 3 et de l'an 2000[16].
Les mathématiques posent la question de l'expression non linéaire, c'est-à-dire des expressions pouvant nécessiter un format particulier dans l'espace de la page, comme les fractions ou les matrices. Des systèmes de codage comme ISO/CEI 8859-1 et Windows 1252 se limitaient à des caractères limités relatifs aux quarts et à leur multiples (¼, ½, ¾). Ceci a conduit les scientifiques à utiliser des outils tels que LaTeX ou MathML.
Unicode permet d'exprimer de nombreuses expressions mathématiques avec du texte pratiquement brut et lisible. D'un point de vue technique ce format serait légèrement formaté par des balises, éventuellement. Ce format est un format linéaire mais peut aussi être affiché sous forme formatée éventuellement. Dans la note Unicode Nearly Plain-Text Encoding of Mathematics Version 3[17], ces deux variantes sont nommées linear format (format linéaire), pour un affichage sous forme de texte brut, et built-up presentation format (format visuel) pour un affichage bénéficiant d'un affichage complexe.
Exemple de programmation de formules mathématiques en C++ en texte brut ASCII :
1 void IHBMWM(void) 2 { 3 gammap = gamma * sqrt(1 + I2); 4 upsilon = cmplx(gamma + gamma1, Delta); 5 alphainc = alpha0 * (1 - (gamma * gamma * I2/gammap)/(gammap + upsilon)); 6 if (!gamma1 && fabs(Delta * T1) < 0.01) 7 alphacoh = -half * alpha0 * I2 * pow(gamma/gammap, 3); 8 else 9 { 10 Gamma = 1/T1 + gamma1; 11 I2sF = (I2/T1)/cmplx(Gamma, Delta); 12 betap2 = upsilon * (upsilon + gamma * I2sF); 13 beta = sqrt(betap2); 14 alphacoh = 0.5 * gamma * alpha0 * (I2sF * (gamma + upsilon)/(gammap * gammap - betap2)) 15 * ((1 + gamma/beta) * (beta - upsilon)/(beta + upsilon) 16 - (1 + gamma/gammap) * (gammap - upsilon)/(gammap + upsilon)); 17 } 18 alpha1 = alphainc + alphacoh; 19 }
et en texte brut Unicode en format linéaire :
1 void IHBMWM(void) 2 { 3 γ’ = γ • √(1 + I_2); 4 υ = γ + γ_1 + i • Δ; 5 α_inc = α_0 • (1 − (γ • γ • I_2/γ’)/(γ’ + υ)); 6 if (!γ_1 || fabs(Δ • T1 ) < 0.01) 7 α_coh = −0.5 • α0 • I2 • pow(γ/γ’, 3); 8 else 9 { 10 Γ = 1/T_1 + γ_1; 11 I_2sF = (I_2/T_1)/(Γ + i • Δ); 12 β’_2 = υ • (υ + γ • I_2sF); 13 β = √β’_2; 14 α_coh = 0.5 • γ • α0 • (I_2sF • (γ + υ)/(γ’ • γ’ − β’_2)) 15 • ((1 + γ/β) • (β − υ)/(β + υ) 16 − (1 + γ/γ’) • (γ’ − υ)/(γ’ + υ)); 17 } 18 α_1 = α_inc + α_coh; 19 }
Le format linéaire Unicode affiche les indices sous forme d'indices, tandis que le format visuel Unicode afficherait également les fractions sous forme de fractions.
Notes et références
- http://www.cairn.info/article.php?ID_ARTICLE=DN_063_0013&DocId=43450&Index=%2Fcairn2Idx%2Fcairn&TypeID=226&BAL=ancgQnI99ifLI&HitCount=9&hits=31af+2d8e+2a02+1b0e+1989+11e3+942+90b+25a+0&fileext=html
- « What is plain text? -- introduction by The Linux Information Project (LINFO) », sur linfo.org (consulté le ).
- (en) « DEL », Request for comments no 5, .
- (en) « Message Transmission Protocol », Request for comments no 680, .
- (en) « STANDARD FOR THE FORMAT OF ARPA NETWORK TEXT MESSAGES(1) », Request for comments no 733, .
- (en) « STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES », Request for comments no 822, .
- (en) « DEFLATE Compressed Data Format Specification version 1.3 », Request for comments no 1951, .
- RFC 1521 Network Working Group
- (en) « The Text/Plain Format Parameter », Request for comments no 2646, .
- (en) « The Text/Plain Format and DelSp Parameters », Request for comments no 3676, .
- (en) « Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types », Request for comments no 2046, .
- (en) « Language Tagging in Unicode Plain Text », Request for comments no 2482, .
- Language Tagging in Unicode Plain Text : Request for Comments: 2482,
- Murray Sargent III (Version 3), Unicode Nearly Plain-Text Encoding of Mathematics, (présentation en ligne, lire en ligne) Dernière Version: http://unicode.org/notes/tn28/
-
Barbara Beeton, Asmus Freytag, Murray Sargent III, Unicode Technical Report
- 25 “Unicode Support for Mathematics”, https://www.unicode.org/reports/tr25
- http://www.cairn.info/revue-document-numerique-2002-3-page-51.htm
- Murray Sargent III, Plain-Text Encoding of Mathematics, Publisher Text Services, Microsoft Corporation, , Version 3 éd.
Voir aussi
Articles connexes
- Texte enrichi
- Fichier texte
- ASCII
- Unicode