modélisation du texte numérique multilingue : vers des modèles
Transcription
modélisation du texte numérique multilingue : vers des modèles
MODÉLISATION DU TEXTE NUMÉRIQUE MULTILINGUE : VERS DES MODÈLES GÉNÉRAUX ET EXTENSIBLES FONDÉS SUR LE CONCEPT DE TEXTÈME GÁBOR BELLA TELECOM BRETAGNE, JUIN 2008 RÉSUMÉ Cette thèse s’intéresse aux modèles de texte numériques, plus précisément à la définition même des éléments textuels atomiques et à la manière dont le texte se compose à partir de ceux-ci. En réponse aux besoins d’internationalisation des systèmes informatiques, les modèles de texte historiques, basés sur l’idée de la table de codage, ont été enrichis par des connaissances semiformelles liées aux systèmes d’écriture, connaissances qui sont désormais essentielles pour l’exécution de la moindre opération textuelle. Ainsi sont nés le codage de caractères Unicode et les formats de fonte dits « intelligents ». Par la réalisation que cet enrichissement ne représente que le début d’une convergence vers des modèles fondés sur des principes de la représentation des connaissances, nous proposons une approche alternative à la modélisation de texte, selon laquelle l’élément textuel se définit non comme une entrée d’une table mais par les propriétés qui le décrivent. Le formalisme que nous établissons — initialement développé dans le cadre de la représentation des connaissances — nous fournit une méthodologie pour définir, pour la première fois de manière précise, des notions telles que caractère, glyphe ou usage, mais aussi de concevoir l’élément textuel généralisé que nous appelons textème et qui devient l’atome d’une famille de nouveaux modèles de texte. L’étude de ces modèles nous amène ensuite à comprendre et à formaliser, du moins en partie, des phénomènes tels que la contextualité ou la dépendance entre éléments textuels, phénomènes qui sont également présents, même si parfois de manière cachée, dans les modèles actuels. Dans la thèse nous analysons également les enjeux liés à l’implémentation des modèles proposés. MOTS CLÉS : modèle de texte, représentation des connaissances, Unicode, document numérique, typographie ABSTRACT This thesis is concerned with the modelling of electronic text. This modelling involves the definition both of the atomic text elements and of the way these elements join together to form textual structures. In response to the growing need for internationalisation of information systems, historical models of text, based on the concept of code tables, have been extended by semi-formalised knowledge related to the writing system so that, by now, such knowledge is essential to text processing of even the simplest kind. Thus were born the Unicode character encoding and the so-called ‘intelligent’ font formats. Realising that this phenomenon marks only the beginning of a convergence towards models based on the principles of knowledge representation, we here propose an alternative approach to text modelling that defines a text element not as a table entry but through the properties that describe the element. The formal framework that we establish, initially developed for the purposes of knowledge representation, provides us with a method by which precise formal definitions can be given to much-used but ill-defined notions such as character, glyph, or usage. The same framework allows us to define a generalised text element that we call a texteme, the atomic element on which a whole family of new text models is based. The study of these models then leads us to the understanding and formalising, at least partially, of phenomena such as contextuality and dependency between text elements; such phenomena are also present, although sometimes in a hidden way, in current text models. This thesis also examines implementational issues related to the proposed text models. KEYWORDS: text model, knowledge representation, Unicode, electronic document, typography REMERCIEMENTS En premier, j’exprime ma gratitude envers John Plaice et Chris Rowley pour avoir accepté d’être rapporteurs de ma thèse, compte tenu de l’effort considérable qu’ils doivent entreprendre pour arriver jusqu’à Brest depuis l’Australie et le Royaume-Uni pour participer au jury de ma soutenance. Je remercie également Isabelle Garron et Jacques André pour avoir accepté d’être membres de mon jury. Parmi les personnes avec qui j’ai eu l’honneur de travailler pendant la préparation de ma thèse, je tiens à tout d’abord mentionner Yannis Haralambous : c’est lui qui m’a incité à m’essayer à la recherche scientifique et qui m’a initié à la typographie numérique — dont sa maîtrise est inégalée. Je lui dois ma gratitude pour m’avoir fait confiance dès le début et tout au long de ma thèse. Yannis est à l’origine de plusieurs idées importantes dans mon travail, et il a contribué à bien d’autres à travers des discussions enrichissantes (et longues), des emails nocturnes, etc. : sa patience et son esprit pédagogique doivent aussi être applaudis. J’exprime également ma gratitude envers Ioannis Kanellos, mon directeur de thèse qui, avec sa « main invisible », n’a cessé de guider mon travail de recherche dans la bonne direction. Avant tout, il m’a montré l’importance de prendre du recul par rapport à mon travail, de savoir reconnaître le motif général derrière les problèmes particuliers, de voir la forêt à travers les arbres. Grâce à ses critiques constructives et à son attitude encourageante, j’ai pu améliorer ma thèse considérablement. Je tiens à remercier Serge Garlatti, directeur d’études au département Informatique de TELECOM Bretagne, de m’avoir apporté des éclaircissements essentiels au sujet des ontologies, et de m’avoir suggéré quelques idées excellentes qui ont fini par trouver leur chemin dans ce manuscrit. Sur un plan non-scientifique, Annie Gravey, chef du département Informatique, m’a donné énormément d’aide au long de ma thèse, aussi bien financièrement que personnellement ; je serais heureux d’être dirigé, dans l’avenir, par des chefs avec les mêmes qualités humaines. Je dois également mentionner Agnès Letourneur du service FC, que je remercie pour quatre ans de collaboration agréable, ainsi que pour sa confiance et pour son soutien qui ont été importants pour le financement de ma thèse. Sur le plan personnel, ma gratitude la plus grande appartient à mes chers parents. Sans leur support inconditionnel, je n’aurais pu aller jusqu’au bout cette thèse, ni faire durer mon séjour en France pendant toutes ces années. pour m’avoir donné la joie de vivre, à tous mes amis dont Merci à l’amitié m’était si importante, et aussi à mes camarades doctorants au département et à l’école avec qui j’ai partagé tant de repas, de cafés et de discussions. Je dédie cette thèse à la mémoire de mon cousin, Bella Péter. Brest, 23 janvier 2008. TABLE DES MATIÈRES INTRODUCTION 11 1 MODÈLES DE TEXTE 1.1 Concepts de base . . . . . . . . . . . . . . . . . . . . . . 1.2 L’origine de l’écrit et son développement . . . . . . . . . 1.3 L’écrit imprimé . . . . . . . . . . . . . . . . . . . . . . . 1.4 Les premiers modèles informatiques de l’écrit . . . . . . . 1.4.1 Les notions de caractère et de codage . . . . . . . 1.4.2 Une tentative de formalisation de la notion de caractère et du texte informatique . . . . . . . 1.4.3 L’extensionnalité de la définition précédente . . . 1.4.4 Les premiers modèles visuels . . . . . . . . . . . . 1.5 L’évolution de la fonte ou l’émancipation du glyphe . . . 1.5.1 TEX . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.2 Le langage et les fontes PostScript, la notion de nommage de glyphes . . . . . . . . . 1.6 L’aspect multilingue du texte informatique . . . . . . . . . 1.6.1 Codages de caractères nationaux . . . . . . . . . . 1.6.2 Typographie et traitement des écritures non-alphabétiques . . . . . . . . . . . . . . . . . 1.7 Le document interactif et le Web . . . . . . . . . . . . . . 1.7.1 Le format de document RTF . . . . . . . . . . . . 1.7.2 HTML et le Web . . . . . . . . . . . . . . . . . . 1.7.3 PDF . . . . . . . . . . . . . . . . . . . . . . . . . 1.7.4 SVG . . . . . . . . . . . . . . . . . . . . . . . . . 1.8 Le codage de caractères Unicode . . . . . . . . . . . . . 1.8.1 Les problèmes ayant mené à la création d’Unicode 1.8.2 Les principes fondamentaux d’Unicode . . . . . . 1.8.3 Universalité . . . . . . . . . . . . . . . . . . . . . 1.8.4 Caractères et non glyphes . . . . . . . . . . . . . 1.8.5 Cohérence théorique contre usages pratiques . . . 1.8.6 La base de données d’Unicode . . . . . . . . . . . 1.8.7 Une tentative de renforcement théorique : le rapport technique ISO/IEC TR 15285:1998 . . . 1.8.8 Le principe (ou le mythe) de texte brut . . . . . . . 1.8.9 Résumé des problèmes théoriques liés aux principes d’Unicode . . . . . . . . . . . . 1.9 La notion de « propriété » dans les formats de fonte intelligents . . . . . . . . . . . . 1.9.1 Le modèle de texte commun aux différents formats intelligents . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . 17 17 18 20 23 24 . . . . . . . . . . . . . . . 26 28 29 30 31 . . . 38 . . . 43 . . . 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 52 53 53 54 56 58 58 59 59 60 66 68 . . . 70 . . . 73 . . . 78 . . . 80 . . . 81 1.9.2 Propriétés dans les différents formats de fonte et plates-formes de composition . . . . . . . . . . . . . 84 1.9.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 87 1.10 Synthèse : l’évolution de la modélisation du texte informatique 88 2 PROPOSITION D’UN CADRE DE MODÉLISATION DE TEXTE INTENSIONNEL 91 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.1.1 Les notions de concept, de propriété, d’extension et d’intension selon Frege et Russell . . . . . . . . . . . 93 2.1.2 Modèles cognitifs basés sur la notion de « théorie » . . . 95 2.2 Application de la représentation des connaissances à la modélisation textuelle . . . . . . . . . . . . . . . . . . . . 99 2.2.1 Les propriétés : éléments de T1 . . . . . . . . . . . . . . 100 2.2.2 Les clés de propriété : éléments de T2 . . . . . . . . . . 101 2.2.3 Les catégories de clés : éléments de T3 . . . . . . . . . 102 2.2.4 Le caractère Unicode, le glyphe et le signe typographique en tant qu’éléments de T3 . . . . . . . . 105 2.3 Le textème : élément textuel généralisé . . . . . . . . . . . . . 106 2.3.1 Définition formelle du textème . . . . . . . . . . . . . . 108 2.4 Conséquences du modèle . . . . . . . . . . . . . . . . . . . . 109 2.4.1 L’intensionnalité de l’ensemble des propriétés . . . . . . 109 2.4.2 L’œuf et la poule : la clé et la valeur de propriété, sont-elles également du texte ? . . . . . . . . . . . . . . 110 2.4.3 Changements d’usage . . . . . . . . . . . . . . . . . . . 111 2.4.4 Relations entre propriétés et textèmes dérivées de leurs extensions et intensions . . . . . . . . 111 2.4.5 La structure du texte en textèmes . . . . . . . . . . . . . 114 2.4.6 Pertinence vis-à-vis des écritures du monde . . . . . . . 115 2.4.7 Le textème permet l’invention d’usages novateurs . . . . 120 2.5 Le rôle du contexte dans la représentation textuelle . . . . . . . . . . . . . . . . . . 128 2.5.1 Les différents aspects contextuels du texte numérique . . . . . . . . . . . . . . . . . . . . 129 2.5.2 Le contexte macroscopique . . . . . . . . . . . . . . . 130 2.6 Le contexte d’usage . . . . . . . . . . . . . . . . . . . . . . . . 134 2.6.1 Le changement de contexte d’usage . . . . . . . . . . . 137 2.6.2 Changements d’unité pertinente . . . . . . . . . . . . . 139 2.6.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . 144 2.7 Dépendances au sein du texte en textèmes . . . . . . . . . . . 145 2.7.1 Quelques exemples de dépendances . . . . . . . . . . 145 2.7.2 Dépendances dans les modèles de texte d’Unicode et de M-text . . . . . . . . . . . . . . . . . . 147 2.7.3 Dépendances et représentation des connaissances . . . 148 2.7.4 Quelques questions fondamentales . . . . . . . . . . . 149 2.7.5 Définitions et analyse théorique de la notion de dépendance . . . . . . . . . . . . . . . . . . . . . . 150 2.7.6 La dépendance algorithmique doit trouver sa place dans le cadre formel de modélisation . . . . . 156 8 2.7.7 La gestion des dépendances . . . . . . . . . . . . . . . 159 2.7.8 Méthodes pratiques de gestion de dépendances . . . . 162 2.7.9 Synthèse de l’analyse des dépendances et des solutions proposées . . . . . . . . . . . . . . . . . . . . . . . . . 167 3 RÉALISATIONS INFORMATIQUES DE MODÈLES DE TEXTE EN TEXTÈMES 3.1 L’applicabilité du modèle aux systèmes existants . . . . . . . . 3.2 Implémentation du modèle de textèmes dans le logiciel Ω2 . . 3.2.1 Le nœud de textème dans Ω2 . . . . . . . . . . . . . . 3.2.2 La gestion des dépendances dans Ω2 . . . . . . . . . . 3.2.3 Modules et textèmes . . . . . . . . . . . . . . . . . . . 3.2.4 Textèmes dans la sortie d’Ω2 . . . . . . . . . . . . . . . 3.2.5 Optimisations de la gestion des textèmes dans Ω2 . . . 3.3 Documents en textèmes . . . . . . . . . . . . . . . . . . . . . 3.3.1 Un cadre de normalisation des propriétés à travers une description basée sur RDF et OWL . . . . 3.3.2 Optimisations au sein des documents en textèmes . . . 3.4 Le modèle de textèmes en tant que modèle de texte générique . 3.4.1 Opérations élémentaires de manipulation de texte . . . 3.4.2 La compatibilité de la chaîne de textèmes et de la chaîne de caractères . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Un codage de signes intensionnel à la base du modèle de texte générique . . . . . . . . . 3.4.4 Utilisation du codage de signes avec le modèle de texte en textèmes . . . . . . . . . . . 3.4.5 Relations de composition entre signes . . . . . . . . . . 3.4.6 Structures de données et optimisations dans l’implémentation d’un modèle de texte générique 3.4.7 Calcul de l’extension commune d’un textème . . . . . . 3.4.8 Calcul de l’égalité et de la dépendance extensionnelles entre textèmes et signes . . . . . . . . . 3.4.9 Recherche de relations de spécialisation ou de généralisation entre un textème donné et les éléments du codage de signes . . . . . . . . . . . 3.4.10 Conclusions sur l’utilisabilité pratique d’un codage de signes intensionnel . . . . . . . . . . . 169 170 171 172 173 173 174 174 176 4 CONCLUSIONS ET PERSPECTIVES 4.1 Résumé des résultats . . . . . . . . . . . . . . . . . . . . . . . 4.2 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Perspectives d’usage et d’évolution pour les modèles de texte intensionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Les aspects interface homme-machine des modèles de texte en textèmes . . . . . . . . . . . . 4.3.2 Modèle de texte intensionnels sans textèmes . . . . . . 215 215 219 BIBLIOGRAPHIE 225 A LISTE 231 DE PUBLICATIONS 9 177 183 188 189 191 200 203 205 205 208 209 211 213 222 222 224 10 INTRODUCTION Le sujet de cette thèse est la modélisation informatique de données textuelles. Le mot texte, dans son sens général, n’est pas un terme précis : il peut tout autant désigner le contenu d’un livre qu’un seul mot, une lettre manuscrite, un document numérique, etc. Les propriétés qui caractérisent ces différentes formes de l’écrit (le support, les propriétés graphiques, le système d’écriture, la longueur, etc.) sont, bien entendu, tout aussi variées. Dans cette thèse, nous chercherons à établir notre définition du texte autour d’une de ses propriétés invariantes, à savoir qu’il s’agit, dans une première approximation, d’une suite de signes élémentaires. Par modélisation nous entendons la conceptualisation de certains aspects de l’écrit dans le but de mise en œuvre à travers une technologie particulière. L’acte de modélisation consiste tout d’abord à choisir parmi les propriétés qui peuvent caractériser une écriture celles qui sont pertinentes par rapport à l’usage ou aux usages visé(s) par le modèle. L’étape suivante est celle de la conceptualisation — nous aurions pu également employer les termes formalisation ou abstraction — des propriétés choisies, afin d’établir les éléments constitutifs et les structures de base du modèle. Ces éléments et structures conceptuels sont ensuite réalisés par l’intermédiaire d’une technologie donnée, compte tenu de contraintes matérielles et d’ingénierie. Il serait cependant illusoire, justement à cause des contraintes mentionnées, d’imaginer la modélisation comme un processus linéaire. Les limitations technologiques ont, hélas, un effet déterminant sur la conceptualisation d’éléments et de structures et limitent également les usages possibles du modèle à construire. En effet, dans l’histoire, l’invention de nouveaux modèles et concepts est souvent indissociable des avancées technologiques qui ouvrent la voie à leur mise en œuvre. L’exemple le plus classique de la modélisation de l’écrit est sans doute celui qui découle de l’invention de l’imprimerie de Gutenberg. L’usage que Gutenberg visait était la reproduction des ouvrages religieux calligraphiés de son époque, avec la plus grande fidélité possible. Le choix des éléments conceptuels de son modèle — que l’on appelle aujourd’hui glyphes — était par conséquent subordonné à l’atteinte de son objectif, un usage à forte orientation visuelle (cf. l’illustration en page 22). Cependant, la conception du modèle ne peut très probablement pas être dissociée du perfectionnement de certaines techniques de ciselure, d’alliage de métaux et de composition de nouveaux types d’encres, dont la maîtrise par Gutenberg était non seulement nécessaire pour la mise à point de la machinerie qu’il a inventée, mais peut-être aussi le catalyseur de ses idées initiales. Le modèle qui découle des travaux de Gutenberg — et qui a subi un développement continuel à travers les siècles qui ont suivi son invention — a eu une profonde influence sur l’évolution de la société occidentale toute en11 tière. Cette influence, qui ne peut être surestimée, a été mise en évidence par de nombreux auteurs, dont le plus connu est sans doute Marshall McLuhan [47]. En parallèle, les nouveaux usages et technologies de création et de transmission de texte (le télégraphe, la machine à écrire, etc.) ont fait apparaître de nouveaux modèles, où l’on observe toujours et encore la détermination mutuelle entre modèle abstrait et technologie de réalisation. Quant à l’ordinateur, il n’a pas fallu longtemps avant que le traitement de l’information textuelle ne devienne une de ses tâches principales. Tout au long de son évolution en puissance, les usages de l’ordinateur n’ont cessé de se multiplier et de se diversifier, y compris les usages textuels. Les premiers codages de caractères à six ou sept bits des années 1950 et 1960 — qui représentent également une modélisation particulière de l’écrit, notamment celle basée sur la table de codage qui n’est autre qu’une simple énumération d’éléments textuels atomiques identifiés par des codes numériques — ont augmenté en taille (à huit bits et au-delà) et se sont diversifiés au fil des années. Cependant, à partir de la fin des années 1980, le développement des exigences vis-à-vis de la représentation numérique du texte — les exigences visuelles induites par la PAO, le multilinguisme induit par l’internationalisation ou l’interactivité induite par l’échange de documents, notamment à travers Internet — ont atteint un point où une évolution purement quantitative du modèle n’était plus suffisante. Pour la première fois dans l’histoire, on a tenté de créer un nouveau modèle de texte qui soit universel, c’est-à-dire qui couvre la totalité des écritures du monde. La diversité de celles-ci était cependant si importante que la recherche d’un modèle commun n’était pas possible sans davantage de réflexion analytique, sans se demander ce que l’on entend, enfin, par écriture ou caractère ? Le résultat de ces réflexions, mais aussi de nombreux compromis, a été le codage de caractères Unicode et un modèle de texte à deux strates que nous appellerons caractère-glyphe, où le choix entre caractère ou glyphe comme unité textuelle de base est fait selon l’usage du texte en question : l’échange, la manipulation interne et le stockage d’un texte supposent le plus souvent que celui-ci est représenté sous la forme de chaînes de caractères, alors que l’affichage du texte s’effectue à travers un modèle visuel dont l’unité textuelle n’est pas le caractère mais l’image de celui-ci, le glyphe. À part les tendances unificatrices d’Unicode et l’augmentation drastique du nombre des écritures qu’il couvre, la particularité qui distingue ce codage de ses prédécesseurs est avant tout sa tentative de construire son répertoire de caractères selon un ensemble de critères fondés sur des considérations théoriques. On observe ainsi une transition depuis une approche descriptive dite extensionnelle qui définit l’ensemble à travers l’énumération de ses éléments (est « caractère » toute entrée de la table de tel ou tel codage), vers une approche intensionnelle qui, au contraire, décrit l’ensemble et ses éléments par leurs propriétés. En réalité, l’émergence d’une telle approche était inévitable car il n’aurait pas été possible de faire face à l’explosion du nombre de caractères répertoriés sans recourir à un principe organisateur plus évolué. D’ailleurs, il s’agit d’un phénomène courant : dès que le segment du « monde réel » que l’on vise à décrire atteint une certaine taille critique, l’adoption de structures or12 ganisatrices plus complexes semble devenir incontournable. Or, la représentation des connaissances est justement un domaine scientifique directement concerné par l’étude de différentes structures abstraites appliquées à l’organisation de données brutes décrivant le monde. Un des premiers résultats de cette thèse est la mise en évidence du fait que le modèle de texte d’Unicode, avec ses fondements théoriques et sa base de données, ne représente qu’une transition, un premier pas plus ou moins inconscient vers une nouvelle génération de modèles qui épousent inévitablement certaines approches de la représentation des connaissances. Car, bien qu’Unicode introduise la notion de propriété de caractère et sa propre base de données de propriétés, cette dernière est construite de manière ad hoc et ne couvre en réalité qu’un nombre très restreint d’usages. Il s’ensuit que l’approche extensionnelle — la table de codage et le code numérique — reste le mode d’accès primaire et le moyen unique d’identification des caractères Unicode. Notons encore que le codage est à peine extensible ou modifiable, non seulement à cause de la lourdeur du processus de normalisation mais aussi par sa conception même. Finalement, la catégorisation bipolaire des signes d’écriture entre caractères et glyphes s’avère être non-intuitive, ambiguë et parfois même insuffisante. En général, les qualités et les défauts d’un modèle donné peuvent être évalués de nombreux points de vue. Un scientifique peut s’intéresser à ses mérites conceptuels, alors qu’un ingénieur raisonnera plutôt en termes de potentiel de réalisation et d’une suffisance qualitative souvent évaluée de façon subjective : même si un modèle n’est pas parfait — aucun modèle ne peut l’être —, est-il « assez bon » pour résoudre les problèmes pratiques jugés les plus importants ? De nouveau, c’est l’interaction de considérations conceptuelles et de contraintes matérielles qui mène le processus de modélisation vers une synthèse supposée acceptable. Dans cette thèse, nous tenons compte des mêmes considérations lorsque nous évaluons les mérites et les lacunes d’Unicode et du modèle de texte caractère-glyphe, en les comparant à d’autres solutions potentielles. En procédant ainsi, il ne faut cependant oublier que la problématique de la modélisation de l’écrit est loin d’être une question purement technique. De même qu’il est aujourd’hui accepté que l’invention de Gutenberg a révolutionné la société toute entière à partir du XVe siècle, il ne relève pas de l’exagération de supposer que les formes de communication numériques modernes doivent exercer une influence tout aussi importante sur la société contemporaine, même si les manifestations concrètes de cette influence restent encore à débattre. Or, malgré une popularité toujours grandissante de la communication audiovisuelle, ce qui a suggéré à McLuhan la vision d’un retour de la société moderne vers l’expérience « audio-tactile », l’écrit en tant que médium n’est pas, pour autant, en train de perdre son importance. La majorité écrasante de l’information disponible sur Internet reste textuelle, non seulement au niveau inférieur des formats de documents tel que HTML mais également dans le sens où l’usage primaire d’Internet reste, toujours et malgré tout, la lecture. Il s’ensuit que dans un monde où le mot « information » devient de plus en plus synonyme d’« information numérisée » et le mot « existence » (d’un article, d’une information, voire d’une personne) synonyme de « présence sur le 13 Web »1 , les modèles de texte ont un impact profond sur l’exploitation et la production de l’information écrite. Leur tendance à représenter certains aspects de la communication écrite au détriment d’autres, à favoriser certains usages textuels et en défavoriser, voire même exclure d’autres, est extrêmement déterminante aussi bien dans le contexte de la numérisation du patrimoine écrit — la galaxie de Gutenberg — que pour les textes qui restent à être créés. Les limitations d’un médium donné influent forcément sur le contenu, la structure ou encore la présentantion de l’information que le médium est censé transmettre. En réponse à ces motivations, nous proposons et examinons dans cette thèse un cadre nouveau de création de modèles de texte. Ce cadre est fondé sur l’idée d’un procédé intensionnel de définition des éléments textuels : ceuxci sont décrits non pas comme entrées d’un répertoire mais comme des ensembles de propriétés. Inspirés de certaines notions et résultats de la représentation des connaissances, nous essayons dans cette thèse de découvrir les rapprochements potentiels entre ce domaine et celui de la modélisation de texte, ce dernier étant jusqu’à maintenant dominé presque exclusivement par des approches ad hoc d’ingénierie à orientation pragmatique. Le cadre formel qui résulte de nos considérations tente de rompre avec cette attitude en faveur d’une approche plus théorique, en fournissant tout d’abord une méthodologie pour donner enfin une formalisation adéquate de notions telles que caractère, glyphe, propriété ou contexte d’usage, jusqu’alors définies de manière approximative et informelle. D’autre part, le même cadre formel nous permet d’unifier caractère et glyphe sous un même concept : l’unité textuelle généralisée que nous appelons textème. Tout au long de la thèse, nous avons veillé à maintenir une attitude cohérente vis-à-vis de l’acte de modélisation, en séparant la conception du cadre formel théorique de celle des réalisations pratiques. Le rôle du premier est d’introduire une méthode rigoureuse et puissante de définition de modèles de texte, basée sur une approche intensionnelle. La complexité qu’entraîne inévitablement cette puissance ne fait, bien entendu, que refléter la complexité des phénomènes que le système est censé décrire. Ce n’est pas au cadre formel mais aux réalisations pratiques, c’est-à-dire aux modèles de texte actuels, d’apporter des simplifications éventuelles, en s’adaptant aux besoins et aux contraintes technologiques. C’est dans cette considération que nous avons choisi de développer ces deux aspects séparément dans le texte de la thèse afin de maintenir la clarté de nos propos. Un chapitre est consacré au fondement et à l’analyse de la théorie du cadre de modélisation proposé, alors que les diverses formes possibles d’implémentation sont traitées dans un chapitre à part. Cette séparation nette nous permet d’éviter les basculements constants entre les approches scientifique et d’ingénierie qui auraient produit un discours incohérent et difficile à suivre. La structure de la thèse se présente donc de la façon suivante : le premier chapitre est consacré à un examen critique et détaillé des modèles de texte informatiques du passé et du présent, avec un accent important sur le modèle caractère-glyphe, le codage Unicode et les formats de fonte dits intelligents, 1 Voire : présence parmi les résultats rendus par notre moteur de recherche préféré... 14 car il s’agit de véritables normes de représentation textuelle d’aujourd’hui et des années à venir. Si nous consacrons à ce chapitre une partie considérable de la thèse, ce n’est pas simplement pour établir un état de l’art, mais plutôt dans le but de fournir une analyse détaillée des modèles actuels à travers la synthèse de certaines critiques déjà formulées à leur égard par d’autres auteurs (notamment Yannis Haralambous, cf. [31] et [27]) avec quelques éléments de recherche originale. Il s’agit également de montrer que ces modèles sont loin d’être inévitables ; au contraire, ils ne représentent qu’une voie de développement particulière parmi d’autres possibles. De plus, certaines technologies présentées dans ce chapitre (comme le format de document PDF ou le fonctionnement interne du logiciel TEX) nous serviront comme référence pour certains développements dans les chapitres ultérieurs. Le deuxième chapitre introduit un cadre formel de représentation des connaissances qui sert ensuite à définir le concept de textème et à construire les nouveaux modèles de texte dont il devient l’unité élémentaire. Les conséquences de la définition du cadre, ses propriétés principales, ses nouveaux usages potentiels et ses aspects plus complexes sont ensuite analysés. Le troisième chapitre est consacré aux problèmes d’implémentation : la compatibilité des modèles intensionnels avec les modèles existants (notamment avec Unicode), la complexité algorithmique des fonctions de gestion textuelle les plus courantes, les optimisations possibles au niveau du stockage. Ce même chapitre présente également nos expériences concernant l’implémentation d’une variante du modèle dans le logiciel de préparation de documents Oméga (Ω). Ensuite, nous montrons comment il est possible de réaliser une description sémantique formelle de propriétés de textèmes par l’intermédiaire d’un cadre de représentation des connaissances tel que RDF et OWL. Finalement, le même cadre est employé pour construire un codage de signes intensionnel et extensible, qui unifie le principe de codage avec le modèle de texte en textèmes ; ainsi devient-il possible de profiter en même temps des avantages des approches extensionnelle d’Unicode et intensionnelle de notre modèle. Enfin, le chapitre terminal, dédié aux conclusions et aux perspectives, offre un bilan de nos résultats, tout en indiquant les voies de recherche non abordées dans le cadre de la thèse mais en liaison directe avec elle. Il s’agit, entre autres, de l’influence qu’exerce les modèles proposés sur les aspects d’interface homme-machine du texte informatique, mais aussi d’un modèle de texte alternatif qui peut être considéré comme la continuation logique du modèle en textèmes, donné comme une réponse possible aux problèmes adressés au chapitre 2. 15 16 CHAPITRE 1 MODÈLES DE TEXTE Le but de ce chapitre est de présenter les différentes formes de représentation textuelle depuis l’invention de l’écriture jusqu’au présent, notre sujet principal étant, bien entendu, le texte informatique. Plus particulièrement, ce qui nous intéressera est avant tout la manière dont le texte se construit à partir d’un ensemble de signes élémentaires et ainsi devient porteur d’information. Il s’agit donc d’une analyse structurelle de l’écrit au niveau de ses éléments constitutifs. La notion formelle qui nous permettra de saisir la structure et le comportement du texte est celle de modèle de texte ou modèle de l’écrit. Dans le présent chapitre, il sera donc question de présenter les différents modèles de texte qui ont existé depuis l’invention de l’écrit, l’objectif principal étant de pouvoir ensuite situer les modèles de texte informatiques en les comparant aux modèles pré-informatiques. Au long du chapitre, nous suivrons un fil principalement chronologique. En retraçant l’histoire de l’écrit et des nombreuses transformations de ses modèles, nous verrons que la cause principale derrière les transformations est presque invariablement un changement d’usage, très souvent entraîné par une évolution technologique. Le même principe de nouveaux usages émergents continue à gouverner le développement des modèles de texte informatiques. 1.1 CONCEPTS DE BASE Avant d’entamer un résumé historique de l’écrit, nous devons d’abord donner des éclaircissements sur les deux concepts de base que nous avons employés jusqu’ici sans les avoir définis de manière exacte : ayant parlé de modèle de texte, nous restons encore redevables de la définition de modèle et de celle de texte. Il faut tout d’abord comprendre que lorsque nous parlons de modèle, nous Le modèle ne référons pas à un éventuel rapport de modélé-modèle entre langue et écriture, ni entre parole et écriture : la question si l’écriture relève ou non d’une modélisation de la langue ou de la parole dépasse les cadres de cette thèse. Notre point de départ est l’écriture seule, en tant que système de notation autonome. Les écritures ne sont cependant pas de systèmes formels et figés, ni dans le temps ni dans l’espace : notre patrimoine écrit est en expansion constante. Les conventions des écritures ne cessent d’évoluer, d’autant plus que chaque membre de la société qui se met à écrire contribue par cet acte sa propre compréhension et son propre usage de l’écrit. Il n’est donc pas forcément évident comment l’abstraction d’un système formel et cohérent pourrait se faire depuis un ensemble si hétérogène de conventions ; car on sait, de plus, 17 que les règles que l’on apprend très jeune à l’école ne sont ni suffisamment formelles ni spécifiques pour être considérées dans leur ensemble autrement que comme un modèle « naïf ». Néanmoins, il reste toujours possible de choisir de manière consciente un sous-ensemble bien circonscrit d’œuvres « de référence » selon des critères spécifiques, et en se basant sur ce sous-ensemble d’œuvres, d’en choisir ensuite les « aspects » (paramètres, propriétés, etc.) que nous jugeons intéressants à conceptualiser. Ce que nous appelons modélisation de l’écrit n’est autre donc que la formalisation d’un ensemble restreint de paramètres décrivant un ensemble restreint d’œuvres écrites. Cette définition reste d’ailleurs cohérente avec celle formulée dans l’introduction, à savoir que la modélisation est « la conceptualisation de certains aspects de l’écrit dans un but de réalisation à travers une technologie particulière ». Justement, le fait de construire le modèle en vue d’une implémentation précise et par l’intermédiaire d’une technologie donnée fournissent déjà des indices quant aux aspects de l’écrit à prendre en compte ou à ignorer. Le texte Dans cette thèse, nous allons restreindre la portée de nos modèles à travers une interprétation restreinte du terme texte. Comme évoqué dans l’introduction, le sens courant de ce terme est plutôt vague car il peut référer à des œuvres écrites de longueurs et de formes très variées. Nous allons donc proposer une définition qui reflète une propriété invariante à presque toutes formes de l’écrit : qu’il s’agit d’une suite ordonnée, à prépondérance unidimensionnelle, d’un ensemble restreint et bien codifié de signes élémentaires (que l’on appelle lettres, caractères, graphèmes, signes, etc., selon le contexte du disLe paragraphe comme cours). En principe, nous ne nous intéresserons à aucune question concernant limite de nos études la structure d’un document au-delà de ce que l’on appelle aujourd’hui paragraphe : la pagination, la structure logique (chapitres, sections, titres, etc.), la mise en page, etc., ne nous concerneront pas. Ce choix particulier de la portée de nos études est fondé en partie sur la réalisation que le paragraphe fonctionne comme unité structurelle à la fois du discours, du contenu et de la présentation graphique d’un document textuel. En tant que telle, il représente une césure nette entre les aspects microscopiques et macroscopiques du document, car il est tout à fait raisonnable de supposer qu’aucune interaction ne se produit entre des signes d’écriture se trouvant dans deux paragraphes différents (ce qui est d’ailleurs cohérent avec ce que l’on observe dans la majorité écrasante de documents existants). 1.2 L’ORIGINE DE L’ÉCRIT ET SON DÉVELOPPEMENT La notation Les spécialistes s’accordent aujourd’hui sur la nécessité de faire une claire pictographique distinction entre systèmes de notation pictographique et systèmes d’écriture et l’écriture [19, p. 3]. Ces derniers auraient pu se développer à partir de systèmes pictogra- phiques — cette opinion ne fait pas l’unanimité [20] — qui avaient initialement servi des buts précis comme l’expression de la propriété de biens ou d’une croyance, ou encore d’un événement contenu dans la mémoire commune d’une société par un effet mnémotechnique, etc. À la source de la conception des véritables écritures on aurait sans doute trouvé un changement d’attitude, un changement de l’usage de l’écrit, par la volonté d’exprimer des énoncés 18 plus variés, plus proches de l’expression de la langue parlée : certains concepts abstraits où une liaison entre composant graphique et composant conceptuel du signe1 de l’écriture n’est pas évidente à établir au travers d’un rapport pictographique de mimésis. De tels concepts sont par exemple les morphèmes grammaticaux de la langue ou les noms propres, y compris ceux venant d’une langue différente et ainsi ne portant a priori aucune valeur sémantique associable à un lexème de la langue locale. Afin de répondre à ce nouvel usage, les signes d’écriture ont dû se diversifier, se complexifier en développant tout d’abord la possibilité d’une représentation phonétique dont la structure (syllabique, consonantique, phonographique, etc.) était souvent fonction de la langue en question. On observe donc une inévitable phonétisation des écritures dès qu’elles atteignent un degré d’universalité fonctionnelle. La propriété unidimensionnelle de l’écrit est probablement la conséquence, au moins en partie, de ce phénomène. Cependant, dans l’histoire, la phonétisation de l’écrit n’a que très rarement été menée jusqu’au bout, et même si cela est arrivé, la « pureté phonétique » de l’écriture n’a presque jamais perduré. Les raisons sont nombreuses : premièrement, l’écriture et la langue pour laquelle elle est utilisée n’évoluent en général pas en parallèle, que ce soit une évolution phonologique lente et naturelle de la langue ou un changement profond comme par exemple lorsqu’en Mésopotamie la langue akkadienne a supplanté le sumérien tout en gardant son écriture cunéiforme. Pour de nombreuses raisons, on observe de la part de la société (ou plus précisément de la part de l’élite qui maîtrise l’écriture) une attitude conservatrice par rapport à son écriture et beaucoup moins conservatrice par rapport à sa langue. Deuxièmement, une ambiguïté linguistique causée par une homonymie ou une homophonie (très abondantes dans les langues monosyllabiques) étant en général moins évidente à résoudre dans le cadre de l’écrit que dans l’oral à cause des différences entre les deux voies de communication (manque de contexte méta-communicatif, distance temporelle entre émission et réception de l’énoncé, etc.), d’informations supplémentaires doivent être ajoutées pour faciliter la désambiguïsation. Troisièmement, la transcription écrite d’un énoncé parlé ne peut en général être qu’approximative car un tel énoncé peut posséder un grand nombre de propriétés vocales (longueur, accentuation, intonation, etc.). Même en supposant donc que le rôle d’une écriture est de refléter une langue parlée le plus fidèlement que possible, une telle réflexion ne pourrait, en général, être construite sur une base purement phonétique. Cependant, avec l’évolution et la diversification de la communication humaine, les usages de l’écriture se sont diversifiés également, et la transcription phonétique de la parole n’est devenue qu’un usage parmi d’autres — artistiques, didactiques, rhétoriques —, parfois plus prioritaires. La multiplication des usages se traduisait en le besoin de transmettre des informations de natures plus variées : morphologique, syntaxique, sémantique, prosodique, et ainsi de suite. La diversification du contenu a mené à un inévitable enrichissement de la structure de nombreuses écritures : il était question d’indiquer la séparation des mots (par espace ou point séparateur) ou leur rapprochement (trait 1 Le terme signe est employé ici et dans le reste de ce travail dans un sens général d’élément graphique de base et non dans un sens sémiologique précis. 19 L’écriture et son aspect phonétique Aspects non-phonétiques de l’écriture Les fonctions linguistiques de l’écriture d’union), les morphèmes grammaticaux (comme fait le syllabaire hiragana dans l’écriture japonaise, même s’il n’est pas exclusivement dédié à la notation grammaticale). Les exemples classiques d’éléments sémantiques d’une écriture sont les logogrammes mais il faut également mentionner les déterminants qui servent à désambiguïser un signe phonétique homonymique (qui porte plusieurs significations) par l’ajout d’une clé sémantique, comme dans le cas de l’écriture chinoise. Dans la plupart des cas, le changement de la structure d’une écriture s’est réalisé par l’extension de son ensemble de base, c’est-à-dire par la création de nouveaux signes, mais aussi par la modification des signes existants. Certains des nouveaux signes que l’on appelle diacritiques, au lieu d’être introduits dans la suite de signes qui forme la colonne vertébrale du texte, se sont placés à la proximité des signes existants, perpendiculairement à la direction dans laquelle ceux-ci étaient disposés. C’était, du moins au micro-niveau, une appropriation de la deuxième dimension du support, dans le but d’enrichir l’écrit sans pour autant modifier les règles qui gouvernaient l’usage de ses signes d’origine. (Par exemple, dans le cas de textes sacrés comme le Coran ou la Torah, il n’était pas question d’altérer le message de Dieu — porté par les lettres de base — ; pour cette raison, le texte n’a pu être enrichi que par des diacritiques graphiquement séparées.) Les diacritiques avaient donc une fonction d’enrichir ou de modifier la valeur du signe auquel elles ont été associées. La valeur ajoutée pouvait être de nature quelconque (phonétique, sémantique, prosodique, etc.) : on trouve des exemples de diacritiques pour des usages linguistiques très variés. La notion de diacritique a été inventée comme une solution générique au problème de la diversification du contenu véhiculé par l’écrit. Déjà au tournant de notre ère, l’écrit est donc devenu un système complexe qui englobait des informations de natures très différentes, d’une part à travers une stratification fonctionnelle (entre signes de fonctions linguistiques différentes), d’autre part par une stratification graphique (entre signes « principaux » et diacritiques). Comme nous le verrons plus loin, cette richesse structurelle de l’écrit n’a pas perduré dans l’ère informatique, ce qui aujourd’hui réduit considérablement les usages potentiels du texte numérique. Parmi nos objectifs dans cette thèse est de proposer un nouveau modèle de texte qui permet de réintroduire dans le texte informatique une certaine complexité structurelle au niveau des signes individuels, pour que le texte se réapproprie de sa capacité de stratification fonctionnelle. 1.3 L’ÉCRIT IMPRIMÉ L’imprimerie en caractères mobiles a été inventée initialement en Chine, puis en Europe par Gutenberg qui a été le premier à perfectionner la technologie. Ce qui nous intéresse à propos de cette invention est l’apparition d’un modèle de l’écrit qui continue à inspirer aujourd’hui les approches informatiques au formatage de texte. L’imprimerie crée Au début, l’objectif de Gutenberg était de reproduire fidèlement les proson modèle de l’écrit priétés graphiques de l’écriture manuscrite — qui plus est : un type précis d’écriture manuscrite, notamment la textura quadrata — par les moyens d’une 20 nouveauté technologique qui fonctionnait d’une nouvelle manière. L’imitation était cependant si fidèle que non seulement ligatures, signes de ponctuation et diacritiques d’abréviation ont été adoptées (celles-ci servaient dans les manuscrits d’une part à aligner verticalement les fins de lignes, d’autre part à réduire le travail de copie) mais aussi chaque lettre de base — majuscule et minuscule — avait plusieurs formes alternatives afin d’imiter l’aléatoire du texte manuscrit (voir fig. 1.1). Initialement, il s’agissait donc d’une imitation quasi-parfaite des propriétés graphiques du manuscrit. La rupture technologique et la création d’un modèle de l’écrit — dont l’unité constitutive était désormais le bloc en métal correspondant au poinçon — n’a pas immédiatement résulté en un changement de forme, ni de fond. Ce n’est qu’une fois le secret de l’invention de Gutenberg dévoilé et la technologie de l’imprimerie consolidée en Europe que les imprimeurs ont peu à peu abandonné leurs efforts de simuler l’esthétique du manuscrit et ont créé de nouvelles qualités esthétiques, cette fois-ci propres au processus typographique. Le développement de ces nouvelles esthétiques graphiques était suggéré par des considérations économiques (similairement aux évolutions au niveau de la taille et du poids des livres ou de l’abandon des enluminures) qui ont résulté de la nouvelle invention. Les formes des lettres se sont simplifiées et « idéalisées » par rapport à celles des manuscrits car l’imperfection et l’aléatoire du manuscrit en ont été supprimées. En général, la technique de l’impression n’était pas capable, comme l’avait été l’écriture à la main, d’offrir le potentiel de contrôler à tout moment les aspects graphiques du texte : adapter les signes aux contraintes imposées par le support, contrôler le corps du caractère en continu, associer librement lettres et diacritiques, et ainsi de suite. En vue des contraintes mentionnées, il n’est pas par hasard que l’impression en caractères mobiles a connu le plus grand succès en Europe alors que parmi les Chinois — les premiers inventeurs — elle n’est pas devenu populaire, pour ne pas mentionner les civilisations arabophones où elle a carrément été rejetée à l’époque. La modélisation typographique était particulièrement mal adaptée à ces écritures, au chinois à cause du nombre de ses caractères, à l’arabe à cause de son style calligraphique, de son orientation souvent bidimensionnelle et de ses nombreuses diacritiques. La non-adoption de la typographie dans ces cultures n’était donc pas la conséquence d’un manque de développement technologique mais de l’incompatibilité entre l’usage du manuscrit et l’usage typographique. La modélisation typographique du texte ne peut cependant pas être accusée de n’avoir eu qu’un effet simplificateur sur l’écrit. Elle l’a transformé, certes, tout en y apportant ses propres contributions. L’acte intellectuel de la conception de modèle a suscité une formalisation des connaissances sur l’écrit. L’établissement progressif des règles et des usages typographiques lors de l’invention, puis lors de l’amélioration de la technique et de l’art de l’impression a été possible justement grâce à cette formalisation. Par exemple, l’interaction graphique entre lettres avoisinantes, nuisant à la continuité du texte, a été formalisée par les notions de crénage et de ligature typographique. L’usage de la ponctuation a été codifié et affiné (tels que les espaces à différentes chasses ou les traits à différentes longueurs). D’autre part, la typographie 21 Codification et sémantisation des propriétés graphiques FIG. 1.1 – La casse de la Bible à 42 lignes de Gutenberg, tirée de [67]. 22 a introduit de nouvelles variables2 graphiques en plus de celui des lettres de base et celui des diacritiques : les variations de graisse, de style et de corps du caractère sont devenu porteuses d’information — linguistique ou autre. Notons encore que le modèle du bloc en métal a renforcé la connexion entre lettre de base et diacritique car ces deux se sont retrouvés gravés dans le même poinçon. Puisque la libre association entre lettres et diacritiques était contrainte par le travail et les ressources nécessaires pour graver autant de poinçons qu’il y a combinaisons lettre-diacritique, il est devenu difficile de changer les conventions existantes de diacritisation, ce qui a contribué à considérer les lettres diacritées comme des lettres à part entière dans les alphabets. Le modèle imprimé conçu par Gutenberg a été utilisé jusqu’au XXe siècle, mais les nouvelles technologies professionnelles qui l’ont supplanté — le Linotype et le Monotype — ne l’ont pas modifié en profondeur. Par contre, elles ont simplifié, entre autres, l’interaction homme-machine par l’introduction du clavier qui a accéléré considérablement la vitesse de composition. Ce n’est cependant pas la technologie Linotype qui a introduit l’idée du clavier mais son antécédent plus primitif, la machine à écrire. Celle-ci représentait un départ La machine à écrire marqué de la perfection élaborée de l’imprimerie vers un procédé simplifié qui consistait à appuyer sur une touche afin d’imprimer le signe correspondant sur papier et puis décaler la « tête » d’impression par une chasse fixe. En réalité, la machine à écrire n’était pas le concurrent de l’imprimerie mais plutôt une alternative à l’écriture manuscrite. On parle encore une fois d’un nouvel usage, lié à un nouvel outil, qui a créé son propre modèle de l’écrit. En comparaison à l’imprimerie, la machine à écrire n’était pas capable d’espacement proportionnelle et le texte dactylographié était dépourvu de variations graphiques (en graisse, en style, en taille). Pour des raisons d’économie du nombre de touches et du coût, la quantité de signes disponibles a été réduite : en plus des ligatures typographiques — qui sont effectivement devenues superflues pour une écriture mono-espace —, certains signes de ponctuation (les doube-quotes ouvrantes et fermantes, les tirets de largeurs variées) ont été économisés, et souvent même les chiffres 0 et 1 ont dû être substitués par les lettres majuscules O et I respectivement. Pour les mêmes raisons, les machines à écrire étaient le plus souvent unilingues car le nombre de touches n’aurait jamais suffit pour servir plusieurs langues. En arrivant à l’époque numérique, nous voyons qu’il existait déjà plusieurs modèles de l’écrit en parallèle, chacun répondant à un usage particulier. 1.4 LES PREMIERS MODÈLES INFORMATIQUES DE L’ÉCRIT Il y a un point commun entre tous les modèles de l’écrit qui ont précédé l’ordinateur : le texte était lu et interprété directement par l’humain. Son décodage était un acte de passage du visuel au conceptuel, à partir d’un ensemble de signes graphiques vers une extraction des différentes couches d’informations qu’ils véhiculent. Tout a changé avec l’arrivée de l’ordinateur : désormais, l’information textuelle n’était plus uniquement destinée à la consomma2 Le terme variable a été adopté à partir de la thèse de Gérard Blanchard sur la sémiologie de la typographie [17]. 23 tion humaine, elle est également devenue information à interpréter, à traiter, à transmettre et à générer par la machine. Comme tant de fois déjà, l’apparition d’une nouvelle technologie a fait émerger de nouveaux usages de l’écrit. La situation était similaire à l’invention de l’imprimerie car, encore une fois, il a fallu remodéler un système existant afin de l’adapter à un outil qui fonctionnait d’une manière complètement nouvelle. Cependant, lors de la création des premiers modèles informatiques, l’ancien modèle typographique n’était pas parmi les influences principales de leur conception. Ceci n’est pas surprenant puisque le rôle des premiers ordinateurs n’était pas du tout une communication écrite subtile et élaborée avec l’humain que peut offrir la typographie3 ; l’essentiel était plutôt de réaliser des calculs et de retourner des résultats numériques de manière la plus simple et claire possible. La machine, à bas niveau, n’est capable de travailler qu’avec des valeurs numériques — par conséquent, il était nécessaire de définir un codage des éléments textuels. Dans le jargon informatique, ces « éléments (atomiques) textuels » se nomment tout simplement caractères. Ce n’est pas par hasard que jusqu’ici nous avons évité de généraliser l’usage du terme caractère en dehors du doL’ambiguïté du terme maine de l’informatique : ce que nous montrerons dans la suite est que le caractère mot caractère est surchargé de significations et que celles-ci sont très souvent employées de manière incohérente. Il serait cependant impossible d’éviter ce mot à cause de son importance primordiale et son usage omniprésent même dans les opérations informatiques les plus basiques. Au contraire, nous allons voir que la définition du terme caractère est la question principale à travers laquelle il devient possible d’appréhender la nature du texte informatique, car la définition que l’on lui donne relève du modèle de texte de son choix. Dans la suite, après un très court détour étymologique, nous présenterons les différents sens — et donc les différents modèles — dans lesquels l’informatique a utilisé le terme caractère jusqu’à nous jours, pour finir par préciser le sens dans lequel nous utiliserons nous-mêmes ce terme dans la présente thèse. 1.4.1 L ES NOTIONS DE CARACTÈRE ET DE CODAGE D’origine grecque, le sens initial de χαρακτ ήρ était marque gravée. Le mot a ensuite gagné de nouvelles significations figurées (traits distinctifs d’une personne, d’une personnalité). Dans la typographie française traditionnelle, cependant, caractère pouvait signifier à la fois le bloc en métal individuel, son empreinte, ou bien la police de caractères entière, c’est-à-dire l’ensemble de signes qui partagent une charte graphique commune (par rapport à ce dernier sens, voir par exemple [23]). La première édition du Dictionnaire de l’Académie française de 1694 [51] témoigne déjà de ces diverses interprétations : CARACTERE . Empreinte, marque. Il £e prend particulierement pour les figures dont on £e £ert dans l’e£criture, ou dans l’impre££ion. Gros caractere. petit caractere. caractere li£ible. bon caractere. mauvais caractere. e£crit imprimé en beau caractere. caractere d’Imprimerie neuf, u£é, poché, vieux. caracteres Grecs, Egyptiens, Arabes. caracteres hieroglyphiques. les anciens imprimoient 3 Autant plus que la transmission de l’information textuelle depuis l’homme vers la machine se faisait pendant longtemps principalement par des cartes perforées. 24 FIG. 1.2 – La première version du codage de caractères ASCII, datant de 1963, qui ne distingue pas entre majuscules et minuscules. £ur le front des criminels & des e£claves certains caracteres. C’est le sens de « signe individuel » du mot caractère qui a été repris dans l’informatique, sans doute dû à une influence anglo-saxonne (puisque ce sont les États-Unis qui étaient à la tête de la recherche et de la fabrication d’ordinateurs). Il n’était donc pas illogique d’appeler caractère l’élément atomique textuel en informatique, et l’ensemble de caractères disponibles sur une plateforme donnée, avec leurs valeurs numériques, le codage de caractères ou jeu de caractères. Il y a cependant une différence fondamentale entre le caractère traditionnel (caractère métallique ou son empreinte, le signe imprimé par photocomposition ou par une machine à écrire) et le caractère informatique en tant qu’élément de codage : ce dernier ne possède pas forcément d’image visuelle. Lorsqu’un texte est communiqué à l’ordinateur par le moyen d’une carte perforée, la forme graphique des caractères transmis ne joue aucun rôle, elle peut même être inexistante. Ceci est encore un nouvel usage de l’écrit où l’interprétation du signe se fait non pas par une reconnaissance visuelle d’une forme mais, d’une part, par l’ensemble de conventions sémantiques que représente la table de codage, et d’autre part, comme nous allons voir prochainement, à travers le contexte que représente l’usage du texte en question. En d’autres termes, le caractère informatique est un élément textuel a priori non visuel. Afin de mieux comprendre l’affirmation précédente, prenons un exemple ASCII concret de codage : la norme ASCII. À première vue, l’intérêt de normaliser les codages informatiques paraît évident : la connaissance exacte des éléments du codage utilisé — quel code numérique correspond à quel élément textuel — est essentiel pour la compréhension de tout message échangé, et ceci est vrai aussi bien pour la communication entre machine et homme qu’entre deux machines (la communication directe par codes numériques ou cartes perforées étant relativement rare entre deux êtres humains). La norme ASCII, codage sur 7 bits, est ainsi né en 1963 pour ensuite être réutilisé en tant que sousensemble d’un grand nombre d’autres codages du monde. En examinant la version initiale du codage ASCII (voir figure 1.2), on remarque surtout l’absence de lettres latines minuscules et la présence de nombreux caractères 25 de contrôle. Ces deux propriétés démontrent le point soulevé ci-dessus que l’usage de l’écrit pour communiquer avec l’ordinateur était très spécialisé et non-visuel qui a fini par, en partie, redéfinir les éléments atomiques textuels. Certains caractères de contrôle comme le SHIFT IN, le SHIFT OUT et l’ESCAPE ont même pu donner des propriétés de programme informatique au texte car celui-ci n’a pu être lu et interprété correctement que de bout en bout et par un automate à états. En ce qui concerne les lettres minuscules, elles ont été ajoutées au codage ASCII deux ans plus tard, en 1965. 1.4.2 U NE TENTATIVE DE FORMALISATION DE LA NOTION DE CARACTÈRE ET DU TEXTE INFORMATIQUE Nous avons maintenant l’impression de comprendre que le rôle du codage de caractères est de mettre en relation un ensemble de valeurs numériques — les codes de caractère — avec un ensemble de « valeurs sémantiques » qui correspondraient à des éléments textuels de bas niveau. Dans cette section, nous ferons une tentative de définir ces notions de manière plus précise. Supposons donc l’existence d’un ensemble S d’unités sémantiques textuelles. Il ne s’agit nullement, du moins pour le moment, de supposer que cet ensemble S contienne toutes les unités sémantiques textuelles possibles et imaginables : il serait, de toute manière, impossible d’énumérer celles-ci. Plutôt, l’ensemble S représente un « choix pratique et restreint » — moins que 128 éléments dans le cas du codage ASCII — que nous allons indexer par des codes de caractère. En formalisme mathématique : soit NC un entier naturel, le code numérique maximal, et S un ensemble d’unités sémantiques textuelles tel que |S| ≤ NC . Alors le codage C se représente comme une relation, de la manière suivante : C ⊂ {0, 1, 2, ..., NC } × S Il faut remarquer que C n’est pas une relation quelconque ; nous arriverons très bientôt aux restrictions qui s’y appliquent. Le caractère, à son tour, est un élément de ce codage C : c∈C Analysons les propriétés de la relation C. Celle-ci est surjective car nous avons choisi les éléments de S pour que celui-ci soit entièrement couvert. D’autre part, dans certains codages il existe des codes soi-disant non définis auxquels aucune valeur sémantique n’est associée (en d’autres termes, on permet que |S| soit strictement inférieure à NC + 1) ; pour cette raison, C n’est pas forcément applicative. L’injectivité (qu’une unité sémantique soit référée par au plus un code numérique) est un critère de non-ambiguïté et d’économie que les codages de petite taille (tels que l’ASCII) arrivent à remplir sans difficulté. Finalement, la propriété de fonctionnalité (qu’aucun code numérique ne réfère à plusieurs unités sémantiques) devrait éviter la « polysémie » au sein du codage. Il se trouve cependant que la polysémie est, en réalité, une propriété essentielle des premiers codages de caractères. Un exemple de caractère polysémique est l’apostrophe « ’ » qui prend tantôt le rôle d’apostrophe, tantôt 26 celui du guillemet britannique fermant, tantôt celui de l’accent aigu, et ainsi de suite. Il ne s’agit pas d’un cas exceptionnel ou d’un abus de la norme. Au contraire, la variation de la sémantique associée à un code donné est plutôt la règle que l’exception ; pour s’en convaincre, il suffit de penser à l’utilisation souvent divergente des signes de ponctuation dans les différents langages de programmation. En effet, la sémantique d’un caractère dépend du contexte (de l’application) dans lequel il est utilisé, plus généralement : de l’usage. Il n’est même pas possible de parler d’un « sens d’origine » ou « traditionnel » éventuel qui aurait été « supplanté » ou « surchargé » par d’autres usages : par exemple, l’auteur ne connaît aucune règle précise qui puisse a priori définir la différence sémantique entre les crochets « [] » et les accolades « {} » : ceci dépend entièrement du contexte d’usage dans lequel ces symboles sont utilisés. En résumé, les codages de caractères — et surtout ceux antérieurs à Unicode, comme le codage ASCII — ne peuvent être considérés comme des correspondances un-à-un entre codes et unités sémantiques que dans un contexte d’usage donné. En d’autres termes, les éléments de S sont des unités sémantiques approximatives, et c’est le contexte de leur usage qui fournit la précision sémantique nécessaire. Dans ce sens, le codage C, tel que l’ASCII, n’est qu’un cadre, une indication, qui restreint la polysémie et l’homonymie des caractères à un niveau « acceptable » mais qui permet au contexte d’usage de préciser les valeurs sémantiques exactes. LA DÉFINITION DU TEXTE INFORMATIQUE En partant des définitions de codage et de caractère données ci-dessus, il devient maintenant possible de préciser ce que l’on entend par texte informatique : il s’agit tout simplement d’une chaîne de codes de caractère où chaque code représente un élément du codage C et s’interprète dans un contexte d’usage U . La définition ci-dessus précise que le codage C ainsi que le contexte U doivent être connus afin que, dans notre interprétation, une chaîne de valeurs numériques puisse être appelée texte. Nous ferons une distinction entre chaîne de caractères et texte de la manière suivante : DÉFINITION 1 (CHAÎNE DE CARACTÈRES (DE CODES DE CARACTÈRE)) Soit Σ = {0, 1, ..., NC }, c’est-à-dire l’ensemble de codes du codage C. La chaîne de caractères K est alors définie comme K ∈ Σ∗ , autrement dit, K = c1 c2 c3 ...cn où ci ∈ Σ Strictement parlant, K est une chaîne de codes de caractère ; les informaticiens ont cependant tendance à employer le terme chaîne de caractères, même si nous avons défini le caractère comme la correspondance d’une valeur numérique et d’une sémantique approximative. Nous pouvons interpréter la chaîne de caractères ainsi définie comme une structure algébrique, un monoïde libre, avec la concaténation comme opération, la chaîne vide comme élément neutre et Σ comme générateur libre4 , voir à cet égard par exemple [21]. 4 Le générateur libre est souvent appelé alphabet, terme plus parlant mais en même temps trompeur dans un contexte multi-écritures ; pour cette raison, nous allons l’éviter. 27 DÉFINITION 2 (TEXTE) Le texte se définit comme une chaîne de caractères K interprétée dans un contexte d’usage, cette interprétation comprenant la désabiguïsation de la sémantique associée aux caractères individuels. La non-définition La précision de la sémantique des caractères n’est donc qu’un seul parmi les de la notion d’usage rôles du contexte d’usage. Nous considérons d’ailleurs que ce dernier est un concept d’une complexité très importante, et pour cette raison nous préférons ne pas en chercher la définition précise à ce point dans notre travail. Plutôt, nous reviendrons à ce concept à plusieurs reprises, ainsi améliorant peu à peu notre compréhension à son égard. En conclusion, le premier modèle de texte informatique présenté consiste en les ensembles Σ et S, la relation C, la concaténation comme opération génératrice, et finalement le contexte d’usage qui complète l’interprétation du codage C. 1.4.3 L’EXTENSIONNALITÉ DE LA DÉFINITION PRÉCÉDENTE La définition du caractère donnée ci-dessus se base sur la supposition qu’il existe un ensemble vaste (et potentiellement inconnu) d’unités sémantiques textuelles dont un sous-ensemble S bien délimité participe, à travers le codage, à la représentation informatique de texte. Plus précisément, afin de contourner la barrière imposée par la taille extrêmement restreinte des premiers codages, les unités sémantiques dans S ont pu être réinterprétées en fonction d’un contexte d’usage donné. Deux questions qui se posent à cet égard : premièrement, peut-on donner une définition précise de l’ensemble de toutes les unités sémantiques textuelles ? Deuxièmement, par quels critères choisir de cet ensemble les éléments qui feront partie de l’ensemble S, et donc du codage ? La première question, de nature ontologique, peut être reformulée ainsi : comment décider d’un signe s’il est de nature graphémique, s’il peut faire partie intégrante de la suite (quasi-)unidimensionnelle de signes qu’est l’écrit ? Ne devrait-on, au contraire, supposer que le choix des signes participant à une œuvre textuelle doit appartenir à l’auteur et, selon la volonté de celui-ci, tout signe a le potentiel de devenir signe d’écriture — comme n’importe quelle porte au Pays fantastique peut devenir l’entrée du Temple des mille portes dans l’Histoire sans fin de Michael Ende ? Jusqu’aux années 1990, cette question n’avait pas d’actualité : le nombre de codes disponibles dans les tables de codage était si restreint que l’idée de créer un codage qui ne se limiterait pas à un nombre d’usages très petit — par exemple, la couverture des lettres de base d’un ensemble très limité de langues occidentaux — n’avait pas de réalité pratique. Il fallait forcément faire des choix, mais selon quels critères ? La réponse se trouve dans le(s) usage(s) que le codage est censé servir : les tâches à accomplir, les traditions, la permissibilité technologique. Dans le pire des cas, le choix sera ad hoc ou mal considéré [9], mais un choix pratique est toujours possible. Quoi qu’il en soit, la définition d’un codage donné à travers l’énumération (la dénotation) de ses éléments constitutifs relève d’une approche extensionnelle. En d’autres termes, le codage est auto-définissant : le digraphe « æ » est 28 un caractère parce qu’il fait partie du codage ISO 8859-1, l’« œ » n’est pas un caractère parce qu’il n’est pas présent dans ce même codage. Dans la suite, nous appellerons également cette approche extensionnelle principe énumératif car il s’agit d’énumérer, comme dans un alphabet ou dans un syllabaire, l’ensemble de signes qui peuvent potentiellement être utilisés. L’approche extensionnelle devient peu commode lorsque l’universalité est La difficulté parmi les objectifs de la création d’un codage. Si le codage est censé couvrir d’un codage universel la (quasi-)totalité des écritures (voire des systèmes notationnelles) du monde sans que le nombre de points de code disponibles soit contraint — tel est le cas du codage Unicode que nous présenterons en section 1.8 —, ou formellement, lorsque la taille de l’ensemble S augmente, alors la décision si un signe donné doit être ou non considéré comme signe d’écriture devient un problème important. Le principe énumératif n’est applicable facilement que lorsque le nombre de signes est restreint. Un des objectifs de cette thèse est de montrer qu’une méthodologie intensionnelle — qui, au lieu d’énumérer les éléments du codage, s’intéresse plutôt à définir leurs propriétés pertinentes — peut être plus précise et plus efficace dans la construction d’un tel codage universel. 1.4.4 L ES PREMIERS MODÈLES VISUELS Le modèle de texte présenté précédemment peut être qualifié comme nonvisuel car il fonctionne sans être concerné par l’affichage des caractères, cet aspect n’étant pas considéré comme pertinent. Cependant, l’ordinateur est vite devenu capable de produire une trace visuelle des résultats de ses calculs à l’aide d’une imprimante, puis, à partir des années 1970, sur des écrans. On peut alors parler de la matérialisation visuelle du caractère, même si les formes graphiques associées aux caractères sont au début circonstancielles et sans importance au-delà d’une lisibilité primaire. De ce point de vue, il y a similarité entre l’ordinateur muni d’un clavier et d’un écran (ou d’une imprimante) et la machine à écrire : lorsque l’utilisateur entre un caractère à travers son clavier et il (ou elle) voit apparaître l’image correspondante sur l’écran (ou sur l’imprimante), une association mentale directe se crée entre – la touche du clavier ; – l’image visuelle qui apparaît ; – une information sémantique a priori connue (comme par exemple une lettre d’alphabet) ; exactement comme lors de l’utilisation d’une machine à écrire. Dans le cas de l’ordinateur, cependant, un quatrième élément entre en jeu : le code de caractère. En effet, le caractère reste l’élément constitutif du texte et ce n’est qu’au moment de l’affichage qu’à chaque caractère s’associe une image. Les associations entre images et caractères étaient initialement constantes L’image gagne (pré-définies) pour une plate-forme donnée. Ensuite, des imprimantes multi- de l’indépendance fontes sont apparues où il était possible (souvent par intervention mécanique : changement de tête d’impression) de choisir parmi un ensemble de fontes pour l’affichage du texte. C’était le début d’une longue transition, à partir des années 1970 jusqu’à nos jours, vers un nouveau modèle de texte où l’image s’émancipe et devient un élément indépendant du modèle. 29 Afin de marquer la distinction du caractère vis-à-vis de l’image, le jargon informatique moderne (depuis les années 1990) appelle cette dernière glyphe, par un néologisme originaire de la langue anglaise.5 Nous allons revenir au sujet de la dichotomie caractère-glyphe dans la section 1.8 ; pour le moment, il nous suffira de préciser que par glyphe on entend l’image d’un signe d’écriture tel qu’elle est contenue dans une fonte numérique. (Par ailleurs, l’usage du terme est loin d’être cohérent aujourd’hui, il en existe plusieurs définitions mutuellement contradictoires ; nous reviendrons à ce problème également.) Fonte Le concept de fonte a ses origines dans la typographie où sa signification est assez claire ; dans la huitième édition du Dictionnaire de l’Académie Française d’entre 1932 et 1935 [52] on trouve sous l’entrée fonte, entre autres, la définition suivante : La notion de glyphe FONTE. [...] En termes d’Imprimerie, il se dit de l’Ensemble de toutes les lettres et de tous les signes composant un caractère complet de telle ou telle grosseur. Une nouvelle fonte. Une fonte de petit romain, de cicéro, etc., ou de neuf, de onze, etc. Une fonte de nouveaux caractères. Une fonte toute neuve. Dans l’informatique, par contre, le concept de fonte a subi de nombreuses évolutions. Nous avons déjà évoqué qu’au début, une fonte — qui appartenait à une imprimante — consistait en un simple ensemble d’images — de glyphes — où chacune d’elles correspondait à un caractère du codage de la plate-forme donnée. Formellement, une telle fonte peut être considérée comme un ensemble I d’images (de glyphes) et une fonction surjective f : {0, ..., NC } 7→ I qui définit des correspondances entre codes de caractère et images (glyphes). La fonction f , telle que nous l’avons définie, ne peut en général pas être considérée bijective pour l’unique raison que les caractères de contrôle, également appelés caractères non imprimables, n’ont pas de glyphe dédié. 1.5 Un nouvel usage : le traitement de texte L’ÉVOLUTION DE LA FONTE OU L’ÉMANCIPATION DU GLYPHE Une fois de plus, c’est la convergence d’une évolution technologique et d’un changement d’usage qui a fait émerger une nouvelle approche à la modélisation informatique de l’écrit. L’apparition des imprimantes graphiques et puis des écrans graphiques a permis un contrôle du rendu visuel jusqu’alors inégalé. En même temps, la popularité du word processing, traitement de texte, a créé un nouvel usage de l’ordinateur vis-à-vis de l’information textuelle : de son rôle d’humble véhicule du résultat des calculs, le texte est devenu la raison pour calculer, le but du jeu. Il était désormais question d’utiliser l’ordinateur dans le seul objectif de produire du texte destiné à la lecture humaine, et par ce fait, le texte produit a dû répondre à un nombre de nouveaux critères. 5 Jusqu’ici, nous avons évité d’employer le terme glyphe : il relève d’anachronisme de désigner l’image dans son état fortement lié au caractère par un terme qui, au contraire, a été adopté dans la langue française afin de marquer l’indépendance de celui-ci. Malgré cette considération, pour des raisons de simplicité et en anticipation, nous allons désormais employer le mot glyphe au lieu d’écrire image associée au caractère. 30 Le projet qui s’élève — par son approche scientifique à la composition de texte et par ses résultats spectaculaires en termes de qualité — au-dessus des nombreux logiciels de traitement de texte balbutiants de la fin des années 1970 est sans aucun doute le fameux système de préparation de document TEX, signé par D.E. Knuth et ses doctorants. Pour une présentation de l’histoire (forte intéressante) derrière la conception de ce logiciel et de son fonctionnement, cf. par exemple [42], une collection d’articles rédigés par Knuth. Ce qui nous intéressera au présent sont les modèles de texte de TEX et le fonctionnement de ses fontes. On parle de modèles de texte en pluriel parce que TEX en possède, comme nous allons voir très bientôt, au moins trois. Ces trois modèles correspondent aux formes représentationnelles d’un texte, décrites avec beaucoup de clarté par Mittelbach et Rowley dans [49]. Ils considèrent que la fonction d’un système de préparation de documents est d’exécuter une série de transformations textuelles, à partir d’une représentation d’échange jusqu’à une représentation finale, par l’intermédiaire d’une représentation interne transitionnelle. La section suivante nous permettra de voir en détail comment TEX implémente et fait usage de ces trois représentations distinctes. Si nous consacrons une section relativement longue à une description détaillée du modèle de texte de TEX, ce n’est pas uniquement grâce à ses mérites historiques : cette description nous servira ensuite, en section 3.2, à montrer l’intérêt d’avoir remplacé le modèle en question par le modèle plus puissant que proposera cette thèse. Les trois formes représentationnelles (modèles) de texte, d’après Mittelbach et Rowley 1.5.1 TEX Le système TEX a été conçu avec l’objectif de reproduire par ordinateur les conventions et la richesse visuelles propres à la typographie traditionnelle ; en d’autres termes, il s’agit d’un logiciel typographe qui produit, à l’aide d’une imprimante graphique, des pages imprimées de qualité comparable à celle de la typographie au plomb. MODÈLES DE TEXTE D’ENTRÉE ET DE SORTIE Nous avons vu que pour les ordinateurs de l’époque, le texte était synonyme de chaînes de caractères tirés d’une table de codage extrêmement concise (telle que le codage ASCII) alors que la typographie traditionnelle employait bien plus de signes (quotes, double-quotes, guillemets ouvrantsfermants, tirets de longueurs différentes, espaces à chasses variées, etc.). Selon le principe de fonctionnement de TEX, l’utilisateur doit fournir un document d’entrée n’utilisant que des caractères ASCII qui sera ensuite compilé afin de produire un texte final entièrement composé de glyphes. La solution de TEX au problème de signes non prévus par la table de codage de caractères consiste à utiliser des combinaisons de caractères et des commandes pour entrer ces signes et à générer en guise de sortie une représentation finale où les codes de caractère sont remplacés par des codes de glyphe, c’est-à-dire des références Codes de caractère vers des images. Au lieu d’identifier par le même code et le caractère et son et codes de glyphe image, on est désormais en présence de deux codes indépendants : le code de caractère, tiré d’une table de codage de caractères, et le code de glyphe, tiré de la fonte utilisée dans le document. En théorie, il n’y a pas de rapport direct 31 entre code de caractère d’entrée et code de glyphe de sortie associé, même si en pratique la plupart des caractères imprimables se trouvent aux mêmes positions numériques que leurs glyphes correspondants. TEX se retrouve alors avec deux ensembles de codes distincts et, en conséquence directe, avec deux types de documents : le document d’entrée, composé de caractères et de commandes (elles-mêmes composées également de caractères), et le document formaté de sortie, composé de glyphes et d’informations sur leurs positions géométriques en deux dimensions. Autrement dit, le modèle de texte de TEX comprend en réalité deux modèles distincts : le modèle d’entrée ou d’échange ou d’écriture et le modèle de sortie ou final ou de lecture. Deux modèles pour La création de deux représentations parallèles pour ce qui est essentiellele même texte ment le même texte était le début d’une divergence croissante entre ce qui est entré par l’utilisateur à travers le clavier et ce que l’ordinateur lui rend sur papier, et ceci jusqu’au niveau textuel le plus bas, jusqu’aux unités de base de l’écriture. Il existait désormais deux notations séparées : d’une part, la notation « orientée ordinateur », héritière des systèmes de télécommunication (télégraphe, télex, etc.) et de la machine à écrire, et d’autre part, une notation « orientée typographie », héritière de l’imprimerie traditionnelle correspondant à un usage inspiré des traditions typographiques. Le système TEX devait répondre aux deux usages en même temps, malgré le fait que ni le clavier de l’ordinateur, ni le codage de caractères utilisé ne soient adaptés à un usage typographique. Dans le reste de ce chapitre, nous verrons les effets considérables, à la fois positifs et négatifs, que la divergence des deux types de notations textuelles a eu sur la compréhension et l’usage du texte informatique. Dans le chapitre suivant, un des objectifs du nouveau modèle de texte que nous allons proposer est justement d’à nouveau faire converger les différents usages textuels vers une représentation commune, tout en évitant le piège de vouloir représenter l’intégralité des usages textuels par un seul ensemble fermé de signes élémentaires. LES Manque de distinction terminologique entre caractère et glyphe chez Knuth FONTES DE TEX C’est la responsabilité des fontes de TEX d’établir la liaison entre les deux modèles de texte par la conversion de codes de caractère en codes de glyphe. Pour la plupart des caractères, il s’agit d’une transformation à l’identique car les codes de glyphe ont été choisis de manière à être égaux aux codes de caractère correspondants. Les signes ne correspondant à aucun code ASCII sont entrés par des combinaisons de caractères (comme par exemple « --- » pour le tiret cadratin « — » ou « fi » pour la ligature typographique « fi ») ou bien par des commandes. Ainsi, à la manière des ligatures, plusieurs caractères peuvent être convertis en un seul glyphe, un phénomène remarquable qui témoigne du fait que le glyphe dans le modèle de texte de TEX est en effet très proche du caractère typographique, du bloc de métal dans le modèle de l’imprimerie traditionnelle. (C’est peut-être pour cette même raison que Knuth, concepteur et développeur principal de TEX, n’a pas fait de distinction terminologique entre caractère d’entrée et glyphe de sortie : pour lui, 32 les deux concepts s’appelaient tout simplement caractère6 . Afin d’implémenter les conversions parfois complexes entre caractères et glyphes, les fontes de TEX contiennent de véritables programmes, les programmes de ligaturage et de crénage. C’est en exécutant ces programmes contenus dans les fontes que TEX est amené à utiliser les glyphes de ligature et applique les déplacements horizontaux des glyphes liés au crénage. CODAGE DE CARACTÈRES ET CODAGE DE GLYPHES Nous arrivons à des questions théoriques de grande importance que TEX a introduites par la conception particulière de son modèle de texte. Le fait que le même contenu textuel peut être représenté de deux manières différentes, par des caractères et par des glyphes, mérite une réflexion sur la similarité et la différence entre les deux concepts. À première vue, le caractère et le glyphe, tels qu’ils sont utilisés par TEX, sont des concepts quasi-identiques : il s’agit dans les deux cas de codes représentés par des entiers naturels. Nous avons vu que les deux notations correspondaient à deux usages différents, notamment à un usage textuel de communication informatique ou d’échange d’informations qu’offre par défaut le système d’exploitation de la plate-forme donnée à travers le codage de caractères supporté, et à un usage typographique dont le nombre de signes disponibles est souvent plus élevé. En théorie, comme solution alternative, on pourrait imaginer un codage de caractères étendu qui comprendrait également les signes utilisés principalement en typographie et qui, par ce moyen, permettrait d’avoir un seul codage La possibilité commun pour les deux usages. À l’époque de la création de TEX, cette solu- d’un codage combiné tion n’a pas été retenue, pour un nombre de raisons pratiques. Tout d’abord, les ressources de stockage informatique limitaient sévèrement l’extension du nombre de points de code ; et s’il était question d’étendre le codage interne de 7 bits à 8, les signes typographiques n’étaient pas les seuls candidats pour les nouvelles cases du tableau. Deuxièmement, le nombre de signes typographiques à ajouter au codage n’a pas de borne bien définie car il dépend essentiellement de la nature des textes typographiques que l’on souhaite produire : par exemple, pour un ouvrage mathématique, plusieurs centaines de symboles seraient nécessaires, y compris l’alphabet grec ; pour ne pas parler d’un éventuel usage multilingue, voire multi-écriture. Le problème le plus important qui résulterait de l’introduction de signes typographiques dans le codage de caractères est un problème de cohérence : cette manière de mélanger deux usages et par conséquent deux modèles de texte conceptuellement différents résulte en un ensemble redondant de signes où des concepts « similaires » sont représentés à la fois par plusieurs entités. Par exemple, un « a » italique et un « a » gras, deux signes typographiques distincts, représentent la même lettre déjà couverte par le caractère no 97 du codage ASCII. De même, la ligature « fi » correspond à la même information textuelle qu’un caractère « f » suivi d’un caractère « i ». De telles distinctions ne sont pas pertinentes pour des usages non-typographiques et l’incohérence représentationnelle ainsi introduite a comme résultat de complexifier nombreux aspects 6 La citation « ...sets of related characters that are used in typesetting are traditionally known as fonts of type », extraite du TEXbook [41], témoigne de ce double emploi. 33 La possibilité d’un codage de signes typographiques analogue au codage de caractères du traitement textuel. La distinction entre modèle de texte typographique ou formaté et modèle d’échange d’informations textuelles était donc à la fin des années 1970 une réalité pratique. Elle a permis d’élargir considérablement la gamme de signes imprimables sans interférer avec, et même en se dissociant complètement des normes de codage de caractères utilisées sur les différentes plates-formes. Il y a cependant une nouvelle question soulevée par la solution ci-décrite : y a-t-il besoin, comme dans le cas des caractères, d’un codage de signes à usage typographique qui pourrait servir comme étiquetage sémantique des codes de glyphe ? Du point de vue de l’humain, l’association d’une image concrète visuellement reconnaissable avec le code de glyphe représente déjà une information sémantique. Ce type d’information reste néanmoins inexploitable pour l’ordinateur7 qui ne serait pas capable d’interpréter une chaîne de codes de glyphes si la seule indication associée au code était une image, comme il est capable de traiter ou d’analyser une chaîne de caractères — dont le codage C est connu — afin d’y distinguer lettres, chiffres, signes de ponctuation, etc. Sans informations supplémentaires, le code de glyphe reste donc un simple nombre entier, non interprétable par l’ordinateur. Face à ce problème8 , TEX a choisi l’approche de créer en quelque sorte sa propre norme, en définissant ses propres codages de glyphes : à chaque code de glyphe, TEX associe une unité sémantique correspondant à un signe typographique. En comparant cette définition à celle du codage en général (section 1.4.2 sur page 26), la particularité du codage de glyphes est alors le fait que, conformément à son usage, ses unités sémantiques textuelles sont choisies parmi ce que l’on appelle ici « signes typographiques ». TEX définit plusieurs codages de glyphes, avec des ensembles de signes typographiques disjoints. C’est la conséquence d’une contrainte de stockage : un code de glyphe est représenté sur 8 bits, ce qui limite le nombre d’éléments du codage (et de la fonte) à 256. Il en suit que le même code de glyphe peut représenter plusieurs signes typographiques selon le codage utilisé. Le code de glyphe de TEX ne peut être interprété sans spécifier le codage de glyphes utilisé et, de même, ce code de glyphe ne peut se référer à une image visuelle qu’en connaissant la fonte qui la contient. Dans le modèle de texte de TEX, le code de glyphe représente donc deux concepts différents car il peut être couplé soit avec une image contenue dans une fonte, soit avec une unité sémantique représentée dans un codage de glyphes. Nous appellerons le premier couple glyphe, le seconde signe typographique codé. Il est d’autant plus important de distinguer entre l’image concrète (glyphe) et le concept abstrait (signe typographique codé) que, nous verrons plus tard, les deux notions sont très souvent confondues. De ce point de vue, la définition du terme glyphe donné par Haralambous dans [27] est en concordance avec la nôtre : « [...] a glyph is “the image of a typographical sign” » : le glyphe 7 La reconnaissance optique reste une possibilité peu pratique, surtout dans les années 1970 et 1980. 8 À l’époque de la création de TEX et même jusqu’aux années 1990, ceci n’était pas un véritable problème, le seul but de TEX étant la création d’un document destiné à l’impression uniquement. Puisque le document de sortie de TEX n’avait aucune utilité à part être imprimé, un manque de sémantique associé aux codes de glyphe n’aurait pas eu de conséquence pratique. 34 est l’image d’un signe typographique (et non pas le signe même). Le lecteur a certainement remarqué la similarité de la définition du signe typographique codé donnée ci-dessus à celle du caractère en section 1.4.2. Dans les deux cas, on suppose la possibilité de choisir un ensemble restreint d’éléments à partir d’un vaste ensemble d’unités sémantiques textuelles. Par conséquent, le problème ontologique auquel nous faisons face par rapport aux signes typographiques : comment décider d’un signe quelconque s’il est « typographique » ou non ? Si ce genre de question était particulièrement dure à répondre concernant les caractères, le cas des signes typographiques l’est moins car on a la possibilité de s’appuyer sur les traditions d’usage et de définir le signe typographique comme étant un signe abstrait, utilisé dans la typographie traditionnelle, correspondant aux signes gravés sur les poinçons. Même s’il n’est pas tout à fait trivial de faire l’abstraction depuis les images portant l’esthétique de leurs fontes vers le concept de signe typographique, grâce aux expériences typographiques de cinq siècles, on a des idées relativement claires sur l’ensemble de signes à travers lesquels se réalise la typographie. C’est d’ailleurs par cette voie typographique « confortable », où l’abstrait est saisi à travers le concret, que Tereza et Yannis Haralambous, toujours dans le même article [27], tentent de proposer une définition alternative au concept de caractère. Comme évoqué ci-dessus, selon leur proposition, le glyphe est l’image d’un signe typographique et le caractère, à son tour, est une classe d’équivalence de glyphes, basée sur une description logique ou linguistique simple. Que faire lorsque l’écriture en question ne possède pas d’histoire typographique significative, voire n’en possède aucune ? Les auteurs de l’article mentionné suggèrent qu’en théorie la construction d’un modèle typographique pertinent est possible pour toute écriture. Il y a cependant une nouvelle question qui se pose, entraînée par la distinction conceptuelle entre caractère et glyphe que le modèle de texte de TEX a introduite. Désormais, la distinction entre l’unité du modèle visuel (le glyphe) et l’unité du modèle d’échange (caractère) permet une différence en granularité entre les deux modèles : une unité pertinente visuelle peut en théorie représenter plusieurs unités pertinentes d’échange et vice versa. Ces types de correspondances multiple-à-un, voire multiple-à-multiple, peuvent se manifester dans la typographie latine (ligatures, lettres accentuées composées) mais aussi dans de nombreuses écritures orientales où les signes d’écriture peuvent être assemblés à partir de traits élémentaires (un tel procédé est envisageable pour l’arabe, le nastaliq mais aussi pour les caractères chinois). Cependant, un tel écart entre modèle d’échange et modèle visuel n’est pas envisageable dans le cadre du modèle de texte de TEX, et il n’est pas prévu non plus dans les définitions données par Haralambous et évoquées dans le paragraphe précédent. C’est entre autres ce problème particulier qui mènera plus tard à la conception d’un nouveau modèle de texte où la séparation entre caractère et glyphe devient encore plus prononcée, adopté par la norme de codage de caractères Unicode et par la plupart de logiciels PAO modernes. En résumé, ce que nous venons de démontrer dans la présente section est que la distinction entre les concepts de caractère, de glyphe et de signe typographique a une réalité à la fois théorique et pratique. En même temps il paraît évident qu’une relation étroite existe entre les trois concepts, une 35 Comment décider la « typographicité » d’un signe ? Dériver le caractère à partir du signe typographique Correspondances entre caractère(s) et glyphe(s) relation qui n’est cependant pas facile à circonscrire de manière précise. Un des objectifs majeurs de la présente thèse est de concevoir une méthodologie bien fondée et cohérente qui permette de définir de manière plus exacte les concepts mentionnés ainsi que les traits qui les distinguent. LE « Boîtes » et « ressorts » Le nœud Types de nœud La création des nœuds de caractère NŒUD : UNITÉ TEXTUELLE INTERNE DE TEX Le processus de formatage effectué par TEX ne peut bien évidemment pas être réduit à une simple conversion de codes de caractère en codes de glyphe. À l’intérieur de TEX, on trouve encore un nouveau modèle textuel, un modèle opérationnel à travers lequel le texte de sortie est généré. L’idée est de représenter le texte par des boîtes connectées par des ressorts où les boîtes correspondent aux mots (ou à des blocs quelconques) ayant une hauteur et une largeur fixe (qui dépend de la taille des glyphes qui y sont contenus), et les ressorts correspondent aux espaces inter-mots, inter-lignes, inter-blocs, etc. Les ressorts (« glue » en anglais) se contractent et se dilatent, chacun selon ses propriétés quantifiées, pour remplir une ligne, une colonne, un bloc, une page, etc., de manière optimale. L’optimalité est quantifiée à l’aide de pénalités qui augmentent en fonction de la différence de contraction ou de dilatation du ressort par rapport à son état neutre. Au niveau implémentationnel, l’unité textuelle de ce modèle n’est ni le caractère, ni le glyphe, mais une sorte de conteneur général qui s’appelle nœud et qui peut représenter une grande variété d’objets et d’informations textuelles comme les boîtes mentionnées, les glyphes dans les boîtes, les ressorts et les pénalités. Le nœud est une structure de données typée selon sa fonction textuelle : un nœud de caractère contient un glyphe, un nœud de ligature contient un glyphe de ligature et ses composantes, un nœud de boîte contient une liste de nœuds (glyphes, ressorts, etc.) emboîtés, un nœud de glue correspond à un ressort inséré dans le texte entre deux boîtes, un nœud de pénalité est une valeur de pénalité qui s’active si une ligne de texte est coupée à l’endroit où il se trouve, et ainsi de suite. Le texte consiste en une liste de nœuds où les boîtes permettent l’imbrication de listes dans d’autres ; ainsi, la liste de nœuds n’est pas linéaire, elle suit une structure arborescente. Que se passe-t-il lorsqu’un texte en caractères est lu par TEX ? Après une première étape d’interprétation des commandes dans le document d’entrée, TEX construit les listes de nœuds sur lesquelles s’effectuera la grande majorité des tâches de composition et de mise en page. Pour ce faire, TEX consulte les fontes afin d’en retirer les codes de glyphe correspondant aux caractères. Chaque nouveau glyphe est représenté par un nœud de caractère dont le nom reflète, encore une fois, le fait que Knuth n’a pas fait de distinction terminologique entre caractère informatique et caractère typographique. Le cas des ligatures (et ceci comprend tous les glyphes qui se composent à partir de plusieurs caractères, comme le tiret cadratin) est une exception : elles ont leur propre type de nœud, le nœud de ligature. Le nœud de caractère est une structure simple qui réfère au glyphe par un identifiant de fonte et par un identifiant de glyphe à l’intérieur de cette fonte. Les codes de caractère d’origine ne sont pas présents dans les nœuds de caractère. Pourquoi le seraient-ils ? TEX construit les listes de nœuds pour effectuer 36 du formatage typographique sur le texte, et pour ce faire, il fait recours à son modèle de texte typographique basé sur les codes de glyphe uniquement. DU GLYPHE AU CARACTÈRE : LA CÉSURE Il y a cependant une opération lors du traitement effectué par TEX qui ne peut être considérée comme une opération purement typographique : la césure des mots. La césure est une opération principalement linguistique, même si elle a également des aspects présentationnels. Lorsqu’un paragraphe est divisé en lignes, TEX a besoin de connaître les endroits où les mots peuvent être coupés. Il s’avère cependant qu’un modèle de texte orienté à l’usage typographique, comme le modèle de TEX, n’est pas bien adapté à l’analyse linguistique car les unités sémantiques que représentent les signes typographiques ne sont pas toujours pertinentes du point de vue linguistique. Pour s’en convaincre, il suffit de penser aux ligatures (un seul signe typographique représente plusieurs graphèmes) ou aux lettres accentuées qui sont modélisées dans TEX par des glyphes séparés où le glyphe d’accent se positionne par rapport à la lettre de base par des nœuds de déplacements horizontal et vertical insérés entre les deux nœuds de caractère. En même temps, il s’avère qu’un modèle de texte basé sur un codage de caractères standard (comme ASCII) se prête mieux aux opérations linguistiques car les entités sémantiques que représentent les caractères sont en pratique plus proches des graphèmes linguistiques (car moins spécialisées à un usage typographique), même si, comme nous avons vu en section 1.4.2, l’utilisation d’un codage de caractères normalisé pour la représentation d’un texte (tel qu’un corpus linguistique) en soi ne garantit pas l’indépendance d’application et de plate-forme. (Par exemple, le codage ASCII ne contient pas de lettres accentuées et, jusqu’à l’apparition de codages étendus, il n’existait pas de moyen normalisé de les représenter. C’est d’ailleurs pour cette même raison que TEX n’est pas capable de couper les mots accentués qui ont été introduits dans un codage ASCII strict, par l’intermédiaire de commandes telles que \’a pour « á », etc.) Par conséquent, pour effectuer la césure, TEX aurait besoin de mémoriser à partir de quels caractères les glyphes dans les nœuds de caractère ont été générés. Pour la plupart des glyphes, TEX n’a pas besoin de procéder ainsi, pour la simple raison que le codage de glyphes qu’il utilise est construit de manière que les codes de glyphe soient égaux aux codes de caractère correspondants. Quant aux ligatures, TEX est capable de reconstituer les caractères correspondants grâce au nœud de ligature qui pour chaque ligature stocke la liste de caractères à partir desquels la ligature a été composée. L’exemple de TEX nous montre de nouveau que l’information textuelle peut être modélisée de différentes manières et que le modèle choisi dépend de l’usage donné. Cependant, certaines tâches complexes comme la composition et la mise en page typographique peuvent intégrer plusieurs usages (typographique, linguistique, etc.) et, par conséquent, nécessitent l’utilisation parallèle ou alternée des différents modèles textuels correspondants. La coexistence et l’utilisation de plusieurs modèles est donc une nécessité inévitable lorsque les modèles individuels ne sont pas suffisants pour décrire l’information textuelle dans sa complexité. Dans la suite de cette thèse, la problématique de la 37 Le texte en caractères convient mieux aux opérations linguistiques que le texte en glyphes Retour depuis le glyphe vers le caractère La complémentarité du caractère et du glyphe concurrence de modèles de texte restera un de nos sujets majeurs. Dans le présent chapitre nous analyserons les difficultés de la conversion entre modèles correspondant aux différents usages, alors que dans le chapitre suivant nous verrons comment et jusqu’à quel point il est possible de concevoir un modèle de texte unique qui soit capable d’accomoder plusieurs usages textuels à la fois. 1.5.2 L E LANGAGE ET LES FONTES P OSTS CRIPT, LA NOTION DE NOMMAGE DE GLYPHES L’émancipation du glyphe en tant qu’entité autonome par rapport au caractère a continué avec le développement du langage de description de pages PostScript — et plus particulièrement de son modèle de texte — en 1984 [3]. Avec la hausse de popularité des imprimantes graphiques, d’abord matricielles, puis au laser et à jet d’encre, le langage PostScript s’est vite imposé en tant que norme de description de pages intégré dans les imprimantes. La raison de ce succès est claire : PostScript permet de décrire un document quelconque, qu’il s’agisse de texte ou de graphique, en tant qu’image vectorielle. Grâce à cette description vectorielle, le même document PostScript peut être imprimé sur n’importe quelle imprimante, indépendamment de sa technologie (traceur, matricielle, laser, etc.) et de sa définition. Afin d’étendre sa portée à la description de documents textuels, PostScript se sert du concept de fontes vectorielles où les glyphes individuels sont décrits à l’aide de courbes de Bézier. En réalité, PostScript n’était pas le premier à proposer une description vectorielle de glyphes : aussi bien le système Metafont de Knuth qui accompagnait TEX que le système IKARUS9 développé par la société URW avaient précédé PostScript par au moins cinq ans. La véritable nouveauté de PostScript était plutôt de devenir une norme de facto de l’impression et d’ainsi révolutionner la création de documents électroniques. NOMMAGE DE GLYPHES Dans la section précédente, nous avons distingué entre textes — et donc entre documents — « d’entrée » et « de sortie », ces derniers étant orientés présentation. Les documents PostScript se situent du côté présentationnel. Le texte contenu dans un document PostScript est composé d’une suite de glyphes positionnés sur un plan. Une des nouveautés introduites par PostScript est le système de nommage qui sert à identifier, de manière unique, les glyphes d’une fonte par l’intermédiaire d’une chaîne de caractères : le nom de glyphe. Bien que la famille de normes PostScript incorpore de nombreux formats de fonte, la manière de coder les glyphes par l’intermédiaire du nom de glyphe leur est commune (à l’exception des fontes CID). Codage de glyphes Le codage de glyphes contenu dans la fonte PostScript consiste à créer une à travers les noms table de correspondances entre des nombres entiers et un sous-ensemble des noms de glyphe parmi les glyphes disponibles dans la fonte. Une fonte PostScript peut contenir jusqu’à 65 536 glyphes (ressources vectorielles), chacun 9 Qui a apparemment été nommé ainsi grâce aux nombreux plantages qu’il a produit lors de son développement initial. 38 d’eux associé à un nom de glyphe, mais une table de codage ne peut contenir que 256 entrées. En revanche, il est possible de définir plusieurs codages pour la même fonte, ce qui permet non seulement l’adaptation de la fonte à plusieurs situations linguistiques mais aussi l’accès à la totalité de glyphes contenus dans la même fonte lorsque leur nombre dépasse 256. L’intérêt d’étiqueter un glyphe par une chaîne de caractères au lieu d’une valeur numérique arbitraire (comme dans les fontes TrueType, par exemple) devient plus clair si l’on admet que le premier a plus de potentiel de servir comme identifiant sémantique du glyphe, autrement dit, d’interpréter le glyphe en renvoyant vers un signe typographique (en tant qu’entité sémantique). En supposant l’existence d’une convention de nommage, d’un répertoire de noms défini indépendamment des fontes, un document PostScript devient capable d’associer une sémantique typographique au texte qu’il contient, sans contraindre les codages des fontes utilisées (ce qui est un avantage par rapport à TEX), à condition bien sûr que les noms de glyphe soient choisis de manière pertinente. TEX avait réalisé la « sémantisation » de ses codages de glyphes par l’emploi de codages « figés » où la sémantique (le signe typographique) associée à chaque code numérique était fixée. Dans le cas de PostScript, c’est le nom de glyphe et non pas le code numérique qui renvoie à la valeur sémantique. Les deux solutions ne sont pas équivalentes pour les raisons suivantes. – Une chaîne de glyphes en tant que suite de codes numériques ne « fait sens » que lorsque le codage TEX est connu. Ce n’est pas le cas de PostScript où les codes ne portent aucun sens. Il en suit qu’un texte PostScript n’est interprétable que si la table de correspondances entre codes et noms de glyphes est disponible. – Dans TEX, l’ensemble de signes typographiques codés (et par conséquent, les signes que l’on peut utiliser dans ses documents) est un ensemble fermé défini par les codages de glyphes privés. L’utilisation de nouveaux signes typographiques, inconnus par TEX, n’est possible qu’au prix d’abandonner ces codages, ce qui amène à la « dé-sémantisation » du texte. En revanche, PostScript permet d’assembler son propre codage de fonte à l’aide des noms de glyphes. – Les codages de TEX sont établis par convention, et l’extension du codage par de nouveaux signes n’est possible que par l’abandon de cette convention. La même chose peut être dite de la convention de nommage, c’est-à-dire de l’ensemble de noms disponibles ; cependant, un nom en tant que chaîne de caractères peut être schématisé, structuré, il peut offrir des moyens plus souples de créer de nouveaux noms. Pour prendre un exemple concret, le caractère « . » (point) est souvent utilisé comme séparateur entre la partie principale du nom et un suffixe : le nom eacute.swash peut désigner une lettre é minuscule avec une forme allongée, alors que eacute.narrow peut désigner la même lettre avec une forme étroite. Suivant ce schéma, il devient possible de créer un nouveau nom pour une nouvelle forme de la lettre « é » tout en indiquant dans la partie principale du nom devant le point qu’il s’agit bien de la même lettre « é ». – A priori, la taille d’un codage (le nombre de codes disponibles) est tou39 Le nom de glyphe en tant qu’identifiant sémantique Le nom de glyphe peut avoir une structure jours bornée par des limitations techniques ou autres ; cette borne fait partie de la convention mentionnée. L’ensemble de noms de glyphes n’est limité par aucune borne pratique, il peut être étendu sans que l’augmentation de noms disponibles cause le moindre problème technique. ISO/IEC 10036 : UN Efforts de normalisation pour le codage des signes typographiques Les raisons de l’échec d’ISO 10036 NOMMAGE DE GLYPHES UNIVERSEL La notion de nommage de glyphes proposée par PostScript, couplée avec l’idée d’une convention de nommage globale et indépendante de fonte et de format de document, avait donc tout potentiel de donner naissance à un codage de glyphes universel normalisé, permettant d’associer de la sémantique typographique aux images graphiques contenues dans les fontes et dans les textes informatiques formatés. Ceci aurait pu mener à un modèle textuel informatique à deux niveaux, avec d’un côté la représentation d’échange, basée sur les caractères dont la sémantique est véhiculée par le codage de caractères et le contexte d’usage (CU ), et de l’autre côté la représentation finale, basée sur les glyphes dont la sémantique est définie par la convention de nommage. Dans les années 1980, l’intérêt de créer des documents typographiés multilingues devenait de plus en plus grand, alors que les normes de codages de caractères nationaux — qui venaient d’être créés, voir section 1.6.1 — n’étaient en général pas adaptées à l’usage typographique. Le « climat était donc favorable » à la normalisation d’un modèle de texte alternatif, basé sur le signe typographique. Adobe, le concepteur de PostScript, a publié une proposition de convention de nommage appelé Adobe Glyph List (dont la version la plus récente, qui date de l’an 2002, contient 4 283 noms de signes typographiques venant de diverses écritures du monde [4]). Un effort similaire, visant à répertorier les signes typographiques, était la norme ISO/IEC 10036, créé en 1993 [36]. Quant à cette dernière, l’inclusion de nouveaux signes dans le répertoire se faisait sur simple demande d’enregistrement, une procédure nettement plus simple que la moindre modification d’une norme de codage de caractères. L’organisme initialement en charge de la gestion du répertoire était nommé AFII (Association for Font Information Interchange). L’identification des signes typographiques se faisait à travers des identifiants numériques uniques. Les noms PostScript des glyphes dans les fontes se construisaient en se basant sur les mêmes identifiants, préfixés par « afii ». Contrairement aux attentes, le nombre d’entrées dans le répertoire géré par l’AFII n’a guère augmenté durant les années suivant la mise en place du répertoire, signe d’un désintérêt général, mettant en doute l’utilité du principe de nommage universel. Pourquoi l’idée d’un répertoire global de signes typographiques n’est-elle pas devenue populaire ? Le succès du modèle de texte basé sur le répertoire global d’ISO 10036 dépendait de son adoption ou non par l’industrie, y compris les créateurs de logiciels de traitement de texte ainsi que les créateurs de fontes ; or, – la technologie PostScript n’était pas le seul prétendant du marché, et les adversaires tels que Microsoft et Apple, développeurs du format de fonte TrueType, ont choisi de ne pas adopter un modèle de texte basé 40 sur le nommage de glyphes10 ; – Adobe n’a jamais eu l’intention de supplanter les noms contenus dans sa Glyph List par les identifiants AFII (à part environ deux cent entrées pour le cyrillique, l’hébreu et l’arabe) ; – les créateurs de fontes, majoritairement artistes plutôt qu’ingénieurs, ne voyaient pas d’intérêt à compliquer leur travail en s’obligeant de donner aux glyphes dessinés des noms aussi peu parlants et pénibles que les identifiants AFII. Le coup de grâce à ISO 10036 a été délivré par le codage de caractères ISO 10036 contre Unicode, apparu en 1990-1991 (deux ans avant ISO 10036), qui a permis de Unicode surmonter la barrière de la pénurie de points de code disponibles et qui a proposé pour de nombreuses écritures un moyen de représentation textuelle jusqu’alors impossible. En théorie, Unicode et ISO 10036 étaient censés servir deux objectifs bien distincts, notamment de définir les atomes textuels des représentations d’échange pour l’un et de formatage pour l’autre. La raison d’être de la normalisation des signes typographiques était justement le principe selon lequel l’aspect graphique des signes ne doit pas concerner le codage de caractères, ce dernier n’étant intéressé que par leurs aspects sémantiques. Cependant, le Consortium Unicode ne s’est jamais montré sévère vis-à-vis de l’inclusion dans la norme des caractères non conformes à cette règle, surtout que la distinction entre aspects graphiques et sémantiques s’est avérée souvent très ambiguë. (Nous allons élaborer ce problème dans une section dédiée à Unicode.) Avec l’inclusion de de plus en plus de caractères dans Unicode, l’intérêt de maintenir un répertoire sémantique parallèle s’est diminué [68]. Le cas des caractères « logographiques »11 du chinois, du japonais et du coréen est un bon exemple de ce phénomène : le répertoire logographique d’Unicode est en expansion constante, et avec l’inclusion de chaque nouveau caractère, son clone d’ISO 10036 devient obsolète. Néanmoins, dû à la nature ouverte de l’ensemble des signes logographiques — de nouveaux caractères, qui très souvent dénotent des noms propres, peuvent apparaître du jour au lendemain —, le processus lent et complexe de l’extension d’Unicode met en évidence la nécessité d’une méthode alternative de représentation normalisée de signes typographiques. Ce n’est pas par hasard que la gestion du catalogue d’ISO 10036, après la dissolution de l’AFII, a été reprise par GLOCOM, un organisme japonais. LE NOM DE GLYPHE EN TANT QUE RÉFÉRENCE AU CARACTÈRE La montée en importance d’Unicode en tant que moyen unique de repré- Le caractère comme senter le contenu textuel a entraîné l’abandon de l’idée d’une sémantisation porteur exclusif alternative du texte à travers les noms de signes typographiques. Par consé- de sémantique quent, l’usage des noms de glyphes PostScript a également changé d’objectif : 10 Certes, le format TrueType permet d’associer des noms PostScript aux glyphes mais pour l’unique but de rester compatible avec les pilotes PostScript des imprimantes. 11 « Caractère » est le terme le plus souvent utilisé dans un contexte non-informatique pour désigner les signes d’origine chinoise. Puisqu’il y a danger de confondre ce sens spécial avec celui du caractère informatique, nous préférerons le terme logogramme, même si l’usage de celui-ci est également fortement débattu [26, p. 111] à cause de son imprécision descriptive vis-à-vis de la relation sémiotique représentée par les éléments de l’écriture chinoise. 41 FIG. 1.3 – À gauche : le logogramme chinois zhào se décompose en trois composants (soleil, lune, ciel) qui, à leur tour, peuvent être décomposés davantage, même jusqu’aux traits élémentaires. À droite : une décomposition possible de la lettre arabe noun médian en deux traits élémentaires et un lozenge. dès lors, le nom servait non pas à identifier un signe typographique tel quel mais à faire référence au (ou aux) caractère(s) informatique(s) représenté(s) par le signe. La sémantique vers laquelle renvoie un nom (par exemple, le nom f_i) n’est donc pas principalement un signe typographique particulier (une ligature fi romaine) mais plutôt un caractère ou une suite de caractères (un caractère f suivi par un caractère i). Pour prendre un exemple plus à jour par rapport aux usages actuels, le nom de glyphe uni0644.fina précise qu’il s’agit d’un glyphe correspondant au caractère lam arabe, codé en position hexadécimale 0644 par le codage Unicode (section 1.8). Le suffixe fina peut éventuellement donner une information supplémantaire — dans notre cas, qu’il s’agit de la forme finale de la lettre lam — mais l’information contenue dans le suffixe reste inexploitable en pratique, comme nous verrons toute à l’heure. Cet usage particulier du nommage de glyphes n’est devenu important que depuis la fin des années 1990, sa cause principale étant l’apparition d’Unicode et des documents interactifs dont nous parlerons en détail en sections 1.8 et 1.7 respectivement. Il faut néanmoins se rendre compte que cet usage du nom de glyphe représente un choix conceptuel de grande envergure : la sémantique explicitement portée par les éléments d’un texte électronique formaté se limite désormais à la sémantique portée par un codage de caractères. En d’autres termes, l’ordinateur ne peut plus interpréter un texte PostScript qu’à travers la chaîne de caractères qui a servi à le créer. Même si en théorie, comme dans l’exemple ci-dessus, il reste possible de représenter de multiples informations dans le suffixe du nom de glyphe, il n’existe cependant aucune norme ni convention aujourd’hui pour décrire l’interprétation de ces informations. Par conséquent, elles sont ignorées par les applications dans la majorité des cas. Un problème inhérent La méthode qui permet d’établir des correspondances un-à-un (cas tydu nom de glyphe pique) et un-à-multiple (cas des ligatures) entre glyphes et caractères à travers qui réfère au caractère les noms de glyphe souffre également d’un autre problème conceptuel : elle n’est pas capable d’exprimer des correspondances multiple-à-un, c’est-à-dire 42 où plusieurs glyphes représentent un seul caractère. C’est le cas lorsqu’une lettre accentuée est décomposée en glyphe de base et glyphe de marque. De manière plus générale, rien ne garantit que l’ensemble des signes élémentaires d’un modèle typographique appliqué à une écriture donnée possède la même granularité que l’ensemble de caractères de cette même écriture. Dans le cas des écritures comme le chinois, l’arabe ou plus particulièrement le nastaliq, il existe des solutions typographiques où les unités naturelles et intuitives de l’écriture — auxquelles correspondent les caractères informatiques — sont assemblées à partir de composants élémentaires (voir figure 1.3) ; ou en d’autres termes, l’unité pertinente graphique est plus petite que l’unité pertinente linguistique. Lorsqu’un glyphe représente une telle unité inférieure et peut potentiellement participer à la construction de plusieurs signes, il ne correspond en soi à aucun caractère précis, et pour cette raison ne peut être identifié par un nom de glyphe renvoyant vers un caractère. Les exemples ci-dessus nous ouvrent la perspective vers des considérations qui dépassent les cadres établis par l’histoire occidentale de l’informatique : avec l’adoption de l’ordinateur au monde entier, le besoin de communiquer à travers l’ordinateur dans sa propre langue, en utilisant sa propre écriture est devenu de plus en plus important. D’une part, le codage de caractères ASCII n’était capable de représenter qu’une petite fraction des langues du monde. D’autre part, les fontes et les logiciels qui effectuaient des opérations textuelles n’étaient pas adaptés aux particularités des écritures non-alphabétiques. Face aux nouveaux usages, il était à nouveau question de reconsidérer les modèles de texte utilisés. 1.6 L’ASPECT MULTILINGUE DU TEXTE INFORMATIQUE L’utilisation de l’ordinateur ne s’est bien évidemment pas répandue en même temps et à la même échelle dans le monde, non seulement à cause des différences de niveau de développement technologique entre pays mais aussi à cause de raisons culturelles, linguistiques, économiques et même politiques. Notamment, un problème particulier qui a souvent ralenti l’adoption de certains usages des systèmes informatiques dans un pays par rapport à un autre était l’incompatibilité de l’écriture de ce pays avec le modèle informatique (le codage de caractères, le fonctionnement des fontes, etc.) proposé par les systèmes faits sur mesure pour la langue anglaise uniquement. Du point de vue technique, c’étaient peut-être les pays de l’Europe de l’Ouest qui ont eu le moins de mal à adapter leurs plates-formes informatiques aux besoins de leurs propres langues et écritures, grâce à l’alphabet latin commun. Avant d’examiner des exemples concrets, énumérons les composants d’un système12 informatique concernés par la modélisation textuelle : – le clavier à travers lequel on introduit le texte ; – le codage de caractères employé par le système ; – les fontes disponibles et leur fonctionnement ; 12 Il s’agit bien de systèmes informatiques car on ne peut pas parler d’adaptation à une langue ou écriture donnée sans que chaque composant du système n’y soit adapté. 43 Le clavier Le codage de caractères La fonte Le logiciel – les méthodes de formatage de texte à plusieurs niveaux d’usage (affichage simple, traitement typographique, etc.). Dans les cultures alphabétiques, l’adaptation du clavier de l’ordinateur n’a en général pas posé de soucis particuliers grâce à la tradition des machines à écrire. Très souvent, l’organisation des touches des machines à écrire traditionnelles a été reprise à l’identique pour l’ordinateur, étendue par quelques touches supplémentaires (dont la fonction était plutôt le contrôle de l’ordinateur que l’introduction de nouveaux signes). Le revers de la médaille est que la gamme de signes disponibles sur les claviers des machines à écrire était très restreint, et le clavier de l’ordinateur a hérité de cet inconvénient. (Pour prendre l’exemple du clavier français, pensons au manque de lettres comme œ, Œ, les guillemets, pour ne pas mentionner les signes typographiques comme les tirets variés.) L’adaptation du codage de caractères à l’écriture d’une langue donnée est un problème délicat de plusieurs points de vue. Tout d’abord, le codage de caractères étant un moyen d’échange d’informations textuelles, il est essentiel pour tout codage de caractères d’être normalisé à un niveau géographique le plus large possible, étant donné l’importance de l’interopérabilité entre systèmes informatiques, même entre pays différents. Lorsque de nombreuses langues sont forcées de se faire la concurence pour un nombre très restreint de points de code disponibles (ce qui était le cas, entre autres, des pays de l’Europe de l’Ouest et le codage ISO 8859-1), parfois les rapports de force et la diplomatie peuvent prévaloir sur les conventions nationales linguistiques et typographiques [9]. Les véritables difficultés pour définir un codage de caractères bien adapté à une écriture ou même à une langue donnée sont cependant scientifiques et technologiques. Nous aborderons ce sujet en détail dans la section 1.6.1. Historiquement, la fonte est un concept de la typographie au plomb traditionnelle. De plusieurs points de vue, les fontes informatiques des années 1970, 1980, voire 1990, imitaient le fonctionnement et les propriétés des fontes traditionnelles ; par conséquent, elles étaient tout aussi inadaptées à la composition d’écritures non-alphabétiques (telles que l’arabe) que leurs antécédents mécaniques. Nous consacrerons à ce sujet la section 1.6.2. Finalement, ayant modifié les normes et les ressources, il faut adapter le logiciel, y compris les systèmes d’exploitation et les applications, sur tous leurs niveaux concernés par la gestion de données textuelles. 1.6.1 CODAGES DE CARACTÈRES NATIONAUX La première tentative d’internationaliser le codage ASCII — irrémédiablement latino- et anglocentrique — était la norme ISO 646 [28] qui consistait à remplacer, pour une poignée de langues, quelques 18 caractères de l’ASCII par des caractères spécifiques à chacun des langues. Les 7 bits de l’ASCII étaient cependant trop serrés pour une couverture complète des langues concernées, et pour cette raison les codages ISO 646 n’ont pu être qu’une solution temporaire. Similairement, la norme ISO 2022, qui permet la création pratiquement illimitée de nouveaux codages ainsi que de basculer entre ces codages dans le même texte à l’aide de séquences d’échappement [28, p. 33-34], a égale44 ment été destinée à l’abandon à cause des difficultés techniques qui lui étaient caractéristiques (l’impossibilité de décider la sémantique d’un caractère sans parcourir et interpréter la chaîne entière, l’irréalité qu’un système informatique supporte la totalité de codages adressés par la norme). À partir de 1986, l’ISO a défini un ensemble de codages internationaux à 8 bits. L’ajout du huitième bit a rendu disponibles 128 nouveaux points de code dont 96 ont été associés à de nouveaux signes d’écriture (le reste étant réservé pour des caractères de contrôle). 16 différentes tables de codage ont été définies par l’ISO, nommées ISO 8859-1 jusqu’à ISO 8859-16, pour les écritures latine, cyrillique, arabe, hébreu, grec, thaï. La couverture de ces écritures est souvent très rudimentaire (voir [28, p. 34-41] pour un résumé des défauts et omissions majeures), en partie parce que les 96 points de code disponibles (128 moins 32 points de code réservés pour des caractères de contrôle) ne sont pas toujours suffisants pour représenter la richesse des écritures en question, en partie à cause d’éventuelles choix discutables entre signes compris et non-compris dans la norme. Pour comprendre l’ampleur des obstacles contre lesquels l’ISO a dû se heurter, rappelons-nous que les premiers modèles textuels informatiques ont été conçus en Occident, fortement inspirés d’usages antérieurs comme la typographie à plomb, la machine à écrire, les technologies de télécommunication telles que le télégraphe, le télex, et ainsi de suite. Du point de vue linguistique, le concept de caractère — tel qu’il est utilisé par les codages ASCII et ISO 8859 — reflète les particularités de l’écriture latine et des usages mentionnés : il est conceptuellement similaire au graphème de la linguistique occidentale, qui à son tour est (directement ou indirectement) lié au phonème13 . D’autre part, d’un point de vue graphique, les graphèmes de l’écriture latine se prêtent facilement à une approche par découpage « atomiste » du texte car ils se distinguent facilement à force d’être graphiquement séparés. Ces trois particularités — historique, linguistique et graphique — font que la conception d’un codage de caractères pour l’écriture latine s’est réalisée de la manière dont on le connaît aujourd’hui. Or, les particularités mentionnées ci-dessus ne sont pas forcément partagés par toutes les autres écritures du monde. Dans l’histoire de nombreuses écritures, les traditions typographiques — qui pourraient suggérer des segmentations potentielles — ont été moins importantes (c’est par exemple le cas de l’arabe). Une approche linguistique à la segmentation d’une écriture donnera des résultats remarquablement différents pour des écritures phonographiques (latin, grec, cyrillique, etc.), consonantiques (arabe), syllabiques (les kana japonais), alphasyllabiques (les écritures indiennes) ou morphémiques (chinois) : le nombre de segments linguistiques unitaires peut varier entre une vingtaine et des centaines, voire des dizaines de milliers pour le chinois14 . D’ailleurs, si l’on prend en considération les diverses variantes de la même écriture adaptées à de différentes langues, le nombre de segments se multiplie davantage. 13 Nous écartons ici, juste pour ce propos, la considération des signes de ponctuation et d’autres signes non-phonémiques. 14 Le nombre de logogrammes chinois nécessaires pour la communication écrite dépend bien évidemment de nombreux facteurs ; par conséquent, souvent on exprime ce nombre en fonction du pourcentage de la totalité d’usages possibles : par exemple, quelques 7 000 caractères couvrent 99,99% des usages [26, p. 264]. 45 ISO 8859 Le caractère est un concept occidental Différences conceptuelles entre écritures En même temps, la segmentation graphique de certaines écritures connectées (comme l’arabe ou le nastaliq, écriture traditionnelle de l’Iran) est loin d’être évidente d’un point de vue typographique, même si, bien entendu, leurs lecteurs distinguent leurs éléments constitutifs très facilement. Ou bien, pour prendre l’exemple du chinois où la séparation graphique entre les éléments de l’écriture est très nette, il est loin d’être clair que cette segmentation intuitive soit la plus efficace dans un contexte informatique, par rapport à une segmentation plus fine en composantes, voire en traits élémentaires. Ces considérations mettent en évidence le fait que le modèle informatique extrêmement simple conçu pour l’écriture latine, où une touche de clavier correspond à un caractère qui est équivalent à un graphème de l’écriture, ne peut être automatiquement appliqué à toutes les autres écritures du monde. Le (ou les) modèle(s) informatique(s) doivent être étendus pour que des correspondances un-à-multiple, multiple-à-un et même multiple-à-multiple entre frappes de clavier et caractères stockés, puis entre caractères et glyphes affichés, soient possibles. (Ce dernier est d’ailleurs également nécessaire pour une composition typographique de bonne qualité pour l’écriture latine, notamment pour les ligatures, les lettres accentuées, etc.) Les avantages En même temps, il faut admettre que la simplicité d’introduire, de traiter d’une modélisation et d’afficher chaque élément textuel de manière indépendante est un grand simple avantage du point de vue de l’interface homme-machine, alors qu’un mo- dèle textuel qui établit des correspondances plus complexes entre touches de clavier, caractères et glyphes affichés pose forcément des difficultés non pas seulement pour le développeur d’une application quelconque qui est censée afficher le moindre fragment de texte, mais aussi pour l’utilisateur qui, afin de comprendre le fonctionnement du système, doit être capable d’adopter un regard abstrait et analytique sur sa propre écriture. Traduire cette complexité inhérente du modèle de texte en une interface utilisateur de saisie et de manipulation simple et conviviale est un véritable défi conceptuel. Nous n’aborderons pas cet aspect de la modélisation dans cette thèse ; néanmoins, nous tenons à remarquer que, même si les traits majeurs des interfaces de haut niveau sont dépendants du modèle de texte de bas niveau, cette dépendance peut être rendu indirecte par la conception des premières. Dans la section suivante, mais toujours dans un contexte multilingue et multi-écritures, nous allons nous intéresser aux modèles visuels dont le but est de décrire le texte dans sa forme de représentation finale (ou formatée). À travers des exemples d’écritures non-latines, nous allons voir comment le texte en caractères se transforme en texte en glyphes. Lors du chapitre suivant, ces exemples nous serviront également pour voir comment le modèle de texte que nous proposons s’adapte aux particularités des différentes écritures par rapport au modèle caractère-glyphe, généralement adopté aujourd’hui. Pour des raisons historiques et de similarité conceptuelle entre le modèle typographique traditionnelle et les modèles visuels informatiques, il ne relève Qui dit visualisation pas d’imprécision de parler de typographie au lieu de visualisation : toute dit typographie visualisation informatique de texte, qu’elle soit simple ou élaborée, relève forcément d’une approche typographique. 46 1.6.2 T YPOGRAPHIE ET TRAITEMENT DES NON - ALPHABÉTIQUES ÉCRITURES Nous avons déjà évoqué le fait que les différentes cultures ont eu des traditions typographiques plus ou moins importantes dans leur histoire. Très souvent, les réserves de la part d’une culture envers l’adoption d’une technologie typographique gutenbergienne — qui consiste donc à modéliser l’écriture en la segmentant en signes typographiques individuels — étaient dues à l’incompatibilité entre ce modèle et les particularités graphiques de l’écriture en question. Tel était le cas, entre autres, de l’arabe, une écriture connectée aux tendaces très calligraphiques qui, par conséquent, ne se laissait pas facilement diviser en signes typographiques élémentaires. Tel était également le cas du chinois, mais pour une raison complètement différente : là, c’était le nombre élevé de logogrammes qui a rendu impratique l’approche typographique. L’arrivée de l’ordinateur a donné une nouvelle chance à ces écritures, une L’ordinateur bouleverse nouvelle possibilité de s’approprier un modèle typographique plus proche les pratiques de leurs propriétés graphiques, une fois libérées des contraintes matérielles typographiques propres à la technologie au plomb. (Ce qui ne veut bien évidemment pas dire que l’ordinateur ne leur a pas imposé d’autres types de contraintes technologiques.) Le potentiel était présent mais inexploité jusqu’aux années 1980, voire 1990, pour de nombreuses raisons dont la dominance technologique de l’Ouest n’est peut-être pas la moins importante. Avec la « démocratisation » de l’informatique et l’apparition du PC et de ses clones partout dans le monde (au début, sans le moindre effort de la part des producteurs de localiser les logiciels et les dispositifs), des solutions locales au problème d’informatiser les différentes écritures ont commencé à émerger, plus souvent de manière bottom-up, grâce à des développeurs individuels, que dans le sens inverse. La technologie que les développeurs de ces solutions ont due exploiter comprenait des claviers, des codages de caractères et des formats de fonte adaptés à l’écriture latine et aux langues occidentales. Dans ces conditions, et faute de normes nationales ou internationales, les solutions étaient ad hoc et mutuellement incompatibles (voir par exemple l’étude de cas concernant le khmer dans [60]), souvent développées par des entreprises pour le fonctionnement d’un logiciel précis, pour ensuite faire partie de la multitude de normes de facto présentes sur le marché. Dans le cadre de la présente thèse, il n’est malheureusement pas possible de fournir une analyse exhaustive des particularités inhérentes aux différentes écritures du monde, ni même pour une seule. L’approche que nous adoptons consiste à présenter quelques exemples qui illustrent par la pratique les besoins auxquels est censé répondre un modèle de texte qui se veut global. L’ÉCRITURE ARABE Du point de vue linguistique, l’arabe est une écriture consonantique qui prévoit cependant l’indication des voyelles à l’aide de marques au-dessus ou au-dessous des consonnes [19]. Du point de vue graphique, l’arabe est une écriture connectée qui se lit de droite à gauche. En partie à cause de sa nature Contextualité connectée, les lettres possèdent plusieurs allographes selon leurs positions dans les mots (initial, médian, final, isolé) ; suivant l’usage terminologique 47 courant dans l’informatique, nous appellerons celles-ci formes contextuelles Dynamique arabes. Une autre conséquence de la cursivité de l’écriture est la liberté d’al- longer les lettres même jusqu’à plusieurs fois leur largeur par défaut à des fins d’égalisation de lignes [38] ou, surtout dans les textes religieux, pour une mise en évidence sémantique. L’arabe emploie également un très grand nombre de ligatures15 , dont certaines qui sont obligatoires et d’autres, optionnelles Marques et de nature plutôt esthétique. Pour parler enfin des marques diacritiques de l’arabe, celles-ci sont le plus souvent omises ; elles peuvent cependant être présentes lorsque la non-ambiguïté du texte doit être assurée par le marquage des voyelles (textes religieux, apprentissage de la langue arabe, désambiguïsation). Certaines parmi elles servent comme aide rhétorique dans les textes religieux. De par usages très différents des marques de l’arabe par rapport aux accents de l’écriture latine, leur abondance potentielle dans le texte et, une fois de plus, la cursivité de l’écriture, il s’avère que le positionnement des marques arabes par rapport aux lettres de base s’effectue de manière plus souple, et donc plus complexe algorithmiquement, que le positionnement des accents latins [13]. Parmi les propriétés mentionnées, une grande partie reste incompatible avec les technologies basées sur les modèles de texte occidentaux : Codage et fontes – le codage de caractères arabe ISO 8859-6 (en partie héritier du modèle de la machine à écrire arabe) est un codage créé selon des principes à prépondérance linguistique (à l’opposition des principes typographiques) ; ainsi chaque consonne est représentée par un seul caractère, indépendamment de sa forme contextuelle. Par conséquent, lors de la visualisation du texte, quatre glyphes différents peuvent correspondre au même caractère, un phénomène que les mécanismes standard de codage des formats de fonte PostScript et TrueType ne sont pas capables de décrire. Connexions curvilignes – La dynamique de l’allongement des lettres et des connexions curvilignes (kachidé) entre lettres est particulièrement difficile à imiter par le modèle typographique occidental qui divise l’écrit en atomes graphiques figés (les poinçons), disposés sur une ligne unidimensionnelle. Les fontes classiques peuvent inclure des glyphes alternatifs à chasses variées et des glyphes d’allongement (rectilignes et non curvilignes) mais, d’une part, ceci ne peut donner qu’une approximation de la dynamique de l’écriture arabe et, d’autre part, le même problème de codage se pose par rapport aux glyphes alternatifs que par rapport aux formes contextuelles. Une solution différente est l’emploi de fontes dynamiques dont le seul exemple de format existant est le Type 3 de PostScript. Celuici propose de décrire les glyphes à l’aide de programmes PostScript, permettant ainsi des calculs complexes à la volée (lors de l’affichage), y compris les calculs nécessaires pour produire des connexions curvilignes et des allongements adaptés aux formes des lettres adjacentes. À ce propos, voir notamment les travaux d’Azzedine Lazrek [44] ou de 15 Notons que le terme ligature est surtout employé dans un contexte typographique, car il s’agit, encore une fois, d’une propriété naturelle de l’écriture connectée, notamment de former des liaisons bidimensionnelles entre des signes élémentaires pour des raisons esthétiques, traditionnelles ou encore d’économie d’espace. 48 Daniel Berry [59]. Malheureusement, le support du format Type 3 aux niveaux matériel et logiciel (pilotes, systèmes d’exploitation, applications) reste très limitée, avec peu de chances d’évolution car le format a été de facto abandonné par Adobe, son créateur. – Lorsque la disposition d’un ensemble de lettres adjacentes ne suit pas Ligatures strictement la ligne de l’écriture (par exemple, quand elles s’empilent verticalement ou elles changent de forme), alors l’approche typographique consiste à représenter cet ensemble de lettres par une ligature. Dans une fonte informatique, une ligature est un glyphe comme les autres, sauf qu’elle correspond non pas à un seul mais à plusieurs caractères à la fois. Le système de composition doit être capable de reconnaître les ligatures présentes dans une fonte donnée et de les employer en remplaçant automatiquement les chaînes de caractères par les ligatures qui leur correspondent. Puisque ce n’était pas le cas général jusqu’à l’apparition des formats de fonte dites intelligents au début des années 2000 (à l’exception de quelques systèmes comme TEX), la solution était souvent d’associer dans la fonte le glyphe de ligature, de manière ad hoc, à un code de caractère arbitraire, ce qui a bien évidemment rompu le lien entre la valeur sémantique correspondant à ce code et celle, différente, de la ligature affichée. – À cause de l’abondance de marques diacritiques dans l’arabe et de la Diacritiques cursivité de l’écriture, la pratique occidentale de créer des glyphes (des poinçons) où la lettre de base est pré-composée avec son accent ne peut pas être suivie : pour produire toutes les combinaisons lettre-marques (plusieurs marques peuvent être associées à la même lettre) dans tous les contextes possibles, y compris les ligatures diacritées, des milliers et des milliers de glyphes devraient être dessinés. Alternativement, un modèle typographique informatique pour l’écriture arabe doit être capable de positionner les marques de manière dynamique, suivant le contexte textuel et les propriétés graphiques des fontes [13]. LES ÉCRITURES LOGOGRAPHIQUES Ce que nous appelons écritures logographiques est une famille d’écritures qui se servent des logogrammes chinois : les écritures chinoises (traditionnelle et simplifiée), le japonais et le coréen. En effet, il n’est pas possible de parler d’un ensemble commun de logogrammes chinois pour les pays les ayant adoptés car le sous-ensemble des caractères employés dans chaque pays, ainsi que leurs significations et leurs graphies exactes, montrent une forte dépendance culturelle. Si l’on ajoute à ce propos les différentes voies de développement technologiques et même politiques de ces pays, il n’est pas surprenant que chacun d’eux a développé ses propres normes de représentation textuelle, notamment au niveau des codages de caractères. Ce qui est commun est la nécessité d’un codage multi-octets : au moins 13 bits sont nécessaires pour une couverture à 99,99% des usages courants [26, p. 264]. Pire, lorsque l’on tente de viser la couverture « totale » des logogrammes chinois, on se heurte de nouveau à la problématique de circonscrire la portée de la notion de caractère (informatique). Nombreux sont les cas où deux signes qui sont graphiquement très similaires et qui se réfèrent essentiellement au même concept se 49 L’impossiblité d’un codage de caractères définitif pour les écritures logographiques distinguent néanmoins par leur usage et même par leur sens, pour des raisons historiques ou autres. Le besoin de distinguer ou non entre deux signes en leur accordant deux points de code séparés est toujours fonction des usages auxquels le codage de caractères est destiné. Quel que soit donc l’approche par laquelle on construit un codage donné, il pourra y avoir des logogrammes non-couverts ou au contraire, couverts de manière redondante, selon l’usage actuel. De plus, l’invention de nouveaux logogrammes est un phénomène constant, notamment pour créer de nouveaux prénoms mais aussi pour divers autres objectifs (comme par exemple l’humour : le jeu de mot japonais , « femme + monter + descendre », est prononcé « erebētā gāru » et censé signifier « liftière » (elevator girl) [58, p. 158]). Pour cette raison, il n’est pas possible de créer un codage de caractères définitif pour le chinois selon le principe énumératif (où le codage s’établit à travers l’énumération de ses éléments). Synthèse de caractères Or, l’analyse de la structure graphique des logogrammes chinois démontre et de glyphes chinois qu’ils s’assemblent à partir de composants de niveau inférieur : de radicaux (comme indiqué dans la figure 1.3 en page 42), voire de traits élémentaires. Alors que ces derniers sont des unités purement graphiques (liées aux mouvements du pinceau du calligraphe), les radicaux et en général les composants de logogramme jouent souvent un rôle linguistico-sémantique, même si ce rôle reste en général très indirect. Ainsi, la grand majorité des logogrammes chinois se construit à partir d’un composant phonétique et d’un composant sémantique où le premier indique (souvent très vaguement) la prononciation et le dernier (aussi très vaguement) le sens du logogramme [26, p. 139]. De nombreuses solutions de description de caractères et de synthèse de glyphes ont été proposées, celles-ci exploitent cette propriété analytique de l’écriture chinoise : un du début des années 1980 [70], puis Unicode proposent leurs propres caractères de description idéorgraphique [28, p. 146] ; voir aussi le système CDL [16] et [69]. Ces solutions présentent cependant d’autres types de difficulté [28, p. 147]. En particulier, jusqu’à très récemment, les difficultés liées à la visualisation de l’écriture chinoise ont été pour la plupart plutôt pratiques que conceptuelles. Dans son histoire, le chinois s’écrivait (et s’écrit toujours) dans des directions diverses (verticalement, horizontalement), et l’orientation de certains signes (parenthèses, le signe japonais d’élonga», etc.) devait s’adapter à la direction courante. Les formats de fonte tion « numériques adoptés en Extrême-Orient sont essentiellement les mêmes qu’en Occident (PostScript, TrueType et leurs variantes). Nous avons déjà démontré que le fonctionnement de ces formats de fonte reflète le modèle de texte visuel de l’Occident, notamment par la disposition linéaire et indépendante (à part le crénage) de glyphes consécutifs. Lorsque cette approche est appliquée aux écritures logographiques, une conséquence logique est la nécessité de créer un dessin unique et séparé par logogramme, ayant comme résultat des milliers de glyphes contenus dans une fonte donnée (et nécessitant l’extension du format PostScript de type 1 au format CID afin de surmonter la barrière de 256 glyphes codés). Le choix de l’unité de représentation informatique de l’écriture chinoise est donc un problème non-trivial ; des raisons théoriques et pratiques peuvent être formulées pour ou contre une représentation au niveau logographique ou à un niveau inférieur (composants, traits élémentaires) : 50 – des raisons conceptuelles : en acceptant l’unidimensionnalité comme propriété inhérente de toute écriture, le logogramme s’impose comme unité constitutive, car à l’intérieur d’un logogramme la composition est bidimensionnelle (c’est ce même principe que Richard Sproat appelle principe de localité dans [58, p. 42] dans le but de définir la Small Linguistic Unit comme étant la limite supérieure de toute composition bidimensionnelle) ; – des raisons linguistiques : même si les composants d’un logogramme montrent une certaine corrélation sémantique ou phonétique avec le logogramme entier, cette corrélation n’est probablement pas suffisamment forte pour présenter un intérêt pratique quelconque ; – des raisons d’économie : en choisissant comme unité le composant ou le trait élémentaire, le nombre d’unités constitutives de l’écriture se réduit de plusieurs dizaines de milliers à des centaines ou seulement à des dizaines ; – des raisons d’extensibilité : une approche constructiviste rend plus facile l’utilisation de logogrammes non prévus ; – des raisons de complexité implémentationnelle : les formats de fonte traditionnels (TrueType, PostScript) ne permettent pas la construction bidimensionnelle et intelligente de glyphes. Le niveau de représentation pertinent dépend sans doute de l’usage du texte en question ; il est donc envisageable d’employer un modèle de texte à deux niveaux où la représentation d’échange (le caractère) et la représentation finale (le glyphe) correspondent à deux niveaux différents. LE HANGÛL CORÉEN Le hangûl est l’écriture syllabique coréenne. Selon son point de vue, on peut également la considérer alphabétique car les syllabes se décomposent, suivant leur structure vocalique, en éléments phonétiques correspondant à l’attaque, au noyau et au coda de la syllabe. Chacun de ces éléments (ou jamos) possède son propre signe graphique, et la syllabe se construit par l’assemblage bidimensionnel des jamos [19]. Choisir l’élément représentationnel informatique pertinent pour le hangûl est un problème similaire au cas des écritures logographiques. L’unidimensionnalité de l’écriture se présente au niveau inter-syllabe (ou plus précisément inter-graphème correspondant à la syllabe), et par ce fait, la syllabe est l’unité d’écriture « intuitive ». D’autre part, vue la régularité avec laquelle les syllabes se construisent à partir de leurs composants phonétiques, une modélisation alphabétique est également envisageable, surtout pour des raisons d’économie représentationnelle (quelques dizaines d’unités élémentaires contre une dizaine de milliers). Une telle approche analytique n’est cependant possible que si les technologies informatiques sont en mesure de gérer les modèles de texte nécessaires à son implémentation. Ainsi, l’assemblage graphique bidimensionnel de la syllabe à partir de ses trois composants alphabétiques requiert une technologie de fontes plus évoluée que ce que les formats PostScript ou TrueType classiques ne peuvent offrir. D’autre part, en supposant que la représentation finale du texte soit basée sur les syllabes entières (c’est-à-dire que la fonte com51 L’unité de représentation pertinente du hangûl L’approche alphabétique est contrainte par les technologies informatiques prend des glyphes pré-composés) pendant que la représentation d’échange (le codage de caractères) suit l’approche alphabétique, alors c’est la correspondance multiple-à-un entre caractères et glyphes qui doit être correctement gérée par le système informatique, ce qui dépasse encore une fois les capacités des formats de fonte mentionnés. 1.7 Le traitement de texte WYSIWYG L’interactivité du document formaté LE DOCUMENT INTERACTIF ET LE WEB Un grand nombre de logiciels de préparation de documents, comme par exemple TEX ou troff, suivent une logique opérationnelle décrite dans l’article de Mittelbach et de Rowley [49] : ils « convertissent » un document depuis sa forme représentationnelle d’échange en une représentation finale, en passant par une représentation interne transitionnelle. TEX est peut-être l’exemple qui incarne le plus parfaitement ce principe : à partir du document source .tex, un document .dvi de sortie est généré qui, après conversion en PostScript, est destiné à l’impression. Si l’usage des documents textuels créés par les divers outils de traitement de texte des années 1970 et 1980 était très similaire à ce modèle, le principe du WYSIWYG, par contre, consiste à fusionner les représentations d’échange et transitionnelle en une seule représentation interne, cachée à l’utilisateur qui ne voit à tout moment que la représentation finale du texte. L’unité textuelle de la représentation interne est le caractère alors que celle de la représentation finale, bien entendu, le glyphe. Cependant, alors que dans TEX le passage d’un modèle à l’autre est une fonction à sens unique (à l’exception de l’opération de césure), le paradigme WYSIWYG nécessite des passages incessants entre les deux représentations : lorsque l’utilisateur place son curseur entre deux glyphes pour y insérer un troisième, les deux caractères correspondants sont identifiés, puis le troisième caractère inséré dans la représentation interne du morceau de texte en question, et finalement le morceau entier est recomposé pour mettre à jour la représentation finale. Similairement, une opération de copier-coller comprend l’identification des caractères correspondant aux glyphes sélectionnés, le dépôt de la sélection dans le presse-papiers en un ou plusieurs formats (texte brut ou balisé, etc.), et finalement le ré-affichage du texte dans un environnement potentiellement nouveau, ce qui nécessite bien évidemment un nouveau passage des caractères aux glyphes. Dû à ces propriétés interactives du document formaté — en d’autres termes, que le document peut être manipulé à plusieurs reprises —, les modèles de texte employés par les logiciels impliqués doivent être capables de gérer les conversions entre représentations d’échange et finale dans les deux sens. Les formats de document existants peuvent en gros être divisés en deux catégories majeures par rapport à la solution qu’ils offrent au problème de passage entre représentations. La première solution (adoptée par les formats tels que RTF ou HTML) consiste à stocker le texte dans sa représentation d’échange (en caractères) et de n’effectuer la conversion en représentation finale qu’au moment de son affichage. Cette approche rend le document plus convenable aux usages liés à l’échange d’information mais elle rend également sa présentation plus dépendante du logiciel d’affichage. L’autre solution consiste à stocker le texte dans sa représentation finale, de manière que celle-ci soit figée 52 (cas des formats PDF et SVG). L’inconvénient de cette approche est la difficulté occasionnelle de revenir à la représentation d’échange car souvent la conversion de la chaîne de glyphes en chaîne de caractères n’est pas triviale. Nous allons voir que le modèle de texte proposé dans le chapitre suivant permet de profiter des avantages des deux approches par l’unification des représentations d’échange et finale. 1.7.1 L E FORMAT DE DOCUMENT RTF Microsoft a développé le format Rich Text (RTF) [48] en 1987 pour servir comme représentation d’échange et en même temps comme sérialisation de la représentation interne du traitement de texte Word. Puis, RTF est devenu une sorte de norme de facto de format d’échange de texte enrichi — principalement par des données de formatage — sur la plate-forme Windows, utilisée entre autres dans la communication à travers le presse-papiers. RTF est un format en caractères ASCII uniquement, en partie inspiré du format d’entrée de TEX. Le texte y est représenté en tant que chaînes de caractères Unicode ou par d’autres codages historiques16 alors que les informations de formatage y sont ajoutées à l’aide de commandes et de groupes, très similairement à TEX. Ainsi, dans les traitements de texte WYSIWYG tels que Word ou OpenOffice.org les représentations d’échange et transitionnelle reposent essentiellement sur un modèle textuel en caractères uniquement, la représentation finale étant mise à jour à chaque instance de visualisation, en fonction des informations de formatage incluses dans le texte mais aussi des réglages et des capacités typographiques du logiciel de composition. L’aspect visuel du texte, depuis le micro-niveau jusqu’à la pagination, dépend toujours de ces dernières propriétés, et la pratique montre que deux visualisations du même document par deux instances de logiciels ne sont que rarement identiques, notamment s’il s’agit de logiciels ou de versions différents. Le choix de tels modèles était, bien entendu, une conséquence de nouveaux usages : lorsque les manipulations comme la recherche ou le copiercoller sont appliquées au texte formaté, ce sont les fonctions d’échange du texte qui gagnent de l’importance, il est donc facile à comprendre qu’une représentation par caractères, à l’opposé d’une représentation par glyphes ou signes typographiques, soit à la base du modèle textuel choisi. 1.7.2 HTML ET LE WEB Depuis 1990, c’est-à-dire que le Web existe, les aspects interactifs du document (à l’opposition du document destiné uniquement à l’impression) sont devenus encore plus importants. Il n’est donc pas surprenant que, similairement à RTF, le format HTML repose sur un modèle où le texte est composé de caractères uniquement. Certains motifs de chaînes de caractères forment des balises qui ajoutent de l’information structurelle et présentationnelle au « texte brut ». Suivant de nombreuses années d’évolution depuis son existence, 16 Les caractères ne sont pas codés par une représentation Unicode (telle que UTF-8) proprement dite : plutôt ce sont les codes numériques des caractères qui apparaissent textuellement. 53 la norme HTML s’est lentement mais sûrement appropriée le principe de séparation de contenu et de présentation : les balises HTML sont censées servir à marquer le contenu et la structure du document alors que des feuilles de style, logiquement ou physiquement séparées, sont censées être les seules porteuses d’informations liées à la présentation. Entre contenu et présentation, HTML a toujours été fortement orienté vers le premier, son objectif principal étant de décrire de l’information à prépondérance textuelle, et ceci de façon adaptable aux particularités des différents supports et logiciels de visualisation (navigateurs) qui tournent sur des dispositifs très variés. La présentation du document est mise à jour à chaque instance d’affichage, en fonction des paramètres mentionnés, et c’est pour cette raison également qu’un modèle textuel basé uniquement sur le caractère a été choisi. À travers l’imbrication des éléments HTML, un document HTML s’organise dans une structure arborescente. Les informations attachées à un élément s’appliquent en principe à la totalité du sous-arbre entre les balises ouvrante et fermante : par exemple, dans la chaîne « <b>gras <i>et italique</i></b> », le caractère « t » est affecté aussi bien par « <b> » que par « <i> ». Cette particularité n’est pas unique au format HTML : entre autres, les documents RTF et TEX ont des structures d’imbrication de style similaires. Ce qui distingue cependant le format TEX de HTML et de RTF est que l’usage de ces deux derniers formats s’inscrit dans un contexte interactif : ils se prêtent à des opérations Recherche, telles que la recherche, le copier-coller ou l’indexation (par un moteur de recopier-coller, indexation cherche). En particulier, ces deux formats servent très souvent comme formats d’échange de données textuelles contenues dans le presse-papiers de l’interface des systèmes d’exploitation courants17 . HTML et RTF sont donc des formats orientés échange de données textuelles et par conséquent, la présentation réelle de tels documents dépend de multiples paramètres de l’instance du logiciel chargé de la composition et de la mise en page (les navigateurs pour HTML, les traitements de texte pour RTF). En revanche, pour les formats de document orientés représentation finale, se situant à l’autre bout du processus de formatage, l’usage prioritaire est la description précise et figée de la présentation du document plutôt que l’échange de contenu textuel entre logiciels. Cependant, dans l’ère du Web, les usages liés à l’échange d’informations sont également devenus indispensables, usages que le format PostScript (décrit en section 1.5.2) n’était pas capable de satisfaire. La naissance de formats très répandus comme PDF (1993) et SVG (2001) visait en partie à répondre à ces besoins. Séparer contenu et présentation 1.7.3 PDF PDF adopte une forme simplifiée du modèle graphique de PostScript, notamment par l’exclusion de commandes qui font de ce dernier un langage de programmation. En même temps, PDF permet une structuration logique et une extension du document par un ensemble (toujours grandissant) de fonctionnalités non directement graphiques (métadonnées, hyperliens, annotations, 17 D’après les expériences de l’auteur, du texte copié à partir du logiciel Acrobat est déposé dans le presse-papiers en format RTF, alors que dans le cas de Mozilla Firefox, le format utilisé est, sans surprise, de l’HTML. 54 contenu textuel non-visuel, formulaires, signature numérique, etc.). Le texte formaté dans un document PDF se représente, comme en PostScript, comme une chaîne d’identifiants numériques de glyphes contenus dans des fontes. Ce qui est nouveau par rapport à PostScript est la possibilité d’associer du contenu à la présentation, plus précisément, de désigner les caractères auxquels correspondent les glyphes du document : pour les usages interactifs comme la recherche ou le copier-coller, ces informations sont indispensables. Notons que, par le principe de nommage de glyphes, les fontes PostScript permettent déjà l’association d’un ou de plusieurs caractères aux glyphes contenus dans le document, de la manière décrite en section 1.5.2, page 41. Cependant, comme nous l’avons déjà prouvé, cette solution est sous-optimale pour un nombre de raisons, principalement parce que rien n’oblige le créateur d’une fonte d’étiqueter les glyphes par des noms pertinents (et conformes aux normes imposées par Adobe et par d’autres sociétés comme FontLab). PDF, en plus de cette méthode, en offre deux autres pour définir les correspondances entre caractères et glyphes. La première méthode consiste à établir les correspondances à travers une table ToUnicode CMap (depuis PDF v1.2, voir [6, p. 472]) incluse dans le dictionnaire de fonte qui définit le code de caractère Unicode associé à chaque identifiant de glyphe. De point de vue fonctionnel, cette méthode est équivalente au nommage de glyphes : ToUnicode ne permet pas non plus les correspondances multiple-à-un entre glyphes et caractères ; en addition, son inclusion dans le dictionnaire de fonte reste nécessaire. La seule différence conceptuelle de ToUnicode par rapport au nommage de glyphes est que ce premier représente plus clairement l’idée d’une approche « bipolaire » à la modélisation textuelle où les glyphes sont des éléments purement présentationnels et l’interprétation sémantique du texte s’effectue à travers les caractères uniquement. L’opérateur ActualText [6, p. 944] de PDF permet de définir des correspondances entre glyphes et caractères au niveau du texte (donc des instances de glyphes), à l’opposé des deux méthodes précédentes qui les définissent au niveau de la fonte. Initialement, cet opérateur a été conçu dans l’objectif de permettre l’accessibilité des documents PDF aux personnes malvoyantes : n’étant pas capables d’un décodage visuel des images — y compris des glyphes — par la lecture, on peut lire le texte à l’aide d’un système de synthèse vocal. Cependant, l’identifiant numérique de glyphe n’est en général pas caractéristique du phonème, d’où une fois de plus le besoin de préciser les correspondances caractères-glyphes. En plus de ceci, ActualText est capable d’associer des interprétations (c’est-à-dire, des chaînes de caractères) à des artefacts graphiques telles qu’une lettre ou un symbole représenté par une image qui ne provient pas d’une fonte et, par conséquent, n’est pas codé et ne peut renvoyer vers aucun caractère, mais aussi dans des situations où il y a divergence entre contenu textuel et présentation, comme dans le cas de la césure dite non-standard de certaines langues comme l’allemand ou le hongrois : le mot játssza (« qu’il joue ») doit être coupé comme játszsza, mais pour la synthèse vocale, la recherche ou le copier-coller, c’est le mot original et non pas la version coupée qui est pertinent. D’une manière générale, ActualText permet de définir des associations au 55 Caractères et glyphes dans le document PDF ToUnicode CMap ActualText niveau des chaînes d’instances de glyphes, au lieu de les définir au niveau des glyphes individuels en tant qu’éléments d’une fonte. Ceci permet notamment d’indiquer des correspondances multiple-à-multiple entre glyphes et caractères ; ainsi, l’opérateur ActualText devient la solution la plus générale et la plus puissante qu’offre le format PDF dans le but de « sémantiser » le texte formaté. Ce potentiel n’est que très rarement exploité en pratique par des applications, une exception étant le système expérimental Ω2 dont la capacité de produire des documents PDF ainsi « sémantisés » a été développée par l’auteur et que nous présenterons en section 3.2. Quoi qu’il en soit, l’existence de l’opérateur mentionnée prouve que le problème de passage du domaine des glyphes à celui des caractères ne peut être résolu dans sa généralité au niveau des signes en tant qu’entités abstraites mais seulement au niveau du texte en tant que chaîne d’instances de ces entités. C’est cette même approche que prend le modèle de texte que nous allons proposer. Mentionnons finalement qu’en 2007 Adobe a annoncé une mise à jour majeure du format PDF : le successeur de celui-ci s’appellera Mars, il sera entièrement XMLisé et intégrera du support pour la norme SVG, un langage de description vectorielle de graphiques et de documents [2]. SVG, similairement aux formats PostScript et PDF, possède son propre modèle de texte que nous présentons dans la section suivante. 1.7.4 SVG SVG offre une représentation textuelle « hybride » Composition prise en charge par le moteur SVG Le format SVG (Scalable Vector Graphics) de description vectorielle de documents et d’images est une recommandation W3C depuis 2001, et en même temps une alternative moderne au langage PostScript, basée entièrement sur XML [22]. Les plus grands industriels (Adobe, Microsoft, Apple, IBM, HP, Macromedia, etc.) ont participé à sa conception, assurant qu’il est sur la voie de devenir un des deux formats18 de graphique vectorielle supportés par Mars, le successeur de PDF [2]. SVG est avant tout un format graphique mono-page ; ce qui nous permet néanmoins de l’appeler format de document est le fait qu’il possède un modèle textuel élaboré. Nous allons voir que, contrairement aux formats de documents présentés jusqu’ici, SVG a plus de mal à trouver sa place parmi les catégories proposées par Rowley et par Mittelbach (représentations d’échange, transitionnelle ou finale). D’une part, SVG étant un format avant tout orienté vers la présentation, il permet forcément une description graphique précise de ses éléments, ce qui signifie pour le texte la définition exacte des positions et de toutes les propriétés graphiques des glyphes. SVG permet ainsi d’exercer un contrôle total sur l’aspect visuel du texte. En même temps, SVG ne se contente pas de décrire la présentation du texte, il souhaite également y associer la sémantique du texte en question, d’en définir le contenu textuel. Et puisque SVG est basé sur la syntaxe XML, il n’est pas surprenant que son interprétation du contenu textuel soit conforme à celle proposé par XML : à savoir du « PCDATA », feuille de l’arborescence. Dans le cas le plus général, le texte se définit sous SVG à l’aide de l’élément <text>, de la manière suivante : 18 L’autre format étant PostScript. 56 <text font-family="Centaur MT" font-size="10" x="200" y="100" stroke="black">hello, world</text> où le texte « hello, world » est donné en caractères PCDATA. C’est au visualiseur SVG de retrouver les glyphes correspondants dans la fonte Centaur MT et de composer le texte en corps 10, couleur noir, à partir du point (200, 100). À l’aide d’un élément <text> (ou <tspan>) pour chaque caractère, le créateur du document SVG a également la possibilité de préciser les coordonnées de chaque glyphe séparément s’il souhaite que l’apparence de son document soit exactement identique sur toutes les plates-formes : Composition manuelle prise en charge par le créateur du document <text x="200" y="100">h</text><text x="225" y="100">e</text>... Les glyphes à choisir pour chaque caractère peuvent également être précisés Choix directe des glyphes à l’aide des éléments <altGlyph>. Dans l’exemple suivant, <text x="200" y="100"> h<altGlyph xlink:href="#e_swash">e</altGlyph>llo, world </text> le glyphe « e » est remplacé par un glyphe alternatif ayant l’identifiant unique e_swash. Le caractère « e », contenu de l’élément <altGlyph>, est le contenu textuel associé au glyphe référé, utile entre autres pour les usages interactifs (recherche, copier-coller) ou pour la synthèse vocale. La référence peut se faire de plusieurs manières, notamment par identifiants numériques lorsque la fonte utilisée est de format TrueType ou OpenType. Il est important de noter que les correspondances multiple-à-multiple sont permises : on peut placer plus d’un caractère entre les balises altGlyph (cas des ligatures), et d’autre part, l’identifiant référé par xlink:href peut référer à plusieurs glyphes. Ainsi, le rôle et l’usage d’altGlyph sont similaires à celui de l’opérateur ActualText du format PDF19 . Un document SVG vise donc à être représentation d’échange et finale en même temps, la première à travers le contenu textuel véhiculé par des PCDATA en caractères, et la deuxième à travers la possibilité de figer toutes les propriétés graphiques du texte, y compris le choix de glyphe. La manière exacte d’identifier un glyphe dépend de la fonte utilisée : faute de précisions dans la spécification d’SVG, nous supposons qu’il s’agit de valeurs numériques pour TrueType/OpenType, du nom de glyphe pour Type 1, et ainsi de suite. Il y a cependant des aspects de la représentation d’échange autres que le simple accès au contenu textuel en caractères : comme le démontre Raph Levien dans son article informel mais clairvoyant [45], la modification du contenu textuel dans le document SVG entraîne bien évidemment la mise à jour nécessaire de nombreux paramètres graphiques (longueurs de lignes, positions de glyphes, etc.) à l’intérieur du document. Tout comme dans PDF, un document SVG en général n’est modifiable qu’à un degré restreint et, du moins en pratique, qu’à l’aide d’un outil qui assure la cohérence de divers paramètres présentationnels avec les modifications effectuées sur le contenu textuel. 57 Correspondances m-à-n entre caractères et glyphes SVG en tant que représentation d’échange SVG et Unicode En réalité, le format SVG avec son modèle de texte à deux facettes20 est le produit d’une ère différente que celle qui a vu naître PostScript, PDF, RTF ou TEX. C’est un format bâti sur le principe de séparation entre contenu et présentation — caractères et glyphes — au sein du même document. Ce principe, tout en ayant une universalité qui ne restreint pas son application à l’information textuelle uniquement (et encore moins aux atomes du texte), est depuis l’introduction de la norme Unicode devenu une idée organisatrice fondamentale de la représentation du texte. 1.8 LE CODAGE DE CARACTÈRES UNICODE 1.8.1 L ES PROBLÈMES AYANT MENÉ À LA CRÉATION D ’U NICODE À ce point, il est peut-être judicieux de résumer les problèmes majeurs liés à la représentation textuelle par ordinateur qui ont mené au début des années 1990 à la création d’Unicode et en particulier à celle de son modèle de texte : – le besoin de nouveaux caractères afin de couvrir des écritures jusque-là non supportées et d’étendre le support des écritures déjà couvertes (voir section 1.6.1) ; – l’utilisation de documents multilingues et multi-écritures, difficile à cause des différences entre les codages associés à chacune de ces langues ou écritures (section 1.6.1) ; – l’incohérence et la redondance entre les codages définis dans différents pays pour des ensembles de signes non-disjoints, voire essentiellement les mêmes (signes logographiques chinois-japonais-coréens, etc., section 1.6.1) ; – l’incompatibilité entre codages dédiés à des plates-formes précises ; – le manque de clarté vis-à-vis de ce que l’on entend par caractère : sans donner une définition précise à ce terme, il ne sera pas possible d’établir un modèle de texte cohérent (sections 1.4.1, 1.4.3 et 1.5.1) ; – une conséquence du problème précédent est la difficulté de construire un modèle de texte informatique, et donc un codage de caractères, pour une écriture donnée car il n’est pas clair selon quels critères les éléments d’un tel codage devront être sélectionnés. Faute de définitions et de principes conducteurs, les décisions ne peuvent être prises que de manière ad hoc (section 1.6.2). Certains de ces problèmes sont de nature pratique (comme le manque de points de code ou l’incompatibilité entre codages), d’autres plutôt de nature théorique (comme la définition de la notion de caractère). Ce que nous tenterons de démontrer dans cette section est le fait que les solutions apportées par Unicode répondent essentiellement aux problèmes pratiques, laissant de côté les considérations théoriques sur la nature du caractère et du codage. 19 Il faut mentionner qu’au moment de rédaction de la présente thèse, aucune implémentation de moteur SVG sous Linux, connue par l’auteur, ne supporte l’utilisation des glyphes alternatifs. 20 Nous avons choisi de nous méfier de la formule « à deux vitesses » afin d’éviter les sousentendus politiques... 58 Cette omission de la part d’Unicode mène inévitablement à de nouveaux problèmes dont l’analyse et la résolution éventuelle sont des sujets majeurs de la présente thèse. 1.8.2 L ES PRINCIPES FONDAMENTAUX D ’U NICODE Bien que nous « accusions » Unicode d’être motivé principalement par des considérations pratiques — ce qui est loin d’être surprenant connaissant ses origines industrielles —, cela ne signifie pas que la norme soit complètement dépourvue de fondements théoriques. Notamment, Unicode part de dix principes de conception [63, chapitre 2] dont certains ont des motivations plutôt pratiques (efficacité, convertibilité, stabilité21 , etc.), d’autres plus abstraites ; cependant, il ne serait pas sage de départager ainsi les dix principes en deux catégories distinctes : nous verrons que les considérations qui semblent purement pratiques peuvent cacher des préconceptions théoriques et vice versa, une idée théorique peut avoir des conséquences pratiques. Parmi les dix principes, ceux qui nous intéresseront particulièrement sont les suivants : – « universalité », l’objectif de couvrir la totalité des écritures du monde ; – « caractères et non glyphes » réfère au principe de séparer contenu et présentation ; – « sémantique » réfère au souhait d’associer une valeur sémantique précise à chacun des caractères de la norme ; – « texte brut » qui en réalité incarne l’objectif de simplicité ; – « unification », en d’autres termes : économie, un principe a priori purement pratique mais qui entraîne des conséquences très importantes. 1.8.3 U NIVERSALITÉ Il s’agit de réunir dans un seul codage la totalité des signes d’écriture employés dans le monde. Cependant, le fait que le nombre de codes disponibles ne limite pas en pratique le nombre de signes couverts par le codage ne signifie pas que le choix d’y inclure ou non un signe donné devienne plus facile. Faute de pouvoir justifier l’exclusion d’un signe du codage par des raisons pratiques d’économie, les responsables de la norme Unicode sont dès lors obligés de justifier leurs décisions par des critères théoriques bien fondés. Nous avons déjà mentionné en section 1.4.3 qu’une approche purement extensionnelle à la définition du codage (c’est-à-dire par la simple énumération des caractères compris) n’est plus suffisante lorsque le codage vise l’universalité. En effet, « être universel » signifie « être exhaustif », ce qui suppose que l’on a réussi à donner une définition adéquate de ce que l’on entend par unités sémantiques textuelles (p. 26), à circonscrire cet ensemble. Or, selon Gottlob Frege, connaître un ensemble est possible soit par la dénotation de ses éléments — que l’on appelle l’extension de l’ensemble —, soit par l’appréhension de son sens à l’aide de l’ensemble de ses propriétés — que l’on 21 La stabilité de la norme — ce qui signifie l’impossibilité de toute suppression ou rectification, avec des conséquences discutables [31] — ne fait en vérité pas partie des dix principes, elle est en quelque sorte l’onzième principe d’Unicode. 59 L’universalité entraîne inévitablement une approche intensionnelle appelle son intension — qui décrivent ce qui est commun parmi les éléments22 [24]. Dans le cas du codage Unicode, l’approche extensionnelle consisterait à choisir par dénotation (à travers le principe énumératif) les unités textuelles qui le constituent à partir du vaste ensemble de signes textuels qui existent et qui ont existé depuis l’invention de l’écriture. Connaître tous les éléments de cet ensemble serait bien évidemment irréalisable ; indépendamment de ce fait, il faut comprendre qu’afin de pouvoir décider pour chaque élément s’il a sa place ou non dans le codage Unicode, il est indispensable de se fixer un nombre de critères bien définis. Ceci n’est possible que s’il est sous-entendu que l’on possède déjà des connaissances sur ces éléments en forme de propriétés : une approche dite intensionnelle — qui procède justement par l’analyse d’un élément à travers ses propriétés — ne peut donc être évitée. En réalité, lorsque dans notre première définition du codage et du caractère (p. 26) nous avons restreint l’univers d’éléments aux unités sémantiques textuelles, cette restriction était déjà en effet une tentative de filtrage des éléments possédant la propriété « sémantique », même si celle-ci n’a pas vraiment été définie de manière précise à ce point-là. Nous comprenons mieux maintenant pourquoi Unicode, contrairement à ses prédécesseurs, se soucie de déclarer ses dix principes de conception : ceux-ci donnent le cadre pour formuler des critères intensionnels. Parmi ceuxci, le critère peut-être le plus important est celui selon lequel Unicode utilise des « caractères et non des glyphes » et qui permet de restreindre de manière significative les signes candidats à considérer pour inclusion dans Unicode. Cependant, nous allons voir qu’Unicode n’arrive pas à formuler de critères rigoureux quant à la distinction entre ce qui est un caractère et ce qui est un glyphe. Dans le cadre de notre modèle de texte proposé, nous tenterons d’établir dans le chapitre suivant une méthodologique qui enfin permettra de formuler des définitions précises quant à ces deux notions. 1.8.4 C ARACTÈRES ET Rappel sur les notions de caractère, de glyphe et de signe typographique NON GLYPHES Unicode n’était pas la première norme informatique à formuler le principe de séparer contenu et présentation. Il n’était pas non plus le premier à employer le terme glyphe en opposition avec le terme caractère pour distinguer l’unité textuelle graphique de l’unité textuelle logique. Ce qu’Unicode tente donc d’exprimer avec ce principe est que la norme n’est pas concernée par les aspects présentationnels du texte mais uniquement par la « sémantique » que portent les signes représentés par les caractères. Arrêtons-nous ici pour clarifier les propos du paragraphe précédent. Qu’entend-on par unités textuelles « graphiques » et « logiques » ? Comment définit-on la « sémantique » portée par un caractère et comment la distingue-t-on des « aspects présentationnels » ? Quelles définitions Unicode attribue-t-il aux notions de caractère et de glyphe ? Quel est le rapport entre ces deux notions et celle que nous appelons signe typographique ? Dans les premiers modèles textuels informatiques des années 1960 et 1970, 22 Nous présenterons ces idées plus en détail au début du chapitre suivant, comme bases du modèle que nous y proposerons. 60 les correspondances entre codes de caractères et glyphes contenus dans les fontes étaient bijectives. Il n’y avait donc aucune raison pratique pour distinguer les deux concepts, et en effet, aucun informaticien ne parlait à l’époque de glyphes. Depuis l’existence des systèmes tels que TEX et des formats de fonte tels que TrueType, les significations du code de caractère et du code de glyphe ont commencé à diverger. D’après notre tentative de définition, p. 24, le caractère est un élément de codage qui représente une « unité sémantique textuelle ». Quant au glyphe, jusqu’ici nous avons utilisé ce terme dans un sens pratique pour désigner l’image contenue dans la fonte (p. 30). Cette distinction simple et pratique était suffisante pour comprendre l’intérêt d’une double représentation textuelle où l’unité constitutive de la représentation d’échange est le caractère et celle de la représentation finale est le glyphe. En même temps, un troisième concept, différent aussi bien de celui du caractère que de celui du glyphe, nous a été utile : le signe typographique (p. 34). Ce dernier incarne une abstraction de l’image — du glyphe — par la mise en évidence de ses propriétés typographiques proprement dites. Une telle approche ne peut pas convenir à la norme Unicode car elle est Caractères et glyphes censée fournir une méthodologie qui serve à construire l’ensemble de carac- dans l’interprétation tères, autrement dit, qui soit capable de décider d’un signe quelconque s’il a d’Unicode sa place ou non dans l’ensemble de caractères Unicode. La règle « caractères et non glyphes » étant la principale indication dans ce sens, des définitions précises des termes caractère et glyphe sont désormais indispensables. Or, il s’avère que la norme Unicode ne fournit aucune définition digne de ce terme. Voyons d’abord le « Glossaire de termes Unicode » à l’entrée caractère ; on y trouve non moins de quatre définitions séparées23 : CARACTÈRE 1. le plus petit élément d’une langue écrite pourvu d’une valeur sémantique au niveau du sens ou de la forme abstraite plutôt que d’une forme particulière (Cf. également Glyphe) [...] ; 2. synonyme de caractère abstrait ; 3. l’unité de base utilisée par le codage de caractères d’Unicode ; 4. le nom français des éléments idéophonographiques d’origine chinoise. Commençons à partir de la fin de cette liste. La quatrième définition réfère à une signification en dehors de notre contexte. La troisième définition, malgré son air insignificatif, représente l’approche extensionnelle qui définit l’ensemble par le principe énumératif (est caractère ce qui est codé par la norme Unicode). La deuxième définition précise que dans le modèle de codage d’Unicode, on fait la distinction entre signes effectivement codés (auxquels des codes numériques ont été associés) et les concepts abstraits représentés par les signes. Le caractère abstrait d’Unicode est de toute apparence un concept équivalent à ce que nous avons appelé en section 1.4.2 « unité sémantique textuelle »24 . 23 Traduction par P. Andries. La relation entre code numérique et caractère abstrait peut être considérée comme analogue aux relations sémiotiques entre signifiants et signifiés. 24 61 La définition du caractère dans le glossaire d’Unicode La première définition est la plus intéressante : d’après elle, les caractères – sont les plus petits éléments d’une langue écrite [critère d’atomicité] ; – sont pourvus d’une valeur sémantique [critère sémantique] ; – cette valeur sémantique relève du sens ou de la forme abstraite plutôt que d’une forme particulière [critère d’abstraction]. Le problème majeur de cette définition est le flou qui entoure chacun des trois principes mentionnés : qu’entend-on par « valeur sémantique » ? Dans quel sens, dans quel contexte et par rapport à quel usage le caractère est-il l’élément « le plus petit » ? S’agit-il du graphème, le plus petit élément du texte écrit tel qu’il est interprété par la linguistique ? Du moins, c’est ce que la mention de la « langue écrite » nous suggère. Et finalement, comment distingue-t-on entre « forme abstraite » et « forme particulière » ? Ces questions, nous verrons, ne sont pas répondues de manière cohérente par Unicode, ni par les considérations théoriques avancées dans le texte de la norme, ni à travers la pratique suggérée par l’exemple des caractères codés actuels. CARACTÈRE ET GRAPHÈME Le caractère et le graphème sont, selon Unicode, deux concepts différents ; ce dernier étant interprété par le même glossaire de la manière suivante25 : GRAPHÈME. (1) Plus petite unité distinctive et significative de l’écriture, dans le contexte d’un système d’écriture particulier. Par exemple, « p » et « s » sont des graphèmes distincts au sein du système d’écriture français puisque les mots pot et sot sont des mots différents. Par contre, une lettre minuscule italique « a » et une lettre minuscule romain « a » ne sont pas des graphèmes distincts puisque aucun mot ne diffère sur la base de ces deux formes différentes de cette même lettre. (2) Ce que l’utilisateur considère être un caractère. On voit ici une définition classique, à orientation linguistique, du concept de graphème. Ce qui rend cette définition plus claire que la précédente sont d’une part la restriction du contexte dans lequel celle-ci est interprétée à celui de la linguistique (à l’opposition de la typographie, de l’informatique ou d’autres usages), d’autre part la précision que le choix de l’unité la plus petite sera toujours fonction du système d’écriture modélisé. Cependant, le caractère Unicode n’est et ne peut être l’analogue du graphème linguistique, d’abord parce qu’il englobe des signes auxquels la linguistique ne s’intéresse qu’accessoirement ou pas du tout (signes de ponctuation, signes typographiques, chiffres, pictogrammes, etc.), puis, comme le suggère la deuxième partie de la définition du graphème, Unicode même nie l’équivalence des deux termes. Car en section 3.4, on trouve : Un caractère abstrait ne correspond pas nécessairement à ce que l’utilisateur imagine être un « caractère », il ne doit pas non plus être confondu avec un graphème. 25 Traduit de l’anglais par l’auteur, ayant pris comme base la traduction de Patrick Andries d’une version antérieure de la même définition. 62 Une interprétation possible de l’entrée du glossaire d’Unicode pour le terme caractère est la suivante : alors qu’un texte écrit peut être décomposé en signes individuels (par exemple, en lettres alphabétiques) qui à leur tour peuvent également être décomposés en traits, courbes ou d’autres sous-composantes, ces traits ou courbes ne sont jamais reconnus comme porteurs de sens par rapport au texte en question. Le signes entiers, par contre, semblent avoir un tel rapport. De plus, certaines variations au niveau des signes — comme entre un « a » italique et un « a » droit — ne contribuent apparemment pas à la « sémantique » du signe élémentaire, d’où l’exclusion de cette différenciation de la norme Unicode : par le principe de « caractères et non glyphes », selon Unicode « a » et « a » sont deux glyphes représentant le même caractère. L’AMBIGUÏTÉ DU CRITÈRE SÉMANTIQUE Cependant, l’italicité d’un signe, qui est une propriété traditionnellement typographique, est très souvent porteuse de sémantique en rapport au texte (elle peut indiquer l’emphase, la citation, l’ironie, et ainsi de suite), certes au niveau sémantique (et non pas graphémique, morphologique ou syntaxique) du texte. La nécessité formulée dans le glossaire de faire abstraction de la forme du signe pourrait nous guider à laisser tomber la propriété d’italicité et de n’inclure dans le codage qu’un seul caractère « a minuscule », mais alors, pourquoi ne pas autant faire abstraction de la propriété de casse également et ne plus distinguer entre « a » et « A » ? Pourquoi le caractère est-il censé représenter l’information syntaxique portée par la casse (la distinction entre noms communs et noms propres, entre noms et autres éléments de la phrase en allemand, ou l’indication du début de phrase) mais non l’information sémantique portée par l’italicité ? Les articles [27] et [31] de Yannis Haralambous contiennent de nombreux exemples qui démontrent le manque de principes clairs d’Unicode par rapport à la distinction entre informations sémantiques et présentationnelles. Appréhender la sémantique représentée par un signe donné dans le but de décrire26 un caractère Unicode est une tâche très difficile car la notion de sémantique même, ou du moins son usage dans na norme Unicode, est ambiguë. Rappelons-nous l’importance du contexte par rapport à la désambiguïsation de la polysémie des caractères (ce que l’on a noté par l’indice α en section 1.4.2) : souvent c’est le contexte — qui est défini par l’usage et qui, par conséquent, ne peut que difficilement être pris en compte lors de la construction de la norme Unicode — qui fournit le rôle d’un caractère. Ceci étant dit, comme nous allons le voir en section 1.8.5, la considération de certains usages pratiques s’avère parfois plus pertinente que le respect du critère sémantique. L’AMBIGUÏTÉ DU CRITÈRE D’ATOMICITÉ Le critère du « plus petit élément », critère d’atomicité, n’est pas moins vague. Si encore dans l’écriture latine l’atome linguistique — au-dessous du26 Il peut être question de décrire l’usage correct d’un caractère (comme par exemple la différence entre l’apostrophe droit informatique et l’apostrophe typographique) ou encore de décider d’un signe s’il a sa place ou non parmi les caractères Unicode. 63 quel aucune valeur linguistique ne peut être distinguée — semble être reMême l’atomicité lativement facile à repérer, certaines choix sont loin d’être triviaux : faut-il de la lettre latine considérer accents et autres diacritiques comme atomes indépendants ou au n’est pas triviale contraire, forment-ils des atomes attachés à leurs lettres de base ? En français, Les logogrammes chinois ne sont pas des atomes Le double codage du hangûl « e » et « é » représentent deux graphèmes distincts alors qu’en espagnol il s’agit de la forme écrite du même phonème car l’accent aigu indique l’accentuation du mot et non la valeur phonétique de la voyelle27 . Ou encore : les lettres « l·l » catalane et « c’h » bretonne, sont-elles des atomes ? Lors de la modélisation des écritures de la famille logographique chinoise, Unicode a choisi le logogramme comme unité de codage, même si celuici est loin d’être indivisible : d’un point de vue graphique, il est construit de composants dont la sémantique ou la phonétique sont, pour la grande majorité des logogrammes, directement ou indirectement liées à celles du logogramme entier. (Voir à ce propos l’exemple donné en figure 1.3, p. 42, « le soleil et la lune sont en même temps sur le ciel », et aussi [26, chapitre 5].) Le caractère n’est donc en général pas l’élément le plus petit ayant une valeur sémantique, et pourtant, Unicode a fait le choix de coder à la fois les logogrammes entiers et les composants individuels. De même sorte que logogrammes chinois, le hangûl coréen a subi un codage à double approche : toutes les syllabes pré-composées ont été codées (une dizaine de milliers) ainsi que les segments alphabétiques (les jamos) à partir desquels celles-ci sont assemblées. Dans l’objectif de permettre le choix entre les modélisations textuelles syllabique et alphabétique, Unicode a décidé de ne prononcer ni le segment syllabique ni le jamo comme unité atomique du hangûl. De plus, Unicode permet une conversion facile entre les deux représentations grâce à l’organisation particulière des tables de codage. La « formule magique » suivante permet de retrouver la syllabe correspondante à un groupe de trois jamos donnés et vice versa : code pré-composé = [(jamoattaque ×588)+(jamonoyau ×28)+jamocoda ]+44032 Il ne s’agit pas ici de critiquer la cohérence de la norme Unicode ni le non-respect de son propre principe d’atomicité. Les incohérences théoriques d’Unicode — qui sont souvent la conséquence de considérations pratiques — ont déjà été démontrées moultes fois et la norme même les admet volontiers. Le fait que les logogrammes et les composants logographiques, les lettres latines, les accents et les lettres accentuées, ou les segments syllabiques et les jamos du hangûl sont tous des caractères Unicode nous montre que le principe d’atomicité — tel qu’il est présenté par Unicode — n’a vraiment de fondements ni théoriques ni pratiques, ou du moins qu’il doit être modulé en fonction d’un ensemble de critères qui dépendent de l’écriture, des usages, et ainsi de suite. Si tel est le cas, c’est-à-dire si l’atomicité d’un signe d’écriture donné est toujours dépendante de l’usage du texte auquel il participe, alors nous ne pouvons que saluer la prévoyance d’Unicode d’avoir intégré non pas un seul mais plusieurs niveaux représentationnels de la même écriture. 27 Même si la présence ou l’absence de l’accent peut, dans de rares cas, faire une différence sémantique : este signifie ce, éste signifie celui-ci, esté signifie soit. 64 FIG. 1.4 – Quatre strates de l’écriture arabe : à droite, le graphème (la lettre abstraite) bâ représentant le phonème « b », dans le modèle Unicode elle correspond au caractère. Puis ses quatre formes contextuelles, deux styles (naskh et koufique) et finalement à gauche trois variantes graphiques venant de fontes différentes. L’AMBIGUÏTÉ DU CRITÈRE D’ABSTRACTION Finalement, nous arrivons au critère par lequel Unicode exige que la valeur sémantique du caractère relève « du sens ou de la forme abstraite plutôt que d’une forme particulière ». Or, nous avons vu qu’il était parfois difficile de trancher entre propriétés graphiques qui relèvent du sens et celles qui soi-disant sont purement présentationnelles. La lettre « a » minuscule est plus abstraite — car moins définie — que la lettre « a » minuscule italique mais moins abstraite que la lettre « a » (minuscule ou majuscule). D’une manière similaire, dans l’écriture arabe, en partant de la forme concrète d’une lettre « bâ » telle qu’elle apparaît sur l’écran, c’est par de nombreux niveaux d’abstraction que l’on arrive jusqu’au graphème (qui représente le phonème « b »). D’abord on ignore la taille et la couleur (pour obtenir l’image contenue dans la fonte), puis la forme graphique propre à la fonte (pour obtenir une forme parmi un des styles courants comme le naskh ou le koufique), puis le style (pour obtenir ce que l’on appelle dans le jargon informatique la forme contextuelle — initiale, médiane, finale ou isolée), et finalement la forme contextuelle pour obtenir enfin le graphème. (Voir figure 1.4.) Dans le cas de l’écriture arabe, Unicode a choisi comme niveau d’abstraction ce dernier, c’est-à-dire le niveau graphémique. Ce choix particulier semble fort pratique pour un grand nombre d’usages informatiques du texte arabe (comme par exemple la recherche dans un document). Il est très facile de trouver d’autres exemples de caractères Unicode où le choix du degré d’abstraction paraît moins logique, voire erronné : par l’inclusion de diverses espaces typographiques (espace cadratin, demi-cadratin, espace fine, espace insécable, espace fine et insécable, etc., on trouve en effet plus d’une vingtaine d’espaces dans le codage), Unicode semble avoir oublié son principe de favoriser le contenu à la présentation. Encore une fois, il ne s’agit pas de critiquer la cohérence d’Unicode mais plutôt de démontrer qu’il ne fournit pas de méthodologie bien établie pour décider pour un signe donné s’il est suffisamment dépourvu d’aspects présentationnels et s’il est suffisamment atomique ou encore pour bien définir la valeur sémantique qui lui appartient. Sans une telle approche rigoureuse, le choix ne peut être fait que de manière ad hoc, ce qui entraîne inévitablement l’incohérence de l’ensemble de caractères couverts. Un des objectifs de la présente thèse est justement de proposer un cadre 65 scientifiquement fondé qui ensuite permet l’établissement d’une méthodologie rigoureuse dans le but de construire un modèle de texte plus cohérent et plus puissant que celui proposé par Unicode. 1.8.5 COHÉRENCE THÉORIQUE CONTRE USAGES PRATIQUES Le caractère : un concept « fourre-tout » par conception ? Espaces Bien entendu, « un cadre scientifiquement fondé » et « une méthodologie rigoureuse » sont toujours les bienvenus ; cependant, sont-ils réellement nécessaires pour définir un codage de caractères ? Il n’est pas évident qu’un codage universel qui obéit à des principes théoriques soit en pratique plus utile, plus puissant, plus convivial, plus adaptable, etc., qu’un autre, incohérent et dépourvu de tels principes mais construit suivant des considérations pratiques d’usage. De nombreux aspects des langues naturelles en tant que systèmes communicatifs manquent de cohérence et de logique, cependant les linguistes hésiteraient sans doute d’affirmer que ce manque de logique nuise à l’expressivité des langues en question ; et justement, le contraire semble être le cas : l’incohérence est souvent considérée comme une richesse. Pour éviter d’entrer dans des considérations linguistiques ou philosophiques qui mènent très loin, nous tenterons d’aborder ce problème d’un point de vue pratique, à travers une série d’exemples. Les questions auxquelles nous souhaitons répondre sont les suivantes : une définition scientifique et rigoureuse du concept de caractère est-elle réellement nécessaire ? Ne faut-il tout simplement la considérer comme un concept « fourre-tout », intentionnellement sous-défini et par conséquent suffisamment souple, s’adaptant facilement aux particularités de différentes écritures, langues, usages et contraintes techniques ? L’analogie avec les langues naturelles est d’autant plus intéressante qu’elle met en évidence les dangers d’une approche non-structurée : ce qui peut du point de vue de l’humain être considéré comme une richesse devient un fardeau presque insurmontable du point de vue du traitement automatisé. En connaissant les difficultés extrêmes auxquelles se heurtent les technologies de traitement automatique de langues naturelles, on souhaite éviter à tout prix que ce genre de problèmes réapparaissent au niveau textuel le plus élémentaire, au niveau des caractères. Une approche algorithmiquement claire et suffisamment simple doit donc être de rigueur, il n’y a pas de doute là-dessus. L’objectif de certains principes d’Unicode (caractères et non glyphes, texte brut, sémantique, unification) est justement de garantir une telle approche. En même temps, le respect de certains autres principes (compatibilité avec les codages anciens, stabilité) et de contraintes venant des usages souvent contradictoires va parfois à l’encontre de toute tentative de structuration. Le résultat est un compromis, avec, d’une part, un grand nombre de caractères dont l’usage est officiellement découragé à cause de leur non-respect des principes théoriques, et d’autre part, des caractères qui adhèrent strictement aux principes mais dont l’utilité pratique est fortement réduite. Dans la suite, nous citerons quelques exemples qui démontrent la difficulté d’équilibrer les approches structurelle et pratique. Il s’agit donc d’une multitude d’usages qui sont, de plus, souvent contradictoires : la typographie emploie de nombreux types d’espaces textuelles (espace fine, demi-cadratin, cadratin, insécable, etc.) où chaque type d’espace 66 peut posséder de multiples valeurs sémantiques28 . Cependant, les différences visuelles et sémantiques entre ces espaces sont négligées dans d’autres usages comme par exemple la recherche textuelle. Pour prendre un autre exemple, d’après [37], dans Unicode il existe au moins 33 différent caractères qui représentent le chiffre « 1 », dont des variantes correspondant aux différentes écritures (dévanagari, laotien, logographique, etc.), des variantes graphiques (U+2780 DINGBAT CIRCLED SANS SERIF DIGIT 1) ou autres comme le chiffre 1 en tant que numérateur d’une fraction (U+215F FRACTION NUMERATOR ONE). Sans doute, est-il toujours possible d’associer des valeurs sémantiques distinctes à chacun de ces caractères et ainsi de justifier leur présence dans Unicode ; l’utilité pratique de ces caractères dépendra cependant des usages des textes dans lesquels ils apparaissent. D’une part, si un utilisateur fait une recherche sur le chiffre 1, très probablement il ne s’intéresse pas aux variations graphiques de celle-ci ; de ce point de vue le codage des variantes comme le dingbat ou le numérateur en fraction en tant que caractères distincts n’est pas souhaitable. D’autre part, si l’on prend l’exemple du chiffre romain « I » (U+2160 ROMAN NUMERAL ONE), la distinction entre celui-ci et la lettre I majuscule (U+0049 LATIN CAPITAL LETTER I), avec laquelle il est par définition graphiquement identique, est parfois pratique (car une recherche sur une valeur numérique ne devrait pas retourner les lettres « I » du document en question), parfois impratique (dans la quasitotalité des documents un nombre romain comme « VIII » est introduit par l’intermédiaire de lettres majuscules « V » et « I »). En page 64, nous avons mentionné le codage des écritures logographiques par Unicode comme un contre-exemple de son principe d’atomicité. Le logogramme chinois en tant qu’unité intuitive et aussi unité de codage, ne peut pas être considéré comme unité indivisible, ni du point de vue graphique, ni du point de vue phonologique, ni du point de vue sémantique. Le fait que malgré ceci Unicode a choisi de prendre le logogramme comme unité de base au lieu des composants ou des traits élémentaires était un choix motivé principalement par des raisons pratiques : la compatibilité avec les codages existants d’une part et la simplicité relative du modèle textuel d’autre part. Aurait Unicode pris l’approche de prendre comme unité de codage non pas le logogramme mais ses composants, le nombre de caractères codés aurait été réduit à quelques centaines (cf. [26, pp. 140-141]) au lieu des dizaines de milliers, au prix d’une complexification du traitement textuel (qui aurait dû constamment gérer les problèmes de composition-décomposition). Le cas de l’alphasyllabaire éthiopien est similaire : Unicode a décidé de coder autour de quatre cent syllabes entières au lieu de coder voyelles et consonnes séparément, dont le nombre ensemble ne dépasse pas la trentaine. Ce choix se justifie par le fait que la syllabe est composée par une liaison graphique entre la ou les consonne(s) et la voyelle, phénomène que les fontes et les systèmes de composition classiques qui supposent une correspondance un-à-un entre caractère et glyphe ne sont pas capables de modéliser. Encore une fois, une représentation phonétique plus précise et plus détaillée ainsi que 28 Par exemple, l’espace insécable peut avoir un rôle typographique lorsqu’elle connecte un signe de ponctuation à un mot en français mais aussi un rôle linguistique lorsqu’elle connecte deux morphèmes en vietnamien. 67 Chiffres Chiffres romains Logogrammes L’éthiopien Formes de présentation : l’arabe, l’hébreu, le grec l’économie de caractères de base ont été sacrifiées en faveur d’un modélisation textuelle simplifiée. C’est également pour un grand nombre de raisons pratiques (cette fois-ci en heureuse coïncidence avec les principes théoriques) qu’Unicode a choisi comme unité de base de l’écriture arabe le « graphème abstrait », au lieu de ses allographes (ou formes contextuelles, voir page 65). Par contre, on ne retrouve pas le même degré de cohérence pour l’écriture hébraïque, ni pour le grec. Ces deux écritures possèdent également des formes de lettres contextuelles (même si pour le grec le phénomène se limite à la seule lettre sigma « σ — ς ») mais celles-ci ont été codées dans Unicode comme des caractères distincts. Il s’agit encore une fois de raisons pratiques : grâce au nombre très limité de formes alternatives, il était possible dès le début (c’est-à-dire dès l’existence des machines à écrire) de faire apparaître celles-ci sur les claviers ; par conséquent, les utilisateurs se sont habitués à introduire les formes contextuelles directement. En résumé, il semble évident que la construction d’un système de codage universel tel qu’Unicode ne peut être faite qu’en équilibrant les approches théorique et pratique. Notamment, l’influence des usages textuels sur la construction du modèle de texte doit de nouveau être prise en compte. Cependant, le concept de codage universel suppose l’utilisation d’un codage unique, un principe en contradiction avec l’existence indéniable d’usages mutuellement exclusifs. Par conséquent, la définition d’un caractère donné relèvera toujours d’un compromis entre les besoins contradictoires des différents usages, ce qui veut dire que les codages de caractères tels qu’Unicode seront inévitablement plus adaptés à certains usages qu’à d’autres. Finalement, notons que l’approche non-théorique est également mise en évidence dans le rapport technique ISO/IEC TR 15285:1998 (An operational model for characters and glyphs) qui décrit les fondements théoriques de la norme Unicode — et que nous présenterons plus en détail en section 1.8.7 — de la manière suivante : In many cases, the criterion for either inclusion or exclusion has not been articulated but is based on informal opinion about appropriateness. 1.8.6 L A BASE DE DONNÉES D ’U NICODE Conscient de cette limitation et aussi de l’encombrement causé par un système de codage à plus de 100 000 caractères — dont le support est forcément inévitable pour tout logiciel ayant accès à des informations textuelles —, Unicode propose une base de données librement accessible et téléchargeable qui classifie ses caractères suivant de nombreux critères. C’est grâce à cette base de données qu’il devient possible, entre autres, de distinguer lettres, chiffres, ponctuation, idéogrammes, symboles, espaces, de savoir à quelle écriture appartient un caractère, et ainsi de suite. La base de données peut être exploitée entre autres par des algorithmes de transformation de chaînes de caractères qui ont comme objectif d’adapter le texte aux différents usages. Par exemple, un algorithme de pré-traitement peut projeter la vingtaine de caractères d’espacement différents présents dans Unicode au seul caractère U+0020 avant 68 une opération de recherche. La base de données Unicode et les divers algorithmes de transformation29 La propriété de caractères repose sur la notion de propriété de caractère. La base de don- de caractère nées d’Unicode n’est en réalité qu’un ensemble de correspondances entre caractères et propriétés : une propriété peut être considérée comme une fonction entre codes de caractère et valeurs de propriété [63, UTR23]. (« At its most general, a property can be considered a function that maps from code points to specific property values. ») La propriété fait partie intégrante de la sémantique du caractère et donc de la norme Unicode. (« The semantics of a character are determined by its identity, normative properties, and behavior. ») En reprenant le formalisme introduit en page 26, les propriétés permettent de mieux structurer l’ensemble S, en d’autres termes, de faire un premier pas vers une définition formelle de ce que l’on entend par « unité sémantique textuelle » ou « caractère abstrait » (ce dernier étant un terme introduit par Unicode) : S= N n [ j=0 o (Ij , pj,1 = vj,1 , pj,2 = vj,2 , ..., pj,n = vj,n ) où N est le nombre de caractères Unicode, Ij est l’identité de l’unité sémantique j et pj,i et vj,i sont ses clés et ses valeurs de propriété associées. Ce qu’Unicode entend par identité d’un caractère reste dans le vague mais il s’agit sans doute de la même entité que celle définie dans Unicode par le nom de caractère, par exemple « LETTRE MAJUSCULE LATINE A ». L’interprétation du caractère abstrait donnée dans le Technical Report on Character Encoding Model [63, UTR17] : « Le mot abstrait signifie que ces objets sont définis par convention »30 porte également sur cette même identité. Après nos résultats qui montrent la nécessité d’une approche intension- La BD d’Unicode nelle à définir un codage universel (voir page 60), il n’est pas surprenant de incarne une approche voir que la norme Unicode n’a pu éviter de compléter sa méthode de construc- intensionnelle tion extensionnelle avec une description intensionnelle réalisée par la base de données Unicode. L’acceptation que les propriétés sont intrinsèques à la définition du caractère représente clairement un déplacement de méthodologie depuis l’extensionnel vers l’intensionnel. Vu les difficultés rencontrées par Unicode de reconcilier les approches théorique et pratique à la conception du codage, la base de données est un palliatif qui devient absolument nécessaire pour l’automatisation des traitements textuels même les plus simples comme la conversion de casse, l’extraction de données numériques, le tri lexicographique ou l’identification des endroits où un retour à la ligne est permis. Néanmoins, malgré tous ses aspects circonstanciels, l’introduction de la BD d’Unicode représente sans doute le premier pas d’une transition depuis la modélisation par un simple répertoire de données (la table de codage) vers une approche qui s’inscrit dans le domaine de la représentation des connaissances. Cette dernière suppose d’une part une articulation plus fine dans la manière de représenter des ressources — les signes d’écriture dans notre cas 29 On pourrait également dire « projection » ou « pliage » pour employer le terme proposé par la norme Unicode (character folding). 30 Phrase traduite par l’auteur. 69 —, d’autre part une description des mêmes ressources non seulement dans leur individualité mais également à travers les éventuelles relations qu’elles peuvent entretenir. La présente thèse tentera de développer davantage cette approche, en appliquant certaines notions de la représentation des connaissances à la modélisation textuelle. La BD en format XML D’ailleurs, et un peu dans le même esprit, très récemment (avril 2007), un format XML de la BD d’Unicode a été sorti dans le cadre du rapport technique no 42, où chaque caractère (ou groupe de caractères) est représenté par un élément XML et ses propriétés par les attributs de celui-ci. Le document XML est même extensible par de nouveaux attributs, pourvu que ceux-ci soient clairement séparés des attributs Unicode officiels à l’aide d’espaces de nommage. Par rapport à la forme précédente de la BD — une collection de fichiers texte à formats variés —, sa mise à disposition en XML représente un pas en avant, vers une formalisation plus rigoureuse des propriétés de caractères. Nous avons vu que la nécessité d’intégrer une base de données dans la norme Unicode était la conséquence de l’existence de multiples usages textuels. Unicode ne prétend — et ne peut prétendre — cependant pas prévoir tous les usages possibles, il doit donc forcément en choisir ceux qu’il considère les plus importants ou les plus courants. Les usages non prévus ou prévus mais non couverts par la norme se confrontent à un ensemble immense et à peine ordonné de caractères ; en d’autres termes, Unicode s’impose ses propres limitations d’usage. En revanche, le modèle de texte que nous allons proposer permettra, à travers la généralisation de l’utilisation des propriétés, de multiplier les usages simultanés du même texte, tout en évitant les problèmes de passages à l’échelle qui sont le fléau des modèles extensionnels tels qu’Unicode. 1.8.7 U NE TENTATIVE DE RENFORCEMENT THÉORIQUE : LE RAPPORT TECHNIQUE ISO/IEC TR 15285:1998 Nous avons vu en section 1.8.4 que la manière dont la norme Unicode tente de préciser ce qu’elle entend par caractère se base sur une mise en opposition avec le concept de glyphe. Face à l’ambiguïté de la norme à ce propos (que nous avons montrée dans la même section), un rapport technique ISO (ISO/IEC 15285:1998, [37]) a été rédigé afin de clarifier la différence des deux concepts et la méthodologie d’Unicode en général. Dans la présente section il sera question de commenter critiquement ce rapport qui reste le document le plus sérieux et le plus formel à notre connaissance qui traite de ce sujet. Nous avons évoqué l’insuffisance descriptive de la dichotomie que l’on trouve dans certaines définitions du glossaire d’Unicode : les catégories de caractère en tant qu’unité abstraite du contenu textuel et de glyphe en tant que signe concret visuel sont censées représenter deux partitions de la totalité des signes qui peuvent potentiellement apparaître dans un texte écrit. Malgré le titre du rapport technique en question (An operational model for characters and glyphs), celui-ci présente un modèle plus articulé (par la reprise des définitions de base des normes ISO/IEC 9541-1:1991 et ISO/IEC 10036:1996 [36]), notamment par la distinction entre caractère, glyphe, image de glyphe (glyph 70 image), représentation de glyphe (glyph representation) et forme de glyphe (glyph shape) : CHARACTER. A member of a set of elements used for the organisation, control, or representation of data. (ISO/IEC 10646-1:1993) GLYPH. A recognizable abstract graphic symbol which is independent of any specific design. (ISO/IEC 9541-1: 1991) GLYPH IMAGE. An image of a glyph, as obtained from a glyph representation displayed on a presentation surface. (ISO/IEC 95411:1991) GLYPH REPRESENTATION. The glyph shape and glyph metrics associated with a specific glyph in a font resource. (ISO/IEC 95411:1991) GLYPH SHAPE. The set of information in a glyph representation used for defining the shape which represents the glyph. (ISO/IEC 9541-1:1991) La distinction entre ces cinq concepts correspond bien à nos propos concernant la différence entre glyphe et signe typographique mais aussi concernant les différents degrés de l’abstraction d’un signe donné (voir p. 65). Ainsi, la définition du glyphe ci-dessus semble équivalente à notre signe typographique31 , la forme de glyphe à notre glyphe et l’image de glyphe est la manifestation visuelle la plus concrète possible d’un signe (l’image telle qu’elle apparaît sur un dispositif donné)32 . Le rapport technique mentionne deux domaines de représentation textuelle : le domaine de traitement et le domaine de présentation. Character information has two primary domains [. . .]. The first pertains to the processing of the content, that is, the meaning or phonetic value of the character information. [. . .] The second pertains to the presentation of the content of the character information [. . .]. Le modèle de texte décrit par le rapport technique se base donc sur la supposition qu’il existe deux types majeurs d’opérations textuelles : celles liées au traitement du contenu et celles liées au traitement de la présentation. En même temps, on ne nie pas l’existence d’opérations qui ne trouvent leur place dans aucune de ces deux catégories : [...] processes that perform transformations from one domain to the other are aware of both the content and appearance of characters. [...] a paragraph-level hyphenation process is an example of a layout process that requires content information. Les remarques qui suivent cette observation sont très importantes : 31 Il faut noter que cette incohérence terminologique par rapport à l’usage du terme glyphe est omniprésente dans la littérature : même la norme Unicode l’emploie de manière contradictoire vis-à-vis du rapport technique en question qui pourtant est censé la complémenter. 32 En faisant peut-être abstraction (encore une fois !) de phénomènes aléatoires comme la diffusion d’encre. 71 It is not possible, in general, to code data in such a way as to optimize one process without reducing the performance of other processes. Even within the content domain, the nature of the character coding employed for textual data affects the type or types of processing to be performed on the data; no single coding can optimize more than a few such potential processes. Raph Levien, dans son critique du format SVG [45], formule essentiellement la même idée : Balancing semantics and presentation is considered a very difficult problem. There are certainly no easy answers; the systems that have acheived both well have done so only because of considerable effort. L’avis formulé dans ces deux documents est donc qu’il est très difficile, voire impossible, de créer un modèle de texte générique qui serve de multiples usages textuels. Même en restant dans le domaine du traitement de contenu (en écartant donc toute considération de formatage), le codage de caractères employé devra toujours être adapté par des transformations aux usages spécifiques. Nous partageons également l’avis selon lequel un modèle de texte universel, ayant la même puissance descriptive pour tout usage, ne peut pas exister. Avec la présente thèse, nous avons cependant comme objectif de démontrer qu’il est possible de concevoir des modèles de texte qui s’approchent de cet idéal davantage que le modèle représenté par Unicode et par le rapport technique ISO 15285. SÉMANTIQUE EN CONTEXTE Le rapport technique mentionne également l’importance du contexte de l’usage dans l’interprétation de la sémantique d’un caractère donné (un point d’exclamation signifie autre chose dans un roman que dans une formule mathématique). Il affirme qu’Unicode n’est pas concerné par cet aspect de la sémantique de ses caractères : What [Unicode] does not do—and this is perhaps the most important point of this annex—is formally define the data or units of information that graphic characters are supposed to represent; that is, no formal semantics are specified to assist in the task of interpreting the so-called data supposedly being represented by a character. Instead, [Unicode] assumes that the semantics of a character is either (1) self-evident or (2) subject to conventions adhered to by the user of the character, namely, the application. Sémantique inhérente L’affirmation ci-dessus serait entièrement vraie pour les codages histoou sémantique riques tels que ASCII ; elle l’est nettement moins pour Unicode. D’une part, contextuelle ? Unicode montre une certaine volonté de désambiguïser, de décontextualiser la sémantique de ses caractères par la création de doublons : il suffit de penser aux exemples comme la lettre majuscule « I » et le chiffre romain « I », le point-virgule et le point d’interrogation grec, les alphabets entiers latin et grec dupliqués en guise de signes mathématiques, et ainsi de suite. D’autre 72 part, les propriétés de caractère définies dans la base de données Unicode sont également porteuses d’une sémantique indissociable de l’identité du caractère. Unicode s’est éloigné de l’approche historique qui ne précise guère l’information portée par le caractère codé, tout en réalisant qu’il serait probablement impossible d’éviter complètement la polysémie parmi les caractères du codage, car cette polysémie découle non pas de l’imprécision des définitions données par la norme mais des pratiques d’utilisation. 1.8.8 L E PRINCIPE ( OU LE MYTHE ) DE TEXTE BRUT Dans la présente section nous souhaitons examiner la notion de texte brut afin de saisir ce qui distingue celui-ci d’autres formes textuelles. Ce qui justifie notre intérêt à cet égard est que le texte brut, lieu commun de l’ingénierie informatique, semble bénéficier d’une perception privilégiée comme étant le format de document le plus simple que possible qui a en addition la propriété d’être lisible par l’humain. Grâce à cette simplicité perçue, le texte brut sert comme format d’échange textuel de base entre les logiciels et systèmes les plus variés. Dans la suite, nous souhaitons mettre en question le statut particulier du texte brut Unicode en démontrant que derrière la simplicité apparente se cache une complexité considérable. Cette démonstration servira ensuite à justifier notre position qui relativise l’importance du modèle de texte brut comme format textuel de base en faveur d’un modèle plus complexe en apparence mais probablement plus clair et logique en réalité. LE TEXTE UNICODE : S’AGIT-IL DE TEXTE BRUT ? Le principe de texte brut d’Unicode affirme que la norme n’est concernée que par le contenu d’un document, à l’opposition de sa structure, de sa présentation, de son support, etc. Dans le glossaire on trouve la définition suivante33 : DÉFINITION 3 (TEXTE BRUT SELON LA DÉFINITION D’UNICODE) Texte informatique qui ne comprend que des suites d’unités de stockage d’une norme donnée sans contenir d’autres informations de formatage ou de structure. On utilise fréquemment l’échange de texte brut entre ordinateurs qui ne partagent pas un même protocole de niveau supérieur. Seules les chaînes de caractères Unicode qui ne contiennent pas d’informations de formatage ou de structure sont considérées donc, selon cette définition, comme du texte brut. Par conséquent, les documents HTML ou XML HTML et XML : ne sont pas de documents en texte brut car ils ont une structure non-linéaire texte brut ou non ? (arborescente) et/ou une présentation définies à un niveau plus haut que celui des caractères individuels, notamment au niveau du balisage. Paradoxalement, d’un autre point de vue, ces documents restent néanmoins de simples chaînes de caractères Unicode et sont lisibles par l’humain, à part une poignée de caractères tels que « < > / & ; » qui s’interprètent de manière différente par rapport à leur sémantique « par défaut ». 33 Traduction par P. Andries. 73 D’autre part, tout texte, qu’il soit composé de caractères Unicode ou non, contient forcément des informations de structuration. Tout d’abord, une structure textuelle conventionnelle est véhiculée par des signes de ponctuation tels La structure inhérente que l’espace, les parenthèses, les tirets, le point, la virgule, les guillemets, etc., au texte pour ne pas mentionner le caractère de retour à la ligne dont le rôle principal est de séparer les paragraphes. D’un point de vue fonctionnel, il s’agit de véritables balises : le caractère de retour à la ligne est équivalent à la balise HTML <p>34 , alors que ‘« ’ et ‘ »’ sont équivalents à <quote> et </quote>. Avoir à disposition et employer ces caractères au lieu du balisage explicite correspondant relève tout simplement d’une convention. Dans certaines écritures (thaï, chinois, etc.), il n’est pas habituel de séparer les « mots » par des espaces.35 Si pour une raison particulière (par exemple, l’aide au traitement automatique) on choisit de séparer les mots chinois ou thaï dans un texte, cette action doit sans aucune doute être vue comme une action de structuration, que la séparation soit faite par des espaces ou par des balises. Il n’y a donc pas de raison scientifique ou linguistique autre que les conventions historiques, d’associer certains types de ponctuation au contenu textuel (et donc de niveau inférieur) et d’autres à la structure (et donc de niveau supérieur) du même document. CARACTÈRES CONTRE BALISAGE DANS LE TEXTE UNICODE Le rapport technique no 20 d’Unicode, « Unicode in XML and other Markup Languages », traite (entre autres) du choix entre représenter l’information en tant que caractère, élément d’une chaîne unidimensionnelle, ou bien en tant que balise, nœud d’une structure arborescente : Encoding text as a sequence of characters without further information leads to a linear sequence, commonly called plain text. Character follows character, without any particular structure. Markup, on the other hand, defines a hierarchical structure for the text or data. In the case of XML and most other, similar markup languages, the markup defines a tree structure. [. . .] Operations that are easy to perform on trees are often difficult to perform on linear sequences and vice versa. By separating functionality between character encoding and markup appropriately, the architecture becomes simpler, more powerful and longer-lasting. La linéarité Deux remarques doivent être faites à ce point. Premièrement, il existe de du texte brut Unicode nombreux cas où une telle séparation fonctionnelle entre les types d’informan’est qu’une apparence tion linéaire et hiérarchique devient ambiguë. Prenons l’exemple d’un chiffre en exposant : « 5 ». « Être en exposant » est une propriété présentationnelle (qui est à la fois, bien évidemment, porteuse de sémantique, indicatrice de structure, et ainsi de suite) associée à un signe individuel (ce qui n’exclut pas la possibilité d’avoir plusieurs signes successifs ayant cette même propriété). La propriété d’être en exposant est une information qui se rattache à un signe donné et qui n’a donc pas d’existence indépendamment d’un signe visuel. 34 La spécification HTML n’oblige pas l’utilisation de la balise de fermeture </p>. Par conséquent, il n’est même pas possible de parler de mots dans le cas des langues correspondantes, du moins dans un sens équivalent à celui des langues occidentales. 35 74 Texte RLE gauche-à-droite LRE droite-à-gauche PDF g.à.d. PDF d.à.g. FIG. 1.5 – Imbrication hiérarchique de texte dans une chaîne Unicode à l’aide de « caractères balises ». FIG. 1.6 – Autre exemple de structure hiérarchique à l’intermédiaire de caractères Unicode d’annotation japonaise : le caractère U+FFF9 marque le début de l’annotation, le caractère suivant est le kanji annoté (hito, homme), l’annotation (en hiragana) suit le caractère U+FFFA, la fin de l’annotation est marquée par U+FFFB. Puisque ceci relève d’une organisation hiérarchique de l’information, sa représentation adaptée d’après le rapport technique ci-dessus serait du balisage. En même temps, l’existence du caractère Unicode U+2075 SUPERSCRIPT FIVE — en opposition flagrante avec les recommandations du rapport technique — peut également être justifiée par le fait qu’il s’agit d’une propriété isolée associée à un signe isolé qui peut pour cette raison être représentée comme de l’information appartenant au texte brut. Chacun de ces deux niveaux de représentation a ses propres avantages et inconvénients. Dans la présente thèse, nous allons cependant proposer un niveau représentationnel intermédiaire entre caractère et balisage qui allie les avantages théoriques et pratiques des deux approches. Deuxièmement, il existe de véritables caractères balises dans Unicode Caractères balises qui permettent de définir une imbrication hiérarchique dans le texte. Sur la (RLE, LRE, roubi) figure 1.5, des caractères non-imprimables RLE et LRE (imbrication droite-àgauche et gauche-à-droite) permettent d’indiquer explicitement la direction du texte suivant jusqu’à un caractère PDF (dépilement de formatage directionnel). En figure 1.6, les trois caractères roubi (annotation japonaise des kanji par des hiragana), U+FFF9, U+FFFA et U+FFFB, servent à attacher de l’annotation à un caractère donné. Dans les deux cas, il s’agit de données structurées en arbre, même si cette structure est « déguisée » en un flot linéaire de caractères, et même si dans le seconde exemple l’arbre ne possède que deux niveaux car l’imbrication récursive des caractères d’annotation n’est pas permise. CLARIFICATION SUR LA NOTION DE STRUCTURE( S ) D’UN DOCUMENT Une dernière remarque doit être faite concernant la citation ci-dessus, ti- Un document possède rée du rapport technique « Unicode in XML and other Markup Languages ». de multiples structures Tout en admettant l’importance de bien équilibrer les niveaux représentationnels des documents, nous contestons l’idée que ces deux types de structures soient suffisantes. En général, nous contestons toute affirmation parlant de la structure de tel ou tel document car nous considérons qu’aucun document ne peut être décrit par une seule structure. Nous employons ici la notion de structure comme le synonyme de celle d’organisation : il s’agit d’un ensemble de relations entre éléments d’information. Pour comprendre pourquoi un do75 cument possède non pas une mais des structures multiples, il suffit de réaliser que les relations (et donc la structure) observées dépendent de notre choix d’ensemble de base. Si l’on choisit le caractère comme unité d’information, la structure observée aura une prépondérance linéaire. Si l’unité de structuration est le syntagme liguistique, on observera très probablement une structure arborescente. À un niveau supérieur, le paragraphe peut être considéré comme une unité structurelle d’un discours écrit à partir duquel sont constituées les sections qui à leur tour forment des chapitres, etc. Cette arborescence sera cependant différente de l’arborescence syntaxique, rhétorique ou présentationnelle du même texte (cette dernière étant composée de lignes, de pages, etc., qui ne sont nullement des unités discursives, rhétoriques ou syntaxiques). Document 6= arbre Une fois cette conception acceptée, la pauvreté d’une structure arborescente « à la XML » ayant comme feuilles des chaînes Unicode, comparée à la description de l’ensemble des informations qui constituent un document, paraît évidente. C’est à partir d’une direction légèrement différente — celle de l’indissociabilité du contexte des éléments de tous les niveaux du document —, que l’article « Characters are not simply names, nor documents trees » de Rowley et Plaice [55] arrive à la même conclusion de l’insuffisance de la modélisation du document textuel en tant que chaînes Unicode organisées dans une structure arborescente. Néanmoins, ces considérations sortent du cadre de la présente thèse qui se restreint à la modélisation du texte de niveaux inférieurs à celui du paragraphe (qui d’ailleurs semble être une des rares unités structurelles à la fois sémantiques, discursives et présentationnelles, ce qui était une des raisons de l’avoir choisi comme une sorte de frontière naturelle de la portée de nos études). Comme annoncé au début de cette thèse, nous nous intéressons uniquement aux structures — en pluriel — des niveaux inférieurs à celui du paragraphe. UNE DÉFINITION ALTERNATIVE DE LA NOTION DE TEXTE BRUT Nous avons vu que le texte brut Unicode — qui consiste donc en une chaîne de caractères Unicode qui adhère à la norme — peut très bien contenir de l’information structurelle ou présentationnelle, implicitement ou explicitement, sans le moindre recours à un protocole de niveau supérieur (comme par exemple le format XML). Ainsi, il nous paraît utile de présenter une définition alternative du texte brut, plus précise que celle donnée dans le glossaire d’Unicode. Cette nouvelle définition — qui ne sera, bien entendu, qu’une seule parmi les définitions possibles — nous conviendra mieux dans l’objectif d’exiger de la part du texte brut une certaine « simplicité ». La notion de texte brut L’idée qui mène à cette nouvelle définition est la suivante : la qualification est liée à celle ou non d’un document comme du texte brut est tout d’abord une question de l’usage pratique qui dépend principalement de son usage. Par exemple, un logiciel d’édition de texte primitif (sans coloration syntaxique, sans correcteur d’orthographe, etc.) peut très bien considérer un document HTML comme étant un flot de caractères Unicode simple et uniforme. Ceci n’est plus le cas lorsque cet éditeur intègre un correcteur d’orthographe qui doit savoir distinguer entre noms de balises et attributs HTML d’une part et contenu textuel d’autre part, pour ne corriger que ce dernier. On peut voir que le même document peut, selon le contexte d’usage, être qualifié ou non de texte brut. 76 Il est donc évident que la notion de texte brut ne peut être définie sans recourir à celle d’usage. La définition correcte d’un concept si complexe que celui d’usage nécessite des préparations considérables, même si nous nous permettons à nous restreindre à un contexte de manipulation informatique d’une chaîne d’éléments textuels. Pour cette raison, nous ne chercherons pas Une interprétation ici à le définir de manière précise ; plutôt, nous allons considérer que l’usage approximative comprend — sans être limité à — un ensemble d’opérations textuelles que l’on de la notion d’usage peut appliquer à une chaîne de caractères. Si l’on reprend le formalisme algébrique introduit en section 1.4.2, l’ensemble Σ∗Uni de chaînes de codes Unicode peut être regardé comme un monoïde libre avec la chaîne vide comme élément neutre et la concaténation comme opérateur. (Rappelons que ΣUni = {0, ..., NUni }, NUni étant le code de caractère maximal.) Une opération textuelle serait ainsi une fonction f : Σ∗Uni 7→ Σ∗Uni . Il faut remarquer cependant que le langage de textes Unicode valides, LUni , est plus restreint que Σ∗Uni (autrement dit, LUni ⊂ Σ∗Uni ) car il est possible de créer des chaînes de caractères non conformes à la norme Unicode (par exemple, en mettant un caractère combinant tel qu’un accent en début de chaîne, sans caractère de base). Nous allons maintenant procéder à la (re)définition de la notion de texte brut à l’aide de celle de l’usage36 : DÉFINITION 4 (TEXTE BRUT) Un texte K = c1 c2 ...cn est texte brut par rapport à un usage donné s’il existe au moins une transformation dans le cadre de cet usage qui ne respecte aucune relation entre les éléments textuels constituant K au-delà du fait que ceux-ci forment une séquence. Le sens de cette nouvelle interprétation du texte brut est que, dans le Le sens de la définition contexte d’un usage donné, une chaîne peut être considérée comme telle dans l’unique cas où elle est composée d’éléments indépendants au-dessus desquels aucune structure n’est définie, ou en d’autres termes, qui n’entretiennent aucune relation (de « dépendance » ou autre) entre eux. Par exemple, le texte Unicode sur la figure 1.6 n’est pas de texte brut par rapport à l’usage « affichage » (ou « composition ») car la sous-chaîne des deux hiragana entre les FF caractères FF FA et FB s’affiche de manière différente lorsqu’elle est composée seule que lorsqu’elle est composée comme faisant partie de l’annotation. Une telle définition du texte brut est pertinente parce que la « simplicité » perçue d’un document textuel, aussi bien pour l’humain qui l’interprète en le lisant que pour des algorithmes de traitement automatique, dépend essentiellement du nombre de « règles » dont la connaissance est nécessaire afin de réussir à interpréter correctement le texte. Bien entendu, le critère formulé par notre définition n’est ni suffisant ni nécessaire pour garantir la lisibilité d’un texte ; néanmoins, on peut affirmer avec certitude qu’un texte qui ne se qualifie pas comme du texte brut par rapport à un usage possède une certaine complexité qui rend son interprétation plus difficile. 36 J’exprime ma gratitude envers M. Chris Rowley pour avoir apporté des précisions par rapport à cette définition. 77 INTERACTIONS ENTRE CARACTÈRES UNICODE ADJACENTS Grâce à leur simplicité, les chaînes de caractères codées suivant des normes historiques (telles que ASCII ou les codages ISO) peuvent réellement être considérées comme du texte brut — une suite uniforme de caractères indépendants — par rapport à un grand nombre d’usages : afficher ou manipuler une chaîne ASCII a pendant longtemps été le b-a-ba de la programmation de l’ordinateur. Ce n’est plus le cas des chaînes Unicode, à cause de la complexité inhérente à la norme37 . En théorie comme en pratique, les caractères d’une chaîne Unicode peuvent entretenir des relations entre elles, relations qui doivent être prises en compte lorsque la chaîne est affichée ou traitée. Les exemples en sont abondants ; en addition aux « caractères-balises » dont nous avons présenté quelques exemples en page 75, voici quelques phénomènes où des caractères Unicode adjacents entretiennent de telles relations entre eux : – Lorsqu’un caractère est suivi par un ou plusieurs caractères combinants (e+´=é), ces derniers doivent être considérés comme étant inséparables : – lors de l’affichage, un saut de ligne ne peut intervenir entre eux ; – lorsque la chaîne de caractères est inversée, l’ordre base-combinant doit être gardé (Le´on 7→ noe´L) ; – lorsque le nombre de caractères dans une chaîne est calculé, pour certains usages les caractères combinants ne comptent pas comme des caractères individuels. – Lorsqu’un caractère CR (retour-chariot) est suivi par un caractère LF (passage à la ligne), les deux doivent toujours rester inséparables et comptent comme un seul caractère de terminaison. – Lorsqu’un caractère ZWJ (connecteur à chasse nulle) ou NBSP (espace insécable) se trouve entre deux autres caractères, ces deux derniers ne peuvent pas être séparés par un saut de ligne. – etc. En résumé, si l’on admet que le terme texte brut est censé véhiculer une idée de simplicité de lecture et d’interprétation (pour l’humain et pour l’ordinateur), conformément à la définition que nous venons d’établir, nous devons alors conclure que le texte en caractères Unicode ne possède en général pas cette simplicité. Les caractères d’une chaîne Unicode, adjacents ou non, peuvent entretenir des relations entre eux de sorte que même certaines opérations textuelles élémentaires doivent les prendre en compte afin de rester conformes à la norme Unicode. Dans le cadre de cette norme, être texte brut n’est plus garantie de simplicité. 1.8.9 R ÉSUMÉ DES PROBLÈMES THÉORIQUES LIÉS AUX PRINCIPES D ’U NICODE L’importance d’Unicode Notre examen détaillé de la norme Unicode était nécessaire principalement à cause du statut particulier de celle-ci : codage de caractères à la fois 37 Ici nous faisons bien évidemment abstraction de toute considération de représentation comme les mécanismes de sérialisation (Character Encoding Scheme) et les formes naturelles de caractères (Character Encoding Form). 78 global (car il tente de couvrir la totalité des écritures du monde, mais aussi de nombreux autres systèmes de notation) et unique (car il est censé supplanter tous les autres codages sur toutes les plates-formes), il devient indispensable en tant que modèle de représentation textuelle. Le texte en caractères étant le format d’échange textuel de loin le plus courant aujourd’hui — un statut qui ne changera probablement pas dans l’avenir proche —, le modèle de texte que propose Unicode représente une influence extrêmement importante sur la capacité représentationnelle de tout texte numérique ou numérisé. L’informatique a élargi les usages potentiels du texte — la recherche automatique, l’indexation, le traitement de texte, les hyperliens n’en sont que les exemples les plus évidents — mais en même temps les usages disponibles ainsi que leur puissance et leur convivialité sont très dépendants des modèles informatiques qui les rendent opérationnels. Étant donnés les usages existants mais aussi ceux dont une future invention est fonction des modèles d’aujourd’hui, est-ce que le modèle de texte offert par Unicode — avec son immense répertoire de caractères, sa base de données de propriétés et sa vision du texte brut — est un modèle avec suffisamment de puissance et de potentiel ? Vis-à-vis de la situation chaotique d’innombrables codages nationaux des années 1980 et 1990 et des difficultés dans la création de documents multilingues, Unicode représente un saut qualitatif indéniable. Au-delà de ses avantages évidents, dans cette section de la thèse nous avons essayé de mettre à l’examen ses fondements théoriques. Notre objectif n’était pas de contester l’appartenance ou l’omission de tel ou tel caractère de la norme : pour une base de données d’une si grande taille l’incohérence est probablement inévitable. Nous avons cependant contesté : – l’approche même d’Unicode concernant la modélisation de texte : la Les points notion de caractère en tant qu’unité atomique textuelle et en tant que problématiques simple code numérique ; – les principes informels selon lesquels Unicode décide d’un signe s’il a sa place dans la norme ou non ; – la possibilité de désigner un niveau d’abstraction unique et non-ambigu où un signe est suffisamment « abstrait » pour devenir atome d’une représentation textuelle d’échange ; – d’une façon similaire, nous avons contesté la possibilité même théorique de choisir a priori un niveau de précision sémantique pour un caractère donné qui convienne ensuite à tout usage ultérieur de celuici ; – l’aspect pratique de l’usage d’un répertoire énorme de signes qui ne cesse de croître et que la base de données d’Unicode n’est capable d’ordonner et d’interpréter que partiellement ; – l’effort de maintenir l’apparence d’un modèle simple — le texte brut — malgré la complexité ad hoc de certains aspects de la norme ; – finalement et en somme, nous avons contesté l’approche fondamentalement extensionnelle à définir un modèle de texte, à travers la simple énumération de l’ensemble de base de ses éléments constitutifs. Un des objectifs majeurs de la présente thèse est de démontrer que tous Les problèmes sont liés les problèmes que nous venons de recenser ont une origine commune, notamment la nature atomique du caractère : être indivisible signifie que le caractère 79 La solution, en forme embryonnaire : la BD d’Unicode Un premier pas vers la représentation des connaissances se définit par lui-même. Modifier ou compléter cette définition afin de rendre plus abstraite ou plus concrète la description d’un caractère — description qui peut porter aussi bien sur sa sémantique que sur sa présentation — n’est possible que de deux manières : soit par l’introduction d’un caractère complètement nouveau dans la norme, soit en sortant du cadre du modèle de texte brut d’Unicode en faveur de modèles étendus (comme par exemple PDF ou SVG). L’association de propriétés aux caractères à travers la base de données d’Unicode était tout à fait nécessaire pour rendre le modèle utilisable. C’est uniquement grâce à cette base de données que les opérations même les plus primitives de traitement automatique textuel sont aujourd’hui possibles. Si l’approche intensionnelle que représente la base de données (cf. page 60) sauve Unicode d’une « anarchie sémiotique », cette approche reste sousemployée, d’une part, à cause de l’utilisation limitée des propriétés normatives, d’autre part, à cause de certaines vieilles habitudes de programmation qui font que la seule clé d’identification et d’interprétation de l’élément textuel reste toujours le code de caractère. Plus généralement, la conception de la base de données d’Unicode se doit à la réalisation de la nécessité d’une approche plus rigoureuse envers la gestion des connaissances liées aux éléments textuels de bas niveau, aussi bien dans leur individualité que dans les rapports qu’ils entretiennent. La BD d’Unicode est un premier pas — certes hésitant et peut-être même inconscient — dans cette direction, vers la refonte des bases de la modélisation textuelle en s’appuyant sur des principes de la représentation des connaissances. Unicode prend délibérément ses distances du monde de la présentation textuelle, de la composition, de la mise en page, de la typographie. Il n’adresse pas les problèmes de celles-ci et en tant que norme internationale, il n’est possible non plus d’envisager dans la pratique son extension éventuelle dans cette direction. Les systèmes informatiques de composition et de mise en page possèdent leurs propres modèles de texte qui sont des modèles à orientation typographique. Bien que l’unité textuelle de ces modèles visuels soit le glyphe et non le caractère, les enjeux majeurs des deux types de modèles sont de la même nature : nous verrons que, tout comme le modèle en caractères, les modèles visuels adoptent de plus en plus l’approche et les idées de base des divers systèmes de représentation des connaissances. 1.9 L A NOTION DE « PROPRIÉTÉ » DANS LES FORMATS DE FONTE INTELLIGENTS Introduction L’amélioration des logiciels de composition de texte — en termes de quaet historique lité typographique dans un contexte multilingue — est entrée dans une nou- velle ère au début des années 1990, à peu près en parallèle avec l’émergence d’Unicode. Ceci n’est pas dû au hasard : l’idée qui a permis la conception de modèles de texte plus puissants était celle de séparer les représentations d’échange et finale où la première correspond au texte Unicode et la dernière au texte en glyphes. L’intérêt de séparer le modèle d’échange en caractères du modèle visuel en glyphes était de rendre le texte en caractères indépendant 80 des technologies et des applications de mise en page qui, de leur côté, ont pu se développer à travers des technologies propriétaires sans bouleverser le modèle d’échange textuel déjà établi. Nous rappelons que nous utilisons le terme glyphe pour désigner l’image contenue dans une fonte mais aussi, pour des raisons de simplicité, le code numérique qui est associé à l’image. Entre la conception du modèle et les résultats pratiques, il y a eu cependant dix ans de travail de développement. Le plan ambitieux que se sont fixés les boîtes informatiques les plus puissantes (Adobe, Apple, Microsoft) était de passer des traitements de texte primitifs des années 1980 à des systèmes capables de reproduire algorithmiquement les résultats qualitatifs qui avaient été lieux communs de la typographie au plomb mais aussi les propriétés complexes des écritures traditionnellement manuscrites telles que l’arabe ou les écritures indiennes. Cela a requis des projets de développement à long terme. Au centre des efforts de développement étaient de nouveaux formats de Pourquoi « intelligents » fonte dits « intelligents ». Pour résumer ce qui les distingue des formats de fonte traditionnels, voici les trois points majeurs : 1. leur conception prévoit l’emploi simultané de multiples langues et écritures dans le même document et à l’aide de la même fonte ; 2. leur reconnaissance de l’indépendance du caractère et du glyphe, et plus particulièrement des correspondances multiple-à-multiple qui peuvent exister entre caractères et glyphes ; 3. la possibilité de définir des manipulations sur les glyphes qui prennent en compte le contexte du glyphe en question que représentent les chaînes de glyphes précédente et suivante ainsi que les diverses propriétés de ces glyphes. Vu d’un autre angle, il s’agit néanmoins encore une fois d’un déplace- Fonte intelligente = ment du principe organisateur depuis l’extensionnel vers l’intensionnel. Avec fonte intensionnelle la multiplication drastique d’écritures et de langues à prendre en charge, le nombre de signes typographiques s’est également multiplié. Il ne suffisait plus de considérer la fonte comme un simple répertoire de glyphes : il a fallu décrire ceux-ci, d’abord les catégoriser par écriture et par langue, puis décrire leur utilisation. De ce point de vue, les règles de trasformation que contiennent les fontes intelligentes font partie de l’intension des glyphes. Nous n’allons donner ici ni une introduction ni une présentation détaillée des différents formats existants : l’ouvrage [28] les a déjà faites. Nous n’allons pas non plus analyser et comparer en profondeur la puissance de ces différents formats car ceci a déjà été fait en longueur dans l’article [14] de l’auteur. Notre intérêt se restreindra à ce qui est le plus pertinent pour cette thèse : les modèles de texte associés aux fontes intelligentes. 1.9.1 L E MODÈLE DE TEXTE COMMUN AUX DIFFÉRENTS FORMATS INTELLIGENTS Le principe de base du processus de formatage n’a pas changé depuis TEX : il s’agit de passer depuis une représentation textuelle d’échange à une représentation finale, par l’intermédiaire d’une (ou de plusieurs) représentation(s) 81 transitionnelle(s). Ce processus comprend au moins un changement de modèle à un certain moment de la composition : il s’agit du passage du modèle en caractères au modèle en glyphes. Les fontes intelligentes sont capables de décrire des correspondances multiple-à-multiple entre caractères et glyphes, ce qui permet non seulement l’emploi automatisé de ligatures mais aussi une différence de granularité entre les deux représentations ; par exemple, dans le texte coréen en caractères l’unité pertinente peut être le jamo (le segment alphabétique) alors que les glyphes définis dans la fonte correspondent aux syllabes. Dans ce dernier exemple, il s’agit d’une correspondance trois-à-un, voire quatre-à-un. LA PROPRIÉTÉ La propriété Dans le modèle de texte caractère-glyphe, la propriété est considérée en tant que supplément comme une information qui s’ajoute à l’élément textuel. Nous avons pu voir, de l’élément textuel par exemple, qu’Unicode distingue entre l’identité du caractère d’une part, et L’indice de glyphe en tant qu’abréviation de l’ensemble des propriétés de celui-ci Propriétés invariantes Une distinction purement pratique La structure identique de la chaîne de caractères et de la chaîne de glyphes ses propriétés d’autre part. La fonte s’organise selon le même principe : l’indice de glyphe renvoie non seulement à une image mais aussi à un ensemble d’informations qui la décrivent, telles que des propriétés métriques, le système d’écriture, des instructions ou hints, le comportement contextuel, etc. Ainsi, l’indice de glyphe est en quelque sorte un référencement, une abréviation de l’ensemble d’informations qui décrivent le glyphe38 . Les propriétés attachées aux caractères par l’intermédiaire du standard Unicode ou aux glyphes par l’intermédiaire des fontes restent, par conséquent, invariantes au long de la chaîne. D’autres propriétés, comme la position horizontale ou verticale, le corps, la couleur, s’associent plutôt aux instances des éléments textuels (à des positions dans la chaîne). Cette distinction entre propriétés invariantes et propriétés d’instance n’est, en réalité, qu’une considération pratique d’implémentation : pour des raisons d’économie de stockage, il est toujours souhaitable d’éviter la réplication illimitée d’une information qui ne change pas. Puisqu’une propriété invariante est constante pour chaque instance d’un caractère ou d’un glyphe dans un texte, même s’il n’existe pas de différence conceptuelle entre propriétés d’instance et propriétés invariantes, il n’est pas surprenant que les deux types de propriété peuvent représentées de deux manières indépendantes dans les modèles d’implémentation des différents logiciels de composition de texte. Ainsi, le format de fonte Graphite distingue entre propriété de glyphe (en tant qu’élément de la fonte) et propriété de case (en tant qu’instance de glyphe dans la chaîne). Structurellement parlant, le texte en caractères et le texte en glyphes s’organisent donc d’exactement la même manière : il s’agit de chaînes d’indices numériques où à chaque position dans la chaîne on peut associer un ensemble de propriétés39 . Cet ensemble de propriétés se complète par les propriétés invariantes, référencées indirectement à travers les codes de caractère ou les indices de glyphe. 38 Plus précisément, puisque l’unicité du code de glyphe est restreinte à la fonte — deux glyphes distincts venant de deux fontes différentes peuvent avoir le même identifiant interne —, c’est le couple (indice de glyphe, fonte) qui doit être considéré comme identifiant unique. 39 Souvent on associe la propriété à un intervalle d’éléments textuels ; il ne s’agit pas là d’une différence conceptuelle mais tout simplement d’une mesure d’optimisation de stockage. 82 CORRESPONDANCES ENTRE LA CHAÎNE DE CARACTÈRES ET LA CHAÎNE DE GLYPHES Nous n’avons pas encore mentionné un aspect important du modèle de texte caractère-glyphe : il s’agit du besoin de maintenir des correspondances entre éléments de la chaîne de caractères d’entrée et éléments de la chaîne de glyphes de sortie. Pour plusieurs raisons, il est primordial pour tout système de composition de texte de suivre les correspondances entre caractères du texte d’entrée et glyphes du texte composé. D’une part, pendant le processus de composition même, il arrive un moment où le texte d’un paragraphe déjà composé doit être coupé en lignes. Cependant, certaines opérations comme la césure s’effectuent sur des mots, c’est-à-dire sur des chaînes de caractères alors que le paragraphe composé est essentiellement une suite de glyphes et d’autres informations visuelles. Il s’ensuit que le système de composition doit être capable de retrouver les caractères d’origine à partir desquels les glyphes du paragraphe ont été choisis, et ceci n’est possible qu’en connaissance des correspondances entre les deux textes. D’autre part, depuis l’existence de documents interactifs (cf. section 1.7), ces correspondances demeurent pertinentes après le processus de formatage car elles sont essentielles pour assurer l’interactivité du document généré (l’extraction du contenu, la recherche, l’indexation). En réalité, rien ne garantit que le processus de formatage soit une transformation bijective entre la chaîne de caractères et la chaîne de glyphes : si par exemple une fonte ne contient pas de glyphe dédié à un caractère donné, la pratique courante est d’y faire associer un glyphe spécial non défini (notdef). Puisque notdef peut être l’image de plusieurs caractères, il n’existe pas de fonction inverse qui puisse retourner le caractère d’origine. De plus, certaines transformations peuvent rompre la correspondance unà-un séquentielle entre les éléments respectifs des deux chaînes : par exemple, le remplacement de deux glyphes « f » et « i » par une ligature « fi » diminue la longueur de la chaîne de glyphes. La solution unanimement adoptée par les systèmes de formatage compatibles avec les formats de fonte intelligents consiste à créer un graphe de correspondances entre caractères d’entrée et glyphes de sortie. Ce graphe G, maintenu par le logiciel de formatage (application ou bibliothèque système), permet de retrouver le (ou les) caractère(s) correspondant à chaque glyphe et vice versa. Il faut donc étendre le modèle de texte caractère-glyphe par ce troisième élément : le graphe de correspondances, un graphe biparti dont les nœuds correspondent aux caractères d’une part, et aux glyphes d’autre part. Une arête est présente entre un nœud de caractère et un nœud de glyphe lorsque ce dernier « correspond au » (« représente » ou « fait partie de la représentation du ») premier : Soit c1 c2 ...cn la chaîne de caractères et g1 g2 ...gm la chaîne de glyphes, alors G = (V, E); V = {c1 , c2 , ..., cn } ∪ {g1 , g2 , ..., gm } (tel que ci 6= gj ); E = {(ci , gj ) | gj « correspond à » ci } Nous avons déjà mentionné dans cette section qu’une des fonctionnalités majeures qui distingue les fontes intelligentes de leurs ancêtres plus simples 83 Correspondances entre caractères d’entrée et glyphes de sortie Le graphe de correspondances est « la possibilité de définir des manipulations sur les glyphes qui prennent Graphe en compte le contexte du glyphe en question ». Il s’agit ici, entre autres, de correspondance de transformations dites contextuelles (dans le jargon des développeurs) qui et fontes intelligentes peuvent remplacer une sous-chaîne de glyphes de longueur arbitraire par une autre chaîne de longueur potentiellement différente, possiblement en fonction d’autres glyphes qui précèdent et qui suivent la sous-chaîne d’origine. Ceci signifie que des correspondances multiple-à-multiple deviennent possibles entre les caractères de départ et les glyphes d’arrivée, et que le maintien du graphe de correspondances devient essentiel. La complexité de cette tâche dépend largement des types d’opérations permises par les fontes intelligentes (réordonnancement, substitution contextuelle, insertion, suppression, etc.) ; par conséquent, la simplification des transformations possibles a été un enjeu très important lors de la conception des différentes formats de fonte intelligents. 1.9.2 P ROPRIÉTÉS DANS LES DIFFÉRENTS FORMATS DE ET PLATES - FORMES DE COMPOSITION FONTE Dans la suite, nous allons examiner les trois formats de fonte intelligents les plus avancés : AAT (développé par Apple), OpenType (Microsoft/Adobe) et Graphite (par SIL International, organisme à but non lucratif). Chacun des formats possède au niveau du système d’exploitation son propre système de bibliothèques de support, qui comprend les moteurs de composition et de mise en page, du support Unicode, etc. Les bibliothèques correspondantes sont : ATSUI pour AAT, Uniscribe et OTLS pour OpenType ; au format Graphite correspond un système au même nom. D’autre part, nous allons également analyser l’approche du système m17n (multilingualization) qui n’a pas de format de fonte associé mais qui remplit le même rôle que les trois autres systèmes. Comme nous l’avons annoncé au début de la section, notre présentation de ces formats et systèmes ne sera guère exhaustive ; nous devrons supposer de la part du lecteur une connaissance préalable de leurs principes de base afin d’éviter ici une présentation détaillée qui nous détournerait du sujet principal qui reste la modélisation de texte. AAT ET OPENT YPE Ces deux formats propriétaires ont certains points en commun regardant leur fonctionnement et l’interface de contrôle qu’ils fournissent aux applications, le but étant de réduire d’une part la gamme d’opérations que la fonte est capable d’effectuer sur le texte, d’autre part le contrôle que le client (l’application et/ou l’utilisateur) peut exercer sur le processus de composition (voir à cet égard [14]). Typiquement, l’interface fournie par le système à l’application est restreinte à un ensemble de fonctionnalités qui peuvent être activées ou désactivées. Une fonctionnalité représente un ensemble de transformations définies au sein de la fonte (composition de ligatures, énumération de variantes de glyphes, calcul des positions de marques, etc.). Les fonctionnalités sont triées par système d’écriture, puis par langue. 84 FIG. 1.7 – La table de correspondances entre caractères et glyphes retournée par Uniscribe (en bas). Le nombre dans la k-ième case indique la position du premier glyphe correspondant au k-ième caractère. Le texte d’entrée pris en charge par le moteur de composition (ATSUI ou Uniscribe) est bien évidemment une chaîne de caractères Unicode avec des propriétés associées. En supposant que la chaîne a déjà été découpée en sous-chaînes qui utilisent une fonte unique (ceci est un pré-requis à la charge de l’application), les propriétés envoyées au moteur de composition sont la langue et l’état des fonctionnalités (activée/désactivée). Le système d’écriture n’est pas une propriété à part car elle est une propriété du caractère Unicodemême qui se dérive à partir du code de caractère à l’aide de la BD d’Unicode. Dans un premier temps, à l’aide de la table de correspondance cmap de la fonte AAT ou OpenType, une chaîne de glyphes initiale est calculée à partir de la chaîne de caractères d’entrée. cmap réalise des correspondances un-à-un et ne change pas l’ordre des glyphes par rapport à l’ordre des caractères. Ensuite, la chaîne de glyphes peut subir davantage de transformations (substitutions mà-n dans le cas des deux formats, réordonnancement, insertion et suppression dans le cas d’AAT uniquement). Ces transformations nécessitent que le système de composition maintienne à jour le graphe de correspondances entre caractères et glyphes. Le graphe est retourné dans la forme d’un simple tableau qui indique pour chaque caractère le ou les glyphes qui en ont résulté (voir figure 1.7 pour un exemple). En plus du graphe, une liste de propriétés visuelles (métriques, positions, classe de justification, diacritique ou non, etc.), parallèle à la chaîne de glyphes, est retournée. GRAPHITE Graphite n’étant pas un système propriétaire, ses concepteurs n’ont pas eu à s’inquiéter d’éventuels problèmes de maintenance et de support ; ils ont pu donc créer un format de fonte et un système de composition qui offre plus de souplesse et de personnalisation potentielles aux développeurs de fontes et d’applications. Le résultat en est un format de fonte qui est capable de tout ce dont OpenType et AAT sont capables et de bien plus. Premièrement, Graphite Graphite est équipé introduit le concept d’attribut de case (slot attribute)40 qui se distinguent des de propriétés : attributs de glyphe par le fait qu’ils s’associent à une position dans la chaîne les attributs de case 40 Dans le jargon de Graphite, attribut et synonyme de ce que nous appelons propriété. 85 plutôt qu’à un identifiant de glyphe. Remarquons que notre définition de la propriété dans la section précédente est identique à celle de l’attribut de case alors que les attributs de glyphe41 sont des propriétés invariantes. La propriété intégrée La nouveauté n’est pas dans le fait d’utiliser de tels attributs — ils sont dans le modèle incontournables et bien évidemment utilisés dans tout système de traitement textuel — mais plutôt dans l’intégration de la case (slot) en tant que conteneur générique dans le modèle de texte. Dans le cas d’AAT et d’OpenType, les attributs textuels (d’entrée et de sortie) sont contrôlés en interne par le moteur de composition : les transformations définies dans la fonte n’ont aucun moyen de prendre en compte les attributs associés aux glyphes, et l’application cliente n’envoie au moteur et n’en récupère que les attributs que celui-ci reconnaît en tant que tels. En revanche, le langage de description de Graphite (GDL) — qui décrit la fonte Graphite entière — met à disposition de l’auteur de la fonte 16 attributs de case typés dont la sémantique est à choisir par l’auteur et qui peuvent être utilisés librement dans les transformations de glyphes (décrites par le même langage GDL), tout comme les attributs de case pré-définis et les attributs de glyphe. Tous les types d’attributs font donc partie intégrante du modèle de texte de Graphite. Par exemple, la règle de transformation Graphite gA { kern.x = 10 } / gB remplace le glyphe gA par le glyphe gB seulement si l’attribut de crénage horizontal du premier est égal à 10. Cet exemple montre aussi que la valeur d’un attribut Graphite peut être une liste de sous-attributs, en d’autres termes, un arbre de couples clé-valeur. Malgré le fait que la gestion évoluée et bien intégrée de propriétés rend le modèle de texte de Graphite puissant et flexible, il semble que sa puissance Les pseudo-glyphes n’est pas toujours bien exploitée. Notamment, les règles de transformation de dans Graphite, AAT Graphite font souvent recours à des pseudo-glyphes qui sont des éléments et OpenType textuels temporaires dont le seul rôle est de modifier le comportement des règles. De tels pseudo-glyphes sont les glyphes marqueurs de début et de fin de chaîne, le glyphe de saut de ligne, le glyphe ZWJ (liant sans chasse), etc. L’information que portent ces pseudo-glyphes pourrait cependant être représentée plus naturellement à l’aide de propriétés : le premier glyphe de la chaîne pourrait avoir une propriété first=true, le glyphe à coller au glyphe précédent aurait la propriété join_to_left=true, et ainsi de suite. Le même principe de pseudo-glyphes est également employé par AAT et par OpenType, ce qui est plus justifiable car leur modèle de texte ne gère pas les propriétés. Le GDL et le concept d’attributs sont présentés en détail dans le document [35]. LA BIBLIOTHÈQUE « M17N » ET LE « M-TEXT » m17n [40] n’est pas un format de fonte mais un ensemble de bibliothèques qui offrent diverses fonctionnalités de traitement textuel multilingue. C’est le plus récent parmi les systèmes présentés, son développement ayant commencé autour de 2002. En plus d’un moteur de composition (qui est au mo41 Dans le modèle de texte de Graphite, les glyphes héritent des attributs des caractères Unicode qui sont à leur origine. 86 ment de la rédaction en cours d’intégration avec la bibliothèque Pango, alternative d’Uniscribe dans le domaine libre), m17n intègre une base de connaissances qui elle-même comprend : – des méthodes d’entrée (input methods) ; – les données de la BD d’Unicode ; – des Font Layout Table qui décrivent, similairement au GDL de Graphite, de manière formelle les transformations nécessaires pour la composition de texte multilingue, la différence avec celui-ci et avec les formats AAT et OpenType étant que ces tables — qui recueillent les transformations propres aux écritures et aux langues qui ne sont pas dépendantes de la fonte — sont centralisées dans la base de données de m17n au lieu d’être intégrées dans chaque fonte ; – etc. Nous considérons que le plus grand intérêt de m17n est son modèle de M-text texte qui a son propre nom : M-text. Le M-text n’est autre que le couple (TC , Φ(TC )) d’une chaîne de caractères Unicode et d’un nombre arbitraire de text properties, propriétés de texte associées (où le sens du terme « propriété de texte » est conforme à notre définition ci-dessus). Comme dans GDL, les propriétés peuvent s’imbriquer et ainsi créer des arbres. Par contre, la nouveauté du M-text est le fait que l’ensemble des propriétés utilisables n’est pas prédéfini, toute application et utilisateur pouvant en inventer et en rattacher au texte. La propriété fait donc partie intégrante du modèle de texte, son cycle de vie n’est pas restreint au processus de composition. Ainsi il devient possible de communiquer avec le processus de traitement (que ce soit de la composition typographique, du traitement linguistique ou autre) à travers les propriétés. Il devient également possible d’ajouter de l’information au texte à un niveau représentationnel jusqu’ici inexistant : la propriété se situe au niveau du caractère individuel mais elle est orthogonale avec lui, elle complète le texte sans pour autant altérer la succession des éléments textuels. En revanche, le M-text reste toujours du texte en caractères, un modèle indépendant de celui du texte en glyphes que m17n considère comme un cul-de-sac représentationnel qui ne peut être réutilisé pour un objectif autre que la visualisation du texte. 1.9.3 CONCLUSION Ayant retracé la chronologie de conception des différents formats de fonte intelligents et systèmes de composition, on a pu observer que la notion de propriété a gagné de l’importance dans les systèmes développés plus récemment (Graphite, m17n) par rapport aux systèmes plus anciens (OpenType+Uniscribe, AAT+ATSUI). La nouveauté n’est pas d’attacher des propriétés de présentation aux caractères ou aux glyphes du texte en soi mais plutôt de considérer les propriétés comme un ensemble ouvert et extensible qui s’intègre dans le modèle de texte de manière qu’il puisse intervenir dans les différentes étapes de la composition de texte. Ceci a un double intérêt : d’une part, le modèle devient plus clair car les solutions « bricolées » — comme les pseudo-glyphes qui dans la forme d’éléments textuels représentent des informations qui ne le sont pas réellement — ne sont plus nécessaires. Mais ce qui est plus important, l’idée de m17n de rendre la propriété partie intégrante du 87 texte, en général et non seulement pour la durée de la composition, est un pas de géant vers une approche intensionnelle à la représentation de données textuelles, et plus généralement, vers l’adoption d’idées et de méthodes jusque-là propres aux systèmes fondés sur la représentation des connaissances. m17n n’étend cependant pas la même approche vers le modèle de texte visuel, la chaîne de glyphes. C’est tout d’abord cette dernière étape de généralisation, en unifiant dans un premier temps les propriétés de caractère et de glyphe, et puis le caractère et le glyphe tout court, qui distingue le modèle de texte que nous allons bientôt introduire du modèle M-text. 1.10 SYNTHÈSE : L’ÉVOLUTION DE LA MODÉLISATION DU TEXTE INFORMATIQUE Ce chapitre a servi à examiner le développement de la représentation du texte par ordinateur, depuis son début jusqu’à nos jours. Parmi les multiples facettes de la problématique, nous nous sommes principalement intéressés aux modèles de texte par lesquels nous avons cherché à comprendre les structures de données et les opérations de base effectuées sur ces structures. Ce qui n’a pas changé depuis les premiers ordinateurs est la représentation du texte par une chaîne d’éléments textuels, caractères dans la grande majorité des cas sauf dans les modèles visuels où l’élément de base est le glyphe. Les caractères et glyphes disponibles sont tirés d’un répertoire — le codage de caractères ou la fonte — ce qui relève en essence d’une approche extensionnelle, par le principe énumératif. D’autre part, les usages et les besoins du texte numérique ont subi une évolution considérable, notamment grâce aux documents interactifs et au Web. Ces nouveaux usages se traduisent par le besoin technologique de faire converger les représentations d’échange et finale d’un même document, besoin que les modèles de texte actuels — basés sur la dichotomie caractèreglyphe — ne sont pas toujours capables d’assurer. Entretemps, l’« internationalisation » de l’informatique a rendu nécessaire une extension drastique de l’ensemble des éléments textuels disponibles, aussi bien au niveau des caractères qu’au niveau des glyphes, avec comme résultat l’apparition du codage Unicode et des fontes intelligentes. Dès lors, une application voulant afficher ou simplement traiter du texte a eu besoin d’incomparablement plus de connaissances spécialisées, un phénomène qui a mis en évidence les faiblesses des modèles de texte extensionnels. D’où l’intérêt de la base de données d’Unicode qui étend le répertoire de signes par des descriptions intensionnelles, et des fontes intelligentes qui permettent d’ajouter aux caractères et aux glyphes, en tant que ressources, des « règles d’usage » : des méthodes, des rôles, des relations, des contextes. En un mot, il est de plus en plus question de représenter et de gérer non seulement de simples données mais aussi des connaissances liées à ces données, ce qui suppose une approche descriptive plus articulée. Si les termes précédents font allusion à la modélisation objet, aux logiques de description, aux ontologies, aux bases de données, etc., c’est parce que les problèmes que nous venons de citer et que nous tentons de résoudre dans le cadre de la modélisation de texte n’y 88 sont pas toujours particuliers : ils sont souvent généralisables à des problèmes classiques de la représentation des connaissances. La nouveauté apportée par la présente thèse — que nous allons présenter dans le chapitre suivant — est justement de proposer un point de vue qui s’inspire des systèmes de représentation des connaissances par l’application de certains de ses aspects à la modélisation de texte. Il s’agit d’une réinterprétation drastique du texte informatique : désormais, un élément textuel ne sera représenté par un indice de tableau mais par l’ensemble de propriétés le décrivant, ce qui relève d’une approche intensionnelle, autrement dit, de la préférence d’une approche analytique plutôt qu’énumérative. Tout comme dans le M-text fourni par la bibliothèque m17n, notre approche intégrera la propriété au cœur du modèle textuel, sauf que le caractère tel que l’on le connaît aujourd’hui cessera d’en être l’élément de base. En effet, il ne sera plus nécessaire de distinguer entre caractère et glyphe et de gérer ainsi deux modèles de texte distincts en parallèle : le caractère et le glyphe seront supplantés par le concept plus général de textème. 89 90 CHAPITRE 2 PROPOSITION D’UN CADRE DE MODÉLISATION DE TEXTE INTENSIONNEL 2.1 INTRODUCTION Le chapitre précédent a présenté l’évolution de la représentation numérique de texte jusqu’au codage de caractères Unicode et aux formats de fonte intelligents. Unicode et le format OpenType sont à la pointe de la technologie actuelle, en train d’en devenir des constituants incontournables. Nous avons cependant réussi à identifier certaines limitations de ces technologies, limitations dont la raison se trouve dans les approches théoriques des modèles de texte sur lesquels elles reposent. D’autre part, nous avons pu voir que même ces technologies — si fortement influencées soient-elles par des considérations pragmatiques d’implémentation et même commerciales — finissent par épouser certaines approches théoriques inspirées de la problématique de la représentation des connaissances, certes dans une forme embryonnaire. Ce phénomène est inévitable vue la croissance drastique de la gamme d’éléments textuels à traiter (contenues dans les tables de codage et dans les fontes) couplée avec la diversification et la complexification des méthodes de traitement exigées par le nouveau modèle de texte qui se veut universel. Dans l’idée de poursuivre cette convergence interdisciplinaire, et désormais de manière consciente, nous proposons de concevoir un nouveau cadre de modélisation de texte fondé sur une approche descriptive intensionnelle. Celle-ci consiste à décrire l’élément textuel à travers un nombre de propriétés. En fonction de la diversité des propriétés, la description d’un signe peut être plus vague ou plus précise, suivant les besoins et les usages. Si nécessaire, la description peut se concentrer sur une facette particulière du signe : propriétés linguistiques, présentationnelles, etc. Le code numérique n’est plus le moyen unique d’identifier un caractère : suivant l’approche intensionnelle, l’identité et donc l’identification de celui-ci consistent en l’ensemble de propriétés permettant de le distinguer des autres signes d’écriture. L’idée de considérer l’unité textuelle comme un ensemble de propriétés présente un intérêt particulier : il permet d’unifier les concepts de caractère et de glyphe, une démarche qui représente une simplification considérable dans la modélisation de texte, aussi bien en théorie qu’en pratique. Depuis l’existence d’Unicode et de son modèle de texte, on ne cesse de justifier l’importance de différencier au niveau conceptuel les caractères et les glyphes. En effet, pour comprendre le fonctionnement d’Unicode et des nouveaux formats de fonte, une distinction claire entre les deux concepts est essentielle. 91 Dans les modèles que nous proposons, en revanche, aucune telle distinction n’est nécessaire car le caractère et le glyphe sont tout simplement deux facettes (deux sous-ensembles de propriétés) de la même unité textuelle. Le résultat de cette généralisation sera une nouvelle unité textuelle, le textème, qui peut parfois être équivalent à un caractère, parfois à un glyphe, parfois aux deux en même temps et parfois à aucun des deux. Alors que les technologies d’aujourd’hui — Unicode, les fontes intelligentes, les logiciels PAO les plus avancés — se contentent de perfectionner une reproduction fidèle de la subtilité de la communication écrite d’avant l’ère informatique, les modèles de texte basés sur les textèmes que nous proposons pourraient permettre de passer au-delà de l’existant et de créer des formes de communication textuelles novatrices. D’un point de vue pratique, l’abandon de la double représentation textuelle — chaîne de caractères pour le contenu, chaîne de glyphes pour la présentation — en faveur d’une simple chaîne de textèmes permet d’éviter de nombreuses difficultés liées au passage d’un modèle à l’autre dont les effets néfastes sur l’interaction homme-machine sont omniprésents aujourd’hui, comme par exemple l’incapacité de rechercher ou d’indexer certains types de documents. Nous allons débuter ce chapitre, avant même de mettre en place les fondements de notre cadre de modélisation, par le survol de deux travaux essentiels pour la compréhension de ce qui suivra, ouvrages qui ont directement inspiré notre travail. Il s’agit d’une part, de l’œuvre de Gottlob Frege sur la problématique de nommage, avec lequel l’auteur s’est familiarisé à travers les textes Sens et dénotation et Concept et objet [24]. D’autre part, nous présenterons quelques éléments de la thèse de V-H. Zaldivar-Carrillo écrite en 1995 à l’ENST Bretagne [71] sous la direction de Ioannis Kanellos, s’inspirant et se basant sur la thèse de ce dernier [39]. La thèse de Zaldivar s’intéresse principalement au problème de la catégorisation dans le domaine de la représentation des connaissances. Son cadre méthodologique et le formalisme qu’elle introduit se montrent particulièrement bien adaptés à notre problème. Les fondements épistémologiques de notre travail se trouvent donc dans le cadre de la représentation des connaissances. Nous nous laisserons inspirer de certaines idées fondamentales de ce problème scientifique, sans pour autant chercher à nous restreindre à un courant théorique ou à un outil particulier parmi les approches extrêmement diverses qu’englobe ce domaine vaste. En même temps, nous ne considérons pas que l’acte de modélisation de texte soit un cas « classique » de la représentation des connaissances, dans le sens où le focus n’est pas sur la mise en œuvre d’une description fine d’un phénomène bien circonscrit du monde réel, mais plutôt sur la création d’un cadre général et souple de manipulation de texte : général parce qu’il se prête à tous les usages et pratiques textuels connus, et souple parce que nous devrons toujours exiger une certaine simplicité conceptuelle du texte, qui reste, malgré tout, un des outils fondamentaux de l’humanité. 92 2.1.1 L ES NOTIONS DE CONCEPT, DE PROPRIÉTÉ, D ’ EXTENSION ET D ’ INTENSION SELON F REGE ET RUSSELL L’objectif de tout système de représentation des connaissances est de décrire, de conceptualiser un fragment du monde réel. Sans avoir la prétention d’aborder dans ce travail les questions fondamentales de la cognition humaine, nous signalons que selon de nombreux philosophes, la perception et la compréhension que possède du monde un être humain se construisent également autour de concepts et non en rapport direct avec objets réels. L’idée de définir l’objet non pas en tant qu’entité en soi mais à travers un ensemble de concepts qui y sont liés est, en fait, la véritable source de la dualité qui existe entre les approches descriptives extensionnelle et intensionnelle. Puisque c’est cette dualité qui nous a inspiré de nombreuses réflexions sur la modélisation textuelle, il nous sera peut-être intéressant de nous attarder, très brièvement, sur le sujet de la relation entre concept et objet. Selon Frege, un signifiant ou nom propre (mot, signe, combinaison de signes, expression) peut en même temps désigner une dénotation et posséder un sens. La dénotation du nom est un objet précis, alors que le sens peut être considéré comme un ensemble de concepts sous lesquels tombe cet objet [24, Sens et dénotation]. Ainsi, « le bureau de l’auteur à l’ENST Bretagne » est un nom qui dénote l’objet physique concret. Le sens de ce nom à son tour comprend de nombreux éléments, entre lesquels on trouve sans doute les concepts de « table », de « meuble », etc. La caractérisation des concepts (comment peut-on décrire, par exemple, le concept de table ?) était et est toujours un problème majeur de la catégorisation au sein du domaine de la représentation des connaissances. Selon Frege, un concept lié à un objet peut être considéré comme une propriété de celui-ci (dans ce sens, les termes concept et propriété sont synonymes). Certains concepts peuvent ne pas être atomiques : par exemple, le concept de « table basse » est caractérisé par les deux concepts « être table » et « être basse ». Tous ces trois concepts sont en même temps propriétés de l’objet réel qui est la dénotation de « table basse » [24, p. 137]. Deux autres notions que nous avons déjà employées dans cette thèse mais que nous n’avons définies qu’approximativement sont celles d’intension et d’extension. Dans le cadre de la pensée de Frege, l’extension d’un concept est l’ensemble d’objets dont le sens comprend ce concept. Inversement, l’intension d’un objet est l’ensemble de concepts qui le décrivent. (Voir figure 2.1.) Appliquons maintenant les idées de Frege aux éléments du texte informatique. En admettant, pour l’instant, que caractère ou glyphe soient des concepts, l’extension du concept caractère Unicode n’est autre que la liste des caractères Unicode. Respectivement, l’extension du concept glyphe de la fonte F est l’ensemble de glyphes contenus dans la fonte F. Dans ce contexte, le code de caractère joue le rôle du signifiant. « U+0041 » est un signifiant, un nom propre dont la dénotation est un élément précis de la table de codage (notamment, la case qui correspond à la lettre A majuscule) et dont le sens est composé de concepts (autrement dit, de propriétés) tels que « être caractère », « être lettre latine », « être majuscule », « être la première lettre de l’alphabet français », et ainsi de suite. Si la relation entre les concepts que nous venons d’énumérer ne semble 93 Les sens et dénotation de Frege Intension et extension Le sens et la dénotation d’un caractère FIG. 2.1 – L’extension du concept c2 , EXT (c2 ), est l’ensemble d’objets {o1 , o2 , o3 , o4 } ; en d’autres termes, ces quatres objets tombent sous le concept c2 . Inversement, l’intension de l’objet o2 , INT (o2 ), est l’ensemble de concepts {c1 , c2 } ; en d’autres termes, c1 et c2 décrivent l’objet o2 . pas claire (quels sont les concepts qui caractérisent le concept « être caractère » ? quels sont les concepts pertinents pour Unicode ?), ce n’est pas par hasard. C’est justement cet aspect ambigu et sous-défini que nous avons reproché à la norme Unicode en section 1.8, tout en saluant la base de données d’Unicode comme la forme embryonnaire d’une approche plus rigoureuse. En effet, le sens d’un caractère donné est décrit par un ensemble de propriétés dans la BD d’Unicode. Malheureusement, les propriétés associées dans la BD à tel ou tel caractère sont en général choisies de manière ad hoc dans l’objectif de servir quelques usages bien précis (par exemple, coupure de lignes, classes combinantes, etc.). Ceci est la conséquence du fait qu’Unicode est construit, comme nous avons déjà démontré dans le chapitre précédent, suivant une approche extensionnelle — c’est-à-dire par l’énumération de l’extension du concept « être caractère Unicode » — au lieu d’une approche intensionnelle qui consisterait à définir les propriétés qui caractérisent ce concept et qui de cette façon permettrait de mieux décrire le sens de chacun des caractères. Désaccord entre Russell La vision de Frege n’est pas la seule possible. Bertrand Russell, son contemet Frege porain, rejette l’idée que le nom propre ait la double fonction de véhiculer à la fois le sens et la dénotation. Selon lui, tout nom propre est en quelque sorte l’abréviation d’une description définitoire de l’objet en question. La dénotation de Frege en tant que « référence directe » vers l’objet n’existe pas car toute connaissance est forcément descriptive1 . Ainsi, pour Russell, le code de caractère U+0041 serait une simple abréviation d’une description définitoire telle que LETTRE LATINE MAJUSCULE A qui constitue le sens en étant une forme indirecte de l’expression logique « il existe un x tel que x est lettre, x est latin, x est majuscule et x est A ». 1 Selon Russell, les seuls noms ayant de véritables dénotations dans le sens de Frege sont les pronoms démonstratifs tels que « ceci » ou « cela ». 94 2.1.2 M ODÈLES COGNITIFS BASÉS SUR LA NOTION DE « THÉORIE » La recherche scientifique concernant certains actes cognitifs comme la catégorisation nécessite la prise en compte et une description plus fine des relations que les concepts peuvent entretenir entre eux. Au lieu des modèles classiques (tel que la théorie du prototype) qui interprètent le concept en tant que simple ensemble de propriétés et la catégorie comme l’ensemble de concepts similaires (partageant un « relativement grand nombre » de propriétés), des modèles plus sophistiqués ont été élaborés. La thèse de Zaldivar [71], qui s’intéresse principalement à la problématique de la catégorisation, s’inspire d’un parmi ces modèles, à savoir de celui fondé sur la notion de théorie initialement proposé par Douglas L. Medin [50]. Le terme théorie est employé ici dans un sens spécial qui ne correspond pas à son acception standarde en logique, à savoir « un ensemble de formules fermé par l’implication ». Plutôt, s’inscrivant dans un cadre de sciences cognitives et plus particulièrement de catégorisation, le terme connote « un ensemble complexe de relations entre concepts » [50] qui représenteraient des connaissances a priori auxquelles on fait recours lorsque l’on établit des catégories. L’idée de base est que le sens d’un concept n’est pas intrinsèque et ne peut pas être décrit, par exemple, en tant qu’une liste de propriétés qui le caractérisent. Au contraire, le sens d’un concept se trouve dans ses relations avec d’autres concepts, et le rôle des théories est justement de formuler ces relations. La thèse de Zaldivar [71] propose une formalisation mathématique rigoureuse de la notion de théorie. En prenant celle-ci comme brique de base, elle construit un cadre formel de représentation des connaissances qu’elle exploite ensuite dans l’objectif de proposer de nouvelles approches à la catégorisation. Si dans la présente thèse nous empruntons, en partie, le formalisme de Zaldivar, c’est avant tout pour l’employer comme cadre épistémologique à la modélisation de texte. Le cadre — ou méthodologie — proposé par Zaldivar nous fournit un outil générique et puissante de représentation des connaissances, au sein duquel nous pouvons représenter nos modèles de texte d’une manière abstraite. L’intérêt d’une telle démarche est la « prise de recul » qu’elle permet par rapport à nos problèmes concrets de modélisation de texte, en révélant les points communs entre ceux-ci et des problèmes plus généraux déjà longuement étudiés dans un contexte plus général de représentation des connaissances. Un autre point intéressant du système formel proposé par Kanellos et Zaldivar est, comme nous allons voir, qu’il représente les notions d’extension et d’intension avec une clarté et une intuitivité particulières. Nous insistons donc sur le fait que notre adoption de la méthodologie de Zaldivar n’entraîne aucunement de notre part l’adoption du point de vue de Medin sur la cognition. Nous adoptons un cadre formel de représentation des connaissances générique qui, par ailleurs, aurait pu être inspiré par les travaux de celui-ci. Pour cette même raison, nous cesserons d’utiliser le terme « théorie » que nous remplacerons désormais par le mot « relation », tout simplement parce que la théorie se définit dans l’édifice proposé par Zaldivar comme une relation mathématique. Dans les grandes lignes, Zaldivar et Kanellos proposent une approche à la 95 La « théorie » Sens ≈ relations entre concepts ≈ théories Un cadre formel de RC basé sur la notion de « théorie » Théorie 7→ relation représentation des connaissances dont l’idée fondamentale est l’organisation de l’information en strates, chaque strate étant un ensemble. Les éléments de la strate inférieure (la « zéroième » strate) correspondent aux objets du monde que l’on perçoit, ou plus précisément, au segment du monde que nous visons à décrire. Et justement, le rôle des strates supérieures est de décrire les objets avec de plus en plus de précision, en les organisant en un réseau de relations. Ainsi, la première strate comprend des relations sur les éléments de la zéroième strate (celle des objets). Un simple ensemble uniforme de relations ne possède cependant pas l’expressivité et la puissance nécessaires pour décrire certains aspects plus complexes de la réalité. Ceci explique le besoin d’introduire des strates supérieures qui fournissent des « données sur les données » (méta-données), qui formulent des connaissances sur les données brutes. L’univers de base La strate inférieure, appelée l’ensemble des objets, contient des entités qui sont d’une certaine manière liées au monde que l’on perçoit, ou plus précisément, au segment du monde que nous visons à décrire. À part cette délimitation vague, nous ne possédons a priori aucune information sur ces entités, la description de leur sens étant justement l’objectif de la structure que nous sommes en train de construire. La connaissance des éléments de l’ensemble-base d’objets n’est pas une condition nécessaire pour l’efficacité du système en construction, même si sa délimitation plus ou moins précise, comme nous allons voir, peut ensuite rendre les modèles qui en découlent plus ou moins puissants. Plus précisément, l’ensemble de base, que Zaldivar appelle T0 , contiendra, en plus des objets qui nous intéressent, les produits cartésiens de ces objets : si O est l’ensemble d’objets, alors Les strates T0 = n [ Oi i=1 où le nombre n est une valeur finie (car nous visons à décrire un fragment fini du monde) bien qu’a priori non définie (car nous n’imposons pas de borne fixé quant à la taille de ce fragment). Les relations Les strates supérieures à T0 contiennent des relations dont le rôle est de décrire les objets se trouvant dans T0 mais aussi les relations des strates inférieures. Une telle relation représente un bout d’information qui exprime, de manière formelle, quelque chose à propos d’un autre bout d’information. Ainsi, les relations contenues dans la strate directement supérieure à T0 , appelée T1 , formulent des assertions sur les objets « bruts » éléments de T0 . En général, une relation d’une strate donnée s’exprime sur les éléments de la strate directement inférieure (ou parfois des deux strates directement inférieures). Formellement, T1 = {t | t est une relation i-aire sur O, 1 ≤ i ≤ n} Les relations de T1 représentent des données de base exprimées sur les objets bruts, éléments de T0 , soit individuellement (à travers des relations unaires) soit les uns par rapport aux autres (relations i-aires). Remarquons que cette définition de T1 restreint la portée de toute relation t à une partition Oi précise de T0 . Dans la suite, nous appellerons les relations unaires — qui expriment donc des connaissances sur des objets individuels — propriétés. 96 FIG. 2.2 – Les relations servent à décrire les objets. Dans cet exemple, la relation t2 représente une propriété de l’objet o2 alors que t3 est une autre propriété à la fois de o2 et de o3 . Les relations t4 et t6 sont extensionnellement égales car ext(t4 ) = ext(t6 ). On peut les considérer comme deux « synonymes » pour ce qui est essentiellement la même affirmation. L’intension restreinte de l’objet o2 est {t2 , t3 }, alors que son intension globale est {t2 , t3 , t4 , t6 }. L’extension d’une relation et l’intension d’un objet se définissent de ma- Extension de relation, nière quasi-analogue au rapport concept-objet défini antérieurement dans intension d’objet cette section. Ainsi, l’extension ext(t) d’une relation t de T1 est l’ensemble d’éléments de T0 (éléments individuels ou tuples) qui vérifient la relation t. Inversement, l’intension (globale2 ) int(o) d’un objet o de T0 (ou, plus généralement, d’un élément quelconque de T0 ) est l’ensemble de relations auxquelles participe l’objet o. Une propriété très importante de l’ensemble T1 est son intensionnalité, ce L’intensionnalité de T1 qui permet l’existence de deux (ou plusieurs) relations non identiques ayant la même extension : ∃ti , tj telles que ti 6≡ tj , ext(ti ) = ext(tj ) L’intensionnalité de T1 est assurée de manière axiomatique [71, p. 56]. Il s’agit d’une propriété essentielle pour équiper notre système d’une puissance descriptive suffisante, autrement dit, pour le rendre « réalistique » par rapport au monde que nous souhaitons décrire. Les deux strates T0 et T1 sont, en effet, déjà capables de générer un modèle riche qui permet d’exprimer de nombreuses relations sémantiques. Ainsi, l’égalité extensionnelle de deux propriétés ou relations dans T1 , ext(ti ) = ext(tj ), exprime un rapport de « synonymie » entre elles, alors que le fait que ext(ti ) ⊂ ext(tj ) peut exprimer un rapport de subsomption (ou d’héritage) entre ti et tj . De plus, à travers la définition de diverses formes d’égalités projectives entre relations d’arités différentes, il devient possible d’exprimer des « ressemblances de famille » [71, p. 113] entre objets qui dépassent en puissance descriptive la catégorisation classique basée 2 Zaldivar distingue entre l’intension restreinte d’un objet qui ne comprend que ses propriétés et l’intension globale qui contient également les relations (d’arités supérieures) sur l’objet. 97 sur la similitude ou sur l’existence d’un prototype. Puisque ces considérations sortent du cadre de cette thèse, nous nous contentons de les mentionner sans donner davantage d’explications. L’introduction de strates supérieures telles que T2 , T3 , etc., permet d’exprimer des connaissances sur les éléments de T1 (tels que les propriétés), tout comme ceux-ci ont permis d’exprimer des connaissances sur les objets. Ainsi, Zaldivar introduit la strate T2 comme suit (les strates supérieures pouvant s’introduire de la même manière) : T2 = {t | t exprime une relation sur T1 ou sur T0 ∪ T1 } On peut voir que T2 permet non seulement de décrire les relations de la strate directement inférieure (T1 ) mais aussi d’exprimer des relations entre celle-ci et la strate en dessous (T0 ici). Une autre observation importante est que l’intensionnalité (axiomatique) de T1 est héritée par la strate T2 et aussi par toute strate supérieure éventuelle. Il n’y a pas de limite théorique à l’introduction de nouvelles strates, il faut cependant que le formalisme que nous sommes en train de construire « colle » avec les phénomènes du monde réel modélisé3 . L’utilité du modèle Le choix de concepts mathématiques de si bas niveau — l’ensemble et la en strates relation — comme outils fondamentaux confère à notre approche (à part sa pureté théorique) une grande généralité, ce qui permet de l’appliquer à une gamme de problèmes très diversifiés, dont la modélisation de texte. D’autre part, la particularité de cette approche ne se trouve pas dans la description des objets atomiques à l’aide de relations et de relations de relations, etc. : tout système de représentation des connaissances devra inévitablement suivre, à la base, ce même principe. Sa spécificité provient plutôt du découpage en strates de l’ensemble d’informations afin d’établir un ordre entre les relations, en leur imposant une transition graduelle depuis le simple vers le complexe. Cette approche particulière à la stratification a comme effet de rendre plus intuitif l’établissement de rapports sémantiques entre les éléments abstraits du système (les relations) et les phénomènes réels du monde. En même temps, il faut remarquer que la stratification des connaissances en général — d’une manière ou d’une autre — semble également être une idée incontournable des systèmes de représentation des connaissances : il suffit de penser à la catégorisation comme approche fondamentale à la description du monde, à la relation classe-instance, à la notion d’héritage, aux schémas de description, etc. Notation Finalement, une convention notationnelle reprise à l’identique depuis la thèse de Zaldivar : lorsque nous écrivons t(i) , l’indice entre parenthèses indique le type de la relation, c’est-à-dire la strate dans laquelle elle se trouve. 3 Ainsi, l’introduction des niveaux T2 et (implicitement) T3 permet à Zaldivar de formaliser avec son approche des notions complexes comme la contextualité, la métaphore, l’identité sémantique, et ainsi de suite. 98 2.2 APPLICATION DE LA REPRÉSENTATION DES CONNAISSANCES À LA MODÉLISATION TEXTUELLE Le cadre formel qu’offre le cadre ci-introduit nous permettra de réévaluer ce que nous entendons par caractère, glyphe ou usage d’un texte : il est temps de faire dissiper le « brouillard » qui entoure ces notions si mal définies et pourtant omniprésentes. Il s’agit donc d’appliquer la méthodologie décrite cidessus à la tranche du monde observé que représentent les signes d’écriture. Dans l’approche présentée dans la section précédente, la strate inférieure, T0 , consiste en un simple ensemble d’éléments « opaques », correspondant aux entités du monde que nous visons à décrire. Toutes nos données (informations, connaissances) sur ce monde s’expriment à travers des relations appartenant aux strates supérieures, dont le rôle est d’établir un certain ordre parmi les éléments présents « en vrac » dans cet ensemble potentiellement vague et mal circonscrit qu’est T0 . Au plus général, nous dirons que celui-ci contient la totalité des signes de toutes les écritures du monde qui peuvent potentiellement être informatisés, dans toutes leurs formes et dans toutes leurs apparitions. Est-il possible de décrire le contenu de T0 en l’énumérant ? En pratique, certainement pas : on parle de tous les signes d’écriture, existants ou potentiels, dans toutes leurs formes graphiques, apparus dans tous les ouvrages. De plus, il ne s’agit aucunement de prendre une « photographie instantanée » de l’œuvre écrite de l’humanité à un certain point dans le temps mais plutôt de supposer que cet ensemble T0 grandit constamment. Certains sous-ensembles bien restreints peuvent cependant en être énumérés au prix d’un effort acceptable, comme par exemple « tous les signes arabes qui apparaissent dans tel ou tel manuscrit du Coran ». Mais à partir d’un certain ordre de grandeur, on se heurte forcément à des problèmes de catégorisation, comme dans le cas de l’effort entrepris par la norme Unicode d’énumérer ce qui n’est encore qu’une petite fraction de tous les signes d’écriture du monde. En pratique, la généralité visée par le choix d’un ensemble T0 si vaste devient un obstacle à l’exploitation informatique des modèles que nous tentons de construire. Dans une logique implémentationnelle, il est intéressant de réduire le contenu de T0 à un ensemble maîtrisable et énumérable (comme par exemple à une liste de signes dont la taille serait similaire à celle du codage Unicode, voire même à une page particulière de celui-ci). Nous verrons plus tard que, comme principe général, plus l’ensemble T0 est restreint, plus nos modèles se montrent réalisables en pratique4 . Néamnoins, dans un premier temps, nous tenterons d’adopter une approche généraliste, notre objectif étant toujours de proposer un modèle de texte global et universel. Une fois un tel modèle mis en œuvre et évaluée, nous examinerons les éventuelles possibilités de simplification. Avant de passer à la discussion de la strate T1 , reconsidérons brièvement les tuples d’objets que nous avons ignorés jusqu’à maintenant, contenus dans les partitions Oi ⊂ T0 où i est supérieur à 1. Étant donné que O représente 4 Ce qui est d’ailleurs vrai pour tout modèle : plus il vise la généralité, plus il perd la capacité d’adresser des problèmes particuliers, et vice versa. 99 Le contenu de T0 Universalité contre intérêt pratique Tuples d’objets : chaînes de signes FIG. 2.3 – Illustration de l’ensemble de signes d’écriture et des propriétés qui leur sont associées. l’ensemble de signes d’écriture, on peut considérer, de manière intuitive, l’ensemble Oi comme l’ensemble de chaînes de signes à longueur i. Il s’ensuit qu’une relation d’arité i qui désigne un sous-ensemble de Oi représente une propriété associée à des chaînes de signes en tant que telles, au lieu d’être une propriété d’un signe individuel. Décrire les signes non seulement dans leur individualité mais également dans leur succession est une capacité remarquable du système que nous serons amenés à exploiter afin de gérer certains aspects plus complexes de l’information textuelle. Notamment, les tuples d’objets nous seront utiles dans la représentation de propriétés dites contextuelles. Ils sont également à la base d’une généralisation potentielle du cadre que nous sommes en train d’introduire, que nous présenterons dans le dernier chapitre de la thèse. 2.2.1 L ES PROPRIÉTÉS : ÉLÉMENTS DE T1 Ce sont les strates supérieures à T0 , dans un premier temps l’ensemble T1 , qui nous permettront d’exprimer des connaissances sur les éléments de T0 . Si T0 est l’ensemble de signes d’écriture, alors les relations unaires de T1 représentent les propriétés de ces signes : DÉFINITION 5 (PROPRIÉTÉ ) Une propriété φ est une relation unaire de T1 , c’est-à-dire φ ∈ T1 : ext(φ) ⊂ O, O ⊂ T0 (Nous écrirons parfois également t(1) ou tvaleur(1) au lieu de φ pour mettre en évidence qu’il s’agit d’une relation de T1 .) Les propriétés peuvent être graphiques, sémantiques, linguistiques, et ainsi de suite : avant d’avoir considéré des strates supérieures (qui décriveront les propriétés mêmes), nous ne sommes capables de faire aucune distinction entre elles. Un signe d’écriture se définit donc à travers ses propriétés, autrement dit, son intension ; c’est pour cette raison que nous avons appelé dans le titre du présent chapitre intensionnel le cadre de modélisation de texte que nous sommes en train de développer. La figure 2.3 illustre les deux premières 100 strates, de manière analogue à la relation objet-concept en figure 2.1. Notons que, puisque T0 contient aussi bien des objets individuels que leurs tuples, les relations de T1 peuvent également référer à ces dernières, en d’autres termes, décrire les rapports entre signes individuels. La strate T1 nous a permis de décrire nos objets à travers des « données brutes », en forme de propriétés. Ces données fournies par T1 seul ne sont pas toujours exploitables : notamment, il peut être en pratique très difficile, voire impossible, de connaître l’extension d’une propriété donnée (« quels sont tous les signes qui représentent des voyelles ? »). Pourtant, en disposition d’uniquement les deux strates T0 et T1 , comparer deux propriétés n’est possible en théorie que par la comparaison de leurs extensions respectives. Ceci n’est pas généralement réalisable en pratique mais peut être possible lorsque l’on s’intéresse à un sous-ensemble relativement petit (c’est-à-dire énumérable) de T0 . Sur un tel sous-ensemble restreint, il devient possible d’analyser les rapports entre propriétés : par exemple, une relation ext(φ1 ) ⊆ ext(φ2 ) entre les deux propriétés φ1 , φ2 ∈ T1 signifie que φ2 « entraîne » φ1 , ou dans un jargon informatique, elles sont en dépendance. Si par exemple φ1 = « être en malais » et φ2 = « être une lettre arabe », alors un tel rapport de dépendance doit forcément exister entre les deux propriétés car la langue malaise s’écrit officiellement en arabe. Néanmoins, on ne peut pas généraliser une telle observation en sécurité pour tous les textes malais écrits depuis toujours : il vaut mieux restreindre le sous-ensemble de T0 considéré, par exemple, à la littérature malaise apparue dans le XXe siècle. 2.2.2 L ES CLÉS DE PROPRIÉTÉ T1 est décrite à la fois par son extension (dans T0 ) et par son intension (dans T2 ) : ÉLÉMENTS DE T2 Afin de décrire — ou de catégoriser — les propriétés de T1 suivant d’autres critères que ceux déduisibles à partir de leur extension, il est nécessaire d’introduire une strate supérieure dans le système. Par exemple, il peut être utile de reconnaître que les propriétés voyelle et consonne en figure 2.3 sont deux manifestations du même aspect d’un signe : sa sonorité ; tout comme arabe et latin sont les manifestations de l’aspect système d’écriture. En effet, lorsqu’en pratique on adopte intuitivement la définition de couple clé-valeur comme la structure d’une propriété, on applique indirectement le même principe de catégorisation. Cette catégorisation étant à la fois si naturelle et si pratique, il est certainement dans notre intérêt de la représenter au sein du système, par l’intermédiaire d’une strate T2 supérieure. Ainsi, une relation unaire de T2 représentera une clé de propriété et son extension représentera les propriétés correspondantes au sein de T1 . Par conséquent, le couple clé-valeur se définit ainsi : DÉFINITION 6 (COUPLE CLÉ-VALEUR ) Un couple clé-valeur est un couple (tclé(2) , tvaleur(1) ) où la première est une relation unaire de T2 alors que la seconde est une relation unaire de T1 telle que tvaleur(1) ∈ ext(tclé(2) ). À ce point, nous imposons une restriction par rapport à la création de sous- Les valeurs ensembles de propriétés dans T2 : pour qu’un tel sous-ensemble puisse être d’une propriété doivent considéré comme clé de propriété, il faut que les relations de T1 (les valeurs) être disjointes 101 FIG. 2.4 – Illustration des strates T2 et T3 . correspondantes aient des extensions mutuellement disjointes : ∀tclé(2) ∈ T2 , ext(tclé(2) ) = {t1 , t2 , ..., tn } ⊂ T1 : ∀(i, j) tels que 1 ≤ i, j ≤ n et i 6= j, ext(ti ) ∩ ext(tj ) = ∅ Il s’agit donc d’interdire les valeurs de propriétés qui « se chevauchent » ; par exemple, une propriété « couleur » ne peut avoir comme valeurs « rouge » et « rougeâtre » s’il peut exister un signe qui peut être caractérisé à la fois par ces deux couleurs. Nous n’excluons pas la possibilité que ces deux propriétés puissent exister individuellement, nous interdisons tout simplement de les regrouper sous la même clé de T2 . Bien que cette contrainte puisse paraître arbitraire, il ne posera aucune difficulté en pratique, et il se prouvera fort utile dans la suite d’un point de vue implémentationnel. 2.2.3 L ES CATÉGORIES DE CLÉS : ÉLÉMENTS DE T3 D’après l’exemple des strates T1 et T2 , il semble évident que de nouvelles strates peuvent théoriquement être introduites jusqu’à l’infini car il est toujours possible de créer des catégories de catégories, des relations sur des relations, et ainsi de suite. Il faut cependant que l’introduction de nouvelles strates nous présente un intérêt pratique : elle doit nous permettre de formuler des connaissances qualitativement différentes sur les éléments des strates inférieures, et ces nouvelles connaissances formulées au sein du cadre formel d’une certaine manière correspondre à nos observations du monde réel. Propriétés pertinentes Ce qui justifie dans notre cas de continuer à introduire des strates supépour un usage rieures est le besoin de filtrer entre informations utiles et inutiles ou plus précisément, entre propriétés pertinentes et non pertinentes dans le contexte d’un usage donné. Car il est évident que les propriétés que l’on peut potentiellement inventer ne sont pas toutes utiles pour tous les usages textuels. Dans le modèle de texte « caractère-glyphe » que nous avons présenté dans le chapitre 102 précédent à propos d’Unicode et des fontes intelligentes, on observe l’application (implicite) du même principe : lorsqu’un texte est constitué de glyphes, ce sont les propriétés graphiques des signes qui sont mises en évidence, alors qu’un texte en caractères offre peu d’informations visuelles et, par exemple, davantage de propriétés linguistiques. Par conséquent, une catégorisation des clés de propriété en fonction des usages textuels semble être d’une grande utilité, et même indispensable étant donné que nous nous proposons de mettre en œuvre un cadre de modélisation de texte intensionnel, c’est-à-dire construit autour des propriétés. Nous rappelons cependant que l’objectif de cette thèse n’est pas de proposer une taxonomie de propriétés à travers des catégories fonctionnelles mais de montrer l’intérêt de faire ainsi et de proposer une méthodologie pour la réaliser. Nous avons situé les clés de propriété au niveau de la strate T2 . La strate T3 nouvellement introduite contiendra, entre autres, des catégories fonctionnelles (où par « fonctionnel » on entend tout simplement « basé sur les usages »), définies comme des sous-ensembles de clés de propriété. Une illustration (largement simplifiée, bien sûr) d’une telle catégorisation est présentée en fig. 2.4. L’intérêt de cette démarche se justifie lorsque l’on réalise à quel point il Caractère et glyphe : devient plus facile de répondre à des questions telles que « qu’est-ce qu’un relations de T3 caractère ? » ou « qu’est-ce qui différencie un glyphe d’un caractère ? ». Désormais, il est possible de formuler des réponses plus exactes que celles fournies par la norme Unicode : on peut considérer le caractère comme étant une catégorie de propriétés « bien choisie », définie dans T3 . Le glyphe, à son tour, sera considéré comme une catégorie différente. Des propriétés telles que majuscule, chiffre, arrêt glottal, écriture latine feront sans doute partie de la catégorie caractère alors que chasse à 1em, italique, Futura appartiendront à la catégorie glyphe. Suivant cette approche, caractère et glyphe sont donc des relations unaires de T3 qui correspondent à des ensembles de clés de propriété bien précis. Une approche alternative, similaire mais non équivalente, serait de créer La strate T4 une strate T4 de catégories de catégories de clés de propriété qui correspon- est optionnelle drait aux usages. La raison derrière cette solution plus complexe en apparence est que les usages pratiques (tels que « transmission de contenu textuel », « document formaté et mis en page ») ne correspondent en général pas exactement aux catégories fonctionnelles de T3 (telles que « propriétés graphiques », « propriétés linguistiques », « propriétés sémantiques »). Il semble plus réaliste de supposer que plusieurs catégories peuvent correspondre à un usage, comme par exemple un document PDF devrait contenir des informations liées à la fois à la présentation et à la sémantique du texte qu’il contient. Néanmoins, la séparation des strates T3 et T4 n’est pas essentielle car les propriétés correspondant à un usage donné peuvent très bien être « ramassées » directement au lieu d’être d’abord catégorisées. Ainsi, T3 peut très bien être considérée comme la strate des catégories des clés et la strate d’usages en même temps. Cette approche est illustrée sur la figure 2.5. L’approche à suivre dépendra sans doute de considérations pratiques. 103 FIG. 2.5 – Un usage peut être considéré comme une catégorie de clé. « Caractère » et « glyphe » sont selon cette interprétation deux usages distincts qui peuvent néanmoins partager des propriétés communes. COUPLES CLÉ-VALEUR EN TANT QU’ÉLÉMENTS DE T3 Les relations unaires de la strate T3 représentent donc des catégories fonctionnelles de clés. T3 contient cependant également des relations binaires de forme (t(2) , t(1) ) : des ensembles de couples clé-valeur. Pour un couple clévaleur, nous exigeons bien évidemment que t(1) ∈ ext(t(2) ). Il ne relève pas d’abus de langage d’appeler ces couples propriétés, comme on fait très souvent en langage informel, puisqu’il s’agit tout simplement d’un élément de T1 — une propriété proprement dite — couplé avec une étiquette (la clé) qui est en quelque sorte sa catégorie primaire. Par conséquent et aussi pour des raisons de simplicité, lorsque nous parlons de l’extension d’une propriété en tant que couple clé-valeur, ceci désigne l’extension de sa partie t(1) , ce qui donne un ensemble dans T0 : DÉFINITION 7 (EXTENSION D’UN COUPLE CLÉ-VALEUR) ext (t(2) , t(1) ) := ext t(1) (par définition). Par la définition suivante, nous introduisons l’extension commune d’un ensemble de couples clé-valeur, élément de T3 , qui désignera l’extension de l’intersection de ses éléments, et que nous allons représenter par « extc » : DÉFINITION 8 (EXTENSION COMMUNE D’UN ENSEMBLE DE COUPLES CLÉ-VALEUR ) Soit t(3) ∈ T3 une relation binaire composée de couples clé-valeur : t(3) = n [ i=1 (t(2)i , t(1)i ) Alors : extc(t(3) ) = ext (t(2)1 , t(1)1 ) ∩ ext (t(2)2 , t(1)2 ) ∩ ... ∩ ext (t(2)n , t(1)n ) = = ext(t(1)1 ) ∩ ext(t(1)2 ) ∩ ... ∩ ext(t(1)n ) L’extension commune d’un ensemble de couples clé-valeur sert à obtenir les signes de l’univers T0 caractérisés par chacune des propriétés de cet ensemble, comme nous verrons toute de suite dans la section suivante. 104 2.2.4 L E CARACTÈRE U NICODE , LE GLYPHE ET LE SIGNE TYPOGRAPHIQUE EN TANT QU ’ ÉLÉMENTS DE T3 LE CARACTÈRE UNICODE Notre proposition de considérer le caractère en tant que relation de T3 n’est pas incompatible avec la norme Unicode. Dans celle-ci, un caractère est défini (au niveau CCS, Coded Character Set) par : – son nom (VERTICAL LINE) ; – son code numérique (U+007C) ; – sa description informelle (« used in pairs to indicate absolute value ») ; – ses propriétés dans la BD d’Unicode (« Symbol », « Math », etc.). Le nom d’un caractère sert comme identifiant unique de celui-ci au niveau ACS (Abstract Character Set, ensemble de caractères dits abstraits car non codés). Quant au code numérique, il s’agit du nom propre le plus pratique par lequel le caractère est identifié5 . Il est clair que la définition d’un caractère Unicode comporte un ensemble de propriétés, même si celles-ci n’ont pas été choisies suivant une méthodologie bien établie (car les propriétés pertinentes pour Unicode n’ont jamais été définies). Nous pouvons donc affirmer qu’il est possible de décrire la totalité des caractères Unicode d’une manière intensionnelle, à l’aide de relations de T2 . Le caractère en tant que catégorie générale est donc un élément de T3 (ou en d’autres termes un ensemble d’éléments de T2 ). Comment représentet-on dans ce système un caractère précis, par exemple, la LETTRE MAJUSCULE LATINE A ? Il s’agit d’assigner des valeurs aux clés de propriété pertinentes pour le caractère, c’est-à-dire d’associer à chaque clé de T2 une de ses propriétés de T1 . Un couple clé-valeur est un couple (tclé(2) , tvaleur(1) ) tel que tvaleur(1) ∈ ext(tclé(2) ), et le caractère en question se compose de tels couples, il s’agit donc d’une relation t(3) ∈ T3 . Parmi tous les signes dans T0 (l’univers), ceux représentés par ce caractère précis sont ceux qui sont décrits par à la fois toutes les propriétés contenues dans t(3) , en d’autres termes, les éléments de son extension commune : extc(t(3) ). LE GLYPHE Jusqu’ici nous avons employé le terme glyphe dans le sens d’« image contenue dans une fonte ». Une fonte est cependant bien plus qu’une liste d’images car elle comprend également un ensemble d’informations relatives à l’affichage de celles-ci. Il s’agit donc encore une fois d’un ensemble de propriétés décrivant l’élément graphique d’écriture, l’image elle-même pouvant être considérée comme une propriété, complexe certes mais décomposable en une série de propriétés plus basiques (courbes de Bézier, chacune d’elles à quatre paramètres numériques). En revanche, à l’opposé du caractère Unicode, l’identifiant numérique de glyphe n’est pas un nom propre en soi car il n’est unique qu’au sein de la même fonte, du moins dans le cas des formats de fonte courants. Pour iden5 Dans la pensée frégéenne, ce code renvoie à la fois vers la dénotation du caractère et vers son sens, ce dernier étant composé de l’ensemble de ses propriétés. Selon Russell, ce même code numérique doit plutôt être considéré comme pointeur ou abréviation vers le sens. 105 Le caractère en tant que catégorie Le caractère en tant qu’instance tifier une image particulière (et ses propriétés), il faut avoir recours au couple (nom de fonte, ID de glyphe), pourvu que le nom de fonte soit unique (ce qui devrait être le cas en pratique). Si l’on compare le caractère et le glyphe selon les données — les propriétés — qui leur sont explicitement associées par la norme Unicode et par les fontes, resp., on observe que les deux ensembles sont bien distincts. Ceci est conforme à la vision suggérée par Unicode qui met l’accent sur une distinction formelle entre les deux notions, distinction qui se fait selon les différents usages textuels : représentations d’échange et finale. En revanche, la raison pour laquelle cette distinction peut paraître artificielle et non-intuitive aux non encore initiés à ce modèle « bicaméral » de représentation textuelle est qu’en réalité il est sous-entendu que le caractère et son glyphe ont le même signifié : le code du caractère U+0041 LETTRE LATINE MAJUSCULE A dans une case de la mémoire vive d’un ordinateur et le glyphe sur l’écran qui lui est associé signifient le même phonème (morphème, concept, etc.). Dans un modèle de texte que nous pourrions considérer plus intuitif (et que nous espérons être le cas de nos résultats), le caractère et son glyphe devraient être deux entités qui partagent certaines de leurs propriétés (dans notre exemple, la valeur phonémique) et diffèrent par d’autres. LE SIGNE TYPOGRAPHIQUE Dans le chapitre précédent (page 34) nous avons déjà parlé des signes typographiques comme étant des unités sémantiques de la typographie, ou d’un autre point de vue : des classes d’équivalence de glyphes suivant des critères à prépondérance typographique6 . À leur origine, les noms de glyphe PostScript (page 38) fonctionnaient comme noms propres de signes typographiques dans le but d’indiquer l’appartenance d’un glyphe à sa classe d’équivalence, abstraction faite de nombreuses propriétés graphiques (l’image concrète, les dimensions, etc.). Par conséquent, entre l’interprétation intensionnelle du signe typographique et celle du glyphe il y a donc une relation d’héritage car les propriétés décrivant le premier forment un sous-ensemble des propriétés du dernier : ext(tst(3) ) ⊆ ext(tg(3) ). Un glyphe est un signe typographique particulier, ou un signe typographique est une catégorie de glyphes. La thèse de Gérard Blanchard, intitulée Pour une sémiologie de la typographie [17], énumère et analyse de nombreuses propriétés graphiques qui décrivent le signe typographique ; mais au lieu de propriété, il emploie, après Jacques Bertin, le terme « variable ». 2.3 LE TEXTÈME : ÉLÉMENT TEXTUEL GÉNÉRALISÉ Une des conclusions majeures de la section précédente est qu’il n’existe pas de différence conceptuelle entre caractère, glyphe et signe typographique car tous les trois sont des relations de T3 correspondant à trois sous-ensembles 6 Heureusement, même si l’on a un certain mal à formuler une définition précise pour ce terme, on n’a aucun mal à le comprendre intuitivement grâce aux notions acquises de plusieurs siècles de typographie traditionnelle. 106 (non identiques) de clés de propriété. En vue de cette réalisation, nous nous posons la question suivante : existe-t-il une raison théorique de construire un modèle de texte qui soit basé sur une telle distinction, comme dans le cas du modèle caractère-glyphe recommandé par la norme Unicode ? N’est-il pas préférable de chercher un modèle qui puisse intégrer dans la même chaîne textuelle à la fois l’équivalent du caractère et l’équivalent du glyphe ? Dans le reste de cette thèse, nous allons répondre à ces questions à travers la constuction et l’analyse d’un tel modèle unifié. Si nous avons investi un effort considérable dans la construction de l’hiérarchie de strates dans la section précédente, nous sommes maintenant recompensés par la facilité avec laquelle nous pouvons en tirer une importante conclusion : l’élément textuel de base de notre nouveau modèle de texte doit être l’équivalent d’un élément de T3 . Plus précisément, l’élément textuel en tant que catégorie sera une relation simple de T3 (c’est-à-dire un ensemble de clés de propriété de T2 ) alors que l’élément textuel en tant qu’instance sera une relation complexe de T3 (c’est-à-dire un ensemble de couples clé-valeur, de relations binaires entre T2 et T1 ). La catégorie représentée par l’élément de T3 en question n’est en général équivalente ni à un caractère, ni à un glyphe, ni à un signe typographique, mais elle peut être équivalente à l’un ou à l’autre lorsque les clés instanciées coïncident avec celles qui caractérisent ces trois catégories. En conséquence, il est également possible qu’un tel élément textuel soit à la fois un caractère et un glyphe lorsqu’il possède les propriétés de ces deux catégories, mais il peut aussi représenter un signe d’une toute différente nature. Puisque cet élément textuel est de toute évidence plus général qu’un caractère, un glyphe ou un signe typographique — car il peut décrire un signe avec une gamme de précision très large —, il semble utile de lui inventer à ce point une nouvelle appellation. L’auteur et Yannis Haralambous ont proposé le terme textème car il réfère au composant élémentaire du texte (informatique), par analogie à d’autres termes comme phonème, graphème, sémème, etc. (pour référer aux composants élémentaires de la parole, de l’écriture ou du sens respectivement). Il faut noter que le terme textème a déjà un usage alternatif qui antidate le nôtre et dont la signification semble être « morceau de texte ininterrompu ». Par contre, l’emploi de celui-ci paraît assez peu fréquent, lié à un contexte sémiologique, et restreint surtout à la littérature germanophone7 . Le modèle de texte que nous proposons et que nous allons définir peut donc être décrit, de manière informelle, ainsi : l’élément textuel de base est le textème, un ensemble de couples clé-valeur, et le texte est une suite unidimensionnelle de textèmes. Ce même modèle sera à la base des représentations textuelles d’échange, transitionnelle et finale ; il ne sera plus nécessaire de changer de modèle de texte lorsque l’on passe d’une représentation à l’autre. Notons qu’il est légèrement réducteur de parler de modèle de texte en singulier car de nombreux différents modèles, simples et complexes, peuvent être conçus autour de l’idée de textème. Ceci dit, pour des raisons de simplicité nous écrirons dans la suite modèle de texte en textèmes alors qu’il est 7 Nous devons avouer que notre « sondage » se base sur l’apparition du terme sur Internet et dans les résultats de Google. 107 Le nouvel élément textuel L’origine du terme textème Une introduction informelle au modèle sous-entendu qu’il s’agit en réalité des traits communs des différents modèles basés sur les textèmes. 2.3.1 D ÉFINITION FORMELLE DU TEXTÈME Nous avons déjà mentionné qu’une instance de textème — où des valeurs ont été assignées aux clés de propriété — est une relation binaire de la strate T3 entre clés et valeurs de propriété. DÉFINITION 9 (TEXTÈME) n n o [ (tcléi (2) , tvaleuri (1) ) | tvaleuri (1) ∈ ext(tcléi (2) ) t ∈ T3 ; t = i=1 où n est un entier naturel. Le cas aberrant du n = 0, le « textème vide », n’est pas explicitement interdit car il correspond à un phénomène existant en pratique (même si non souhaitable et rare), cf. section 2.6.2. Notons que les signes de l’univers T0 représentés par le textème t peuvent être obtenus à l’aide de son extension commune, extc(t). Le texte se définit tout simplement comme une chaîne, c’est-à-dire une séquence ordonnée, de textèmes8 : T = t1 t2 t3 ... Une chaîne de textèmes de longueur n peut également être considérée comme une relation n-aire d’éléments textèmes de T3 , relation dont la cardinalité est égale à 1. En définissant T4 de manière analogue aux strates inférieures, on peut considérer que le texte est une relation non-complexe de T4 : DÉFINITION 10 (TEXTE) T = t(4) , t(4) ∈ T4 de sorte que ext(t(4) ) = {(t1 , t2 , ..., tn )}, ti sont des textèmes, |ext(t(4) )| = 1 Texte et contexte En comparant ces définitions avec celle en section 1.4.2, page 26 pour d’usage le texte en caractères, on remarque l’absence de référence vers le contexte d’usage. En effet, dans le chapitre précédent nous avions fait une distinction entre la chaîne de caractères non contextuelle et le texte où le sens des éléments constitutifs s’interprète suivant le contexte d’usage. Cette distinction est nettement moins utile pour le texte en textèmes puisque l’usage y est déjà représenté par l’ensemble de propriétés dont les textèmes sont construits. Ceci étant dit, une notion de contexte pourrait tout de même s’avérer utile pour la désambiguïsation du sens des propriétés dans la mesure où le sens exact d’une propriété donnée est toujours dépendant de contexte. Nous n’excluons donc pas la possibilité de parler de contexte extrinsèque comme dans le cas du texte en caractères, et nous y reviendrons en section 2.5. Les définitions que nous venons de donner peuvent paraître très simples et claires, la plupart du travail reste cependant devant nous : il faut maintenant interpréter les définitions, aussi bien en théorie que dans le cadre pratique des usages informatiques. 8 Nous passons au gothique afin d’éviter toute confusion avec la notation déjà introduite pour les strates. 108 2.4 CONSÉQUENCES DU MODÈLE Il est important de distinguer entre trois aspects indépendants d’un modèle de texte (et de tout modèle ayant des débouchés informatiques, d’ailleurs) : sa conception théorique, son implémentation et finalement sa présentation ou son interface vers l’utilisateur. Bien entendu, les principes théoriques du modèle doivent être pris en charge par son implémentation informatique, et cette dernière doit également fournir une interface vers l’humain (qui est le programmeur d’applications ou l’utilisateur final) où transparaissent, même si indirectement, ces mêmes principes. Néanmoins, afin de maintenir une certaine clarté de raisonnement, nous souhaitons éviter que la discussion de certains aspects théoriques du modèle proposé soit détournée par des considérations d’implémentation ou d’ergonomie d’usage. Ainsi, lorsque nous considérons le textème comme une liste de couples clé-valeur représentées dans nos exemples par des étiquettes textuelles (par exemple : langue = français), cela ne signifie pas forcément que le textème soit ainsi codé et stocké par l’ordinateur, ni que la propriété en question soit ainsi visualisée par l’utilisateur, tout comme la forme de codage effective d’un caractère Unicode (en UTF-8, UCS-16, etc.) ou sa présentation visuelle n’ont rien à voir avec son identité sémantique telle qu’elle est définie dans la norme. Pour ces raisons, nous consacrerons la suite de ce chapitre uniquement aux considérations théoriques, en laissant les potentielles implémentations informatiques optimisées du modèle, ainsi que la comparaison du nouveau modèle à ses prédécesseurs en termes de besoin de ressources calculatoires ou de stockage, pour le chapitre suivant. Quant aux conséquences du modèle sur l’interface homme-machine, même si nous reconnaissons leur importance, nous ne pourrons les aborder dans le cadre de cette thèse. 2.4.1 L’INTENSIONNALITÉ DE L’ENSEMBLE DES Trois aspects : conception, implémentation, interface PROPRIÉTÉS Ce que nous avons reproché à la norme Unicode était avant tout sa nature énumérative ou extensionnelle : un caractère est un caractère pour la seule raison qu’il fait partie d’une longue liste que l’on appelle codage. Une question qui se pose naturellement par rapport au modèle que nous venons d’introduire est si l’ensemble T2 (les clés) n’a pas, en théorie ou en pratique, la même nature. Est-ce qu’une « liste officielle » de clés doit exister, à partir de laquelle un textème donné est assemblé ? Ou bien, les définit-on de manière intensionnelle : en observant les signes d’écriture du monde, a-t-on à tout moment la possibilité de créer de nouvelles catégories selon ses besoins ? D’après le cadre que nous avons construit en section 2.2, un élément de T1 L’ensemble est l’intension d’éléments de T0 et de même, un élément de T2 est l’intension de propriétés d’éléments de T1 . Il n’y a donc aucune raison théorique de limiter a priori n’est pas limité les propriétés à une gamme « prêt-à-porter ». Au contraire, le pouvoir de notre modèle réside dans le potentiel d’inventer de nouvelles propriétés au fur et à mesure, suivant les besoins des usages actuels. L’ensemble des propriétés — et par conséquent des clés — utilisables est ouvert à tout usager, non seulement à des corps de normalisation ou à des grandes entreprises qui développent les systèmes d’exploitation ou des logiciels de traitement textuel. Rien n’empêche 109 même la création de plusieurs propriétés décrivant la même information (c’està-dire ayant la même extension), chacun du point de vue d’un usage différent : l’intensionnalité des ensembles T1 et T2 permet l’existence de telles propriétés « synonymes ». Nous mettrons en valeur l’importance de ces principes dans les sections suivantes. La nature illimité de T1 L’augmentation constante du nombre de propriétés utilisées, donc du caret de T2 ne pose pas dinal de T1 et de T2 , n’a rien en commun avec le phénomène d’augmentation de problème théorique des caractères codés par Unicode. Dans ce dernier cas, chaque version de la norme est considérée close, et le nombre de caractères codés est supposé converger vers une quantité « suffisante », ou du moins sa croissance est censée diminuer au fur et à mesure. En revanche, les propriétés s’inventent suivant les usages — qui ne cessent jamais d’évoluer — et l’utilisation immédiate des nouvelles propriétés ne devrait jamais être limitée par un refus de normalisation éventuel de la part d’un organisme centralisé quelconque. Le fait que nous laissons ouvert l’ensemble de propriétés ne signifie pas qu’il n’y aurait pas besoin d’en normaliser un sous-ensemble bien défini. Au contraire, ceci semble inévitable afin de permettre l’interopérabilité textuelle entre différents individus et logiciels. Cette considération pratique sera développée dans le chapitre suivant. 2.4.2 L’ŒUF ET LA POULE : LA CLÉ ET LA VALEUR DE PROPRIÉTÉ , SONT- ELLES ÉGALEMENT DU TEXTE ? Selon notre définition, une propriété est un couple clé-valeur. En pratique, on représente de telles propriétés souvent en forme textuelle, telle que corps = 24pt ou forme_arabe = initial. En effet, la manière la plus naturelle d’identifier une clé de propriété est de la nommer, ce que l’on fait intuitivement lorsque l’on recourt à des étiquettes textuelles. De même, des valeurs de propriétés textuelles peuvent parfois être très utiles. Cependant, puisque nous avons défini le texte comme étant une chaîne de textèmes, comment définit-on le texte qui sert à décrire les clés et les valeurs de propriétés à l’intérieur de ceux-ci ? S’agirait-il de textèmes imbriqués dans des textèmes de façon récursive et sans fin, comme la semence humaine contiendrait, a-t-on pensé autrefois, de minuscules homunculus9 qui à leur tour contiennent des homunculus encore plus microscopiques, jusqu’à l’infini ? La question est sérieuse car en acceptant que le texte informatique soit modélisé par une chaîne de textèmes, et le propos du paragraphe précédent étant bien évidemment absurde, nous risquons, paraît-il, de devoir abandonner en pratique l’idée d’avoir des clés et des valeurs textuelles. Cependant, il est de nouveau utile de séparer les considérations théoriques, implémentationnelles et interactionnelles. Nous avons défini la valeur de propriété comme étant un sous-ensemble de O ⊂ T0 , et la clé comme étant un sous-ensemble de tels sous-ensembles. Lorsque nous référons à la clé et à la valeur par des noms textuels, ces noms ne sont en réalité que des étiquettes qui nous servent à identifier les relations correspondantes. Autrement dit, ces noms textuels « traduisent » à l’humain la signification des propriétés. Ils peuvent également 9 Puisque cette thèse s’écrit en français et non en latin, l’auteur refuse l’emploi de formes plurielles telles que homonculi, scénarii, etc. 110 apparaître dans les implémentations du modèle en tant qu’identifiants, mais encore une fois, ce n’est pas nécessaire : le logiciel peut très bien optimiser sa représentation interne de clés et de valeurs en adoptant des identifiants numériques, et n’employer les noms textuels que pour l’interaction avec l’extérieur (l’utilisateur humain ou un autre logiciel). Pour ces cas, il est tout à fait possible de faire recours à un alphabet restreint bien défini (un sous-ensemble d’ASCII ou d’Unicode, par exemple) sans le moindrement mettre en cause la cohérence de notre modèle. 2.4.3 CHANGEMENTS D’USAGE Le même texte peut subir de nombreuses opérations appartenant à des usages divers, surtout depuis l’existence de documents formatés interactifs et donc manipulables. Dans le modèle de texte proposé (entre autres) par la norme Unicode, le formatage consiste à passer du texte en caractères au texte formaté en glyphes ; il s’agit donc d’un changement de « sous-modèle » au sein d’un modèle à deux niveaux. Bien que cette approche, grâce à sa souplesse, soit capable de s’adapter remarquablement bien aux particularités des différentes écritures du monde, elle présente également quelques inconvénients, comme nous avons pu voir dans le chapitre précédent : les passages d’un niveau à l’autre deviennent complexes lorsqu’une correspondance un-à-un entre caractères et glyphes ne peut être établie (pp. 41, 54, 83), et d’autre part, il existe une séparation artificelle entre propriétés de caractère et de glyphe (p. 82). Le modèle de texte en textèmes est libre de ces inconvénients car le chan- Plusieurs usages gement d’usage n’entraîne pas de changement de modèle : la différence entre intégrés dans le même usages graphiques et d’échange (ou d’autres) se manifeste principalement dans modèle l’ajout ou la modification d’un ensemble différent de propriétés de la même chaîne de textèmes. Le modèle de texte en textèmes est un modèle « monocaméral ». L’exemple simple en figure 2.12, page 138, représente un changement d’usage depuis un usage linguistique ou d’échange vers un usage présentationnel : il s’agit d’une simple opération de formatage. On voit que la seule différence entre le texte initial et le texte formaté est dans le nombre de propriétés attachées aux textèmes. Puisqu’il s’agit d’une opération additive — l’enrichissement de textèmes par propriétés —, aucune information n’est perdue lors du changement d’usage. Le changement d’usage étant une opération textuelle fondamentale et parfois complexe, malgré la simplicité apparente de l’exemple précédent, nous y consacrerons une section séparée dans ce même chapitre (cf. 2.6). 2.4.4 R ELATIONS ENTRE PROPRIÉTÉS ET TEXTÈMES DÉRIVÉES DE LEURS EXTENSIONS ET INTENSIONS Conceptuellement, nous avons situé les propriétés au niveau T1 de notre cadre formel, la strate T0 inférieure étant l’ensemble de base de signes décrits par celles-ci, et les strates supérieures étant responsables (entre autres) de la catégorisation de ces dernières. Nous allons maintenant examiner certains types de relations entre propriétés de T1 qui découlent des relations ensemblistes 111 de leurs extensions respectives dans T0 . Nous allons également découvrir ce que les catégories établies dans T2 et T3 , c’est-à-dire les clés et les catégories fonctionnelles, ajoutent à l’interprétation des relations entre propriétés de T1 . Notons que la plupart de nos observations ont déjà été les sujets d’une analyse détaillée, d’une point de vue de représentation des connaissances, dans les thèses de Zaldivar [71] et de Kanellos [39]. ÉGALITÉ DES PROPRIÉTÉS Plusieurs notions La notion d’égalité entre relations peut être interprétée de plusieurs mad’égalité nières, ce qui est une conséquence de la non-extensionnalité des strates T1 et dans la représentation supérieures. Rappelons que la non-extensionnalité signifie que deux relations à strates t et t de T peuvent être des éléments non-identiques (c’est-à-dire i 6= j) i j 1 Égalité de chaînes textuelles Identité ou égalité superficielle Égalité extensionnelle même si elles ont la même extension (ext(ti ) = ext(tj )). Le « sens » de leur différence (en reprenant l’expression employée par Zaldivar : leur identité sémantique) est décrit par leur catégorisation et en général par les relations de rang supérieur leur faisant référence. Ainsi, l’égalité extensionnelle n’est qu’un parmi les différents niveaux d’égalité qui peuvent être établis entre deux relations. Dans le cadre de notre modèle de texte, ces considérations ont une très grande importance car la vérification de l’égalité de deux signes ou de deux morceaux de texte est parmi les opérations textuelles les plus basiques et les plus fréquemment employées. La question que nous cherchons à répondre est la suivante : comment — à l’aide de quelle notion d’égalité — compare-t-on deux chaînes textuelles ? La réponse la plus triviale est d’exiger que les deux chaînes aient le même nombre de textèmes et que les textèmes respectifs soient composés des mêmes propriétés, c’est-à-dire des mêmes clés et des mêmes valeurs. Cette condition, la plus restrictive que possible, est bien évidemment suffisante, mais elle n’est pas forcément nécessaire. Une interprétation plus faible de l’égalité de deux textèmes est de n’exiger que leur égalité extensionnelle : qu’ils dénotent le même signe ou (plus précisément) la même classe de signes, exprimée à l’aide de leur extension commune (p. 104). Si ti et tj sont des textèmes, c’est-à-dire des relations binaires de T3 entre clés et valeurs, alors ti =ext tj ⇔ extc(ti ) = extc(tj ) c’est-à-dire que si φi,1 , ..., φi,n sont les propriétés de ti et φj,1 , ..., φj,m les propriétés de tj , alors ext(φi,1 ) ∩ ... ∩ ext(φi,n ) = ext(φj,1 ) ∩ ... ∩ ext(φj,m ) où l’égalité ici représente l’égalité ensembliste. L’égalité extensionnelle de deux textèmes signifie donc que les intersections des extensions de leurs propriétés respectives dans T0 comprennent les mêmes signes. Il est facile à vérifier qu’il s’agit d’une relation d’équivalence [71, p. 56]. Pertinence pratique L’égalité extensionnelle est avant tout une notion théorique dont l’exploide l’égalité tation en pratique peut s’avérer plus ou moins possible. Le problème est qu’en extensionnelle général les extensions des propriétés ne sont pas connues (« quels sont tous 112 les signes qui représentent des voyelles ? », avons-nous déjà exprimé ainsi l’impossibilité d’énumérer ces ensembles), et par conséquent les relations ensemblistes ne peuvent être vérifiées. Il existe une situation dans laquelle une telle approche peut néanmoins fonctionner : lorsque l’ensemble de base de signes, O ⊂ T0 , est réduit à un sous-ensemble bien circonscrit et énumérable, à la manière d’une table de codage. Sur un tel ensemble restreint, il devient possible de créer une base de connaissances de signes, à la manière de la BD Base de connaissances d’Unicode mais plus étendue. À l’aide d’une telle base de connaissances, il de signes est facile de retrouver l’extension d’une propriété donnée, et d’ainsi vérifier l’égalité extensionnelle de deux propriétés, voire de deux textèmes (en temps linéaire). Une autre solution, moins efficace mais ne nécessitant pas l’existence d’un Base de connaissances ensemble énuméré de signes disponibles, est la déclaration explicite de l’éga- de propriétés lité entre propriétés. Il s’agit encore une fois d’une base de connaissances (qui n’est pas forcément centralisée, comme nous le verrons dans le chapitre suivant) décrivant non pas des signes mais des propriétés individuelles. Une partie de cette description est l’énumération de propriétés qui sont, individuellement ou en groupe, équivalentes à la propriété qui est en train d’être décrite. Par exemple, lorsque certains textes emploient une propriété nommée, disons, arab_form = final afin d’indiquer la forme finale des lettres arabes et d’autres textes emploient pour ce qui est exactement la même fonction une autre propriété nommée form_arab = fina, alors la base de connaissances peut indiquer l’équivalence des deux clés et des deux valeurs. L’idéal serait, bien entendu, de n’avoir qu’une seule propriété ayant cette sémantique, mais ceci ne peut en général être assuré à cause de l’intensionnalité de notre modèle qui montre une attitude libérale envers la création de nouvelles propriétés. Entre les égalités superficielle et extensionnelle, il est possible d’en définir Égalités encore d’autres, plus restrictives que la dernière mais plus permissives que non-extensionnelles la première. En effet, entre deux propriétés extensionnellement égales mais non identiques, on peut distinguer non seulement par leur étiquette (représentée par des chaînes de caractères ou par des entiers : cela n’a pas d’importance) mais également à l’aide des relations de rangs supérieurs qui les caractérisent, et notamment par leurs catégories fonctionnelles. L’importance pratique de telles formes d’égalité peut être illustrée par l’exemple suivant : supposons qu’un algorithme chargé de la simplification (ou normalisation) d’une chaîne de textèmes est censé substituer toutes les propriétés extensionnellement égales par une même propriété choisie par défaut. Malgré le fait que toutes les propriétés dans une même classe d’équivalence extensionnelle dénotent exactement les mêmes signes de T0 , elles n’appartiennent pas forcément à la même catégorie fonctionnelle de T3 , autrement dit, au même usage. L’opération de substitution de propriétés peut donc créer des textèmes dont certaines propriétés ne correspondent pas aux usages que le texte a subis, et qui risquent de ne pas être considérées de la même manière que les propriétés qu’elles remplacent, voire d’être supprimées lors d’un filtrage du texte selon l’usage (cf. section 2.6). En conséquence, il est préférable que l’algorithme de normalisation vérifie non pas l’égalité extensionnelle de deux propriétés mais une égalité plus restreinte qui exige que celles-ci appartiennent aux mêmes catégories fonctionnelles de T3 . 113 RELATION DE DÉPENDANCE ENTRE PROPRIÉTÉS Tout comme l’égalité extensionnelle entre deux propriétés, ext(φi ) = ext(φj ), le cas plus général des relations de compréhension entre les extensions possède également une sémantique particulière. La relation ext(φi ) ⊆ ext(φj ) exprime que tous les signes caractérisés par φi sont forcément caractérisés par φj également. Nous appelons cette relation entre propriétés dépendance ou dépendance fonctionnelle10 . Puisque nous consacrerons une section entière (2.7) à l’analyse du phénomène de dépendance, nous nous contentons ici de mentionner son existence. 2.4.5 L A Segmentation intuitive Segmentation intuitive et considérations pratiques STRUCTURE DU TEXTE EN TEXTÈMES À la base, le texte écrit est une chaîne unidimensionnelle de signes d’écriture, ce qui témoigne de sa liaison inévitable avec la parole. Cette propriété générale n’est bien évidemment pas en contradiction ni avec les aspects bidimensionnels intra-signe (dans le logogramme chinois, dans la syllabe hangûl, dans la lettre diacritée), ni avec quelques usages spécialisés éloignés de la parole qui organisent l’information textuelle en deux dimensions (comme les formules mathématiques), ni avec la mise en page qui forme le texte unidimensionnel en pavés rectangulaires. À un niveau précis, et ce niveau dépend de l’écriture et de l’usage en question, le texte écrit se segmente naturellement et intuitivement en une chaîne de signes unidimensionnelle. Dans [58], Richard Sproat appelle Small Linguistic Unit cet élément constitutif de la chaîne textuelle11 . Cependant, même si le niveau de segmentation unidimensionnelle peut pour la plupart des écritures être aisément déterminé, cela ne veut pas dire que ce niveau soit le plus pratique pour une modélisation informatique. Si c’était encore le cas pour de nombreux codages de caractères historiques « naïfs », Unicode a adopté une approche différente : – dans les écritures alphabétiques, les diacritiques sont devenus des caractères à part (de classe combinante) ; – dans le hangûl, où la Small Linguistic Unit correspond à la syllabe, une modélisation alphabétique (et donc sous-syllabique) a également été proposée ; – dans les écritures indiennes, la Small Linguistic Unit correspond au groupe (ou cluster) d’une voyelle et de toutes les consonnes qui la précèdent ; Unicode a cependant choisi de coder voyelles et consonnes séparément. Le choix d’un niveau de segmentation particulier par rapport à d’autres segmentations possibles peut être motivé par de nombreuses considérations : 10 La dépendance n’est pas la seule interprétation sémantique possible de la relation de compréhension : entre autres, la notion d’héritage y trouve ses origines également. L’interprétation à choisir dépend, bien sûr, du phénomène que nous visons à modéliser. 11 D’ailleurs, l’auteur n’est au courant que d’une seule écriture naturelle qui n’obéisse pas complètement à ce principe : dans l’époque archaïque de l’écriture sumérienne cunéiforme (dans la même époque où le sens de l’écriture est passé du vertical à l’horizontal), le texte à l’intérieur d’une colonne/ligne se divisait en « cases ». Une case pouvait contenir une poignée de signes, dans un ordre indépendant de l’ordre de lecture. Même dans cette écriture il existe donc une segmentation unidimensionnelle (les cases), encore qu’à un niveau relativement haut. 114 – la réduction du nombre de signes dans le répertoire ; – la facilité de traitement automatique (linguistique, présentationnel, etc.) ; – la compatibilité avec d’anciennes normes, technologies et habitudes ; – l’adaptativité aux méthodes de saisie et aux contraintes matérielles ; – l’aspect intuitif pour l’utilisateur (y compris le programmeur). Dans le modèle de texte caractère-glyphe, la segmentation est choisie selon des critères différents pour la chaîne de caractères et pour la chaîne de glyphes. Pour cette raison, lorsque les unités pertinentes des deux chaînes sont d’une granularité différente, la maintenance du graphe de correspondances entre les deux chaînes devient primordiale. Le choix de l’unité pertinente est également très important dans le cadre Le choix du segment du modèle en textèmes. Il peut être motivé par les mêmes considérations mais détermine le contenu le fait que le textème possède une structure interne permet de choisir comme du textème unité pertinente une segmentation de niveau relativement haut et d’ensuite décomposer chaque unité pertinente à l’intérieur de son textème à l’aide des propriétés. De cette manière, dans le modèle en textèmes, des considérations qui étaient contradictoires dans le modèle caractère-glyphe peuvent être satisfaites simultanément. Notamment, le choix d’une unité textuelle intuitive de niveau relativement plus haut, comme la syllabe hangûl, n’entraîne pas forcément le besoin d’un répertoire immense de signes, car ceux-ci sont représentés dans les textèmes par leur composants de plus bas niveau et beaucoup moins nombreux. Nous verrons des exemples plus détaillés en section 2.4.6. Notons qu’une telle approche peut nécessiter une légère extension de notre modèle afin de permettre l’imbrication de propriétés, i.e., que celles-ci soient structurées en arbres ; nous reviendrons également à ce problème dans la même section. 2.4.6 P ERTINENCE VIS- À -VIS DES ÉCRITURES DU MONDE Dans les cultures alphabétiques, on est habitué à considérer les unités constitutives de son écriture comme les éléments d’un répertoire bien restreint. Ce n’est pas par hasard que les modèles textuels initialement développés se basaient sur la table de codage qui suivait le même principe énumératif. Ce n’est pas par hasard non plus que ce principe a commencé à montrer ses faiblesses au moment où il a été appliqué sans réflexion à la totalité des écritures du monde comme l’arabe, le chinois ou le coréen, écritures qui nous serviront comme exemples pour mettre en valeur certains aspects utiles des textèmes. ÉCRITURES ALPHABÉTIQUES Pour l’esprit éduqué dans un milieu alphabétique, regarder la lettre comme étant un ensemble plus ou moins volatile de propriétés peut paraître étrange. On nous demande de renoncer à la terre ferme sous nos pieds — la lettre comme atome, membre de l’alphabet que l’on s’approprie dès le plus jeune âge — en faveur d’une expressivité déconcertante qu’offrent les propriétés. Par La lettre « A » exemple, comment peut se caractériser une lettre « A » en tant que textème ? en tant que textème Ses propriétés peuvent être les suivantes : – appartenir à la famille des écritures d’origine latine ; 115 – être une lettre ; – être la première lettre de l’alphabet (français, latin, etc.) ; – être en forme majuscule. Ce sont à peu près les propriétés du caractère U+0041 tel qu’il est défini dans Unicode. Mais nous n’avons aucun mal à trouver d’autres propriétés qui le caractérisent : – représenter une voyelle ; – en français, être parfois une forme alternative de la lettre « À » ; – être composé de trois traits (deux inclinés et un horizontal). Une visualisation plus rigoureuse et de style plus « informatique » pourrait être la suivante (que nous adopterons également pour afficher les textèmes d’une façon intuitive dans la suite de cette thèse) : script = latin function = letter latin_pos = 1 case = upper phon_cat = vowel Avantages et inconvénients du textème par rapport au caractère Unicode ou au glyphe Caractère Unicode dans le textème Cette représentation, est-elle plus compliquée que « 0048 » ? Certainement. Il faut cependant comprendre que la complexité apparente est tout d’abord due au fait que notre exemple de textème fournit davantage d’informations que le caractère Unicode. La plupart des propriétés explicitement présentes dans le textème ne sont disponibles pour un caractère Unicode qu’à travers sa base de données. D’autres, comme « être voyelle », n’y sont pas disponibles du tout. En fonction de l’usage, le textème peut s’avérer plus ou moins pratique que le code de caractère Unicode ou le code de glyphe ; typiquement, plus les usages d’un texte sont variés, plus l’approche textème devient utile. Un texte en textèmes qui subit du traitement aussi bien linguistique que typographique pour ensuite être indexé et recherché se prête bien plus aisément à ces opérations que l’équivalent en caractères ou en glyphes où le code numérique réfère implicitement à un nombre de propriétés figées. En revanche, lorsque les usages du texte sont plus simples (par exemple, traitement de code source dont les caractères se limitent à la gamme ASCII), la représentation de celui-ci par une suite de codes numériques est probablement plus pratique. Par ces considérations nous nous approchons des questions d’implémentation que nous souhaitons couvrir séparément, dans le chapitre suivant. En anticipation, nous signalons qu’une approche mixte — à la fois intensionnelle et extensionnelle — qui permet de profiter des avantages des deux mondes est tout à fait envisageable : le code de caractère Unicode ou le code de glyphe peuvent également devenir des propriétés du textème. Ainsi, le textème unicode = 0041 phon_cat = vowel Le modèle en textèmes est compatible avec le modèle Unicode donne des renseignements équivalents au précédent (pourvu que l’accès à la BD d’Unicode soit disponible) et la propriété unicode = 0041 peut être considérée comme l’abréviation russellienne des quatre autres. Un texte dont les textèmes ne contiennent que la valeur Unicode comme propriété est équivalent à une chaîne Unicode ; par conséquent, notre modèle est capable d’émuler et est donc compatible avec le modèle de texte d’Unicode. 116 ÉCRITURES LOGOGRAPHIQUES Les hanzi chinois, kanji japonais et hanja coréens sont les éléments des trois écritures logographiques dont l’origine est commune. Nous avons déjà présenté certaines particularités de ces écritures en section 1.6.2. Nous ne faisons que réitérer ici notre observation selon laquelle le logogramme n’est en réalité pas l’unité atomique de l’écriture logographique comme l’est la lettre des écritures alphabétiques. Il se construit à partir de composants (dont un radical) qui eux-mêmes se décomposent graphiquement en traits élémentaires bien définis. Bien que cette manière de décomposer le logogramme asiatique soit avant tout basée sur des considérations graphiques, la prononciation et/ou le sens du logogramme sont très souvent en corrélation avec la prononciation et/ou le sens de ses composants [26, chapitre 5]. Nous avons montré (section 1.6.2) les inconvénients du codage des dizaines de milliers de logogrammes individuellement, comme fait Unicode, en argumentant en faveur d’une approche analytique et constructiviste. Le textème est un cadre idéal pour une description analytique du logogramme car, à travers les propriétés, il offre la possibilité d’en indiquer la construction graphique, la prononciation et le sens, aussi bien pour le logogramme entier que pour ses composants : – la possibilité de définir un logogramme à travers sa composition graphique correspond mieux à la nature ouverte des écritures logographiques que l’approche d’Unicode qui les regarde comme une liste définitive ; – la polysémie occasionnelle des logogrammes peut rendre utile pour certains usages (éducation, désambiguïsation) l’indication explicite du sens du logogramme à travers une propriété ; – enfin, le même logogramme peut avoir différentes prononciations (surtout en japonais mais également en chinois), nécessitant parfois une propriété pour indiquer la prononciation appropriée dans le contexte donné. En admettant qu’un textème représente un logogramme dans lequel une propriété structure est censée décrire les composants graphiques de celui-ci, comment représenter le sens et la prononciation des composants ? Logiquement, la propriété structure doit être une propriété complexe qui se définit à son tour également par un ensemble de propriétés. Cela veut dire que la valeur de la propriété structure devrait pouvoir contenir un ensemble de couples clé-valeur, et ceci de manière récursive. Plus généralement, la structure d’une propriété devrait pouvoir prendre la forme d’un arbre, comme sur l’exemple de la figure 2.6. Nous examinerons l’intérêt potentiel, en théorie et en pratique, de cette extension de modèle en section 2.6.2. LE HANGÛL CORÉEN Nous avons présenté les propriétés principales de l’écriture coréenne en section 1.6.2. Peut-être plus encore que les écritures logographiques (car la structure graphique coïncide parfaitement avec la structure morpho117 Le logogramme n’est pas un atome Le textème : description analytique du logogramme La propriété en tant qu’arbre ? FIG. 2.6 – Les propriétés du logogramme chinois « zhào » s’organisent naturellement en une structure arborescente. Représentations syllabique ou par jamos, par Unicode et dans la fonte phonémique de la syllabe12 ), le hangûl se prête naturellement à une description analytique. Unicode propose deux méthodes pour coder du texte en hangûl : par syllabes pré-composées ou par jamos individuels. De manière analogue, deux types de fontes coréennes peuvent être envisagés : celles qui contiennent des glyphes de syllabes entières et celles qui assemblent les syllabes à partir de composants élémentaires13 . Par conséquent, en combinant la méthode de codage par Unicode avec la méthode d’affichage par la fonte, quatre cas peuvent arriver : 1. caractère jamo 7→ glyphe jamo ; 2. caractères jamo 7→ glyphe pré-composé ; 3. caractère pré-composé 7→ glyphes jamo ; 4. caractère pré-composé 7→ glyphe pré-composé. Le quatrième cas semble être le plus courant dans les usages pratiques (fontes courantes, documents HTML, etc.) car il est le seul à être compatible avec les technologies historiques. Quant aux cas 2 et 3, les opérations de composition et de décomposition peuvent en théorie être résolues aussi bien dans le domaine des caractères que dans le domaine de glyphes (par la fonte). La conversion caractères jamo ↔ caractère pré-composé est une opération triviale grâce à la « formule magique » présentée en section 1.6.2, encore que le logiciel de composition doive être préparé à effectuer cette conversion automatiquement. Dans le domaine des glyphes la même conversion nécessite un format de fonte intelligent qui puisse définir des substitutions de glyphe un-à-multiple et multiple-à-un. Finalement, le premier cas correspond à une simple substitution un-à-un mais la disposition bidimensionnelle des glyphes jamo en syllabes-blocs nécessite encore une fois des formats de fonte capables d’indiquer un déplacement à la fois horizontal et vertical. L’inconvénient majeur des cas 2, 3 et 4 reste cependant la nécessité de devoir répertorier une dizaine de milliers de caractères Unicode pré-composés et/ou de devoir dessiner et inclure dans chaque fonte le même nombre de 12 L’orthographe coréenne, et plus particulièrement le fait si elle devrait suivre le principe phonétique ou le principe morphologique, a toujours été sujet de débat en Corée [19, p. 223]. 13 Bien entendu, cette dernière approche nécessite un format de fonte intelligent. Il est également possible de combiner les deux approches. 118 glyphes. Ces inconvénients sont aujourd’hui surmontables grâce à l’augmentation en puissance des ordinateurs. Les solutions qui se basent sur la précomposition restent cependant suboptimales en termes d’économie d’espace de stockage ou encore de transparence (car un simple identifiant numérique dit très peu de l’identité d’un glyphe ou d’un caractère). L’utilisation de textèmes pour l’écriture hangûl permet de combiner les Le textème offre avantages du principe d’économie et le structuralisme de la représentation une représentation alphabétique avec le caractère intuitif de la représentation syllabique (car la combinée syllabe reste l’élément intuitif de l’écriture, le Small Linguistic Unit, voir section 2.4.5). Dans cet objectif, un textème correspondra à une syllabe. Cette syllabe ne sera cependant pas identifiée par un simple code numérique mais par ses composants alphabétiques (la valeur Unicode a été ajoutée en tant que propriété dans un objectif de référence) : script = korean onset = peak = coda = unicode = U+AC10 glyph = Dans notre exemple, on réalise une correspondance trois-à-un au sein d’un textème entre les composants de syllabe et le glyphe (ce dernier serait en réalité représenté par un couple de propriétés fonte-identifiant). La décomposition permet de réduire le répertoire de signes élémentaires à la taille de l’alphabet, alors que le textème entier correspond à la syllabe, l’unité intuitive de l’écriture, et permet d’attacher des propriétés supplémentaires à celle-ci dans sa globalité. Si, par contre, il devenait nécessaire d’associer des informations aux trois composants élémentaires individuellement, par exemple dans le but de fournir une translittération phonétique latine par laquelle on associe à chaque lettre hangûl son équivalent latin, alors une structure arborescente de propriétés serait encore une fois très utile, comme sur la fig. 2.6 à propos des écritures logographiques. L’ÉCRITURE ARABE L’arabe est une des écritures qui ont énormément profité de l’apparition d’Unicode et des technologies de fonte intelligentes. Le codage de l’alphabet arabe dans Unicode est défini suivant des considérations linguistiques : l’unité de codage choisie est le graphème (la lettre), représentant écrit du phonème. Les différentes formes cursives que les lettres prennent au début du mot, au milieu, à la fin ou en isolation, ou encore les ligatures ne sont pas devenues des caractères Unicode séparés14 (voir page 65). La raison derrière ce choix a été de créer un codage arabe qui fait abstraction de tout aspect visuel de l’écriture, ce qui facilite certains usages comme la recherche textuelle. Il appartient au processus de composition de texte et à la fonte intelligente d’exécuter l’analyse contextuelle du texte Unicode arabe et de faire correspondre à chaque caractère le glyphe — l’allographe contextuel, la ligature, etc. — approprié. 14 À part, bien sûr, les formes de présentation dont l’usage est découragé par Unicode. 119 Les inconvénients de l’approche d’Unicode La souplesse de la représentation textémique Cette séparation nette des usages visuels et non-visuels (qui d’ailleurs n’a pas toujours été suivie pour d’autres écritures ayant pourtant quelques particularités similaires, comme par exemple l’hébreu) a été sagement choisie de sorte que le modèle s’adapte aux usages les plus importants ; cependant, la même séparation du texte en caractères et du texte en glyphes, l’exorcisation de toute propriété visuelle du premier et en pratique la quasi-impossibilité de toute manipulation interactive du dernier, ont abouti à la mise sur pied d’un modèle de texte qui rend la composition arabe lourde et peu souple. D’une part, l’utilisateur qui introduit son texte en caractères a peu de contrôle sur l’aspect visuel de celui-ci car les caractères arabes ne portent aucune information visuelle. D’autre part, même si le document formaté qui en résulte est capable d’offrir des fonctionnalités interactives comme la recherche ou le copier-coller (ce qui est déjà un cas rare en réalité), ces fonctionnalités sont limitées au contenu en caractères : entre autres, une recherche intelligente sur des propriétés visuelles du texte est impossible. Dans le textème, en revanche, aucune séparation artificielle n’est faite entre modes de représentation visuels et non-visuels. L’opération de formatage se fait globalement de la même manière que dans le modèle caractère-glyphe : en partant d’un texte non-formaté (première ligne de textèmes ci-dessous), d’abord une analyse contextuelle y est effectuée afin de déterminer les formes contextuelles des lettres individuelles (deuxième ligne). letter = letter = form = init letter = letter = form = medi letter = letter = form = fina Ensuite, à l’aide de ces informations, les formes appropriées des glyphes sont retrouvées dans la fonte intelligente et indiquées dans les textèmes : letter = form = init font = myfont glyphID = 15 ( ) letter = form = medi font = myfont glyphID = 16 ( ) letter = form = fina font = myfont glyphID = 3 ( ) Les formes contextuelles peuvent également être indiquées explicitement par l’utilisateur au moment de l’introduction du texte, ce qui peut être utile dans les cas exceptionnels où la forme d’une lettre ne correspond pas à sa position dans le mot : par exemple, pour indiquer qu’il s’agit d’un mot abrégé, la lettre en position finale doit garder sa forme médiane ou initiale. Dans un texte Unicode, le même effet nécessite l’introduction d’un caractère spécial ZERO-WIDTH JOINER, artefact qui rompt le texte arabe et dont l’existence n’est peut-être même pas connue par l’utilisateur. 2.4.7 L E TEXTÈME PERMET L’ INVENTION D ’ USAGES NOVATEURS La primauté Dans la grande majorité des implémentations pratiques du modèle caracdu caractère tère-glyphe, la primauté est donnée au texte en caractères : c’est le caractère, sur le glyphe et non le glyphe, qui a été choisi comme unité de représentation d’échange ; les fichiers texte contiennent des caractères et non des glyphes ; les documents 120 HTML et XML, constituants du Web, sont en caractères ; le M-text de la bibliothèque m17n (voir page 86) est en caractères ; et ainsi de suite. Le texte est stocké et manipulé dans sa forme « brute », en tant que chaînes de caractères avec éventuellement des données associées (comme par exemple du balisage). À quelques exceptions près, comme les formats de document PDF et SVG, le texte passe à sa représentation finale dans le seul but d’être visualisé, et cette représentation n’est pas considérée comme faisant partie essentielle du texte. Le glyphe est juste une partie de l’image formatée et non pas du texte « réel » d’origine. Les textèmes bouleversent cette vision. En admettant qu’un textème re- Dans le textème, présente un signe d’écriture (ce qui n’est pas forcément le cas, comme nous pas d’usage a priori verrons plus loin), a priori rien n’oblige qu’il se définisse uniquement par des préféré propriétés qui caractérisent les caractères Unicode. La présence de telles propriétés est sans doute utile mais nullement obligatoire, et on peut très bien imaginer des chaînes de textèmes où seules des propriétés graphiques sont présentes (fonte, ID de glyphe, position, couleur, etc.) ou des propriétés de glyphe et de caractère simultanément, comme dans la seconde ligne de l’exemple de la figure 2.12, page 138. Le texte en textèmes est donc capable de simuler le texte en caractères, le texte en glyphes, ou les deux à la fois. Que se passe-t-il lorsque l’ensemble de propriétés dans un textème ne contient ni les propriétés associées au caractère ni celles associées au glyphe ? S’agit-il encore d’un signe d’écriture ? Par exemple, dans le textème script = latin function = letter latin_pos = 1 Textème sans caractère ni glyphe nous avons omis l’indication de casse : il peut s’agir aussi bien d’un « a » minuscule que d’un « A » majuscule. Le signe est donc sous-défini par rapport au codage Unicode (mais non par rapport à la première version du codage ASCII de 1963). Malgré cette abstraction, ce textème peut pourtant bel et bien être considéré comme représentant d’un signe d’écriture, tout comme le caractère Unicode U+0644 ARABIC LETTER LAM peut l’être malgré la non-indication de sa forme contextuelle. Comme nous avons démontré en section 1.8.4, qu’un signe soit abstrait ou non est toujours relatif à un usage. Que dire alors du texte suivant : Nouvelles formes textuelles phon_cat = consonant phon_cat = consonant phon_cat = vowel S’agit-il encore de signes d’écriture, voire même de texte, étant donné que la seule information présente est une catégorie phonétique ? Puisque dans le cadre de notre modèle nous avons défini le texte comme étant une chaîne de textèmes, l’exemple ci-dessus remplit toujours ce critère. D’autre part, il serait difficile de trouver une définition exacte pour ce terme qui soit en concordance avec son emploi très diversifié aussi bien dans l’usage courant que dans les sciences, tellement il est devenu un concept « fourre-tout ». Vue de cet angle, notre interprétation ne semble donc pas être extravagante. Dire qu’il s’agit de signes d’écriture serait par contre cette fois-ci une exagération : plutôt, ces textèmes pourraient être considérés comme étant des « classes de signes 121 représentant des voyelles ». Il faut réaliser cependant qu’un textème ne repréLe textème représente sente jamais autre chose qu’une classe de signes : même un signe aussi bien toujours une classe circonscrit qu’un « L » majuscule, en langue allemande, en fonte Optima (noude signes velle version), corps Medium 24pt, à une définition de 600dpi, en couleur noire, ne correspond toujours qu’à la classe de toutes les lettres existantes qui correspondent à nos critères, et il est toujours possible de continuer à restreindre la couverture, en ajoutant par exemple la propriété « être en position initiale dans le mot Lieber ». Si l’exemple de trois textèmes ci-dessus paraît inhabituel, c’est parce que l’usage potentiel d’un tel texte est probablement très différent des usages textuels informatiques auxquels nous nous sommes en général habitués. Or, la chaîne de caractères Unicode peut s’avérer tout aussi inadaptée et sous-définie pour certains usages comme la représentation informatique d’un manuscrit du Coran ou du Torah où toute altération de « la parole de Dieu » relève de sacrilège. Il n’y a donc de sens de parler de signe ou de texte sous-défini qu’en fonction d’un usage donné. D’ailleurs, le seul genre de textème complètement défini serait probablement similaire à : sign = le tout premier signe dans la lettre de W. A. Mozart écrite à son père le 17 août 1776 Retournons à l’exemple de deux consonnes suivies par une voyelle. Une chose est d’admettre que, d’après notre définition, cette suite de textèmes a tout droit d’être appelée texte, mais il reste à démontrer l’utilité d’une telle interprétation libérale. Utilité est toujours fonction d’usage, et tous les usages novateurs d’un nouveau concept comme le textème ne sont pas toujours prévisibles. Un texte comme celui d’en haut peut représenter, par exemple, de l’information extraite d’un morceau de parole enregistré, comme étant le résultat d’une première analyse vers sa reconnaissance automatique. Ou il peut être le résultat de la première étape de la conversion d’un texte coréen codé de manière alphabétique vers son codage par syllabes, où les frontières des syllabes sont reconnues à l’aide de règles phonétiques de la langue coréenne. Sans même essayer d’être exhaustif dans notre recherche de nouveaux usages potentiels de toutes les combinaisons de propriétés que nous pouvons inventer, nous souhaitons donner ici quelques exemples qui illustrent le fait que le texte en textèmes offre des modes de représentation textuels que les modèles anciens, comme le modèle caractère-glyphe, ne peuvent capter de façon satisfaisante. RECONNAISSANCE OPTIQUE DE TEXTE Il est connu que la reconnaissance optique de texte est une opération stochastique dans le sens où l’identité des signes individuels ne peut être reconnue qu’avec une certaine probabilité. Il arrive parfois, en fonction des propriétés graphiques mais aussi linguistiques du texte à reconnaître, que la décision entre plusieurs signes candidats ne soit pas évidente. Si le texte reconnu est représenté par une chaîne de caractères, le logiciel doit alors choisir parmi les signes candidats celui dont la probabilité est la plus élevée, ou s’il existe plusieurs candidats à probabilité égale, alors le choix doit se faire au hasard. En revanche, le modèle en textèmes permet d’inclure dans le même textème 122 tous les signes candidats, avec leurs probabilités associées (voir exemple cidessous). Ceci peut être utile pour une éventuelle décision ultérieure, que ce soit à l’aide d’un utilisateur humain ou d’un logiciel automatique de traitement linguistique extérieur. lang = french letter_1 = f prob_1 = 60% letter_2 = t prob_2 = 40% lang = french letter = a lang = french letter = u lang = french letter = x Ici, nous dérivons légèrement de notre modèle d’origine : en réalité, les propriétés letter_1 et letter_2 sont des alternatives, de sorte que le textème représente l’union (et non l’intersection) des ensembles des lettres « f » et « t ». Afin de rendre cette approche possible, nous permettons dans un textème la présence de plusieurs couples clé-valeur ayant la même clé mais des valeurs différentes15 : i 6= j, tclé(2)i = tclé(2)j , tvaleur(1)i 6= tvaleur(1)j pourvu que cela soit interprétée de sorte que le textème réfère à une classe de signes ayant une (et une seule) parmi les propriétés en contradiction. REPRÉSENTATION PROBABILISTE DE TEXTES ARABES ANCIENS La même approche probabiliste peut s’avérer utile dans un contexte très différent : la représentation informatique des textes arabes anciens. Comme mentionne Haralambous dans [27], dans son état initial l’écriture arabe ne se servait pas de points sur les lettres telles que bâ, tâ, thâ, nûn, etc., ce qui entraînait une certaine ambiguïté lors de la lecture des lettres concernées. Même si le phonème représenté peut dans la plupart des cas être deviné à partir du contexte, des situations existent où la signification ne peut être indiquée que par des probabilités (voir figure 2.7). Une telle indication peut cependant être utile non seulement pour la lecture mais aussi dans un contexte d’étude paléographique. Le même article [27] de Haralambous fournit de nombreux autres exemples de signes où ni la catégorie de caractère, ni celle de glyphe n’est appropriée pour décrire certains phénomènes textuels. Il serait inutile de reproduire ces exemples ici ; notons cependant que dans l’article on voit apparaître la même idée de propriété mais avec une interprétation légèrement différente : en tant qu’extension du texte en caractères ou du texte en glyphes au moyen d’informations supplémentaires. Ce type d’usage des propriétés peut être considéré comme un modèle particulier de la famille de modèles que nous avons appelé jusqu’ici, d’une manière un peu simplificatrice, modèle de texte en textèmes. REMÉDIER AUX DÉFAUTS D’UNICODE Les exemples suivants serviront à mettre en évidence la manière dont l’approche intensionnelle de description des signes d’un texte à travers leurs pro15 En pratique, on suppose qu’il existe au moins un « indice » par lequel ces propriétés qui ont la même clé peuvent être distinguées. 123 script = arabic letter = kâf script = arabic letter = lâm script = arabic letter1 = bâ prob1 = 60% letter2 = tâ prob2 =38% letter3 = thâ prob3 =1% letter4 = undotted quranic letter prob4 =1% FIG. 2.7 – Exemple tiré de [27] : la valeur de la dernière lettre sans indication de point(s) est ambiguë, les alternatives possibles et leurs probabilités ont été indiquées dans le textème correspondant. Autant de caractères Unicode que de combinaisons de propriétés Les futurs usages d’un texte Unicode se restreignent dès sa rédaction priétés produit une représentation textuelle incomparablement plus simple, claire et utile que le même texte codé en caractères Unicode. Nous avons déjà évoqué le fait qu’Unicode contient une vingtaine de caractères d’espacement : espace cadratin, espace demi-cadratin, espace fine, espace très fine, espace de chasse nulle, espace insécable, espace fine et insécable, et ainsi de suite. Certaines parmi ces espaces se distinguent par leur chasse : ce sont des propriétés de présentation qui ne devraient a priori concerner Unicode, mais comme pour la plupart des propriétés présentationnelles, on peut toujours argumenter en faveur de leur importance sémantique. La propriété de chasse nulle peut servir à des usages linguistiques afin de séparer, par exemple, les « mots » (groupes de logogrammes) chinois sans introduire de l’espacement visible, tout comme la propriété d’insécabilité qui peut interdire une coupure de ligne entre deux mots français ou viêtnamiens. Le problème est que, par la nature d’Unicode, l’introduction de chaque nouvelle propriété doit forcément entraîner la création d’un ou de plusieurs nouveaux caractères codés. Lorsque deux propriétés binaires sont combinées (par exemple, normal-fin et sécable-insécable), quatre combinaisons sont possibles, ce qui est égal au nombre de caractères Unicode à créer. Si plus tard on ajoute une troisième propriété binaire, le nombre de caractères Unicode à introduire (en addition aux quatre existants, car Unicode refuse de modifier les caractères déjà normalisés) s’élève à huit. Un problème lié est que l’introduction d’un texte Unicode suppose la connaissance a priori de ses usages futurs : si l’utilisateur prévoit un éventuel formatage de bonne qualité de son texte en français ou en viêtnamien, alors il a intérêt à employer le caractère espace insécable où celui-ci est approprié, faute de quoi il risque d’obtenir une mise en page erronnée. Si par contre ce même texte équipé d’espaces insécables est ensuite traité par un logiciel plus simple (comme le bloc-notes de Windows) qui n’accède pas à la base de données d’Unicode et qui par conséquent n’est pas capable de reconnaître que le caractère U+00A0 NO-BREAK SPACE et U+0020 SPACE sont, bien que différents, tous les deux des caractères d’espacement, alors certaines opérations textuelles (comme la recherche) peuvent échouer à cause de l’information introduite en forme d’un caractère alternatif. Dans le textème, les propriétés sont orthogonales entre elles : l’ajout d’une 124 nouvelle propriété n’affecte pas (ou pas toujours, voir plus tard) la valeur de ses propriétés déjà présentes. Les propriétés signe d’espacement, insécable et L’orthogonalité chasse fine peuvent donc être indiquées indépendamment. La phrase viêtna- des propriétés de textème mienne Ông già d̄i nhanh quá. peut être interprétée de deux manières : « ce vieux va très vite » et « tu vieillis très vite », en fonction de l’association du morphème (le « mot ») già au morphème ông ou d̄i, respectivement. La coupure de lignes doit tenir compte de ce fait afin d’éviter de suggérer un sens non voulu. Étant donné la difficulté élevée de la gestion automatique des ambiguïtés linguistiques comme celleci, l’indication du sens voulu par la propriété insécable de l’espace est une tâche effectuée typiquement par l’humain. Dans le modèle en textèmes, cette indication peut être réalisée de la manière suivante : Ô n g letter = space nobreak = true g i à letter = space d̄ i Il suffit donc d’ajouter une propriété nobreak = true à l’espace approprié. Cette approche, meilleure que l’emploi de nombreux différents caractères Unicode d’espacement pour les raisons évoquées ci-dessus, est de loin plus compréhensible pour l’utilisateur non initié au fonctionnement d’Unicode et à la modélisation textuelle informatique en général : au lieu de demander l’emploi d’un caractère inhabituel qui ne se distingue pas visuellement d’un espace ordinaire et dont très probablement l’utilisateur ignore l’existence, on demande d’ajouter une précision à un élément textuel simple. Nous arrivons ici à des considérations qui s’inscrivent dans le cadre de la problématique de l’interface homme-machine que nous n’avons la possibilité d’aborder dans cette thèse. TEXTÈMES BALISES En section 1.8.8 nous nous sommes intéressés aux différences entre texte brut et texte balisé. Nous avons trouvé que certains caractères Unicode agissent exactement comme des balises et que même certains signes de ponctuation peuvent s’interpréter d’un point de vue fonctionnel comme telles. La frontière entre texte brut et texte balisé est donc plus floue que l’on ne pourrait penser. En pratique, les balises d’un texte en caractères font partie intégrante du texte dans le sens où elles-mêmes sont des chaînes de caractères qui s’imbriquent dans le texte sans interrompre son flux unidimensionnel. Les balises se distinguent du « contenu » par l’emploi exclusif de certains caractères réservés. Tout en gardant le même principe de balisage, nous proposons une représentation alternative des balises à l’aide de textèmes. Dans cette représentation, les balises ne sont pas de chaînes de signes spécialement interprétées mais plutôt des textèmes individuels non-graphémiques ayant une fonction spéciale « balise ». Il s’agit donc de textèmes qui ne réfèrent à aucun signe d’écriture et qui ne correspondent à aucun caractère ni à aucun glyphe. De 125 ce fait, tout en faisant partie intégrante de la chaîne de textèmes, les textèmesbalises s’en distinguent par l’ensemble particulier de propriétés qu’ils portent. Prenons par exemple un morceau de document HTML : <p class="toto">Bonjour</p> À l’aide des textèmes-balises, la même chaîne devient la suivante : function = markup element = p tag = opening class = toto B o n j o u r function = markup element = p tag = closing L’intérêt pratique de cette approche est évidente : d’une part, on n’a plus besoin de caractères réservés, de méthodes d’échappement ou d’entités. D’autre part, la lecture et l’interprétation du document balisé deviennent beaucoup plus facile et rapide car le document est plus court et le repérage de balises est une simple opération de recherche de propriété function = markup. D’un point de vue théorique, le textème-balise est une réalisation plus fidèle de l’essence de la balise : un élément atextuel qui fait néanmoins partie du flot d’éléments textuels. T YPOGRAPHIE Techniques alternatives d’égalisation des lignes Paragraphes candidats calculés en amont DYNAMIQUE La typographie dynamique est une nouvelle approche au problème de l’égalisation des lignes des paragraphes, inventée par l’auteur et Yannis Haralambous et présentée en détail dans [14]. Ici, nous n’allons que résumer ses principes fondamentaux. L’égalisation des lignes de paragraphes par l’élongation des lettres ou par l’activation-désactivation des ligatures est une technique traditionnellement employée, entre autres, par la calligraphie et la typographie arabes [38] ou hébraïques, ainsi que dans les Bibles de Gutenberg [67]. Les formats de fonte intelligents tels qu’AAT ou OpenType sont en théorie capables de définir des opérations similaires aux techniques que nous venons d’évoquer, cependant, d’une part, les solutions offertes par ces formats sont suboptimales (l’optimisation des coupures se fait au niveau de la ligne et non pas au niveau du paragraphe entier, les ligatures et les glyphes alternatifs sont appliqués a posteriori ; pour les détails cf. [14]), d’autre part, à la connaissance de l’auteur, aucune application et virtuellement aucune fonte ne supportent aujourd’hui ces techniques. La typographie dynamique procède autrement : dans un premier temps, en supposant que les ligatures (en leurs formes composées-décomposées), les glyphes alternatifs et les césures éventuelles peuvent être librement combinés, autant de paragraphes candidats16 sont générés qu’il existe de combinaisons. (Comme mesure d’optimisation, le nombre de combinaisons peut être réduit de manière radicale par la classification des ligatures et des glyphes alternatifs en classes d’équivalence, par la relation d’équivalence « avoir les chasses du même ordre ».) 16 « Candidats » dans le sens de « candidats à l’égalisation ». 126 Le modèle de texte en textèmes est une plate-forme idéale pour la représentation des paragraphes candidats grâce à la possibilité d’inclure plusieurs glyphes candidats dans le même textème. Nous prenons comme exemple le mot « affiné » en supposant qu’il fasse partie d’un paragraphe que nous sommes en train de composer. Supposons également qu’initialement le mot soit formé de caractères (le nom de propriété « caractère » a été abrégé par « c » dans les textèmes) et que les points de césure potentiels (« af-finé » et « affi-né ») aient été marqués par des propriétés hyph : c = 61 (a) c = 66 (f) hyph = 1 c = 66 (f) c = 69 (i) hyph = 1 c = 6e (n) c = e9 (é) Après l’inclusion des glyphes candidats — ligatures, traits de césure et variantes stylistiques — le mot prend la forme suivante : c = 61 (a) font = lmr g=a c = 66 (f) font = lmr g=f g2 = ffi g3 = ff font = lmr g=g2 = ∅ c = 66 (f) font = lmr g=f g2 = ∅ g3 = fi c = 69 (i) font = lmr g=i g2 = ∅ font = lmr g=g2 = ∅ c = 6e (n) font = lmr g=n c = e9 (é) font = lmr g=é g2 = où les glyphes candidats sont g, g2 et g3 , et de nouveaux textèmes correspondant aux traits de césure éventuels ont été insérés. Ces derniers n’ont pas de propriété de caractère, ce qui est logique puisque le trait de césure ne fait pas partie du contenu textuel. Bien évidemment, les glyphes candidats ne peuvent pas être combinés en toute liberté : par exemple, il n’est pas possible de composer la ligature « ffi » du deuxième textème et ensuite le trait de césure du troisième textème. La gestion de telles contraintes est un aspect important de la typographie dynamique que nous présenterons en section 2.7.8, p. 164. La solution que nous y proposons nous permettra en particulier d’éviter que notre problème se réduise au problème général de satisfaisabilité, dont la NPcomplétude est bien connue. L’étape suivante de la typographie dynamique comprend la construction Extension du graphe d’une version étendue du graphe de paragraphage de Knuth et de Plass [43] de paragraphage (voir fig. 2.8) dans lequel les lignes optimales sont calculées par la recherche du chemin le plus court. L’extension consiste à scinder les arêtes correspondant aux lignes potentielles à chaque endroit où se trouve une ligature ou un glyphe alternatif, et à pondérer les arêtes nouvellement insérées par les chasses des (classes de) glyphes en question. Ceci permet d’optimiser le choix de glyphes au niveau du paragraphe entier, contrairement aux solutions qui les font intervenir a priori ou a posteriori. En réalité, cette étape est fortement optimisée (pas toutes les combinaisons légales de ligatures et de glyphes variantes sont prises en compte) afin d’éviter l’explosion combinatoire du nombre de lignes candidates. Finalement, une dernière étape de post-paragraphage peut être exécutée, désormais en temps linéaire, pour peaufiner le choix de variantes et de ligatures. 127 FIG. 2.8 – L’extension d’une arête du graphe de paragraphage par les nœuds de variante. À gauche, l’arête d’origine représente une ligne qui contient le mot affiné au milieu. Les carrés noirs aux extrémités de l’arête correspondent aux coupures faisables en début et en fin de ligne. À droite, l’arête a été étendue par toutes les variantes du mot affiné. Les cercles sont les nœuds de variante. 2.5 LE RÔLE DU CONTEXTE DANS LA REPRÉSENTATION TEXTUELLE La notion de contexte est incontournable dans de nombreux problèmes, qu’il s’agisse de logique, de traitement automatique de langues naturelles, de représentation des connaissances, d’intelligence artificielle et ainsi de suite. Quel que soit le domaine, l’appréhension et la description précise et formelle de la notion de contextualité se sont souvent avérées difficiles, dû à la nature très hétérogène des phénomènes que l’on a tendance à généraliser comme La métaphore étant contextuels. La métaphore de la boîte [25] capture bien l’essence du de la boîte raisonnement contextuel : on ne s’intéresse à un moment donné qu’à ce qui se trouve à l’intérieur de la « boîte » qui représente une portion restreinte du monde. Tout modèle doit forcément s’imposer des limites, au-delà desquelles il n’est plus applicable, tout comme une description ne peut être que partielle, un énoncé a toujours un début et une fin, et ainsi de suite. Les frontières que l’on s’impose ainsi ne sont cependant pas infranchissables ; au contraire, dans la grande majorité des cas, le modèle ne peut éviter de communiquer avec son extérieur et l’énoncé s’interprète selon des circonstances qui lui sont extrinsèques. Modèle et contexte Dans une logique de modélisation, notre compréhension du monde extérieur est souvent partielle, plus limitée que celle du fragment du monde modélisé : c’est justement la réalité pratique de ne jamais être capable de construire des modèles omniscients et tout-englobants qui donne un vrai sens distinct à la notion de contexte [25]. D’autre part, on est conscient de l’hétérogénéité et de la complexité du monde extérieur, d’où l’intérêt de représenter le contexte comme une entité typiquement multidimensionnelle. Ces considérations s’appliquent naturellement aux opérations textuelles (comme la typographie numérique) ; ceci a déjà été mis en évidence notamment par John Plaice qui a visionné un logiciel typographe sensible au contexte à tous ses niveaux [54]. Dans le même article, le contexte est défini tout simplement comme un ensemble de couples attribut-valeur (chacun correspondant à une dimension) où les contextes imbriqués sont permis (en d’autres termes, une valeur peut à son tour être composée d’un ensemble de couples, et cela de manière récursive). De notre part, pour le moment nous adoptons une interprétation plus générale de la notion de contexte, sans pour autant viser à construire une théo128 rie unificatrice formelle et rigoureuse de ses aspects divergents. Néanmoins, Discussion théorique nous allons voir que de nombreux phénomènes contextuels peuvent se dé- contre réalisation crire à l’aide de notre cadre formel en strates, ce qui nous permettra au moins pratique de « faire le ménage » parmi les diverses interprétations de cette notion, tout en se posant la question sur la possibilité pratique de la conception et de la réalisation d’un mécanisme unique qui serait capable de gérer la totalité des problèmes contextuels. 2.5.1 L ES DIFFÉRENTS ASPECTS CONTEXTUELS DU TEXTE NUMÉRIQUE Dû au principe du raisonnement local — que l’étendue du modèle (de la boîte) est choisie en fonction de la tâche à accomplir —, le contenu du contexte varie selon le niveau structurel sur lequel le texte est modélisé (niveau de la propriété individuelle, de l’élément textuel, du « mot », de la ligne, du paragraphe, etc.). Dans la suite, nous allons considérer quelques situations où il semble utile et même intuitif de prendre en compte le contexte d’une unité textuelle. 1. Depuis le début, nous avons choisi de limiter nos études aux proprié- Attributs de caractère tés textuelles en-deçà de la frontière imposée par la fin de paragraphe. et de paragraphe Il est donc naturel de considérer les propriétés concernant les unités dans la PAO structurelles supérieures comme des propriétés contextuelles. D’ailleurs, le même principe est appliqué implicitement dans de nombreux logiciels de PAO et de traitement de texte : on distingue entre attributs de caractère et de paragraphe, les premiers étant des paramètres microtypographiques qui peuvent varier signe par signe (fonte, taille, crénage, langue, etc.), et les derniers étant valables pour des paragraphes entiers (alignement, interlignage, règles de césure, etc.). Au niveau des signes individuels, les attributs de paragraphe peuvent être considérés comme dimensions de contexte et, en tant que telles, peuvent influencer le traitement micro-typographique. 2. Certaines propriétés de texte comme la langue sont souvent considérées Propriétés associées micro-typographiques car elles affectent le traitement typographique en aux chaînes de textèmes s’associant à des unités textuelles plus petites que le paragraphe. L’unité linguistique la plus courte caractérisable par la propriété de langue est le morphème, qui peut être représenté en écrit par un seul textème (en écriture chinoise) jusqu’à une suite de textèmes (en écritures latine, cyrillique, etc.). Il ne s’agit donc pas, ou pas toujours, d’une propriété de signe — de textème — mais d’une propriété linguistique s’associant le plus souvent à une chaîne de signes qui, par conséquent, se représente en dehors de la « boîte » du textème. 3. L’illustration graphique que nous avons employé jusqu’ici pour la chaîne Relations entre textèmes de textèmes est celle d’une séquence de boîtes, chaque boîte contenant adjacents une liste de couples clé-valeur. La faiblesse de cette métaphore est peutêtre qu’elle suggère une indépendance mutuelle entre textèmes. Ceci est loin d’être le cas, comme nous allons voir dans les sections 2.6.2 et 2.7 ; pour le moment il suffit de penser à l’opération de crénage entre deux glyphes adjacents, aux ligatures, etc. Du point de vue d’un textème 129 Co-texte individuel, les autres textèmes qui l’entourent (et qui ne se limitent pas forcément aux deux textèmes adjacents) appartiennent à son contexte. C’est à ce type de contexte que réfèrent les termes substitution et positionnement contextuelles du jargon employé dans les spécifications des formats de fonte intelligents. Il faut noter que les linguistes ont inventé un nouveau terme, le co-texte, pour distinguer le contexte textuel proprement dit (c’est-à-dire le texte qui précède et qui suit l’unité textuelle de notre intérêt) du contexte extra-textuel. Dépendance 4. Bien que les propriétés d’un textème soient a priori orthogonales (indépendantes), toute combinaison de propriété ne dénote pas forcément de signe existant : par exemple, les deux propriétés {lettre = F, écriture = cyrillique} sont clairement contradictoires, puisque la lettre « F » ne peut être que latine. On observe donc que ces deux propriétés sont, en quelque sorte, corrélées. On retrouve le même phénomène entre propriétés se trouvant dans des textèmes différents : la propriété de crénage d’un glyphe dépend également du glyphe précédent. Ce phénomène de dépendance entre propriétés est la conséquence d’un ensemble de contraintes extrinsèques — contextuelles — auxquelles le texte est soumis. Contexte d’usage 5. Le contexte d’usage, que nous avons évoqué la première fois par rapport aux codages de caractères (p. 27) et dont nous avons donné une première interprétation tentative à propros du texte brut (p. 77), est une propriété que le modèle de texte caractère-glyphe intègre de façon controversée : d’une part, la séparation entre chaîne de caractères et chaîne de glyphes est clairement faite selon l’usage (représentations d’échange/finale), d’autre part, à part ces deux usages principaux, il n’existe aucune autre manière standarde d’adapter le texte (la chaîne de caractères ou la chaîne de glyphes) à un usage particulier. Le modèle de textèmes est différent : l’usage s’y manifeste de manière explicite à travers les catégories fonctionnelles de la strate T3 (cf. fig. 2.5 sur la page 104), c’est-à-dire à travers les propriétés présentes dans les textèmes. Nous avons vu que chacun de ces aspects contextuels peut être lié à un type de problème particulier de modélisation textuelle. Malgré le fait que nous les regroupons sous la catégorie d’« effets contextuels », ces phénomènes n’ont pas forcément une source commune, et nous allons voir que même s’ils peuvent être formellement décrits au sein de notre système en strates, ils ne s’y représentent pas toujours de la même manière. 2.5.2 L E CONTEXTE MACROSCOPIQUE Dans une première approximation inspirée de considérations intuitives, nous appellerons contexte macroscopique toute information s’associant à une chaîne de textèmes au lieu d’être présent dans chaque textème en tant que propriété individuelle. Dans la section précédente, nous avons suivi la distinction habituelle entre attributs de paragraphe qui décrivent le paragraphe en tant qu’unité à part entière et attributs « de caractère » qui s’associent à des chaînes 130 d’unités textuelles de longueurs variables (mais inférieures à la longueur du paragraphe). Notre modèle de texte, tel que nous l’avons développé jusqu’ici, n’offre Rapport entre aucun moyen direct de prendre en charge des propriétés textuelles de plus propriétés contextuelles haut niveau. La question qui se pose à ce point est, les propriétés de tex- et pr. de textème tème pourraient-elles utilisées à ces fins ? Serait-il judicieux, par exemple, de représenter la propriété de langue d’un morceau de texte par cette même propriété insérée dans chacun de ses textèmes ? Il faut encore une fois séparer les considérations théoriques et implémentationnelles. Il est évident qu’une implémentation qui suive une telle approche à la lettre serait extrêmement sous-optimale en termes d’espace de stockage utilisé, mais pour le moment nous écartons ces considérations pratiques afin de nous concentrer sur les problèmes de modélisation. D’un point de vue sémantique, une telle représentation n’est pas forcément valide. Parler d’une propriété, disons, de langue d’un signe est légitime lorsqu’il s’agit d’un logogramme chinois jouant le rôle linguistique de morphème, et nettement moins lorsqu’il s’agit d’une lettre latine. De même, l’association d’un URI à une chaîne de texte à travers une propriété hyperlien n’est pas équivalent à l’association du même URI à chacun des signes séparément. Par contre, lorsqu’une seule couleur est associée à l’intégralité du texte d’un paragraphe, on peut très bien considérer que la même propriété s’attache à chacun des signes individuels. La différence conceptuelle entre ces trois exemples est que la propriété de couleur réalise une relation unaire, alors que la langue, l’hyperlien ou par exemple la propriété de crénage mettent en relation plusieurs textèmes. Lorsque l’on associe la propriété de langue française au mot « bon », ce ne sont pas les trois lettres individuelles qui possèdent cette propriété mais leur relation, dans cet ordre précis. Il s’ensuit que notre modèle — qui définit le texte comme une chaîne de textèmes et le textème comme étant un ensemble de propriétés unaires — ne possède pas la puissance sémantique nécessaire pour exprimer des relations d’arités supérieures à l’unité. Ces relations doivent donc être considérées comme contextuelles. Néanmoins, du point de vue de l’interfaçage entre la chaîne de textèmes et Mouvement son utilisateur — qu’il s’agisse d’un être humain ou d’une application —, il est de la propriété entre tout à fait envisageable, et même souhaitable, que certaines propriétés contex- le contexte et le textème tuelles macroscopiques soient accessibles comme s’il s’agissait de propriétés de textème. D’autre part, lorsque tous les textèmes d’une chaîne partagent une même propriété (par exemple, tous les signes ont la même couleur), il est également souhaitable que celle-ci puisse être déplacée depuis les textèmes individuels vers un « niveau contextuel » supérieur. Les opérations de décontextualisation et de contextualisation (resp.) que Opérations nous venons de décrire sont parmi les opérations de base du raisonnement équivalentes dans la RC contextuel dans le cadre de l’intelligence artificielle : elles sont également appelées pop et push [15] ou entering et leaving the context [46]. La décontextualisation peut également être considérée comme une forme d’héritage entre le contexte et le textème. 131 FIG. 2.9 – Le contexte macroscopique se crée à partir de propriétés de chaînes de signes. Le contexte tc(3) est un ensemble de couples clé-valeur, tout comme le textème (t(3) ), et s’associe, dans T4 , à des chaînes de textèmes qui deviennent ainsi contextuelles. REPRÉSENTATION DU CONTEXTE MACROSCOPIQUE DANS LE CADRE FORMEL À STRATES Nous allons procéder à une tentative de formalisation du contexte macroscopique dans notre cadre de modélisation à strates : il s’agit d’y situer les propriétés contextuelles, propriétés qui sont donc associées à des chaînes de texte. Tout d’abord, nous avons besoin d’une représentation formelle de la Chaîne de signes chaîne de signes ainsi que de la chaîne de textèmes. et chaîne de textèmes Comme nous avons pu voir (p. 96), la chaîne de signes est un élément de la strate T0 , plus précisément un tuple n-aire de signes pour une chaîne de longueur n. La chaîne de textèmes, également en tant que tuple n-aire, doit se situer dans la strate directement supérieure à T3 (la strate des textèmes individuels), c’est-à-dire dans T4 . Par conséquent, nous avons le choix de situer les propriétés contextuelles soit au niveau T1 , côte-à-côte avec les propriétés de textème, soit à un niveau T5 nouvellement introduit. La conséquence du premier choix est que le contexe devient un élément de T3 , de manière analogue au textème (fig. 2.9), alors que dans le dernier cas le contexte se construit sur la base de la chaîne de textèmes et devient ainsi un élément de T7 (fig. 2.10). 132 FIG. 2.10 – Ici, le contexte ne se construit pas à travers la description de chaînes de signes de T0 , plutôt, les propriétés contextuelles s’associent directement aux chaînes de textèmes. 133 Notre choix parmi les deux façons de représenter l’information — dont l’une est proche du monde observé (T0 ) et l’autre se trouve dans les strates supérieures — témoigne de la vision fondamentale que l’on adopte lorsque l’on modélise un phénomène, dans notre cas, la contextualité. En choisissant de situer les propriétés contextuelles dans T1 , on exprime le fait que celles-ci se dérivent de nos observations de « textes réels ». Ainsi, les propriétés contextuelles deviennent en quelque sorte la généralisation de la propriété de textème : une propriété de textème est une propriété contextuelle qui réfère à un seul signe. Pour suivre la notation de la figure 2.9, t(3)i est un ensemble de couples clévaleur de propriétés de signes individuels, alors que tc(3)i est un ensemble de couples clé-valeur de propriétés de chaînes de signes. En revanche, les propriétés contextuelles de la strate T5 (fig. 2.10) s’associent directement aux chaînes de textèmes, qui sont des entités du modèle et non des entités observées. Ce sont par conséquent des informations abstraites que nous, en tant que concepteurs, ajoutons au modèle, sans pour autant que celles-ci soient forcément dérivées du « monde réel ». Philosophiquement parlant, on peut dire que le contexte de T3 se dérive de nos observations représentées par les éléments de T0 , ce qui relève d’une approche « de bas en haut » ou empiriste, alors que le contexte représenté dans les strates supérieures de T5 , T6 et T7 exprime des informations et des connaissances a priori existantes, ce qui relève d’une approche « de haut en bas » ou idéaliste. Il n’est bien évidemment pas question de devoir choisir à ce moment, de manière exclusive, une approche parmi ces deux. Ce qui paraît plus pertinent est de considérer le contexte de T3 comme constitué de propriétés en quelque sorte « naturelles » du texte (e.g., langue), et le contexte de T7 comme propre au modèle (e.g., règles de substitution contextuelles d’une fonte OpenType, relations de dépendance entre textèmes adjacents). D’ailleurs, l’idée selon laquelle les propriétés de textème sont généralisables vers les propriétés contextuelles nous permet de concevoir un modèle de texte alternatif qui ne distingue plus entre ces deux : les propriétés « dans » et « hors » de la boîte deviennent le même concept, car c’est la boîte même — le textème — qui cesse d’exister. Une telle approche a des avantages et des inconvénients par rapport au modèle en textèmes (dont nous verrons quelques-uns dans la section suivante). Ce modèle alternatif sera brièvement esquissé dans le chapitre terminal de cette thèse. 2.6 LE CONTEXTE D’USAGE Nous continuons la discussion des différents effets contextuels par le contexte d’usage. Si la notion de contexte est très difficile à définir dans sa généralité, il n’en est pas autrement pour celle d’usage, un concept vaste et Ce que l’on entend général17 . Lorsque l’on parle d’usages textuels, on réfère très probablement par usage à une gamme restreinte d’opérations qui visent certains aspects du texte. Selon cette interprétation, un usage particulier correspond à un sous-ensemble parmi toutes les opérations textuelles possibles, ces opérations ne concernant 17 De ce point de vue, parler de « contexte d’usage » ne fait très probablement qu’empirer la situation... 134 en général qu’un sous-ensemble de propriétés textuelles. Remarquons que cette interprétation est cohérente avec celle anoncée en page 77 en rapport avec notre définition du texte brut. Pour situer le contexte d’usage dans notre cadre en strates, il suffit de considérer une opération textuelle comme une fonction texte 7→ texte, le texte étant considéré comme une chaîne de textèmes. (Il est tout à fait possible que le contexte macroscopique soit considéré comme faisant partie intégrante du texte.) Puisqu’une fonction est une relation applicative et puisque la chaîne de textèmes est un élément de la strate T4 , on arrive par conséquent à situer l’usage (un ensemble de fonctions) au sein de la strate T6 . Une fonction textuelle ne s’intéressera en général pas à l’intégralité des propriétés au sein des textèmes. À chaque fonction f de l’usage U (f ∈ ext(U )) correspond donc un ensemble de clés de propriété. Par exemple, une fonction de crénage — qui calcule un déplacement horizontal pour un couple de glyphes identifiés par leurs indices respectives venant d’une fonte donnée — a comme catégorie fonctionnelle correspondante l’ensemble {fonte, indice de glyphe, dx}. L’union des ensembles de clés forme une catégorie de clés (élément de T3 ) qui peut être considérée comme une catégorie fonctionnelle. En redescendant dans l’hiérarchie des strates, on observe que l’extension de la catégorie fonctionnelle correspondant à l’usage « découpe » dans T2 un sous-ensemble de clés de propriété, dont l’extension est un sous-ensemble de propriétés dans T1 , et enfin un sous-ensemble de signes dans T0 (fig. 2.11). Il faut noter que lorsque nous parlons de l’extension d’un ensemble de relations, nous comprenons ici par cela l’union des extensions des relations individuelles : ext({t(3)1 , t(3)2 , ..., t(3)n) }) = ext(t(3)1 ) ∪ ext(t(3)2 ) ∪ ... ∪ ext(t(3)n ) Un contexte d’usage permet donc d’adopter un point de vue, une vision sélective du texte en textèmes : il filtre les propriétés y présentes, ainsi réduisant la description des signes individuels à leurs propriétés pertinentes dans le contexte d’usage. Les clés pertinentes dans un contexte d’usage {t(3),1 , ..., t(3),n } sont les éléments de ext({t(3),1 , ..., t(3),n }), les propriétés pertinentes sont les éléments de ext(ext({t(3),1 , ..., t(3),n })), et les signes pertinents sont ext(ext(ext({t(3),1 , ..., t(3),n }))). Pour exprimer de manière plus formelle ce que nous entendons par le filtrage d’un textème ou d’un texte, nous proposons la définition suivante. DÉFINITION 11 (FILTRAGE DE TEXTÈME SELON UN CONTEXTE D’USAGE) Soit t(3) un textème avec n propriétés : t(3) = n n [ i=1 o (tcléi (2) , tvaleuri (1) ) Soit I l’ensemble de clés présentes dans le textème : I= n n [ tcléi (2) i=1 135 o Le contexte d’usage au sein du cadre en strates Usage et catégorie fonctionnelle FIG. 2.11 – La catégorie fonctionnelle correspondant au contexte d’usage de cet exemple est la catégorie « graphique ». L’extension de celle-ci comprend les clés de propriété pertinentes dans ce contexte, et ainsi de suite, jusqu’au niveau T0 . Dans ce contexte d’usage particulier, les signes ne sont discernables que par quatre propriétés (rouge, noire, maigre, x-gras). Soit U un contexte d’usage avec la catégorie fonctionnelle UCF . Le filtrage du textème t(3) selon le contexte d’usage U est la restriction du textème au domaine UCF ∩I. (Nous considérons ici le textème comme une relation binaire entre clés et valeurs dans cet ordre.) Le textème filtré t̂(3) peut également s’exprimer ainsi : n o [ (tcléj (2) , tvaleurj (1) ) t̂(3) = ∀tcléj (2) ∈I∩UCF Par exemple, les textèmes de la première ligne de la figure 2.12, p. 138 peuvent être considérés comme le résultat obtenu après un filtrage des textèmes correspondants en seconde ligne selon un contexte d’usage dont la caFiltrage d’un texte tégorie fonctionnelle est UCF = {letter, case, hyph}. On peut ainsi parler du filtrage d’un texte : il s’agit du filtrage de chacun de ses textèmes individuels. Filtrage du contexte Remarquons cependant que l’on peut permettre à la catégorie fonctionnelle d’inclure non seulement des clés de propriété de textème (dont les valeurs sont des relations unaires) mais également des clés de propriété contextuelles 136 (dont les valeurs sont des relations d’arités supérieures) lorsque celles-ci sont considérées comme en fig. 2.9 (p. 132). Ainsi, le filtrage d’un texte selon un contexte d’usage est capable de filtrer les deux types de propriétés en même temps. 2.6.1 L E CHANGEMENT DE CONTEXTE D ’ USAGE Un exemple de changement d’usage textuel auquel nous nous sommes particulièrement intéressés arrive lors de l’opération de formatage. Dans le modèle caractère-glyphe, celle-ci consiste, entre autres, à passer de la représentation d’échange en caractères à la représentation finale en glyphes. Le passage dans le sens inverse, des glyphes aux caractères, est également une opération très fréquente. Nous avons déjà présenté dans les grandes lignes la différence principale à cet égard entre le modèle de texte caractère-glyphe et le modèle en textèmes : dans ce dernier, le changement s’effectue à l’intérieur des textèmes. L’ajout et la suppression de propriétés font partie des opérations élémentaires sur une chaîne de textèmes. La première, opération additive, peut être interprétée comme une restriction de la classe de signes représentés par le textème en question, alors que la dernière, opération soustractive, comme l’élargissement de la même classe. L’opération de formatage comprend un changement d’usage vers une catégorie de propriétés graphiques. Si l’on voulait simuler le passage de la chaîne de caractères à la chaîne de glyphes à l’aide d’une chaîne de textèmes, ceci pourrait se faire d’abord par le calcul et l’ajout des propriétés correspondant à la catégorie « glyphe », puis par la suppression (par filtrage) des propriétés correspondant à la catégorie « caractère », à l’exception des propriétés communes aux deux ensembles, s’il en existe. Cependant, cette dernière opération de suppression irait à l’encontre de l’idée fondamentale de notre modèle qui permet et encourage même l’accumulation de propriétés de différents usages au sein des textèmes. On a d’autant plus d’intérêt à garder dans les textèmes les propriétés correspondant à plusieurs usages qu’on facilite ainsi le retour aux usages précédents ; en revanche, dans le modèle caractère-glyphe le retour aux caractères est une opération souvent difficile. Dans le modèle de texte en textèmes, nous considérons donc le formatage comme un enrichissement des textèmes par l’ajout de propriétés graphiques (voir figure 2.12). Et puisque la fonction de formatage est une fonction additive, aucune information du texte d’origine n’est perdue lors de son application. Autrement dit, dans le contexte d’un usage non concerné par la présentation du texte (par exemple, la recherche d’un mot), le texte reste équivalent à son état d’avant le formatage puisque les propriétés correspondant à cet usage n’ont pas changé. (Dans l’exemple de la figure 2.12 il s’agit des propriétés letter, case et hyph.) Prenons maintenant l’exemple d’un usage textuel courant, le copier-coller, sur un document formaté de type PDF. Le format PDF adopte le modèle de texte caractère-glyphe : comme déjà présenté en section 1.7.3, un texte PDF est un texte en glyphes auquel le texte équivalent en caractères, en partie ou dans son intégralité, peut éventuellement être associé. Cette association peut 137 Le formatage relève de changement d’usage Ajout et suppression de propriétés Formatage = enrichissement des textèmes Copier-coller à partir du PDF letter = s case = upper letter = s case = upper font = Times size = 10pt glyphID = 20 dx = 0 dy = 0 letter = a case = lower hyph = yes letter = l case = lower letter = u case = lower letter = a case = lower hyph = yes font = Times size = 10pt glyphID = 28 dx = 8.8pt dy = 0 letter = l case = lower font = Times size = 10pt glyphID = 38 dx = 8pt dy = 0 letter = u case = lower font = Times size = 10pt glyphID = 47 dx = 5.6pt dy = 0 letter = t case = lower letter = t case = lower font = Times size = 10pt glyphID = 46 dx = 8pt dy = 0 FIG. 2.12 – Dans cet exemple hypothétique, le texte non-formaté est décrit par trois propriétés seulement : lettre, casse et point de césure potentiel. Après formatage, les textèmes ont été enrichis par des propriétés visuelles : fonte, corps, identifiant de glyphe, déplacements horizontal et vertical du glyphe par rapport au glyphe précédent. Le formatage consiste donc à enrichir les textèmes avec de nouvelles propriétés dans le cadre du même modèle de texte. se faire au niveau des glyphes individuels mais en théorie également à un niveau plus haut (séquences de glyphes, mots, etc.). Lors de la sélection et la copie d’un morceau de texte dans le presse-papiers, une conversion glyphescaractères est effectuée par le logiciel Adobe Acrobat. Cette conversion est triviale si les associations glyphe-caractère sont explicitement définies dans le document PDF ; le cas échéant, Acrobat tente de déduire les caractères à partir des noms de glyphes. C’est donc toujours le texte en caractères Unicode — la représentation d’échange — et non le texte en glyphes qui sera copié. Acrobat dépose également dans le presse-papiers une version formatée du texte copié, en format RTF : il s’agit, rappelons-nous, d’un format en caractères où les informations présentationnelles sont représentées par des balises. Le principe du presse-papiers est donc que le logiciel de source y dépose le texte dans autant de formats qu’il y a d’usages prévus, et les logiciels de destination — chacun représentant un usage particulier — choisissent le format qui leur convient le mieux. Copier-coller L’opération de copier-coller s’effectue de manière différente lorsqu’il s’agit d’un document de texte en textèmes (pourvu bien sûr qu’aussi bien le logiciel de source que en textèmes celui de destination soit compatible avec ce modèle). Transférer du texte à partir d’une application vers une autre relève d’un changement de contexte d’usage. Puisque le logiciel de source ne connaît a priori pas l’usage que subira le texte copié, il dépose dans le presse-papiers des textèmes dans la forme la plus riche (avec le plus de propriétés que possible) dont il dispose. Le logiciel de destination, à son tour, ne s’en intéressera qu’aux propriétés qui correspondent aux usages qui le concernent ; par conséquent, lors du coller, un filtrage est effectué sur le texte selon l’usage en question, éventuellement combinée avec la suppression effective des propriétés non concernées. 138 2.6.2 CHANGEMENTS D’UNITÉ PERTINENTE Il faut admettre que la simplicité et l’élégance que nous avons revendiquées pour notre modèle à propos des changements d’usage se doit en partie à nos exemples choisis intentionnellement de manière à retarder jusqu’ici l’examen de certains aspects plus complexes du modèle. Ainsi, nous n’avons pas encore examiné en détail comment notre modèle gère les situations qui se traduisent dans le modèle caractère-glyphe par une correspondance un-àmultiple, multiple-à-un ou multiple-à-multiple entre caractères et glyphes. Ces cas sont pourtant fréquents : – ligatures (correspondance multiple-à-un) ; – lettres accentuées (un-à-multiple, multiple-à-un ou multiple-à-multiple) ; – décomposition graphique du signe en traits ou en composants de plus bas niveau (un-à-multiple) ; – réordonnancement des glyphes par rapport aux caractères. En même temps, le fait que notre modèle se fixe l’objectif de servir un Le choix de l’unité grand nombre d’usages divers, à l’aide de la même chaîne textuelle, pré- pertinente est fonction suppose le choix a priori des unités pertinentes de chaque écriture, de sorte de l’usage que celles-ci correspondent aux textèmes individuels. Cependant, puisque ce choix d’unité pertinente se fait forcément en fonction d’un ou de plusieurs usages donnés, il est possible qu’il ne soit pas approprié à certains autres usages — les exemples cités ci-dessus en sont les témoins. De ce point de vue, la structure bicamérale du modèle caractère-glyphe s’adapte plus facilement à de telles situations, à condition que l’on ne sorte pas du cadre circonscrit par les deux usages « typographique » (pour la représentation finale) et « généraliste » (pour la représentation d’échange). Dans notre modèle, le textème est la forme unique de l’unité textuelle, et en tant que telle, il s’aligne inévitablement avec une division particulière de l’écriture donnée ; en d’autres termes, il présuppose la préférence d’un usage particulier à d’autres à travers la bijection entre l’unité que représente le textème et l’unité pertinente correspondant à cet usage. Vu d’un angle implémentationnel, cela signifie que les correspondances de type m-à-n entre les unités pertinentes de deux usages peuvent se résoudre essentiellement de deux manières : par l’inclusion de plusieurs éléments textuels au sein du même textème ou par la répartition de l’information parmi plusieurs textèmes (voir fig. 2.13). Strictement parlant, aucun de ces deux types de solutions n’est conforme à notre modèle initial qui suppose que chaque propriété d’un textème décrit le même élément textuel. De quelque sorte, les solutions que nous allons présenter doivent être considérés comme différentes extensions de notre modèle, chacune ayant ses propres avantages et inconvénients pratiques et dont l’approche à choisir doit être décidée cas par cas. PLUSIEURS ÉLÉMENTS TEXTUELS DANS LE MÊME TEXTÈME Nous avons déjà montré des exemples où un textème regroupait plusieurs éléments textuels, en particulier dans le cas des écritures logographiques et du hangûl. Lorsque le logogramme chinois ou la syllabe coréenne sont choisis comme unités pertinentes correspondant au textème — ce qui est un choix intuitif — alors leurs composants de plus bas niveau doivent se représenter 139 FIG. 2.13 – Lorsqu’il existe une correspondance m-à-n entre unités textuelles pertinentes de deux usages, la modélisation en textèmes s’aligne inévitablement à l’une des deux suites de signes. comme propriétés de ceux-ci. Une situation similaire est envisageable pour la modélisation graphique de l’écriture arabe : – si les points et les lettres de base sont représentés par des glyphes séparés ; – ou alternativement, si les lettres de base sont elles-mêmes assemblées à partir de traits élémentaires. Textèmes imbriqués Étant donné que chacun des composants (glyphes, caractères, etc.) contenus dans le même textème possède un nombre de propriétés (par exemple, un trait élémentaire peut avoir sa propre position, couleur, taille, etc.), il est inévitable de considérer chaque composant comme un textème à part entier, imbriqué dans le textème de niveau supérieur, un fait auquel nous avons déjà fait allusion par la figure 2.6 (p. 118). Notre modèle théorique n’a pas prévu cette éventualité. D’autre part, d’un point de vue d’implémentation informatique, rien n’empêche l’organisation des propriétés dans un arbre à deux ou à plusieurs niveaux, où la valeur de propriété héberge des sous-propriétés18 . Difficultés pratiques Cependant, du point de vue de certains usages le texte contenant de telles propriétés imbriquées cesse d’être — du moins en pratique — une chaîne unidimensionnelle car il devient nécessaire de « descendre » dans les arbres de propriétés des textèmes afin de parcourir les sous-chaînes. On peut donc conclure que généralement l’inclusion de multiples éléments textuels au sein des textèmes rend le modèle plus complexe, en théorie et en pratique. RÉPARTITION DES PROPRIÉTÉS ENTRE TEXTÈMES ET TEXTÈMES « VIRTUELS » Une approche alternative au problème précédent est l’introduction de nouveaux textèmes dans la chaîne dans le but de suivre un principe de simplicité de n’avoir qu’un seul élément textuel par textème. Les deux exemples suivants illustrent deux solutions légèrement différentes : script = latin letter = é glyph = e script = latin glyph = ´ 18 Si nécessaire, l’arbre peut même être aplati à travers un nommage pertinent des clés de propriété, mais ceci n’est qu’une astuce implémentationnelle qui ne modifie pas réellement la structure logique à l’intérieur du textème, qui reste arborescente. 140 script = korean unicode = U+AC10 glyph = script = korean onset = lat_equiv = k script = korean peak = lat_equiv = a script = korean coda = lat_equiv = m Dans la première ligne il s’agit d’une lettre « é » dont le glyphe est assemblé à partir de deux composants, notamment le glyphe de base et le glyphe d’accent (nous avons omis ici les diverses propriétés de fonte et de positionnement). Le glyphe de base est inclus dans le textème d’origine contenant la lettre « é » alors que l’accent est inclus dans un textème inséré dans l’unique but de contenir celui-ci. Il faut avouer que du point de vue de notre modèle théorique, cette solution n’a pas de sens : différentes propriétés du premier textème réfèrent à différents signes (une lettre « é » et un glyphe « e »). Dans la seconde ligne, aucune information concernant les composants alphabétiques de la syllabe coréenne n’est incluse dans le textème d’origine : plutôt, chacun des trois composants reçoit son textème dédié. Cette solution est plus « propre » vis-à-vis de notre modèle car elle garde la cohérence à l’intérieur des textèmes. En réalité, la cohérence intra-textémique est assurée au détriment de la cohérence inter-textémique car on observe quatre éléments textuels se succéder alors que logiquement les trois derniers sont subordonnés au premier. Nous avons donc déplacé la complexité du niveau intra-textémique au niveau inter-textémique. En reprenant l’exemple de la lettre « é », que se passe-t-il lorsque le texte formaté est soumis à un usage qui n’est concerné que par la propriété lettre des textèmes ? Après un filtrage effectuée sur la chaîne précédente on obtient le résultat suivant : letter = é Le textème introduit lors du formatage devient pour le nouvel usage un textème vide. En tant que tel, il devra forcément être considéré comme une « boîte Textème vide noire » du point de vue du nouvel usage qui ne sait interpréter que les propriétés qui ont participé au filtrage. C’est un artefact gênant au milieu de la chaîne que l’usage en question ne peut qu’éviter. Alternativement, le changement d’usage peut entraîner non pas le filtrage du texte par l’acte d’« ignorer » le reste des propriétés mais plutôt leur suppression. Ainsi on perd les informations ajoutées lors des usages précédents mais en même temps on se débarrasse des textèmes vides qui peuvent également être supprimés automatiquement. Ce processus s’apparente à la normalisation des arbres XML où les nœuds textuels vides sont supprimés. On a considéré cette particularité des nœuds textuels XML comme une faiblesse du modèle. Un deuxième problème concernant l’insertion de nouveaux textèmes, lié Textèmes liés au premier, est la relation qui se met en place implicitement entre le nouveau textème et son « parent ». Comme nous avons pu voir, les trois textèmes alphabétiques n’existent pas indépendamment de la syllabe coréenne qu’ils suivent ; bien au contraire, ils décrivent le même signe de manière différente. Si, par exemple, la syllabe en question est supprimée du texte, les textèmes alphabétiques doivent également être supprimés. Pour reprendre la métaphore de la boîte introduite à propos du phénomène de la contextualité (p. 128), 141 par la répartition des propriétés liées aux composants du même signe et/ou la création de nouveaux textèmes, nous avons contextualisé la complexité en la déplaçant depuis l’intérieur de la boîte du textème à l’extérieur, qui se manifestent désormais à travers des « liens invisibles » connectant les textèmes. Ces liens restent invisibles jusqu’au moment où un mécanisme d’indication et de gestion des relations entre textèmes ne se met en place. Sans aucune doute, un tel mécanisme serait décrit par des relations se situant dans les strates T4 à T7 dans notre cadre de modélisaton, en forme de propriétés contextuelles qui réfèrent à des chaînes de textèmes (voir fig. 2.10, p. 133). Nous reviendrons prochainement à cette idée dans la section 2.7 qui porte sur la notion de dépendance. LIGATURES Nos deux chaînes de textèmes précédentes illustrent l’association de plusieurs glyphes ou composants à un seul signe. Le cas contraire est peut-être encore plus fréquent : la ligature, entre autres, est par définition un glyphe unique qui représente plusieurs signes d’écriture graphiquement liés. Ainsi, le mot « affiné » est composé de six lettres mais seulement de quatre glyphes, dans le cas où la fonte employée contient un glyphe « ffi ». Encore une fois, la correspondance multiple-à-un peut être représentée de plusieurs manières : script = latin letter_1 = f letter_2 = f letter_3 = i glyph = ffi Cette solution suppose que l’unité pertinente choisie pour le texte est le glyphe : les trois textèmes initials correspondant aux trois lettres sont remplacés par un seul textème de ligature. Cette solution recourt à la référence vers plusieurs signes dans le même textème, ce qui entraîne encore une fois le besoin d’imbriquer des textèmes (ceci n’est pas mis en évidence par notre exemple). De plus, elle favorise un choix d’unité pertinente dont l’utilité se limite à un contexte d’usage présentationnel. script = latin letter = f glyph = ffi script = latin letter = f script = latin letter = i Ici, on laisse intacte la chaîne de textèmes lors du formatage, ce qui est souhaitable du point de vue de la généralité de la représentation. En revanche, elle est « impropre » d’un point de vue de modélisation car son premier textème réfère à plusieurs signes à la fois : une fausse relation sémantique est établie entre la lettre « f » et le glyphe « ffi ». En effet, examiné séparément, le premier textème, dû à ses propriétés contradictoires, ne représente aucun signe réel. script = latin letter = f script = latin letter = f script = latin letter = i 142 script = latin glyph = ffi Cette troisième solution arrive à garder la propreté sémantique et la simplicité des textèmes individuels, tout en restant cohérente avec le modèle théorique ; par contre, elle ne laisse pas intacte la chaîne : aussi bien un filtrage linguistique qu’un filtrage typographique de la chaîne crée des textèmes « virtuels » dans le sens où ceux-ci ne pourront être identifiés en tant qu’éléments textuels « classiques » (lettres, caractères, signes typographiques, glyphes, etc.). De plus, tout comme dans l’exemple précédent, des relations implicites intertextémiques se mettent en place. RÉORDONNANCEMENT Le phénomène de réordonnancement de glyphes, fréquemment mentionné à propos des écritures d’origine brahmique, n’est, en réalité, pas inhérent à ces écritures mais plutôt une conséquence de l’application de la modélisation typographique à celles-ci. Plus précisément, ce sont la méthode typographique de l’alignement linéaire des caractères mobiles combinée avec une définition phonétique (et non syllabique) des signes élémentaires qui font que la disposition spéciale de certains signes typographiques exigée par l’écriture nécessite une opération de réordonnancement de glyphes lors du formatage. Si, en revanche, on imaginait un modèle typographique capable de définir des déplacements en contresens du sens de l’écriture ou, alternativement, un découpage syllabique et non phonétique, alors le réordonnancement ne serait plus nécessaire. En se basant sur l’exemple du dévanagari, Richard Sproat [58, p. 46] conclut que la Small Linguistic Unit (l’unité pertinente linguistique) de cette écriture est la syllabe orthographique (c’est-à-dire le cluster consonantique et la voyelle) car les réordonnancements (les changements de la direction de concaténation) se limitent à l’intérieur de telles syllabes. Le cas est analogue à celui de l’écriture coréenne où la composition bidimensionnelle se limite à l’intérieur de la syllabe. En page 119 nous avons déjà présenté une méthode d’application du modèle de textème à l’écriture hangûl. Inspirés par cette méthode, nous pouvons prendre la syllabe comme unité pertinente correspondant au textème. Celui-ci contiendra, par conséquent, la liste de graphèmes (qui correspondent aux caractères Unicode) et la liste de glyphes de la syllabe : grapheme_1 = grapheme_2 = grapheme_3 = grapheme_4 = glyph_1 = glyph_2 = glyph_3 = (ra) (reph) (ta) (i) Avec cette solution, nous n’avons pas évité le réordonnancement des glyphes par rapport aux graphèmes, mais nous avons restreint l’opération à l’intérieur du textème. L’avantage de cette approche est que la succession des textèmes suit l’ordre phonétique, inchangé à travers les changements d’usage. Son inconvénient est que les correspondances graphème-glyphe ne sont plus assurées au niveau intra-syllabique, à moins que celles-ci ne soient explicitement indiquées à l’aide de propriétés spéciales. 143 Le besoin de réordonner est fonction de notre choix de modèle La solution alternative consiste à insérer de nouveaux textèmes dans la chaîne lors du formatage (nous avons abrégé « graphème » par « gr ») : gr = Liaisons entre textèmes (ra) gr = (reph) gr = (ta) glyph = glyph = glyph = gr = (i) Cette chaîne comporte des textèmes sans graphème et des textèmes sans glyphe ; par conséquent, son filtrage par rapport à un contexte d’usage spécifique donnera des textèmes vides. De plus, les correspondances entre graphèmes et textèmes, à l’exception de la consonne , ne sont pas indiquées explicitement. Ici encore, on doit considérer que ces textèmes sont « reliés » les uns aux autres car la modification du textème se référant au graphème entraîne forcément la modification du textème du glyphe correspondant. Ces relations devraient être préservées et prises en compte même si dans le cadre d’un usage particulier certains textèmes paraissent vides. Notons enfin que dans l’exemple qui intègre la syllabe entière au sein du même textème, les mêmes relations sont présentes, cette fois-ci en forme intratextémique. 2.6.3 CONCLUSIONS La conclusion à tirer de nos exemples précédents est que, paradoxalement, l’auto-adaptation aux différents usages est à la fois un point fort et un point faible du modèle en textèmes. D’une part, l’usage se reflète par les propriétés présentes dans les textèmes, librement modifiables. D’autre part, la considération du texte en tant que simple chaîne unidimensionnelle de textèmes auto-contenants apporte une certaine rigidité au modèle car elle impose une division a priori de l’écriture en unités pertinentes du point de vue d’un usage particulier. Lorsque la chaîne de textèmes se prête à deux usages qui ne partagent pas la même unité pertinente, alors le modèle se complexifie inévitablement. La complexification se manifeste soit à travers une structure arborescente de propriétés au sein du textème (lorsque pluiseurs signes y sont décrits), soit à travers l’apparition de « liens » ou de « dépendances » entre textèmes, relations dont la représentation explicite n’est encore une fois pas prévue par notre modèle. Le changement d’usage peut également introduire de nouveaux textèmes dans la chaîne dont l’existence est justifiée uniquement par ce nouvel usage, et qui devient textème vide suivant le filtrage du texte dans le but d’éliminer les propriétés liées à cet usage. La source de ces problèmes semble donc être la rigidité de la « boîte » qui entoure les propriétés : le textème. Le modèle simple consistant en une succession de boîtes isolées, chacun d’elles contenant un simple ensemble de couples clé-valeur, doit désormais céder sa place à un modèle plus complexe avec des propriétés en arborescence et avec des textèmes qui dépendent les uns des autres. Dans la section suivante nous souhaitons donner des éclaircissements sur ce que nous entendons par la complexité du modèle. Nous allons découvrir que la problématique des correspondances m-à-n est généralisable à travers la notion de dépendance. Il s’agit de nouveau d’une forme de contextualité, qui est de plus la cause principale et inévitable de nombreuses difficultés liées à la modélisation de texte. 144 Une question qui se pose à ce point est, cette complexification du problème ne pourrait-elle pas être évitée en remplaçant le textème par une unité textuelle plus souple qui s’adapte plus facilement au phénomène de changement d’unité pertinente ? En effet, de tels modèles sont envisageables, même si au détriment de l’allure simple et intuitive qui est propre au textème. On reviendra à cette possibilité dans le chapitre terminal de la thèse. 2.7 DÉPENDANCES AU SEIN DU TEXTE EN TEXTÈMES En traitant de la problématique des correspondances m-à-n au sein de la chaîne de textèmes, introduites par un changement d’usage, nous avons constaté le besoin de prendre en compte certains types de relations qui se créent entre textèmes. Les exemples tels que la ligature « ffi » nous ont montré que les textèmes d’une chaîne ne se succèdent pas toujours en indépendance ; en d’autres termes, la modification, l’insertion ou la suppression d’un textème peut entraîner le besoin de modifier, supprimer ou insérer d’autres textèmes existants afin de maintenir la cohérence des données. Ce sont ces phénomènes de dépendance entre propriétés du même textème, de deux textèmes adjacents ou même de textèmes plus éloignés que nous allons examiner. Les dépendances et la cohérence de données sont des problèmes classiques et récurrents de la représentation des connaissances. Dans la théorie des bases de données, on les appelle dépendances fonctionnelles et on les prend en compte lors de la conception des modèles de données. Dans la modélisation objet, le principe d’encapsulation et les méthodes servent à assurer la cohérence des données membres. Dans les systèmes tels que RDF ou OWL, des règles de logique de description décrivent les catégories, les relations et les contraintes imposées aux données. Avant même de mettre en valeur l’importance de la notion de dépendance entre éléments textuels et d’expliquer ses conséquences pratiques sur l’usage et l’implémentation du modèle de texte en textèmes, nous allons commencer par l’examen de quelques exemples précis afin d’avoir une idée plus claire sur la nature et le fonctionnement des dépendances dans un contexte textuel. Ceci nous permettra ensuite de formaliser et de généraliser le problème ainsi que de comprendre son importance dans les usages textuels algorithmiques et interactifs. 2.7.1 Q UELQUES EXEMPLES DE DÉPENDANCES Reprenons l’exemple de la ligature « ffi » et examinons-le de plus près : script = latin lang = fr letter = f font = Times glyph = ffi script = latin lang = fr letter = f font = Times script = latin lang = fr letter = i font = Times La présence du glyphe de ligature « ffi » dans le premier textème est, bien entendu, la conséquence des trois lettres « f », « f » et « i » successives. La suppression ou la modification de ces trois propriétés, ou encore l’insertion d’un 145 Ligatures et dépendances nouveau textème entre les trois briserait la ligature et rendrait invalide la propriété glyph. On observe donc qu’il existe une dépendance entre la propriété glyph et les trois propriétés letter. Cependant, la composition de la ligature « ffi » dépend non seulement de la présence de la chaîne de trois lettres mais aussi d’autres conditions, parfois non représentées explicitement dans le texte : – que la langue courante soit le français et non le turc (puisque ce dernier ne permet pas la composition de ligatures de type « fi », dû au fait qu’en turc les lettres « i » avec et sans point sont des graphèmes distincts) ; – que les trois lettres soient composées en la même fonte, Times ; – que cette même fonte contienne un glyphe de ligature « ffi ». Dépendances entre L’existence de telles dépendances n’est pas restreinte aux textèmes adjatextèmes non-adjacents cents : imaginons le cas hypothétique19 où une diacritique, telle qu’un accent circonflexe, est ajoutée au premier « f ». Si cette diacritique est représentée par un textème à part, alors la chaîne devient script = latin lang = fr letter = f font = Times glyph = ffi script = latin lang = fr letter = ˆ font = Times glyph = ˆ script = latin lang = fr letter = f font = Times script = latin lang = fr letter = i font = Times où l’intercalation de l’accent ne devrait pas empêcher la composition de la ligature (pourvu que le logiciel de formatage soit capable de gérer les ligatures accentuées). Crénage Ces exemples laissent comprendre que l’existence de dépendances entre valeurs de propriété est un phénomène courant. L’exemple suivant à propos du crénage renforce la même observation : lang = fr letter = d font = Times glyph = d lang = fr letter = o font = Times glyph = o lang = fr letter = r font = Times glyph = r lang = fr letter = é font = Times glyph = é kern = −0.05em La propriété de crénage a été insérée dans le textème de la lettre « é » afin de faire rapprocher son glyphe à celui de la lettre précédente. La condition de présence de cette propriété est, bien évidemment, que les deux glyphes soient adjacents. Plus précisément : que les deux glyphes viennent de la même fonte Times et que le glyphe « é » succède directement au glyphe « r ». La propriété glyph, à son tour, est sans doute dépendante des propriétés letter et font ensemble, car c’est en connaissant le code de caractère (qui se déduit, supposons, de la propriété letter) et la fonte que l’identifiant de glyphe est calculé. Notation Bien que nous soyions encore redevables d’une définition formelle de la notion de dépendance, pour des raisons pratiques il nous est utile d’introduire dès maintenant une notation intuitive pour représenter les dépendances entre propriétés. Si la valeur b d’une clé de propriété φB dépend de la valeur a d’une clé de propriété φA , nous allons écrire (φA = a) → (φB = b). Ici, la notation intuitive (φA = a) dénote tout simplement le couple (tA(2) , ta(1) ) (et 19 Dans les textes arabes, par contre, la diacritisation de ligatures est un phénomène réel et même très courant dans les textes coraniques. 146 non une quelconque égalité de ces deux relations). Le choix de l’opérateur « → » a été inspiré par celui employé pour les dépendances fonctionnelles à propos des bases de données relationnelles, auxquelles nous reviendrons prochainement. Puisque les propriétés dépendantes peuvent se trouver dans deux textèmes différents, il sera utile de marquer pour chaque propriété l’indice du textème dans lequel elle se trouve : (φA (i) = a) → (φB (j) = b) signifiera que la propriété (tB(2) , tb(1) ) du textème j dépend de la propriété (tA(2) , ta(1) ) du textème i. À l’aide de la notation ci-introduite, reprenons les dépendances présentes dans le dernier exemple : (φletter (i) = é, φfont (i) = Times) → (φglyph (i) = é) (φglyph (i − 1) = r, φfont (i − 1) = Times, φglyph (i) = é, φfont (i) = Times) → → (φkern (i) = −0.05em) Lorsque la dépendance existe « invariablement » pour toutes les valeurs de la même clé de propriété, nous pourrons simplement écrire : (φletter (i), φfont (i)) → φglyph (i) (φglyph (i − 1), φfont (i − 1), φglyph (i), φfont (i)) → φkern (i) Jusqu’ici, toutes les propriétés en dépendance sont des propriétés présentationnelles, introduites lors du formatage. Bien entendu, la dépendance est un phénomène général qui ne se limite pas à ce seul usage. En reprenant le même exemple sans propriétés présentationnelles : lang = fr letter = d lang = fr letter = o hyph = true lang = fr letter = r lang = fr letter = é Cette fois-ci il s’agit d’un usage linguistique : nous avons inséré une propriété hyph = true qui autorise la césure du mot suivant le textème marqué. Cependant, le point de césure n’est pas une propriété de la lettre « o » mais du mot entier ; en d’autres termes, la propriété de césure dépend de toutes les quatre propriétés de lettre. Si l’on remplaçait la lettre « r » par un « u » dans le textème suivant pour obtenir « doué », cela rendrait invalide le marquage de césure. 2.7.2 D ÉPENDANCES DANS LES MODÈLES DE D ’U NICODE ET DE M-TEXT TEXTE Après ces exemples, il n’est pas surprenant que même le modèle Unicode Dépendances n’échappe pas au phénomène de dépendance. En section 1.8.8 nous avons dans les chaînes déjà montré que les caractères d’une chaîne Unicode entretiennent des rela- de caractères Unicode tions de différentes sortes, relations qui doivent être comprises et respectées aussi bien par les logiciels que par les utilisateurs travaillant directement sur du texte Unicode brut, afin de maintenir la validité de celui-ci. La dépendance entre unités textuelles n’est donc pas une particularité du modèle en textèmes. Quant à Unicode, à part la reconnaissance implicite du phénomène et l’interdiction normative de certaines combinaisons de caractères (comme 147 Le M-text reconnaît l’importance des dépendances Volatilité forte et faible les caractères combinants en début de chaîne), il n’offre aucun mécanisme d’indication de dépendance. À la connaissance de l’auteur, le modèle de texte de la bibliothèque m17n, le M-text (cf. p. 86), est le seul parmi les modèles de texte existants à reconnaître l’importance des dépendances entre propriétés textuelles et à entreprendre une forme de gestion automatique de dépendances. Ce n’est pas par hasard : puisque le M-text est un modèle ouvert dans le sens où il permet l’ajout de propriétés arbitraires au texte, il fait forcément face au même genre de problèmes que le modèle en textèmes. La solution fournie par m17n est une solution d’ingénieur, très simple mais cohérente. Il s’agit d’introduire des drapeaux associés aux propriétés (aux couples clé-valeur) qui contrôlent leur comportement. Les deux drapeaux concernés par les dépendances sont appelés volatilité faible et forte. Ils fonctionnent de la manière suivante : une propriété faiblement volatile disparaît automatiquement lorsqu’un caractère « dans sa proximité » est modifié, alors qu’une propriété fortement volatile disparaît lorsqu’un caractère ou n’importe quelle autre propriété est modifiée dans sa proximité. Il s’agit donc d’un mécanisme rudimentaire mais conservateur qui veille à supprimer les propriétés concernées au premier risque de dépendance potentiellement violée, sans pour autant vérifier si la violation a réellement eu lieu. Quant à la signification de « proximité », ce paramètre est géré en interne et dépend de l’opération en question (insertion, modification, suppression). Malgré la simplicité du mécanisme, nous pouvons en voir transparaître un nombre de choix conceptuels : – les drapeaux de volatilité s’associent aux instances de propriétés, c’està-dire aux éléments textuels, au lieu d’exister à un niveau schématique plus élevé, au niveau des clés ou des couples clé-valeur. (On ne parle pas de la volatilité de la propriété couleur ou couleur = rouge en général mais toujours en association à un élément particulier de la chaîne.) – L’incohérence est évitée par la suppression des propriétés volatiles. Le système ne vérifie jamais si une violation de dépendance a réellement eu lieu ou non. – Le paramètre de proximité est choisi non pas en fonction de la propriété volatile mais de l’opération entraînant sa suppression. Il sera intéressant de comparer ces solutions à celles que nous allons proposer suivant notre propre analyse de la problématique. 2.7.3 D ÉPENDANCES ET REPRÉSENTATION DES CONNAISSANCES Nous avons déjà fait allusion au fait que notre problème particulier est généralisable à la problématique de cohérence de données dans le cadre de la représentation des connaissances. Il serait donc judicieux d’examiner à ce point les différences entre les approches que prennent les divers systèmes de ce domaine. Nous allons également considérer la programmation orientée objets ainsi que la programmation intensionnelle : bien que celles-ci soient considérées comme des paradigmes de programmation plutôt que des systèmes de représentation des connaissances proprement dits, leur citation ici n’est guère déplacée car elles s’inspirent fortement de certains principes de 148 ces derniers. Il n’est pas surprenant que la notion de dépendance que nous sommes en train de définir soit similaire à celle de la dépendance fonctionnelle entre attributs dans le cadre de la théorie des bases de données. Tout d’abord, on constate une analogie évidente entre le textème avec ses propriétés et la ligne d’une table relationnelle et ses attributs ; de même, le texte en textèmes est analogue à une table dont les lignes sont ordonnées. Dans le cadre de la théorie des BD, la dépendance fonctionnelle sert à repérer un certain type de relation présente entre attributs d’un schéma relationnel dans un but de structuration optimale des données (e.g., éviter les redondances, et par ceci réduire la potentialité des incohérences). Dans la programmation orientée objet, les données membres définies dans les classes sont encapsulées afin d’interdire toute modification directe depuis l’extérieur de l’objet, pouvant causer leur incohérence. L’accès aux données est restreint : il se fait uniquement à travers un ensemble de méthodes bien définies qui se chargent, de façon algorithmique, de maintenir la cohérence des données. En programmation intensionnelle, toute expression est interprétée en fonction d’un contexte multidimensionnel où chaque dimension peut être représentée comme un couple clé-valeur. Il n’est pas surprenant que les dimensions de contexte puissent également être concernées par le phénomène de dépendance [66]. Les systèmes de représentation de ressources tels que RDF ou OWL sont basés sur les logiques de description. À travers la classification et la mise en relation des données (instances), mais aussi à travers des restrictions éventuelles imposées sur les instances et les relations (restrictions de domaine et/ou de portée, contraintes de cardinalité, propriétés telles que transitivité, etc.), des assertions logiques sont formulées (dont l’expressivité est réduite à un sousensemble de la logique de première ordre afin de maintenir la décidabilité). À l’aide d’un mécanisme d’inférence, ces assertions permettent ensuite de faire des déductions logiques sur les données aussi bien que de maintenir leur cohérence. Dans certains de ces exemples, le mécanisme de description et de résolution des dépendances fait partie intégrante du système de représentation des connaissances. La même chose ne peut pas être dite du textème qui reste, pour le moment, un simple conteneur de données. Faut-il envisager d’étendre le textème afin qu’il indique également les relations de dépendance que ses propriétés entretiennent entre elles ainsi qu’avec leur entourage ? Ou devrions-nous considérer la première comme information contextuelle, « hors de la boîte » ? Il n’est pas possible de répondre à ces questions avant que nous n’ayons pas défini et analysé en détail à la notion de dépendance. 2.7.4 Q UELQUES QUESTIONS FONDAMENTALES La raison fondamentale pour laquelle nous nous intéressons aux dépendances, hormis l’intérêt que présente le phénomène abstrait par soi-même, est le souhait d’éviter l’introduction de données contradictoires dans le texte, ou bien de pouvoir y appliquer des mesures correctives. Bref, le but est de 149 Dépendances fonctionnelles dans les BD Encapsulation Programmation intensionnelle Logiques de description maintenir la cohérence des données, que ce soit entre propriétés à l’intérieur d’un textème, entre textèmes différents ou même entre propriétés de textème et propriétés contextuelles. Pour ce faire, la première chose nécessaire est bien évidemment une bonne compréhension de ce que nous entendons par dépendance. Il ne suffit cependant pas d’en formuler une définition quelconque, nous devons également répondre à des questions telles que : – quelle est la raison de leur existence ? Sont-elles la conséquence de « lois » externes au modèle et a priori existantes ou trouvent-elles plutôt leur origine dans les opérations concrètes effectuées sur le texte ? – S’agit-il d’informations faisant partie intégrante du texte ? De relations présentes au niveau des instances de propriétés (comme dans le M-text), au niveau des couples clé-valeur, au niveau des clés, ou tous les cas sont possibles ? – Quelles sont les opérations élémentaires capables d’introduire une incohérence ? – Par quelles mesures préventives ou correctives peut-on empêcher les incohérences ? – Existe-t-il une solution générale et en même temps efficace à la gestion des dépendances, ou est-il préférable d’avoir des méthodes adaptées à chaque usage ? 2.7.5 D ÉFINITIONS ET ANALYSE THÉORIQUE DE LA NOTION DE DÉPENDANCE En général, nous pouvons affirmer que la dépendance est un type de relation, mais cette description en soi n’apporte pas grand chose à la compréhension du phénomène. Cependant, dès que nous essayons de caractériser cette relation — par la nature des entités qu’elle interconnecte, par ses propriétés intrinsèques —, nous nous heurtons à des questions moins évidentes à répondre. Dépendances Tout d’abord, quelles sont les entités qui entretiennent des relations de déentre classes pendance ? S’agit-il de clés de propriété, de couples clé-valeur ou d’instances ou entre instances de ces derniers ? On trouve facilement des exemples pour les deux premières éventualités : (φletter , φfont ) → φglyph (φlang = french) → (φscript = latin) où les propriétés φ peuvent tout aussi être des propriétés de textème (comme φglyph ) que des propriétés contextuelles (comme φlang ), d’autant plus que l’un peut à tout moment devenir l’autre grâce au mécanisme de contextualisationdécontextualisation. Certains systèmes de représentation des connaissances reconnaissent également la différence entre relations opérant au niveau des classes et au niveau des instances. La dépendance fonctionnelle dans le cadre des BD ne concerne, par définition, que les relations existant au niveau des attributs de schéma. Dans RDF, et en général dans les logiques de description, on distingue systématiquement entre « niveau classe » (T-box, informations terminologiques, RDF schéma) et « niveau instance » (A-box, informations sur les assertions, instances RDF). 150 Cependant, le problème est encore plus complexe : pour revenir aux exemples précédents, l’utilisateur peut malgré tout choisir d’employer un glyphe alternatif dans un textème précis, en contradiction avec la règle cmap venant de la fonte, ou d’écrire le français en katakana japonais, dans lesquels cas les dépendances sont annulées au niveau des instances. Dans ces cas, l’utilisateur a délibérément ignoré une restriction explicite et formelle (la table cmap) ou une convention implicite et informelle (le français s’écrit en latin) : il vient de créer le tout premier signe au monde écrit en japonais mais lu en français. Il n’est peut-être même pas au courant de la catastrophe qu’il a ainsi causé : à partir de ce moment historique, la dépendance français → latin ne sera plus jamais valable. On sent bien que ce raisonnement est, pour dire le moins, exagérée. Ce La dépendance : que nous avons voulu montrer est que donner une interprétation exacte de la observation empirique notion de dépendance est loin d’être évident. Tout d’abord, il faut élucider ou idée absolue ? la nature des observations exprimant une dépendance, telles que « le français s’écrit en latin ». À la base, nous avons le choix de les considérer soit comme des observations empiriques, soit comme des règles absolues formulées de manière abstraite. (Il s’agit donc encore une fois de l’opposition classique entre empirisme et idéalisme.) Dans le premier cas, nous cherchons les racines du phénomène de la dépendance dans l’ensemble T0 de notre modèle, qui représente le monde observé, et nous en retirons des règles : nous adoptons une approche de scientifique qui vise à décrire le monde. Dans le dernier cas, en revanche, l’origine de la dépendance est une idée, une méthode, un algorithme a priori existant : c’est l’approche de l’ingénieur qui établit lui-même les règles suivant lesquelles son système doit fonctionner. Bien que notre objectif principal dans cette thèse soit la conception de modèles de texte qui soient réalisables en pratique, ce qui présuppose un raisonnement d’ingénieur, nous tenterons dans un premier temps d’adopter un regard empirique et de définir et d’analyser la notion de dépendance en se basant sur la structure des strates inférieures de notre cadre de modélisation. Ceci nous permettra, entre autres, de voir sous quelles conditions pratiques il est possible de recourir à un raisonnement « scientifique » dans la description et la gestion des dépendances, et à partir de quel moment ce type de raisonnement doit céder sa place aux approches d’ingénierie. Car nous allons voir que, une fois de plus, plus nous essayons de résoudre les problèmes dans leur généralité, moins nos solutions deviennent efficaces. UNE DÉFINITION ENSEMBLISTE DE LA DÉPENDANCE RELATIONS ENTRE PROPRIÉTÉS DU MÊME TEXTÈME : La raison pour laquelle une dépendance telle que (φlang = french) → (φscipt = latin) est « valable » ou non doit être cherchée au niveau de la définition de l’univers de base : parmi tous les signes du monde, quels sont les signes « pertinents » du point de vue d’une dépendance particulière ? Car malgré le fait que la langue française a toujours été écrite en latin dans son histoire, il est presque certain que quelqu’un dans le monde a déjà tenté d’écrire le français à l’aide de lettres grecques, runiques, etc. Ces exceptions sontelles insignifiantes ou pertinentes, invalident-elles vraiment la dépendance français → latin ? 151 Cela dépend, encore une fois, de l’usage. Puisque nous visons la construction d’un modèle de texte général et global, il n’est pas envisageable en général d’interdire la création de textèmes où φlang = french et φscript = katakana. Par contre, il est tout à fait raisonnable d’imaginer un logiciel de PAO qui interdise cette sélection, et qui exclue également l’association d’un glyphe « B » à un caractère « A ». À la base, il s’agit de restreindre l’ensemble de signes, représenté par l’ensemble T0 , à un sous-ensemble « raisonnable » en taille et cohérent avec un certain nombre de conventions (telles que « le français s’écrit en latin, on n’écrit pas une lettre « A » par un glyphe qui ressemble à un « B », etc.). Notre ensemble T0 de base est donc choisi de manière qu’il soit pertinent par rapport à l’usage que nous faisons de notre texte. Les dépendances présentes dans notre texte seront toujours fonctions de ce choix. La question que nous nous posons est donc la suivante : avec un ensemble O ⊆ T0 de signes20 donné et leurs propriétés définies dans T1 , comment interpréter la relation de dépendance entre deux ou plusieurs propriétés, l’unique information que nous possédons étant les extensions respectives de celles-ci ? Dans un souci de simplicité, nous supposerons dans un premier temps que toutes les propriétés participant à la relation de dépendance réfèrent au même signe, en d’autres termes, nous nous intéresserons uniquement aux dépendances entre propriétés au sein du même textème. Définissons d’abord la notion d’incohérence entre propriétés d’un textème. (Nous entendons par propriété une relation unaire de T1 car pour le moment nous ne nous intéressons pas à sa clé.) DÉFINITION 12 (INCOHÉRENCE DE PROPRIÉTÉS) Les propriétés φ1 , φ2 , ..., φn ∈ T1 sont incohérentes entre elles si ext(φ1 ) ∩ ext(φ2 ) ∩ ... ∩ ext(φn ) = ∅ Par conséquent, si un textème contient des propriétés incohérentes, alors forcément il ne dénote aucun signe dans l’ensemble O ⊆ T0 , il « n’a pas de sens »21 . D’après cette définition, une seule propriété peut être « incohérente » en soi si son extension est vide (par exemple, φscript = Ööç). Nous procédons maintenant à une définition formelle de la notion de dépendance, l’idée étant celle déjà évoquée brièvement en section 2.4.4 : qu’une propriété φB dépend d’une propriété φA (nous écrirons : φA → φB ) si tous les signes caractérisés par φA sont forcément caractérisés par φB également (fig. 2.14 illustre le principe). En généralisant à un nombre quelconque n de propriétés : DÉFINITION 13 (DÉPENDANCE EXTENSIONNELLE) Soit n > 1, φn une propriété de T1 et {φ1 , ..., φn−1 } un ensemble de propriétés de T1 cohérentes entre elles. La propriété φn dépend de l’ensemble {φ1 , ..., φn−1 } si ext(φ1 ) ∩ ... ∩ ext(φn−1 ) ⊆ ext(φn ) Nous écrirons alors : {φ1 , ..., φn−1 } → φn , ou si n = 2, alors φ1 → φ2 . 20 Rappelons que T0 contient, par définition, non seulement des signes individuels (ensemble O) mais aussi des tuples (O2 , O3 , etc.). 21 Frege dirait : il a du sens mais il n’a pas de dénotation ! 152 FIG. 2.14 – À partir des intersections des ensembles dans T0 — qui sont les extensions des trois propriétés de T1 — la dépendance {FUTURA EXTRA BLACK, LETTRE A MAJUSCULE } → 28PT peut être déduite. (Cette dépendance n’est bien sûr valable que sur l’ensemble de signes très restreint de notre exemple.) La dépendance extensionnelle est donc une relation entre un ensemble de propriétés et la propriété dépendante. Quelques conséquences de la défini- Conséquences de la définition tion : 1. ({φA , φB } → φC ) 6⇒ (φA → φC ), ni φB → φC ; 2. l’opérateur « → » est réflexif car ext(φA ) ⊆ ext(φA ) ; 3. si ext(φA ) = ext(φB ) mais φA 6≡ φB (il s’agit de deux relations distinctes mais extensionnellement égales, ce qui est permis grâce à l’intensionnalité de T1 ), alors φA → φB et φB → φA ; 4. il est transitif : si φA → φB et φB → φC , alors ext(φA ) ⊆ ext(φB ) et ext(φB ) ⊆ ext(φC ), dont φA → φC est trivial ; 5. il n’est ni symétrique (trivial), ni antisymétrique (cf. (3)) ; par conséquent, ce n’est pas une relation d’ordre sur T1 ; 6. par contre, les propriétés et ensembles de propriétés extensionnellement égales forment des classes d’équivalence à cause de (2), (3) et (4). LA RELATION DE DÉPENDANCE EST FONCTIONNELLE Considérons maintenant l’ensemble de dépendances {φA1 , φB1 , ..., φM1 } → φN1 {φA2 , φB2 , ..., φM2 } → φN2 .. . {φAn , φBn , ..., φMn } → φNn 153 où chaque Ai (Bi , etc.) représente une valeur particulière appartenant à la clé de propriété A (B, etc). Il s’agit donc d’un ensemble de dépendances qui concernent les mêmes clés de propriété, par exemple : (φletter = F) → (φscript = latin) (φletter = G) → (φscript = latin) (φletter = ℵ) → (φscript = hebrew) (φletter = Ξ) → (φscript = greek) La dépendance extensionnelle est une relation fonctionnelle En considérant chaque dépendance individuelle comme un tuple (Ai , Bi , ..., Mi , Ni ), il est facile à vérifier que l’ensemble des tuples ainsi construit réalise une relation fonctionnelle dont le domaine est (∪{Ai }, ∪{Bi }, ..., ∪{Mi }) et la portée est ∪{Ni }. En effet, la non-fonctionnalité signifierait qu’il existe une suite de valeurs (Ak , Bk , ..., Mk ) de laquelle dépendent plusieurs valeurs Ni , ce qui contredit à notre supposition selon laquelle les extensions de deux valeurs de la même clé de propriété sont toujours disjoints, formulée en p. 101 : ext(Ni ) ∩ ext(Nj ) = ∅ tq. i 6= j (2.1) ext(Ak ) ∩ ... ∩ ext(Mk ) ⊆ ext(Ni ) (2.2) ext(Ak ) ∩ ... ∩ ext(Mk ) ⊆ ext(Nj ) (2.3) où (2.2) et (2.3) ensemble contredisent à (2.1). La relation fonctionnelle devient applicative lorsque chaque combinaison (Ai , Bi , ..., Mi ) de valeurs est couverte par une dépendance. C’est dans ce seul cas que nous avons droit d’écrire des règles telles que {φletter , φfont } → φglyph , comme nous l’avons fait dans la section précédente. Le fait que la relation de dépendance extensionnelle s’est avérée fonctionnelle est important car il s’agit d’une preuve rétroactive de la pertinence de notre définition d’origine, conçue de manière intuitive. INTÉRÊT PRATIQUE DE LA DÉFINITION EXTENSIONNELLE DE LA DÉPENDANCE L’analyse précédente nous a permis de comprendre et de formaliser une forme de dépendance que nous avons appelée dépendance extensionnelle, car elle découle des relations de compréhension entre les ensembles de signes qui correspondent aux propriétés. En d’autres termes, cette forme de dépendance est fonction de l’univers O ⊆ T0 de signes et de notre manière de les catégoriser. Du point de vue de l’utilité pratique de notre définition — si elle peut être utilisée ou non comme un outil pratique afin de décider si une dépendance existe entre deux ou plusieurs propriétés — la taille de cet univers est cruciale : plus de signes que l’on y trouve, plus il devient difficile en pratique d’en comparer deux sous-ensembles, et donc de décerner les dépendances. Par exemple, en prenant comme ensemble de base de , alors la dépendance signes un ouvrage japonais qui contient le signe (φchar = ) → (φlang = japanese) est facilement vérifiable. Cependant, la 154 même dépendance devient pratiquement invérifiable lorsque l’on étend l’ensemble de base à tous les ouvrages du monde, puisque l’on ne peut pas avoir la certitude que le même signe n’ait jamais été utilisé en Chine, en Corée ou au Viêtnam, sans avoir parcouru tous les textes de ces pays22 . La conclusion que nous tirons des considérations précédentes est qu’avec un univers restreint — comme par exemple un sous-ensemble des caractères Unicode — l’approche extensionnelle à la gestion des dépendances est possible. Elle devient néanmoins peu exploitable en pratique dès que la taille de l’ensemble O augmente, une tendance inévitable si le modèle de texte vise la généralité. C’est pour la même raison que nous ne tentons même pas de Dépendances décrire les dépendances entre propriétés de signes différents : si |O| est déjà entre signes différents élevé, alors il n’est même pas la peine de s’intéresser aux paires ou aux triplets de signes (etc.) dont le cardinal est |O2 | et |O3 |. UNE INTERPRÉTATION ALGORITHMIQUE DE LA NOTION DE DÉPENDANCE En vue des difficultés que nous venons de présenter, nous allons proposer une définition alternative à la dépendance, définition qui, au lieu d’être basée sur des observations du monde écrit, s’inspire de considérations d’ingénierie de modèles de texte. Au lieu de regarder la dépendance comme un fait empirique, nous allons la considérer comme la conséquence d’une manipulation algorithmique de texte numérique. Notre motivation de restreindre d’une manière si drastique l’interprétation de la dépendance est le souci de la rendre modélisable et exploitable par des systèmes informatiques. DÉFINITION 14 (DÉPENDANCE ALGORITHMIQUE) Une propriété φj (pj ) du textème se trouvant dans une position pj quelconque de la chaîne est en dépendance algorithmique de l’ensemble de propriétés {φ1 (p1 ), ..., φi (pi )} si elle a été obtenue à l’aide d’un algorithme exécuté par un logiciel, ayant ces dernières propriétés parmi ses entrées. En d’autres termes, par l’adoption d’une telle interprétation nous exigeons non seulement qu’une dépendance soit fonctionnelle, mais aussi que la fonction en question soit connue et ait réellement été appliquée. L’existence de la dépendance est donc postérieure à l’exécution de l’algorithme. Il faut mentionner que nous employons le terme algorithmique dans un sens précis : il s’agit d’une opération quelconque exécutée par un logiciel. Bien évidemment, toute manipulation de texte numérique effectuée par un être humain passe forcément par l’exécution de certains algorithmes d’insertion, de modification, de suppression, etc., mais ces opérations n’effectuent en général pas de calculs sur les valeurs d’autres propriétés. D’un point de vue pratique, pour un logiciel informatique, cela ne pose en général aucun problème de maintenir les correspondances entre les propriétés d’entrée et de sortie des fonctions de traitement textuelle qu’il fait exécuter ; le suivi des dépendances algorithmiques est donc facilement réalisable. En revanche, la définition de la dépendance algorithmique n’est pas du tout utile 22 L’apparition de ce signe à l’extérieur du Japon est improbable car il s’agit d’un « jeu de mot » typiquement japonais, cf. p. 50. 155 pour décerner l’incohérence due à une propriété introduite ou modifiée directement par l’utilisateur, de manière interactive. 2.7.6 L A DÉPENDANCE ALGORITHMIQUE DOIT TROUVER SA PLACE DANS LE CADRE FORMEL DE MODÉLISATION Ayant arrivés à une définition satisfaisante de la dépendance, il nous reste encore à voir comment il est possible de représenter celle-ci au sein du système de strates. Rappelons que notre objectif est d’éviter l’incohérence parmi les données textuelles, ce qui n’est possible que par la connaissance des dépendances entre propriétés, d’où l’intérêt de les considérer, d’un moyen ou d’un autre, comme faisant partie intégrante du texte. Une première question à clarifier est si les dépendances sont représentées au sein des textèmes ou s’il s’agit plutôt d’informations en dehors des éléments textuels tout en étant liées au texte — ou autrement dit : contextuelles ? En section 2.5.2 nous avons défini le contexte macroscopique comme un ensemble de propriétés associées à des éléments textuels ou à des relations d’éléments (dont des chaînes). Selon si ces éléments textuels sont des signes (de T0 ) ou des textèmes (de T3 ), les propriétés contextuelles peuvent soit être dérivées à partir de chaînes de signes observées, soit situées parmi les strates supérieures, en tant que structures de haut niveau au sein du modèle. On observe la même dualité entre les définitions extensionnelle et algorithmique de la dépendance : la première découle de relations de compréhension entre sous-ensembles de T0 , alors que la dernière est interprétée comme une relation entre propriétés de textèmes en tant qu’éléments du modèle (car c’est le modèle, et non le monde réel, qui est soumis aux algorithmes). L’idée de considérer la dépendance — par laquelle nous entendons désormais la dépendance algorithmique — comme une information contextuelle paraît raisonnable et même intuitive : lorsque les propriétés de deux textèmes différents entretiennent une relation de dépendance, cette information ne fait partie de la description d’aucun des deux signes représentés, tout comme la propriété « langue française » n’est attaché à des lettres individuelles mais à un mot (ou morphème) entier. D’autre part, du point de vue de l’accès à l’information, peu importe si théoriquement (selon le modèle) ou réellement (suivant l’implémentation concrète) elle se trouve à l’intérieur ou à l’extérieur de la « boîte », puisqu’il est tout à fait envisageable de permettre sa consultation des deux manières à la fois, tout simplement par l’intermédiaire d’opérations de contextualisationdécontextualisation. Nous devons néanmoins mentionner un intérêt pratique de ne pas considérer la dépendance comme information contextuelle : lorsque tout est intégré dans les textèmes, le texte garde son aspect autocontenant, sérialisé, intuitif. Dans le cas contraire, toute échange de texte (e.g., entre deux logiciels) devra forcément veiller à également échanger le contexte associé ; ce qui entraîne la nécessité de créer, dans le cadre de notre système de strates, un modèle de contexte général. 156 LA DÉPENDANCE EN TANT QU’INFORMATION CONTEXTUELLE En quoi consisterait exactement la dépendance algorithmique en tant qu’information contextuelle ? Est-ce l’algorithme lui-même qui représente la dépendance ou s’agit-il juste d’une mise en relation de ses paramètres d’entrée et de sortie ? En termes informatiques : la dépendance, est-elle la fonction entière ou seulement la signature de la fonction ? Les deux interprétations sont légitimes. En effet, on peut supposer que le contexte englobe tous les algorithmes et règles ayant servis au calcul de propriétés d’un texte, ainsi formant un ensemble de contraintes autour des données textuelles (qu’elles soient des propriétés de textème ou contextuelles). Cette approche laisse penser aux principes de la programmation par contraintes, des T-box des logiques de description, ou encore aux dimensions de contexte dépendantes en programmation intensionnelle [66]. D’autre part, par l’application d’une opération de décontextualisation à l’algorithme représentant la dépendance, on introduit celui-ci dans le textème : ce que l’on obtient est un ensemble de données couplées avec les algorithmes qui les manipulent, autrement dit, des objets (de la programmation orientée objets). Le couplage de données et opérations textuelles, même par l’intermédiaire d’un contexte, bouleverse notre vision traditionnelle du texte en tant qu’ensemble structuré d’informations statiques, en créant ce qui est à toute vraisemblance une entité dynamique et pourvue d’une certaine dose d’« intelligence ». Malgré qu’une telle réinterprétation de la modélisation de texte se montre intéressante dans le cadre de certains usages et mérite clairement davantage de réflexions, nous préférons néanmoins nous tenir à une approche plus sobre et conservatrice qui permet au texte de garder sa simplicité structurelle et de rester, au fond, donnée et non logiciel. Le contraire nous mènerait certainement très loin des objectifs principaux de la thèse. L’autre approche consiste à se contenter de l’indication de la dépendance par une mise en relation des propriétés d’entrée et de sortie de l’algorithme dont elle se dérive. Pour chaque propriété créée ou modifiée, il s’agit d’indiquer toutes les autres propriétés textuelles (se trouvant dans le même textème, dans d’autres textèmes, voire même dans le contexte) qui ont contribué au calcul de sa valeur. L’ensemble de dépendances ainsi indiquées grandit avec la quantité de traitement que traverse le texte, et devient le « journal » ou l’« historique » des opérations effectuées sur le texte, d’autant plus qu’en étiquetant la relation des paramètres d’entrée et de sortie d’une opération par un nom approprié, on obtient l’équivalent d’une signature de fonction. Bien entendu, les indications de dépendances peuvent (et sont même censées) se disparaître du texte lorsque les propriétés concernées sont supprimées. Suivant cette approche, la description d’une dépendance consiste à introduire parmi les propriétés de contexte macroscopique une entrée dep(étiquette, φN (tN ), {φA (tA ), ..., φM (tM )}) où étiquette peut être quelconque mais elle est typiquement une référence vers la routine dont l’exécution a créé la dépendance, φN est la propriété dépendante se trouvant dans le textème tN , et φA ...φM sont des propriétés sources avec leurs textèmes respectifs. Il y aura donc autant de telles entrées 157 Dépendance = algorithme en contexte Le texte devient logiciel ? dans le contexte qu’il y a des manifestations de cette dépendance dans le texte. Par exemple, après l’insertion des identifiants de glyphe dans les textèmes, récupérés depuis la table cmap de la fonte ArialBold : .. . dep(cmap, φglyphID (5), {φchar (5), φfont (5)}) dep(cmap, φglyphID (6), {φchar (6), φfont (6)}) dep(cmap, φglyphID (7), {φchar (7), φfont (7)}) .. . on finit par avoir autant d’entrées qu’il y a des propriétés φglyphID dans le texte. Lorsque l’exécution de la routine est invariante par rapport à la position dans la chaîne, c’est-à-dire que la dépendance est forcément présente pour tout textème ayant les propriétés indiquées, alors l’intégralité des entrées du type ci-dessus peut être remplacée par des entrées généralisées qui indiquent la correspondance des valeurs des propriétés source et de la propriété dépendante : dep(étiquette, φN (i) = vN , {φA (i + kA ) = vA , ..., φM (i + kM ) = vM }) où 1 ≤ i, i + kA , ..., i + kM ≤ n et n est le nombre de textèmes dans le texte. On a donc remplacé les dépendances comprenant des indices absolus par des dépendances comprenant des indices relatives : .. . dep(cmap, φglyphID (i) = 123, {φchar (i) = U + 0041, φfont (i) = ArialBold}) dep(cmap, φglyphID (i) = 124, {φchar (i) = U + 0042, φfont (i) = ArialBold}) .. . Au lieu donc d’avoir autant d’entrées que de propriétés φglyphID dans le texte, on finit par en avoir autant qu’il y a des φglyphID distinctes. Lorsque, de plus, toutes les propriétés φN du texte sont calculées invariablement par la même routine à partir des mêmes sources φA , ..., φM , quelle que soit la valeur vN , alors l’entrée précédente peut être simplifiée davantage, pour obtenir dep(étiquette, φN (i), {φA (i + kA ), ..., φM (i + kM )}) ce qui réduit notre exemple à une seule ligne : dep(cmap, φglyphID (i), {φchar (i), φfont (i)}) Ces simplifications réduisent de manière drastique le nombre de dépendances qui doivent être stockées. Cependant, elles supposent la connaissance du fonctionnement de la routine en question, ce qui signifie que la gestion des dépendances ne peut pas être réalisée comme une fonction générique et indépendante (qui ne peut a priori pas savoir que la fonction cmap est appliquée 158 invariablement à tous les textèmes), elle doit être intégrée dans le système qui fait exécuter les diverses routines de traitement textuel. Prochainement, nous montrerons quelques implémentations concrètes de l’approche ci-décrite ; mais avant d’y arriver, nous devrons d’abord nous intéresser aux questions de base de la gestion des dépendances : quelles sont les opérations susceptibles de violer les dépendances et par quelles mesures la violation peut être empêchée. 2.7.7 L A GESTION DES DÉPENDANCES OPÉRATIONS ÉLÉMENTAIRES POUVANT INTRODUIRE DE L’INCOHÉRENCE DANS LE TEXTE Les opérations élémentaires qui modifient la chaîne de textèmes et qui sont susceptibles d’y introduire des incohérences sont les suivantes : 1. l’ajout d’une nouvelle propriété à un textème ; 2. la modification de la valeur d’une propriété ; 3. la suppression d’une propriété ; 4. l’insertion d’un textème ; 5. la suppression d’un textème. Un examen plus détaillé de ces opérations révèle cependant que certaines parmi elles ne violent jamais la dépendance algorithmique. ′ introduit de l’incohérence : 1. L’ajout d’une nouvelle propriété φB = vB Ajout de propriété – si l’on suppose l’existence a priori d’une dépendance (φA = vA ) → (φB = vB ), la propriété φA = vA est déjà présente dans le texte et ′ ; vB 6= vB ′ ) → (φ = v ), la – ou bien, si la dépendance supposée est (φB = vB C C ′ est déjà présente dans le texte et v 6= v ′ . propriété φC = vC C C Cependant, accepter l’existence a priori de dépendances — sans exiger la présence de données dépendantes — n’est pas conforme à la définition de la dépendance algorithmique qui exige que celle-ci soit le ré′ ne peut être introduite sultat d’un calcul concret. La propriété φB = vB que de deux manières : interactive ou algorithmique, où par définition aucune des deux n’est capable de violer une dépendance de type algorithmique. 2. Si les deux propriétés φA = vA et φB = vB sont déjà présentes dans le Modification de propriété texte, ainsi que la dépendance (φA = vA ) → (φB = vB ), alors ′ entraîne une incohérence, que la mo– la modification de vA en vA dification soit faite par un algorithme ou par intervention humaine (puisque la valeur de φB doit être recalculée), ′ peut entraîner ou ne pas entraîner une – la modification de vB en vB ′ , incohérence : lorsque c’est un algorithme qui remplace vB par vB alors on peut considérer que la dépendance (φA = vA ) → (φB = vB ) ′ ) ; la modification de φ a été supplantée par (φA = vA ) → (φB = vB B par un humain peut être considérée comme une violation de dépendance mais aussi comme l’outrepassement du calcul algorithmique, dans lequel cas la dépendance (φA = vA ) → (φB = vB ) est annulée. 159 Suppression de propriété Ajout ou suppression de textème 3. En supposant une dépendance (φA1 = vA1 , φA2 = vA2 , ..., φAn = vAn ) → (φB = vB ), ni la suppression d’une φAi = vAi ni celle de φB = vB ne produit de l’incohérence car cette notion n’est pas interprétable à des données non présentes. D’ailleurs, une condition suffisante de la suppression de la trace d’une telle dépendance est que toutes les φAi = vAi ou bien φB = vB soit supprimé. 4. et 5. En supposant l’existence d’une dépendance (φA (i) = vA ) → (φB (j) = vB ) entre propriétés de deux textèmes, l’introduction ou la suppression d’un textème tk , i < k < j, peut entraîner sa violation. Cela peut dépendre de nombreux facteurs : – si la distance des textèmes ti et tj est considérée dans la dépendance (par exemple, s’il s’agit d’une propriété de crénage qui n’a de sens que si ti et tj sont adjacents), – de la nature du textème inséré (l’insertion d’un textème d’accent entre ti et tj n’invalide pas le crénage, alors que l’insertion d’un textème de lettre de base l’invalide), – de la manière d’indiquer la dépendance entre textèmes (il s’agit donc d’un problème d’implémentation et non de théorie) : une dépendance indiquée à l’aide d’un « pointeur » vers une position dans la chaîne, qu’il soit absolu (e.g., position no 27) ou relatif (e.g., « textème suivant »), doit être mise à jour après l’insertion ou la suppression de textème(s) dans la chaîne. On peut conclure que les seules opérations qui risquent de violer une dépendance algorithmique sont la modification de propriété, l’ajout et la suppression de textèmes, et ces deux dernières seulement dans la présence de dépendances inter-textémiques. Nous avons également pu voir que la violation ou non d’une dépendance par l’insertion ou la suppression d’un textème dans la chaîne dépend de nombreux facteurs. MESURES CONTRE L’INCOHÉRENCE ÉVITER, CORRIGER OU IGNORER DE DONNÉES : Étant arrivés à la fin de nos analyses de la problématique des dépendances et sur le point de proposer des solutions, il est peut-être judicieux de prendre du recul afin de préciser nos besoins. Tout d’abord, nous devons admettre que nos analyses n’ont pu être que partielles : derrière le rideau tissé de problèmes très concrets de modélisation de texte, nous avons pu apercevoir le fonctionnement d’un mécanisme bien plus général et abondamment étudié dans le cadre de nombreux domaines de la représentation des connaissances (cf. section 2.7.3). Cette réalisation pourrait nous pousser vers l’emprunt de certaines notions, voire des solutions complètes développées dans le cadre de l’intelligence artificielle ou du Web sémantique ; et c’est exactement ce que nous faisons lorsque nous considérons la dépendance comme une information contextuelle, où lorsque nous faisons recours à une description et un système d’inférences de type RDF/OWL dans le chapitre suivant, dans le but de créer des répertoires de propriétés et de signes. Cependant, malgré avoir identifié et situé la dépendance parmi les phénomènes similaires d’autres systèmes de RC, il faut comprendre que notre objectif principal par l’indication 160 des dépendances n’est pas la description complète et minutieuse de la complexité des relations qu’entretiennent les éléments textuels et leurs propriétés, afin d’en retirer davantage d’informations à l’aide d’un moteur d’inférences, ce qui pourrait être le cas d’un système classique de représentation des connaissances. Nous, nous cherchons avant tout un modèle de texte qui se veut général mais qui garde une certaine souplesse et simplicité. Par conséquent, nous préférons d’adopter à ce point une approche d’ingénieur (plutôt que de scientifique) et de proposer des solutions simples, pratiques, d’exécution rapide, moins ambitieuses en puissance descriptive, tout en restant conformes aux les définitions et idées avancées dans les sections précédentes. Bien évidemment, le compromis entre puissance et simplicité doit être choisi cas par cas, selon le cadre d’usage : sa généralité, son degré d’interactivité, la puissance de calcul disponible, etc. Pour cette raison, nous considérerons plusieurs méthodes alternatives de gestion de dépendances. Au plus général, trois approches fondamentales sont envisageables quant à la gestion des dépendances. Premièrement : ignorer les incohérences, c’està-dire accepter la potentialité de leur apparition comme une propriété intrinsèque du modèle sans chercher à les éviter. Deuxièmement : prendre des mesures préventives afin d’empêcher l’introduction de données qui violent des dépendances. Et troisièmement : au lieu d’empêcher l’acte qui introduit l’incohérence, appliquer plutôt des méthodes automatiques qui recalculent les données textuelles concernées afin d’atteindre une nouvelle équilibre sans incohérences. Il n’est pas forcément nécessaire de choisir parmi ces trois approches de manière absolue ; au contraire, il est probable que le choix dépendra du cadre de l’usage en question : – dans un contexte procédural (par exemple, formatage par un logiciel tel qu’Ω2 , voir chapitre suivant) une gestion automatisée (prévention ou correction) des dépendances est envisageable ; – dans un éditeur de texte interactif et de bas niveau — qui donne un accès illimité aux textèmes23 — l’approche qui correspond le mieux à la fonctionnalité de l’outil est d’ignorer les dépendances ; – dans un éditeur de texte orienté « grand public », il est possible que le logiciel prenne des mesures automatiques ou semi-automatiques (en posant des questions simples à l’utilisateur) afin de maintenir la cohérence des données. Ignorer les dépendances éventuelles est une approche triviale mais cohérente. Elle peut convenir lors de la création d’un nouveau texte (car l’ajout de propriétés ne risque pas d’introduire de dépendance algorithmique, cf. plus haut) ou lorsqu’un accès de bas niveau au texte est autorisé. Rappelons cependant qu’en ne considérant que les dépendances d’origine algorithmique nous ignorons également toute contrainte d’origine différente, et par conséquent nous n’avons aucune possibilité de détecter l’incohérence entre deux propriétés introduites dans le texte directement par l’utilisateur. Éviter l’incohérence peut consister à empêcher complètement les opérations susceptibles d’être ses causes (modification de valeur de propriété, in23 Il n’est pas nécessaire que le texte en textèmes soit forcément exposé à l’utilisateur dans son intégralité ou « à l’état nu » ; au contraire, on envisage des usages interactifs où l’accès aux textèmes, aussi bien en lecture qu’en écriture, est restreint par l’interface homme-machine. 161 Le choix de l’approche dépend de l’usage Ignorer les dépendances Éviter les incohérences sertion ou suppression de textème), au risque d’éventuellement devoir interdire toute modification du texte. Alternativement, les propriétés correspondant à certains usages peuvent être automatiquement supprimées au moment où d’autres propriétés dont elles dépendent sont modifiées. Ainsi, dans le cas d’un texte formaté (contenant des propriétés introduites lors du formatage telles que glyphe, position (x, y) du glyphe, crénage, etc.) la modification du contenu textuel (les « caractères ») peut entraîner la suppression des données de formatage du texte entier qui, de toute manière, risquent de devenir obsolètes. Finalement, une solution plus sophistiquée est de limiter aussi bien l’interdiction de la modification que celle de la suppression uniquement aux propriétés qui participent à une dépendance. Cette approche suppose que les relations de dépendance sont maintenues et que l’outil informatique y a accès et sait les interpréter. Corriger Corriger l’incohérence consiste à découvrir d’abord, et encore une fois de les incohérences manière automatique, qu’une dépendance a été violée dans le texte et ensuite à rétablir la cohérence des données tout en respectant la modification qui vient d’être effectuée. En supposant l’existence d’une dépendance (φA = vA ) → (φB = vB ), la modification de φA peut rendre la valeur vB obsolète. À part la suppression de la propriété φB , dans certaines situations il est envisageable de ′ correspondant à la valeur v ′ modifiée. Bien recalculer la nouvelle valeur vB A entendu, si d’autres dépendances (φA = vA ) → (φC = vC ) ou (φB = vB ) → (φC = vC ) existent, alors la valeur de φC devra également être recalculée, et ainsi de suite. En revanche, en supposant la même dépendance (φA = vA ) → (φB = vB ), la modification de φB n’entraîne a priori pas la mise à jour de φA car la relation de dépendance n’est pas symétrique : la modification de la propriété φkern (i) qui dépend (entre autres) de φglyph (i) n’entraîne pas la modification de cette dernière propriété, d’autant plus que l’altération du crénage par rapport à sa valeur par défaut définie par la fonte peut être une opération légitime et permise. La modification de φglyph (i) devra par contre sans doute causer la suppression ou la mise à jour de la valeur de crénage. En somme, le choix de l’approche quant à la gestion des incohérences est toujours une question de compromis entre puissance requise par la tâche de traitement donnée, simplicité exigée et ressources de calcul (et même de stockage) disponibles. Puisque ces trois paramètres varient avec l’usage, la méthode de gestion de dépendances doit également être choisie cas par cas. Dans la section suivante nous présenterons quelques solutions pratiques possibles. 2.7.8 M ÉTHODES PRATIQUES DE GESTION DE DÉPENDANCES Nous allons terminer l’étude du phénomène de dépendance à travers la présentation de deux méthodes différentes de gestion des dépendances. Il s’agit de méthodes développées pour des usages particuliers mais qui peuvent éventuellement être utilisées tout aussi bien dans d’autres contextes. Notre objectif primaire a été la simplicité des solutions, de manière à permettre une implémentation facile et la réduction au minimum de la charge supplémentaire qu’ajoute la gestion de dépendances aux autres opérations de traitement textuel. Il est également intéressant à noter que toutes les deux méthodes peuvent être réalisées avec l’indication des dépendances aussi bien à l’intérieur des textèmes qu’à l’extérieur, dans le contexte. 162 PARAMÈTRES DE CONDITION ET TYPOGRAPHIE DYNAMIQUE La méthode que nous allons présenter a déjà été décrite dans l’article [14] de l’auteur, dans une forme légèrement différente, à propos de la technique de typographie dynamique (voir p. 126). L’idée principale de la méthode consiste à associer un paramètre de condition à chaque propriété de textème qui participe à une dépendance. Dans un cas général, on peut considérer ce paramètre de condition tout simplement comme un identifiant unique de la dépendance. Nous allons représenter ici les paramètres de condition par des symboles αi et βi où l’indice i est un entier incrémenté à l’introduction de chaque nouvelle dépendance afin d’étiqueter celle-ci de manière unique, et la distinction entre α et β se justifie par le fait que la relation de dépendance n’est pas symétrique : α indique les propriétés sources et β la propriété qui dépend de celles-ci. Le fait que le paramètre de condition soit « associé » à une propriété textuelle n’entraîne pas forcément son stockage au sein du textème : il est tout aussi possible qu’il fasse partie du contexte, en indiquant à son côté l’indice du textème et la propriété auxquels il appartient : α(i, {φA (tA ), ..., φM (tM )}) → β(i, φN (tN )) En comparant cette formule avec la description générale offerte par la formule en page 157, il est clair qu’au fond elles décrivent exactement les mêmes informations. Lorsque les paramètres de condition sont intégrés dans les textèmes, attachés à leurs propriétés correspondantes, leur seul argument est l’identifiant unique « i », le reste étant devenu redondant. Dans nos exemples suivants, pour des raisons de clarté, nous adopterons cette dernière approche. char = 0041 (A) [α1 ] font = lmr [α1 ] glyphID = 40 (A) [β1 ] Ici, la relation α1 -β1 indique la dépendance {φchar (i) = 0041, φfont (i) = lmr} → φglyphID (i) = 40 De même, dans la chaîne char = 0041 (A) [α1 ] font = lmr [α1 , α3 ] glyphID = 40 (A) [β1 , α3 ] char = 0056 (V) [α2 ] font = lmr [α2 , α3 ] glyphID = 61 (V) [β2 , α3 ] kern = −0.07em [β3 ] les relations α1 -β1 et α2 -β2 sont indicatrices du même type de dépendance caractère-glyphe alors que α3 -β3 indique la dépendance de la propriété de crénage par rapport aux glyphes « A » et « V ». Un effet secondaire de cette façon d’indiquer les dépendances dans les Nécessité d’indiquer textèmes est que les références représentées par les indices numériques sont la distance incapables d’indiquer la distance entre textèmes. En d’autres termes, les pa- entre textèmes ramètres de condition tels que nous les employons dans l’exemple sont insensibles à l’insertion ou à la suppression de textèmes entre ceux déjà en 163 dépendance. Ce comportement peut être un avantage ou un inconvénient selon le cas ; dans notre dernier exemple, l’insertion d’un nouveau glyphe — et donc d’un nouveau textème — entre le « A » et le « V » : char = 0048 (A) [α1 ] font = lmr [α1 , α3 ] glyphID = 40 (A) [β1 , α3 ] char = 0048 (B) font = lmr glyphID = 41 (b) char = 0056 (V) [α2 ] font = lmr [α2 , α3 ] glyphID = 61 (V) [β2 , α3 ] kern = −0.07em [β3 ] devrait invalider le crénage dans le troisième textème, un fait que ce type particulier de référencement n’est capable d’indiquer. Un emploi particulièrement intéressant des paramètres de condition est la typographie dynamique, présentée brièvement en section 2.4.7, p. 126. Rappelons l’exemple du mot « affiné » dont plusieurs variantes ont été calculées à travers la composition-décomposition de ligatures, les variantes stylistiques et les césures : c = 61 (a) font = lmr g=a Utilité des paramètres de condition pour la typographie dynamique c = 66 (f) font = lmr g=f g2 = ffi g3 = ff font = lmr g=g2 = ∅ c = 66 (f) font = lmr g=f g2 = ∅ g3 = fi c = 69 (i) font = lmr g=i g2 = ∅ font = lmr g=g2 = ∅ c = 6e (n) font = lmr g=n c = e9 (é) font = lmr g=é g2 = Plus que jamais, il est essentiel d’indiquer les contraintes subordonnées à l’utilisation des glyphes alternatifs, comme par exemple le fait que la présence de la césure empêche la composition de la ligature « ffi », qu’il faut interdire la composition simultanée de « ff » et de « fi », etc. À l’aide de paramètres conditionnels, les dépendances qui concernent les glyphes alternatifs s’indiquent de la manière suivante24 : c = 61 (a) font = lmr g=a c = 66 (f) font = lmr g=f g2 = ffi [α1 ] g3 = ff [α2 ] c=∅ font = lmr g=[α3 ] g2 = ∅ [β1 , β2 ] c = 66 (f) font = lmr g=f g2 = ∅ [β1 , β2 ] g3 = fi [α4 ] c = 69 (i) font = lmr g=i g2 = ∅ [β1 , β4 ] c=∅ font = lmr g=[α5 ] g2 = ∅ c = 6e (n) font = lmr g=n c = e9 (é) font = lmr g=é g2 = [α6 ] Afin de comprendre comment on obtient les dépendances de l’exemple précédent, et pourquoi certaines autres dépendances ne sont pas marquées, il est essentiel de savoir en détail ce qui se passe lors des différentes étapes de composition de texte. En supposant l’emploi d’une fonte intelligente (telle qu’OpenType), initialement les seules propriétés de glyphe présentes dans les textèmes sont les glyphes « par défaut » (indiqués par la table cmap de la fonte) et dont le nom de propriété est tout simplement « g » dans notre exemple. Lors de l’application des lookup de la table GSUB au texte, on suit le principe de composer en même temps toutes les variantes possibles. Ainsi, en arrivant au premier glyphe « f », deux glyphes alternatifs sont disponibles : les ligatures « ffi » et « ff ». On marque donc ces variantes, mais non le glyphe par défaut, 24 Notre façon d’indiquer les dépendances dans cet exemple — à l’aide de paramètres αi -βi — diffère légèrement de celle que nous avons employée dans l’article [14], d’une part, afin de rester conformes à la notation déjà introduite dans la présente section, d’autre part, parce que nous trouvons cette nouvelle notation à la fois plus logique et plus facile à mettre en œuvre. 164 par α1 et α2 (en incrémentant l’indice à l’introduction de chaque nouveau paramètre). La composition de ces ligatures entraîne cependant l’inclusion de glyphes « vides » dans les textèmes suivants, que l’on marque par β1 et β2 . Ayant épuisé les possibilités dans ce textème, on passe au textème suivant qui représente le trait de césure. Le mot peut se composer avec ou sans césure ; on marque la première éventualité par α3 , dont nous montrerons l’intérêt plus tard. C’est en appliquant ces mêmes principes aux textèmes suivants que l’on obtient l’exemple précédent. Le paragraphe ainsi composé contient toutes les césures, variantes et ligatures possibles, marquées par αi et leurs dépendances indiquées par βi . Comment en extraire, simplement et rapidement, les différentes versions du paragraphe ? En considrant tous les paramètres αi comme des variables logiques binaires, chaque version du paragraphe est sélectionnée de manière unique par une combinaison légale de valeurs des variables logiques. Dans notre exemple, chacune des six variables α1 , ..., α6 peut prendre vrai ou faux comme valeur, ce qui a priori donne 26 = 64 combinaisons. Elles ne sont cependant pas toutes des combinaisons légales. Par exemple, on ne peut pas à la fois composer une ligature « ffi » (α1 ) et une ligature « fi » (α4 ). Heureusement, le filtrage des combinaisons illégales est triviale à l’aide des trois règles suivantes : Les αi : variables logiques binaires Une méthode rapide de calculer les paragraphes candidats légals 1. jamais deux variantes dans le même textème ne peuvent être choisies simultanément ; 2. si αi est choisi (αi = 1), alors le glyphe marqué par βi doit également être choisi, à cause de la dépendance ; 3. lorsque aucun glyphe alternatif n’est sélectionné dans un textème (par exemple, α1 = 0 et α2 = 0), alors le glyphe par défaut est choisi automatiquement. En suivant ces règles, 40 combinaisons parmi les 64 s’avèrent illégales, le mot « affiné » possède donc 24 variantes (y compris des très improbables, comme les quatre variantes doublement coupées : « af-fi-né »). Remarquons que l’emploi des paramètres de condition dans le cadre de la typographie dynamique est légèrement différent car il sert surtout à permettre la sélection facile des versions du paragraphe lors de l’algorithme d’égalisation des lignes. Néanmoins, une fois que le paragraphe a été composé, en supprimant des textèmes les variantes de glyphes non utilisées ainsi que leurs α∗ et β∗ correspondants, les dépendances indiquées que l’on finit par retrouver dans le texte restent valables pour les usages subséquents. Finalement, une remarque d’ordre général concernant l’implémentation de la gestion de dépendances : aussi bien lors de la composition de paragraphe en typographie dynamique que lors de la simple modification d’une valeur de propriété marquée par un paramètre αi , il est important d’un point de vue implémentationnel de retrouver très rapidement dans le texte les propriétés dépendantes marquées par les βi . Même si les positions des textèmes concernés ne sont pas explicitement indiquées dans le texte, l’application peut très bien construire et maintenir en interne une table de correspondances entre αi et la position des βi correspondants. Ceci est, bien évidemment, une forme de contextualisation des paramètres de condition. 165 Optimisation : indexation des paramètres de condition LIENS : GESTION DES DÉPENDANCES INTER-TEXTÉMIQUES Contrairement à la méthode précédente, plus générale, celle que nous allons montrer par la suite n’adresse qu’un sous-ensemble des dépendances : celles qui mettent en relation deux textèmes séparés. Par ceci, elle vise avant tout à adresser la problématique de la violation de dépendances à travers l’insertion ou la suppression de textèmes dans la chaîne. Texte brut ⇔ pas de Dans le chapitre précédent, en section 1.8.8, nous avons défini le texte dépendances brut par rapport à un usage donné comme une chaîne d’éléments textuelles inter-textémiques (un monoïde libre) sur laquelle les opérations de cet usage ne préservent aucune structure de haut niveau. Cette définition met en valeur l’indépendance mutuelle des éléments textuels, un critère objectif de la simplicité structurelle du texte. La présence de dépendances entre textèmes signifie qu’une structure non-triviale est ajoutée au texte, et par conséquent celui-ci ne peut plus être qualifié comme texte brut. C’est cette complexité que nous souhaitons indiquer explicitement à l’aide de liens connectant les textèmes concernés. DÉFINITION 15 (LIEN) 1. Dans notre représentation à strates, le lien est une relation (ti , tj ) entre deux textèmes adjacents (|i − j| = 1, i et j étant des indices de position dans la chaîne). En tant que telle, le lien est un élément de T4 . 2. Défini d’une façon plus « visuelle », le lien est une connexion orientée entre deux textèmes adjacents. Lorsqu’il existe une dépendance φA (i) = vA → φB (i + 1) = vB entre les textèmes ti et ti+1 , alors le lien entre les deux est dirigé vers ti+1 . Lorsque la dépendance est entre deux propriétés contenues dans ti et ti+n , |n| > 1 (les deux textèmes ne sont pas adjacents), alors on introduit n − 1 liens orientés vers ti+n afin d’interconnecter tous les textèmes intermédiaires. La raison pour laquelle les textèmes intermédiaires sont également connectés par le lien est la rareté des « interactions distantes » où il existe une dépendance entre propriétés lointaines (c’est le cas des voyelles scindées de certaines écritures du Sud-Est asiatique) et la rareté encore plus prononcée des cas où les signes intermédiaires ne font pas également partie de la dépendance. Liens orientés Lorsqu’il existe une dépendance depuis ti vers tj mais aussi depuis tj et non orientés vers ti , alors on parle de lien non orienté. Ce type de lien peut être utilisé non seulement pour indiquer qu’il existe des dépendances dans les deux sens mais aussi lorsque l’orientation du lien n’est pas importante. Par exemple, on a intérêt de représenter la dépendance qui résulte d’un crénage à l’aide d’un lien orienté : font = lmr glyph = A t font = lmr glyph = V kern = −0.08em car la modification du deuxième textème n’a aucun effet sur le premier. Par contre, dans l’exemple suivant 166 c = 61 (a) g=a font = lmr c = 66 (f) g = ffi font = lmr p c = 66 (f) g=∅ font = lmr p c = 69 (i) g=∅ font = lmr c = 6e (n) g=n font = lmr c = e9 (é) g=e font = lmr p c=∅ g=´ font = lmr on trouve des dépendances bidirectionnelles aussi bien entre les trois composants de ligature qu’entre le glyphe de base et l’accent, l’emploi de liens non orientées est donc justifié. Les liens peuvent très facilement être indiqués dans une chaîne de tex- L’implémentation tèmes sans même devoir étendre notre modèle de texte. Pour mettre en place des liens un lien, il suffit d’inclure une propriété (φlien_droite = vrai) ou (φlien_gauche = vrai) dans le textème concerné, selon son orientation. Un lien non orienté est réalisé entre les textèmes ti et ti+1 par une propriété de lien droite dans ti et une propriété de lien gauche dans ti+1 . Bien évidemment, les liens peuvent être contextualisées sans problème ; le lien n’étant en fait qu’un cas spécial de la dépendance telle qu’elle est représentée en page 157 : lien(ti±1 , ti ) ⇔ ∃A, ..., N t.q. dep(φN (ti±1 ), {φA (ti ), ..., φM (ti )}) Les liens sont particulièrement utiles pour marquer les ligatures et d’autres groupes de textèmes fortement liés, comme par exemple un cluster de signes indiens réordonnés ou des signes assemblés de composants graphiques élémentaires. Nous les avons employés pour les mêmes raisons dans le logiciel Ω2 (cf. section 3.2.2). 2.7.9 SYNTHÈSE DE L’ANALYSE DES DÉPENDANCES ET DES SOLUTIONS PROPOSÉES Dans cette section nous avons examiné le phénomène de dépendance qui lie les valeurs de certaines propriétés dans le texte. Nous avons pu comprendre que ce problème n’était en réalité qu’un cas particulier d’un phénomène plus général, et, par sa généralité, omniprésent dans les différents systèmes de représentation des connaissances. Qu’il soit question de conception de bases de données ou de conception orientée objet, la compréhension, la prévention et la gestion des dépendances entre données est un problème incontournable. Dans cette thèse, nous avons voulu examiner par quels moyens et jusqu’à quel point il est possible de détecter la dépendance de manière automatique dans le cadre de la modélisation textuelle. Nous avons trouvé qu’en face d’un ensemble de base de signes et de combinaisons de signes (T0 ) non restreint, et par conséquent énorme, la notion de dépendance dans sa généralité — que nous avons réussi à formaliser sous le nom de dépendance extensionnelle — ne peut être exploitée en pratique. Nous avons donc restreint notre intérêt aux dépendances d’origine algorithmique, qui montrent désormais un bon potentiel de gestion automatique. Quant aux approches préventives ou correctives de l’incohérence au sein du texte, nous avons voulu éviter d’adopter une solution « toute faite » disponible dans la littérature (dans un contexte d’intelligence artificielle, par exemple), car la difficulté majeure était beaucoup moins de trouver diverses méthodes de gestion de dépendances mais plutôt de garder notre modèle le 167 plus simple que possible. Le texte étant une forme de communication si basique, nous tenons à éviter que sa complexification n’introduise plus de problèmes qu’elle n’en puisse résoudre. Dans cette optique, nous avons proposé plusieurs méthodes — suppression des propriétés, paramètres de condition, liens — qui peuvent être ou ne pas être combinées avec les différents usages selon l’équilibre que l’on souhaite atteindre entre puissance et simplicité. 168 CHAPITRE 3 RÉALISATIONS INFORMATIQUES DE MODÈLES DE TEXTE EN TEXTÈMES Le chapitre précédent a été consacré à la construction d’un cadre formel de modélisation, à l’aide duquel nous avons conçu ce que nous avons appelé un modèle de texte fondé sur le concept de textème. En réalité, comme nous avons déjà remarqué, ce modèle en textèmes ne peut être considéré comme un modèle particulier prêt à être implémenté, mais plutôt comme une base théorique au-dessus de laquelle on met en œuvre des modèles concrets qui s’adaptent à des usages et à des contraintes technologiques variés. En d’autres termes, le modèle en textèmes est une famille particulière de modèles conçue par l’intermédiaire du cadre formel à strates, à son tour capable de se décliner en une multitude de réalisations potentielles simples ou complexes, suivant les besoins. Dans le présent chapitre, nous arrivons enfin aux considérations d’implémentation qui permettent d’évaluer les différents aspects de cette famille de modèles en textèmes d’un point de vue d’ingénierie informatique. Les idées théoriques seront confrontées aux contraintes de réalisation, il sera question de structures de données, d’économie de stockage, de complexité algorithmique et de compatibilité avec les modèles existants. En comparant les modèles en textèmes au codage Unicode, il ne faut cependant pas se laisser tromper par la simplicité apparente de ce dernier. Comme nous avons montré, derrière le rideau de la chaîne uniforme de codes de caractère, d’une simplicité séduisante, se cachent des interdépendances, des structures hiérarchiques et toute une base de données d’informations, sans lesquelles le texte Unicode ne peut être manipulé ni affiché. Le modèle en textèmes n’est donc pas, ou du moins pas entièrement, responsable de la complexité qu’il semble introduire car il ne fait que ressortir et assumer ce qui est une réalité de la représentation textuelle à laquelle le développeur informatique fait (ou aurait dû faire) déjà face depuis longtemps. Il faut également ajouter qu’aujourd’hui, grâce à la capacité calculatoire et de stockage des ordinateurs, les éventuels problèmes d’économie et de per- Puissance théorique formance, bien que toujours importants, sont nettement moins décisifs que contre performance dans les années 1960 ou 1970, lors de l’établissement des bases de la modélisation textuelle informatique à travers les notions de caractère, de fonte, etc. Nous considérons que dans notre ère où la vidéo et l’audio numériques sont omniprésentes, il est temps d’enfin consacrer plus d’attention à la souplesse, à l’utilité, à la puissance des moteurs de représentation textuelle qui tournent dans nos ordinateurs, éventuellement même au détriment de la simplicité de 169 leur implémentation ou aux considérations d’économie de stockage1 . Il suffit tout simplement d’accepter que l’augmentation des calculs et de l’espace de stockage est le prix à payer pour un modèle de texte plus versatile. 3.1 L’APPLICABILITÉ DU MODÈLE AUX SYSTÈMES EXISTANTS Ce que nous devons clarifier dans un premier temps est, à quoi servira le modèle que nous souhaitons introduire ? Pour poser la question autrement : pour quels pratiques et dans quels contextes est-il censé remplacer les modèles actuels ? Plusieurs scénarios sont envisageables, en voilà trois voies possibles, de la plus conservatrice à la plus ambitieuse : Trois scénarios d’application du modèle 1. le modèle serait utilisé en tant que représentation interne dans des applications de manipulation de texte et de préparation de documents afin de les rendre plus puissantes. 2. Le modèle serait appliqué dans des documents de représentation finale, comme par exemple un « PDF étendu » où les glyphes seraient remplacés par des textèmes. Il pourrait aussi être employé dans des documents de représentation d’échange tels que le format HTML, ou dans les documents d’entrée de logiciels de préparation de documents. 3. Le modèle de textèmes deviendrait un modèle de texte générique et remplacerait la chaîne de caractères au niveau du système d’exploitation, dans les bibliothèques de base, etc., de préférence en gardant la compatibilité avec le modèle antérieur, le modèle à chaînes de caractères. Textèmes uniquement La première approche est la plus simple à réaliser car, l’utilisation du moen interne dèle restant confinée à l’intérieur de l’application, il n’y a aucun problème de compatibilité vers le monde extérieur à considérer. Néanmoins, certains aspects du modèle — sa capacité d’adaptation aux différents usages textuels, son extensibilité par des propriétés arbitraires — sont sous-exploités. Documents en textèmes Lorsque l’utilisation du modèle s’étend à certains types de document et devient leur format textuel de fond, alors de nombreux usages nouveaux deviennent possibles : dans un document qui sert comme entrée d’un logiciel, l’utilisateur peut enrichir le texte par des propriétés qui ensuite interviendront dans le traitement. Un texte formaté en textèmes peut se retrouver dans un document de sortie à partir duquel l’utilisateur peut extraire aussi bien le contenu d’origine que des informations de formatage. Cependant, puisqu’un format de document numérique n’est autre qu’un moyen standardisé d’échange d’informations, l’utilisation de documents en textèmes présuppose l’existence d’une représentation normative de ceux-ci, jusqu’au niveau de la représentation des propriétés individuelles. Entre autres, il devient nécessaire de normaliser un sous-ensemble bien défini (un « noyau dur ») de clés de propriété ainsi que les valeurs possibles associées. 1 Comme le remarquent Plaice et Rowley dans [55] par rapport au même sujet mais de manière plus frappante, « computers are for computing », les ordinateurs sont là pour que l’on exploite leur capacité de calcul. 170 C’est en implémentant le modèle de textèmes au plus bas niveau (celui du système d’exploitation et des bibliothèques de base de gestion textuelle) qu’il pourra être exploité à son vrai potentiel, car cela rend la même interface de Support des textèmes programmation accessible depuis toutes les applications. Fort heureusement, au niveau du système le modèle en textèmes peut être parfaitement intégré derrière les coulisses d’exploitation avec les modèles textuels de base courants qui reposent sur les chaînes de caractères Unicode : une chaîne de caractères Unicode peut être simulée de façon triviale par une chaîne de textèmes comportant une seule propriété, celle de la valeur Unicode. Ainsi, on peut envisager une bibliothèque de gestion de texte « combinée » dont la structure de données serait construite autour du modèle à textèmes mais qui soit accessible aussi bien par des méthodes anciennes correspondant au modèle Unicode que par de nouvelles méthodes propres au nouveau modèle. Il faut noter cependant que, le textème étant une structure relativement complexe comparée à un simple code de caractère, le texte doit être sérialisé lors de son passage entre applications (à travers le presse-papiers, par exemple). De plus, certaines opérations textuelles, triviales sur des chaînes de caractères (comme la comparaison de deux chaînes), peuvent devenir très complexes sur des chaînes de textèmes, en termes de complexité calculatoire. Ce chapitre couvrira en détail les trois niveaux d’implémentation que nous avons envisagés en début de section. Le niveau « textèmes en interne » sera présenté à travers une étude de cas consacrée au logiciel Ω2 , une version étendue et modulaire (développée par l’auteur) du logiciel Ω. Les niveaux « document en textèmes » et « textèmes dans le système d’exploitation » seront étudiés sans avoir d’exemples de logiciels de démonstration implémentés. 3.2 IMPLÉMENTATION DU MODÈLE DE TEXTÈMES DANS LE LOGICIEL Ω2 Le logiciel Ω, extension de TEX signée par John Plaice et Yannis Haralambous [54], propose deux nouveautés majeures par rapport à TEX : la compatibilité Unicode à travers la gestion de caractères multi-octets d’une part, et d’autre part, l’introduction des ΩTP (Omega Translation Process), des machines à états finis qui effectuent des transformations sur le texte d’entrée d’Ω. Même si ces deux extensions permettent à Ω la création de documents multilingues, elles ne sont pas suffisantes pour le support de certaines technologies plus modernes comme les fontes intelligentes, ni pour la création de documents « interactifs » (dont on est toujours capable d’extraire le contenu, c’est-à-dire le texte en caractères). Ces deux technologies n’existaient pas encore au moment de la conception initiale du modèle de texte interne de TEX qu’Ω a repris au quasi-identique ; néanmoins, depuis les années 1990 ils sont devenus indispensables. C’est (entre autres) à cause de ces lacunes que la refonte du modèle de texte d’Ω est devenue inévitable. Nous avons présenté le modèle de texte de TEX en section 1.5.1. La raison de l’incompatibilité de celui-ci avec les fontes intelligentes est qu’au moment de la création des nœuds de caractère, les codes des caractères d’entrée sont substitués par des identifiants de glyphe venant de la fonte. Grâce à l’organisation particulière des fontes de TEX, les deux types de code y coïncident pour 171 Quelques lacunes d’Ω Un point faible du modèle de texte de TEX l’alphabet latin, ce qui permet ensuite d’effectuer la césure (qui est une opération d’usage linguistique) sur le texte en glyphes (qui correspond à l’usage typographique). Avec d’autres formats de fonte (TrueType, OpenType, etc.), et surtout dans le cas de fontes non-latines, cette approche ne fonctionne plus car les codes de caractère et de glyphe sont distincts, ou si elle fonctionne, ce n’est que grâce à des solutions bricolées comme les fontes virtuelles. La substitution des caractères par des glyphes entraîne donc une perte d’information, le passage d’un usage à l’autre est à sens unique. C’est pour la même raison que le document PDF de sortie de TEX ou d’Ω ne se prête à la recherche ou à d’autres usages interactifs que si les codes de caractère et de glyphe coïncident, ou alternativement, si les codes de caractère peuvent être déduits à partir des noms de glyphe, lorsque ceux-ci sont présents dans le document et/ou dans la fonte (cf. section 1.5.2). 3.2.1 L E Le remplacement du nœud de caractère par le nœud de textème Caractère et glyphe ensemble dans le textème Le nœud de textème simplifie le modèle considérablement NŒUD DE TEXTÈME DANS Ω2 Le modèle de texte en textèmes permet d’effectuer les opérations de multiples usages sur le même texte simultanément. Nous avons procédé à l’extension d’Ω par le remplacement des nœuds de caractère par des nœuds de textème [34]. Ceux-ci contiennent par défaut trois propriétés : le code de caractère, l’identifiant de glyphe et l’identifiant de fonte. Mis à part celles-ci, le nœud de textème est une structure extensible par des propriétés arbitraires, par l’intermédiaire d’une liste chaînée. Pour chaque propriété, la clé ainsi que la valeur sont représentées par des chaînes de caractères. Nous avons implémenté un ensemble de fonctions gestionnaires de textèmes (création, recherche, modification, suppression de propriétés, etc.) dans une bibliothèque écrite en C. Le code de caractère d’origine et l’identifiant de glyphe correspondant sont inclus dans le nœud de textème dès sa création. Il y a deux avantages à garder les deux informations côte-à-côte : d’une part, le texte en caractères reste disponible pour des opérations linguistiques subséquentes éventuelles (comme la césure). D’autre part, le texte d’origine en caractères peut ensuite être inclus dans le document de sortie, ce qui permet la création de documents formatés dont le contenu textuel peut être extrait (ce qui est un critère de l’interactivité du document). C’est en effet une méthode robuste qui permette le passage à partir de la représentation finale vers la représentation d’échange, étant donné que le nommage de glyphes n’est pas toujours fiable (cf. section 1.5.2). Un effet secondaire et bienvenu de l’introduction des textèmes est la simplification de la liste de nœuds : il devient possible de réduire le nombre de types de nœud (il en existe une vingtaine) en stockant certaines informations en tant que propriétés de textème. Ainsi, les nœuds de pénalité, de crénage ou de glue peuvent devenir des propriétés dans le textème contenant le glyphe précédent. La conversion du nœud de glue en propriété a l’avantage de garder des blancs explicites dans le texte. Les nœuds de glue de TEX et d’Ω sont convertis en opérateurs de déplacement horizontal (ou vertical dans du texte composé verticalement) dans le document DVI de sortie et par conséquent dans les documents PostScript et PDF. Ceci rend difficile l’extraction efficace du contenu textuel, car distinguer un déplacement qui résulte d’un vrai es172 pace et un autre qui correspond, par exemple, à un crénage n’est possible qu’à travers des approches heuristiques. 3.2.2 L A GESTION DES DÉPENDANCES DANS Ω2 Dans Ω2 nous avons choisi d’indiquer les dépendances entre textèmes à Liens dans Ω2 l’aide de liens (cf. p. 166). Ceux-ci peuvent, entre autres, indiquer qu’une correspondance multiple-à-un (un-à-multiple, multiple-à-multiple) existe entre caractères et glyphes d’une chaîne, dans lequel cas sont des textèmes à glyphe ou à caractère vide sont employés dans la liste de nœuds. Les liens permettent d’expliciter les correspondances dans la chaîne, ce qui est nécessaire pour deux raisons. Premièrement, dans le document PDF de sortie, les mêmes correspondances doivent être indiquées afin que l’extraction du contenu (par copier-coller, par exemple) puisse se faire correctement dans le logiciel de visualisation (Adobe Reader). Deuxièmement, puisque les nœuds de ligature de TEX et d’Ω sont remplacés par des nœuds de textème dans Ω2 , un moyen alternatif est nécessaire pour indiquer à l’algorithme de paragraphage la présence d’une ligature que celui-ci peut potentiellement briser par une césure. Plus généralement, toute règle de substitution ou de positionnement de glyphes contextuelle de la forme g1 g2 ...gn → action où n > 1, et qui puisse être définie, entre autres, par une fonte intelligente, nécessite l’interconnexion des textèmes t1 ...tn par des liens, puisqu’une coupure de ligne éventuelle à un endroit quelconque entre t1 et tn entraîne l’invalidité de l’action déterminée par la règle contextuelle. Dans un tel cas, le lien indique au moteur typographique que les deux lignes concernées (avant et après la coupure) peuvent potentiellement contenir des informations invalides et doivent donc être recalculées. Par exemple, une règle de substitution contextuelle chaînée OpenType telle que a f ’ i’ → fi où les glyphes à remplacer ont été marqués par des apostrophes et le glyphe « a » appartient au contexte, les trois textèmes doivent être connectés par des liens au cas où la ligne serait coupée entre le « a » et le « f ». 3.2.3 M ODULES ET TEXTÈMES Mis à part la refonte de son modèle de texte, Ω2 innove par sa modularité : comme expliqué dans [34], des processus externes peuvent être appelés à trois moments précis lors de la composition, à savoir : sur les listes de token (comme pour les ΩTP), sur les listes de nœuds avant le paragraphage, et enfin sur les nœuds correspondant aux lignes candidates lors du paragraphage. Ces modules servent à exécuter différents types d’opérations sur le texte interne : traitements linguistiques ou typographiques, application des règles de substitution et de positionnement de fontes intelligentes, etc. Jusqu’à présent, uniquement le deuxième type d’appel externe a été implémenté. La communication entre Ω2 et les modules est réalisée en XML : les listes Sérialisation en XML de nœuds correspondant aux paragraphes sont sérialisées, chaque type de de la liste de nœuds 173 nœud ayant son élément équivalent en XML, y compris les nœuds de textème. Un exemple simple de liste de nœuds en XML se trouve en fig. 3.1. Après un préambule (contenant la liste de fontes utilisées par le document), un nœud quésaco (whatsit) et un nœud de liste horizontale, on y trouve deux nœuds de textème représentés par des éléments <t>. Chaque sous-élément <p> correspond à une propriété, dans notre cas des propriétés de caractère, de glyphe et de fonte. Les attributs linkl et linkr indiquent éventuellement des liens entre textèmes (cf. pp. 166 et 173). Le module externe peut bien évidemment modifier la liste de nœuds, entre autres par l’insertion de nouvelles propriétés dans les textèmes : <p n="clé">valeur</p> Ces propriétés peuvent ensuite être prises en compte par d’autres modules ou par le moteur de composition d’Ω2 . Grâce à la syntaxe XML et au fait que les modules sont implémentées en tant qu’exécutables à part entière, un module peut être implémenté en n’importe quel langage de programmation, même comme simple transformateur XSL. 3.2.4 T EXTÈMES DANS LA SORTIE D ’Ω2 Le fait d’ignorer les caractères stockés dans les textèmes afin de créer une sortie DVI classique qui ne contienne que des glyphes diminuerait largement l’intérêt de passer à un modèle de texte en textèmes. Pour cette raison, nous avons conçu un format DVI légèrement altéré (et incompatible avec le format ancien) qui garde le code de caractère à côté du code de glyphe correspondant. Les liens gérés par Ω2 permettent (au moment de la création du DVI) d’indiquer explicitement la correspondance entre caractères et glyphes lorsΩ2 génère qu’il ne s’agit pas de correspondance un-à-un. Ensuite, une version modifiée des documents PDF du convertisseur dvipdfmx génère des documents PDF contenant des couples interactifs caractère-glyphe à travers l’opérateur PDF ActualText (cf. section 1.7.3). Ainsi, on obtient des PDF dont le contenu textuel est accessible, quels que soient le système d’écriture et la technologie de fonte utilisés, ce qui est rarement le cas des documents générés par les différents manifestations de TEX. Bien que ceci n’a pas été réalisé, il serait facile d’optimiser la sortie PDF de sorte qu’elle utilise par défaut une table ToUnicode pour les correspondances glyphe-caractère et qu’elle ne recoure à l’opérateur ActualText que si le caractère proposé par ToUnicode ne correspond pas à celui indiqué par le fichier DVI. 3.2.5 O PTIMISATIONS DE LA GESTION DES TEXTÈMES DANS Ω2 Les besoins en mémoire Dans Ω, un nœud de caractère n’occupe que 8 octets sur une architecture d’Ω2 à 32 bits : deux octets pour le code de glyphe, deux octets pour l’identifiant de fonte, et quatre octets pour le pointeur vers le nœud suivant de la liste, ce qui correspond à un « taux d’efficacité de stockage » de 50% (la taille des données utiles divisée par l’espace de mémoire total occupé). Le nombre de propriétés par textème n’étant pas prédéfini, le nœud de textème d’Ω2 est par définition une structure de données extensible, implémentée à l’aide d’une liste chaînée. Afin de réduire le temps d’accès ainsi que la mémoire occupée par les 174 <?xml version="1.0"?> <buffer version="0.1"> <preamble> <fontlist> <font id="51" name="ptmr" size="1310720"/> <font id="52" name="pala" size="655360"/> ... </fontlist> </preamble> <nodelist> <!-- whatsit node --> <wha st="6" intpnl="0" brkpnl="0" pardir="0"> <lbl></lbl><lbr></lbr> </wha> <!-- hlist node --> <hls wd="1310720" dp="0" ht="0" shift_amount="0" gse="0" gsi="0" go="0" dir="0"> </hls> <!-- texteme node --> <t linkl="0" linkr="0"> <p n="c">74</p> <!-- char: L --> <p n="g">12</p> <!-- glyph --> <p n="f">52</p> <!-- font --> </t> <t linkl="0" linkr="0"> <p n="c">101</p> <!-- char: o --> <p n="g">142</p> <p n="f">52</p> </t> ... </nodelist> </buffer> FIG. 3.1 – Un début de liste de nœuds Ω2 sérialisé en XML, syntaxe dans laquelle communiquent Ω2 et ses modules externes. 175 propriétés le plus souvent utilisées, les propriétés de caractère, de glyphe et de fonte, ainsi que les liens, sont codés « en dur » dans chaque textème : elles sont présentes par défaut, ce qui les rend directement accessibles. Grâce à cette optimisation, un nœud de textème occupe 36 octets sur une architecture à 32 bits lorsqu’aucune propriété à part celles codées en dur n’y est présente : le taux d’efficacité est de 34%. Ce chiffre pourrait très facilement être réduit à 27 octets si l’on interdisait les codes de caractère, de glyphe et de fonte plus larges que 16 bits (23% d’efficacité). En sachant qu’Ω2 n’a à aucun moment plus de deux pages de texte en mémoire (car il génère le document de sortie page par page), l’augmentation en mémoire consommée par rapport à Ω ne dépasse pas les 280 kilooctets environ, en comptant 36 octets par textème et 5000 textèmes par page (ce qui correspond à des pages extrêmement denses). Optimisations diverses Le stockage en mémoire interne des propriétés non codées en dur a également été optimisé, afin de réduire l’espace consommé par les clés de propriété récurrentes. Au lieu de garder celles-ci en tant que chaînes de caractères dans les textèmes, on emploie des identifiants de type entier, et des tables de hâchage qui permettent de retrouver très rapidement les clés textuelles à partir des identifiants numériques et vice versa. Représenté en XML, le même nœud de textème (uniquement avec les propriétés codées en dur) occupe environ 70 octets selon nos statistiques (environ 12% d’efficacité), et ceci en atteignant un maximum d’économie sur les longueurs de noms d’élément et d’attribut, comme dans l’exemple suivant : <t l="0" r="0"><p n="c">74</p><p n="g">12</p><p n="f">52</p></t> Néanmoins, en codant les propriétés sous forme d’attributs, la longueur totale d’un élément de textème peut se réduire davantage : <t l="0" r="0" c="74" g="12" f="52"/> La verbosité relative de la représentation XML pose des problèmes lorsque la communication entre Ω2 et le module externe se fait à travers un fichier tampon sur le disque dur : la taille effective du document XML généré est en général 50 à 100 fois plus élevée que le nombre de caractères contenus dans le paragraphe communiqué au module. Puisque la lecture-écriture sur disque est le goulot d’étranglement de loin le plus important en termes de vitesse de traitement, une compression préalable des données XML nous paraît une solution souhaitable. En revanche, l’abandon du format XML en faveur d’un format binaire signifierait une perte de souplesse significative quant à la diversité des outils et des moyens par lesquels les modules externes peuvent être implémentés. 3.3 DOCUMENTS EN TEXTÈMES La création de formats de documents en textèmes suppose une approche conceptionnelle et normalisatrice face aux problèmes d’implémentation, davantage que la création d’applications qui adoptent le modèle de textèmes en interne. Alors que les usages internes du texte sont bien circonscrits et a priori restreints, un document se prête, par sa nature, à des pratiques très variées : 176 – il est lu ou consulté par l’utilisateur (à travers une interface) ; – il est rédigé ou modifié (plus ou moins librement) par l’utilisateur ; – il est la source d’une opération de traitement textuel ; – il est le résultat d’une telle opération. Un des avantages déclarés du modèle en textèmes (p. 111) est sa capacité de s’adapter à plusieurs représentations textuelles, et de fusionner ainsi les représentations d’échange et finale du même texte2 . Si les différentes manifestations d’un même texte partagent le même modèle, alors il devient essentiel de catégoriser les propriétés y apparaissant selon les usages auxquels elles appartiennent, selon le type de leurs valeurs potentielles, selon les clés qui les identifient, etc. De même, l’accès en lecture ou en écriture au document par l’utilisateur suppose des modes d’accès normalisés, indépendamment du degré d’abstraction qui peut exister entre la structure du modèle et les usages offerts par l’interface du logiciel d’édition. Pour les raisons évoquées, la création d’un standard centralisé qui définisse et catégorise les propriétés de textème nous paraît essentielle. L’existence d’un tel standard ne contredit en rien à l’intensionnalité de l’ensemble des propriétés : tout en maintenant la possibilité pour tout utilisateur ou application de créer de nouvelles propriétés et de les intégrer dans son texte, l’avantage d’adhérer à une convention sur l’emploi de certaines propriétés récurrentes est indéniable. 3.3.1 U N CADRE DE NORMALISATION DES PROPRIÉTÉS À TRAVERS UNE DESCRIPTION BASÉE SUR RDF ET Les opérations majeures effectuées sur un document Le document en tant que médium d’échange nécessite la normalisation des propriétés OWL Nous nous permettons d’insister sur le fait que la normalisation que nous prévoyons n’a pas pour but de restreindre l’usage des propriétés à un ensemble fermé. Au contraire, la méthode que nous allons présenter établit non seulement une description formelle d’un « noyau dur » de propriétés a priori désignées mais aussi un cadre formel qui permet à tout usager de créer et de décrire de nouvelles propriétés avec la même rigueur formelle. Cette description — à condition d’être disponible en ligne — permettra à des applications tierces d’interpréter et de manipuler des textes contenant de telles propriétés, ce qui augmente considérablement l’interopérabilité entre applications. Il est clair que nous faisons face à un problème pratique qui concerne, une fois de plus, la représentation de connaissances : nous avons un ensemble ouvert de ressources — les propriétés — que nous souhaitons décrire de manière formelle et extensible. Plus particulièrement, nous cherchons à formaliser les informations suivantes : 1. l’identification globale et unique des clés de propriété. Toute propriété Les informations se trouvant dans un texte en textèmes doit posséder une identité non- à normaliser ambiguë. Puisqu’un texte peut à tout moment être enrichi par de nouvelles propriétés, il se peut que deux usagers (ou applications) créent indépendamment deux propriétés qui s’identifient par la même clé, que 2 Bien entendu, la fusion ne peut être complète à tous les niveaux du document électronique, ne serait-ce que car nos modèles ne sont pas concernés par les aspects globaux de mise en page. 177 cet identifiant soit numérique ou textuel. Par exemple, la propriété accent introduite par un usager chinois peut indiquer les quatre accents mandarins, alors qu’un usager russe peut utiliser exactement la même clé pour marquer la syllabe accentué de certains mots russes. Afin d’éviter les collisions de nommage de ce genre, il faut assurer l’unicité de chaque clé de propriété de manière globale. 2. Les catégories fonctionnelles auxquelles appartient une clé donnée. Dans le chapitre où nous avons introduit les bases théoriques de notre modèle de texte nous avons catégorisé les propriétés d’abord par clé (strate T2 ), puis les clés par usage (strate T3 et éventuellement T4 ). Ces dernières catégories sont essentielles car elles donnent une première interprétation sémantique des clés de propriété (même si cette méthode d’interprétation reste rudimentaire). En pratique, la connaissance de l’appartenance d’une propriété donnée à une catégorie peut aviser les logiciels quant à l’emploi d’une propriété inconnue, sans avoir recours à la consultation de l’utilisateur. Par exemple, le logiciel peut décider si la propriété en question est pertinente ou non par rapport à l’usage actuel, si elle peut être supprimée ou non, si l’utilisateur peut ou non être autorisé à la modifier, etc. 3. Les valeurs pouvant être associées à une clé donnée. Il s’agit d’introduire, si nécessaire, le typage des valeurs de propriétés (entier, réel, énumération, etc.) et la possibilité éventuelle de l’imbrication des propriétés (cf. section 2.6.2). 4. En général, des relations intensionnelles entre propriétés. Nous visons à formaliser les informations que l’on possède des propriétés et qui se trouvent dans les strates supérieures à T1 et à T2 . Autrement dit, il s’agit de définir l’intension de la propriété : son éventuelle équivalence à d’autres propriétés, sa description textuelle destinée à l’utilisateur, etc. La catégorie fonctionnelle déjà mentionnée fait également partie de l’intension de la propriété. Application Le problème que nous avons entrepris à résoudre — donner une desde technologies cription formelle des informations que nous venons de présenter, et ceci de existants à un problème manière qu’elle soit algorithmiquement exploitable — est loin d’être concepclassique tuellement nouveau. Il existe des méthodologies et des outils informatiques conçus et développés pour exactement ce genre de problèmes, entre autres dans le cadre du Web sémantique. Sans vouloir prendre place dans le débat (souvent religieux) qui questionne la possibilité théorique et/ou pratique d’une sémantisation générale du Web, nous reprendrons tout simplement quelques outils informatiques fondamentaux de la représentation de connaissances, notamment RDF et le langage OWL. Puisqu’il s’agit de technologies bien connues — qui font même partie des normes W3C —, au lieu d’une introduction détaillée, nous nous contentons de proposer au lecteur les documents [56] et [53]. RDF ET OWL L’intérêt particulier de RDF Bien évidemment, il serait également envisageable de se contenter d’une approche descriptive plus générale et plus neutre que celle de RDF/OWL, par 178 exemple à travers un simple document XML dont nous fournirions le schéma, comme fait d’ailleurs Unicode pour décrire sa base de données. Ce qui rend RDF plus intéressant par rapport à notre problème particulier est justement qu’il vise à résoudre exactement le genre de problème auquel nous faisons face : qu’il propose un vocabulaire tout fait pour décrire nos ressources ainsi que leur relations, qu’il offre un moyen naturel d’identification unique du contenu décrit (à travers les URI et les espaces de nommage), et qu’il est entouré d’outils informatiques déjà implémentés servant à interpréter les données ainsi décrites et à en déduire des inférences logiques de manière algorithmique. RDF et ses schémas seraient suffisants pour définir et pour créer une onto- OWL logie relativement simple de propriétés de textème. Ce que le langage OWL peut offrir en addition à RDF (dont il est l’extension) sont la possibilité de formuler des contraintes sur les données décrites (par exemple, une propriété donnée ne peut avoir qu’une seule valeur, il s’agit donc d’une contrainte de cardinalité), d’exprimer l’égalité entre deux éléments distincts (les propriétés arab_form et forme_arabe sont équivalentes), d’appliquer des opérations ensemblistes sur des classes d’éléments (définir une catégorie de propriété comme étant l’union ou l’intersection d’autres catégories), et ainsi de suite [56, section 5.5]. Dans le schéma RDF/OWL que nous allons mettre en œuvre, nous emploierons quelques éléments OWL sans pour autant réellement exploiter la richesse descriptive offerte par ce langage. Notre but n’est pas de mettre sur la table une solution « clé en main » mais d’illustrer comment RDF et OWL peuvent être appliqués à notre problème de normalisation des propriétés de textème. DEUX VISIONS DE MODÈLE Les schémas RDF/OWL servent à définir un vocabulaire restreint, autre- Les schémas RDF/OWL ment dit : un modèle, qui consiste principalement en des classes et des relations3 entre classes et/ou autres données. La conception de notre schéma RDF/OWL — sa complexité, le choix des différents aspects du modèle de texte à prendre en compte ou à négliger — a une profonde influence sur la puissance avec laquelle les propriétés de textème individuelles pourront ensuite être décrites. Notre point de départ est la considération selon laquelle la définition et la Schéma centralisé description de nouvelles propriétés est une activité répartie parmi tous les uti- et descriptions réparties lisateurs de documents et du Web. Afin de permettre l’interopérabilité de ces définitions, l’utilisation d’un langage commun est essentiel. Nous fournirons ce langage par le cadre formel d’un schéma RDF/OWL centralisé. Le même schéma met en place le vocabulaire nécessaire pour décrire les catégories de propriétés. Les définitions des propriétés, des catégories et de l’appartenance des premières aux dernières se trouvent dans des documents RDF/OWL répartis sur le 3 Dans le jargon RDF, les relations qui interconnectent des classes et d’autres types de données s’appellent propriétés. Pour éviter une confusion inévitable avec les propriétés de textème (définies en tant qu’instances de classes et non en tant que propriétés RDF), nous avons choisi de les appeler relations dans cette thèse. 179 FIG. 3.2 – Un serveur central (tel que http://omega.enstb.org) stocke le schéma RDF/OWL ainsi qu’un document RDF/OWL décrivant un ensemble de propriétés « cœur ». Ce document, ainsi que des définitions d’autres propriétés réparties sur le Web, font recours à cet unique schéma. Web. Chaque utilisateur souhaitant publier la définition d’une nouvelle propriété (voire d’une nouvelle catégorie) devra créer un tel document RDF/OWL, en conformance avec le schéma central. En même temps, il serait sans doute très pratique de publier sur le même serveur que celui du schéma central un « ensemble cœur » de propriétés et de catégories qui couvrent les usages les plus communs. Une telle distribution des définitions entre machines est illustrée en fig. 3.2. L’URL du schéma, http://omega.enstb.org/TextemePropertySchema.owl, sert non seulement à accéder à celui-ci mais également comme espace de nommage du vocabulaire que le schéma définit. Les trois URL des documents RDF/OWL de définition de propriétés, eux, joueront également le rôle d’espaces de nommage permettant l’identification unique et globale des propriétés qu’ils décrivent. Schémas répartis : L’approche que nous venons de décrire suppose que l’ontologie des provers une sémantisation priétés — la structure et les relations entre propriété, nom de propriété, catotale du texte ? tégorie de propriété ; en un mot : les connaissances — sont décrites dans un seul schéma central et que les documents RDF/OWL répartis décrivent les différentes propriétés en tant que ressources, sans qu’ils aient la possibilité de raffiner ou d’étendre le schéma. Bien que l’on assure ainsi la compatibilité des descriptions RDF/OWL réparties, on empêche, par contre, la formulation d’autres connaissances sur les propriétés et les catégories que celles explicitement prévues par le schéma central. Une vision plus audacieuse et plus proche de la philosophie du Web sémantique serait de permettre la création de schémas individuels répartis à travers lesquels la description des nouvelles propriétés et catégories peut être détaillée et adaptée à leurs futurs usages. Autrement dit, il s’agirait de permettre la création de nouvelles ontologies qui étendent l’ontologie centrale. Par exemple, le créateur d’une nouvelle propriété forme_arabe pourrait décrire les quatres valeurs (initial, médian, final, isolé) individuellement, les lier 180 à d’autres ontologies linguistiques existants, et ainsi de suite. Une extrapolation naturelle à laquelle nous sommes inévitablement ame- Textèmes nés est l’application de la description RDF/OWL non seulement aux proprié- en tant que ressources tés individuelles mais au texte entier : il s’agit de regarder les textèmes in- RDF dividuels d’un texte comme étant des ressources RDF/OWL. Cette approche paraît d’autant plus séduisante que la considération du texte comme une suite de ressources RDF permettrait d’exprimer des relations (de dépendance, de contexte, etc.) entre propriétés et entre textèmes d’une façon simple et naturelle. Ceci étant dit, aussi charmante que soit, d’un point de vue de cohérence théorique, l’idée de décrire notre modèle de texte à tous ses niveaux par le même cadre informatique de représentation des connaissances, nous devrons la rejeter pour des raisons pragmatiques de simplicité d’implémentation. Les documents dont chaque élément textuel est décrit par une ressource RDF sont clairement au-delà de ce qui est aujourd’hui réalisable en pratique. Nous nous tiendrons donc à l’architecture RDF que nous avons esquissée initialement, comprenant un seul schéma central. LE SCHÉMA CENTRAL Notre schéma RDF/OWL central contiendra les définitions suivantes (voir fig. 3.3 pour le contenu du fichier RDF/OWL correspondant au schéma cidécrit) : – la définition d’une classe TextemePropertyKey, avec une relation hasKeyName qui permet d’y associer un identifiant de clé. Les instances de la classe TextemePropertyKey sont les éléments de la strate T2 (les clés de propriété). – La définition d’une classe TextemePropertyCategory qui modélise la Le schéma définit catégorie de propriété. L’appartenance à une super-catégorie est réalisée une catégorisation par une relation hasSuperCategory. Cette relation n’est pas fonctionnelle, il est donc possible qu’une catégorie hérite de multiples supercatégories. – L’appartenance d’une clé de propriété à une catégorie est représentée par une relation hasPropertyCategory dont le domaine est égal à l’ensemble d’instances de la classe TextemePropertyKey et la portée à celles de TextemePropertyCategory. Bien entendu, une propriété peut appartenir à plusieurs catégories à la fois. – Le type des valeurs associables à une clé de propriété doit être défini par la relation hasValueType qui pourrait désigner, par exemple, un type de données XML Schéma (XML Schema Datatype) en tant que ressource RDF. L’APPLICATION DU SCHÉMA : CRÉATION DE DÉFINITIONS DE PROPRIÉTÉS Comme nous avons expliqué, lorsqu’un développeur ou utilisateur crée une nouvelle propriété qu’il souhaite ensuite inclure dans ses documents, il a tout intérêt de décrire cette propriété à l’aide d’un fichier RDF/OWL. Ainsi, à la réception du document utilisant la propriété en question, toute application sachant récupérer sur le Web sa description RDF/OWL et l’interpréter sera plus apte à prendre des décisions vis-à-vis de l’usage de la propriété : de la sup181 <?xml version="1.0"?> <!DOCTYPE rdf:RDF [ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> ]> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://omega.enstb.org/TextemePropertySchema.owl#" xml:base="http://omega.enstb.org/TextemePropertySchema.owl"> <owl:Ontology rdf:about=""/> <!-- CLÉS DE PROPRIÉTÉ --> <owl:Class rdf:ID="TextemePropertyKey"/> <owl:FunctionalProperty rdf:ID="hasKeyName"> <rdf:type rdf:resource="&owl;DatatypeProperty"/> <rdfs:domain rdf:resource="#TextemePropertyKey"/> <rdfs:range rdf:resource="&xsd;string"/> </owl:FunctionalProperty> <owl:ObjectProperty rdf:ID="hasValueType"> <rdfs:domain rdf:resource="#TextemePropertyKey"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="hasPropertyCategory"> <rdfs:range rdf:resource="#TextemePropertyCategory"/> <rdfs:domain rdf:resource="#TextemePropertyKey"/> </owl:ObjectProperty> <!-- CATÉGORIES --> <owl:Class rdf:ID="TextemePropertyCategory"/> <owl:TransitiveProperty rdf:ID="hasSuperCategory"> <rdf:type rdf:resource="&owl;ObjectProperty"/> <rdfs:domain rdf:resource="#TextemePropertyCategory"/> <rdfs:range rdf:resource="#TextemePropertyCategory"/> </owl:TransitiveProperty> </rdf:RDF> FIG. 3.3 – Le contenu du fichier http://omega.enstb.org/TextemePropertySchema.owl. 182 primer, de la cacher ou de l’afficher à l’utilisateur d’une manière conviviale, etc. Un tel exemple de fichier RDF/OWL se trouve en fig. 3.4 (voir fig. 3.5 pour une représentation graphique). L’élément <owl:imports> indique au logiciel interprétant ce fichier que le schéma auquel il s’adhère se trouve à l’URL précisé. Notre fichier exemple définit quatre catégories : linguistique, culturelle, graphique et typographique, cette dernière étant une sous-catégorie de graphique. Le même document définit trois propriétés : Script, Color et Case, y compris leurs noms de clé textuels, leurs catégories et leurs types de valeurs associés. Ces derniers peuvent pointer vers des ressources diverses : vers des définitions « XML Schema Datatype » ou vers des types définis au sein d’ontologies extérieurs (dans notre exemple, le type « casses typographiques » est de ce genre). RÉFÉRENCE À L’ONTOLOGIE DEPUIS LE DOCUMENT Dans les sections précédentes, nous avons décrit nos propriétés à l’aide d’une ontologie RDF/OWL répartie sur le Web. Lors de l’édition d’un document en textèmes, il est essentiel que les propriétés employées soient identifiables en tant qu’éléments de cette ontologie. Par conséquent, chaque propriété dans le document doit être explicitement identifié en indiquant son espace de nommage préalablement défini dans la description RDF/OWL correspondante. (Dans notre exemple, pour des raisons pratiques, nous avons supposé que l’espace de nommage d’une propriété était identique à l’URL du document RDF/OWL la décrivant.) Les applications de traitement textuel ayant accès au Web pourront ainsi récupérer et analyser les descriptions RDF/OWL de propriétés inconnues, en déduire leurs catégories d’usages et d’autres informations leur permettant soit de prendre des décisions automatiquement, soit d’aider l’utilisateur en lui fournissant les informations récupérées. USAGES SUPPLÉMENTAIRES DE RDF/OWL Jusqu’ici nous avons utilisé RDF et OWL pour créer une ontologie de des- Ontologie de signes cription de propriétés. Nous avons également fait allusion à une possibilité de d’écriture considérer le texte comme étant une suite de ressources RDF/OWL. Même si cette approche nous paraît forte intéressante, nous n’avons pas la possibilité de l’explorer en détail dans le cadre de cette thèse. Par contre, ce que nous ne manquerons pas d’examiner est la possibilité et l’intérêt de décrire un répertoire de signes d’écriture — tel que le codage Unicode — à l’aide d’une ontologie RDF/OWL similaire qui se connecte, bien évidemment, à celle que nous venons de définir. Nous reviendrons à cette idée en section 3.4.3. 3.3.2 O PTIMISATIONS AU SEIN DES DOCUMENTS EN TEXTÈMES Nous avons déjà considéré certaines méthodes d’optimisation par rapport à l’implémentation réalisée au sein du logiciel Ω2 . Étant donné qu’Ω2 ne garde jamais en mémoire plus de texte que la quantité de deux pages, l’optimisation de la consommation de mémoire avait nettement moins d’intérêt que celle de la rapidité de traitement. Un document, en revanche, est une ressource inerte 183 <?xml version="1.0"?> <!-- ==================== DÉFINITIONS D’ENTITÉS ====================== --> <!DOCTYPE rdf:RDF [ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <!ENTITY typo "http://typo.nexistepas.org/Typo-Ontology#"> ]> <!-- ====================== ESPACES DE NOMMAGE ======================= --> <rdf:RDF xmlns="http://localhost/CoreProperties.owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:tx="http://omega.enstb.org/TextemePropertySchema.owl#" xml:base="http://omega.enstb.org/CoreProperties.owl"> <!-- ==================== IMPORTATION DU SCHÉMA ====================== --> <owl:Ontology> <owl:imports rdf:resource="http://omega.enstb.org/TextemePropertySchema.owl"/> </owl:Ontology> <!-- =================== INSTANCES DE CATÉGORIES ===================== --> <tx:TextemePropertyCategory rdf:ID="CatLinguistic"/> <tx:TextemePropertyCategory rdf:ID="CatCultural"/> <tx:TextemePropertyCategory rdf:ID="CatGraphic"/> <tx:TextemePropertyCategory rdf:ID="CatTypographic"> <tx:hasSuperCategory rdf:resource="#CatGraphic"/> </tx:TextemePropertyCategory> <!-- =============== INSTANCES DE CLÉS DE PROPRIÉTÉ ================= --> <tx:TextemePropertyKey rdf:ID="PropScript"> <tx:hasKeyName>Script</tx:hasKeyName> <tx:hasValueType rdf:resource="&xsd;string"/> <tx:hasPropertyCategory rdf:resource="#CatLinguistic"/> <tx:hasPropertyCategory rdf:resource="#CatCultural"/> <tx:hasPropertyCategory rdf:resource="#CatTypographic"/> </tx:TextemePropertyKey> <tx:TextemePropertyKey rdf:ID="PropColour"> <tx:hasKeyName>Color</tx:hasKeyName> <tx:hasValueType rdf:resource="&xsd;integer"/> <tx:hasPropertyCategory rdf:resource="#CatGraphic"/> </tx:TextemePropertyKey> <tx:TextemePropertyKey rdf:ID="PropCase"> <tx:hasKeyName>Case</tx:hasKeyName> <tx:hasValueType rdf:resource="&typo;Cases"/> <tx:hasPropertyCategory rdf:resource="#CatTypographic"/> </tx:TextemePropertyKey> </rdf:RDF> FIG. 3.4 – Le contenu du document http://omega.enstb.org/CoreProperties.owl qui définit les propriétés Script, Color et Case et les catégories linguistique, culturelle, graphique et typographique. Les entités définies en début de document servent à abrévier les URL des espaces de nommage de notre schéma. 184 FIG. 3.5 – Les classes du schéma RDF et leurs instances. à laquelle on n’exige en général pas la possibilité d’accès aléatoire : qu’il s’agisse d’un document déjà formaté (PDF) ou dans son état brut (HTML), on suppose qu’il est d’abord lu et traité par un logiciel qui en crée sa propre représentation interne. Par conséquent, lorsqu’il est question d’optimisation de documents, on raisonne uniquement en termes d’espace de stockage occupé. Dans la suite, nous examinerons donc les possibilités de réduire l’espace de stockage des documents en textèmes. Une suite de textèmes implémentée dans sa forme « brute » est très redondante car de nombreuses informations similaires se répètent textème par textème : – les clés de propriété ; – des valeurs plus ou moins invariantes au long du texte ; – des valeurs relativement complexes, comme par exemple la description de la structure d’un logogramme chinois, même si non répétitives, occupent cumulativement un espace mémoire relativement important ; – des textèmes entiers ayant exactement les mêmes propriétés (clés et valeurs) peuvent se répéter de nombreuses fois. La clé de propriété est un identifiant sémantique unique qui réfère, d’après le système proposé dans la section précédente, à une ressource RDF/OWL. En tant que tel, conceptuellement, il est composé d’un identifant d’espace de nommage et d’un identifant de ressouce à l’intérieur de ce dernier. Il faut noter que le nom textuel de clé, tel que nous l’avons utilisé dans tous nos exemples (comme par exemple arab_form ou glyph_id), n’a rien à voir avec ces identifiants et sert principalement comme étiquette destinée à l’utilisateur humain (et au lecteur du présent texte). Il est donc envisageable de garder dans le document en textèmes un tableau qui met en correspondance le couple (espace de nommage, identifiant de ressource) avec un simple identifiant numérique, unique au sein du docu185 Aspects redondants d’un document en textèmes La clé de propriété ment. C’est cette valeur à taille réduite qui servira comme clé de propriété dans les textèmes. Ontologie Bien évidemment, pour garantir l’interprétabilité des différentes propriétés dans le document textuelles du document même en l’absence de connexion au Web, il est tout à fait possible d’inclure dans le document les données RDF/OWL les décrivant, en forme compressée si nécessaire. L’inclusion de ces données n’augmente pas considérablement la taille totale du document, à l’exception de documents courts contenant un grand nombre de propriétés différentes. Valeurs invariantes En pratique, il arrive souvent que la valeur de certaines propriétés ne change que très rarement ou pas du tout dans le document. Typiquement, le système d’écriture, la couleur de glyphe, la fonte, le corps, etc., sont des propriétés dont la valeur est relativement constante. Une manière d’optimiser leur stockage est de les représenter non pas textème par textème mais chacun en tant qu’un ensemble d’intervalles : en supposant que les textèmes du document sont numérotés (l’ordre choisi n’a pas d’importance), à chaque couple clé-valeur on associe une suite d’intervalles : (c, v) 7→ (d1 , f1 ), (d2 , f2 ), ..., (dn , fn ) Propriétés et relations contextuelles Indexation de valeurs Indexation de textèmes : retour au caractère ? où à partir du textème tdi jusqu’au textème tfi la propriété identifiée par c prend la valeur v. Lorsqu’une propriété donnée est présente dans tous les textèmes du document (parce que, par exemple, tous les signes d’un document appartiennent à un système d’écriture donnée), et une certaine valeur est beaucoup plus fréquente que les autres (parce que le document est écrit presque exclusivement en latin), alors il est possible de considérer et de signaler explicitement la valeur par défaut de cette propriété et de n’indiquer que les intervalles où la valeur diffère de celle-ci. Lorsque le document en question possède des propriétés ou des relations « contextuelles » (e.g., dépendances), celles-ci peuvent également être représentées à travers des intervalles. Rappelons qu’en section 2.5.2 nous avons défini le contexte macroscopique comme étant l’ensemble de relations d’arité supérieure, associées à des tuples de signes ou de textèmes (figures 2.9 sur la page 132 et 2.10 sur la page 133). Il faut cependant faire attention aux deux sémantiques bien distinctes que peut représenter un intervalle (d, f ) de textèmes donné : il peut autant désigner l’ensemble de textèmes entre les positions d et f (où leur ordre n’a pas d’importance) que la relation de ces mêmes textèmes (où la relation compte). Autrement dit, dans le premier cas, la propriété s’associe à chacun des textèmes de l’intervalle séparément, alors que dans le second cas, elle s’associe à la chaîne même. Cette distinction doit être reflétée par l’implémentation. Lorsque les valeurs d’une propriété ne se répètent pas entre textèmes successifs mais elles occupent une quantité de mémoire relativement importante, il est envisageable d’indexer l’ensemble de valeurs par une table externe et d’y référer dans les textèmes individuels par ces indices. Cette technique n’est efficace que si le coût de l’indexation en termes d’espace occupé ne compense pas le gain qu’elle apporte (les valeurs n’occupant que quelques octets n’ont pas besoin d’être indexées). Jusqu’ici, nous avons ignoré de prendre en compte une particularité fondamentale de l’écrit, à savoir que celui-ci est composé d’un ensemble fini de 186 latin_letter = A case = upper color = red latin_letter = M case = lower latin_letter = A case = lower latin_letter = Y case = lower latin_letter = A case = lower FIG. 3.6 – Représentation du texte « Amaya » par un trie où chaque niveau correspond à une propriété et chaque arête à une valeur apparue dans le texte. Au niveau inférieur on obtient autant de feuilles qu’il y a de textèmes distincts dans le texte. signes qui se répètent. La taille de cet ensemble peut montrer des variations très fortes selon la nature du texte et selon la gamme de propriétés qui nous en intéressent — bref : selon l’usage. Par exemple, l’ensemble de base des signes d’un programme informatique est le plus souvent limité à moins que 128 éléments (le codage ASCII). Dans le cas de tels documents — où la plupart des signes sont décrits par les mêmes propriétés et le nombre de signes utilisés est petit — et plus particulièrement dans le cadre d’un modèle de texte en textèmes, on a tout intérêt d’envisager l’indexation des textèmes entiers, et non (ou non seulement) celle des propriétés individuelles. Mais alors, une telle approche ne signifie-t-elle un retour au principe de codage de caractères d’Unicode où le code numérique sert comme abréviation d’un ensemble de propriétés ? Certes, d’un point de vue d’optimisation de stockage il s’agit d’une approche très similaire, sans cependant que cette similarité ne se traduise au niveau conceptuel ou même au niveau de l’accès au contenu du document. En effet, qu’il s’agisse d’une interface de programmation ou d’une interface utilisateur, l’indexation de textèmes n’exclut point l’accès au document à travers une interface « orientée textème ». A priori, en partant d’un document en textèmes non-optimisé dont on ne Le coût de l’indexation possède aucune information concernant la répartition ou la nature de ses propriétés, une telle indexation peut être relativement coûteuse en calculs puisqu’il faut comparer tous les textèmes avec tous les autres, propriété par propriété, ce qui correspond à une complexité de O(n2 p2 ) où n est le nombre de textèmes et p est le nombre moyenne de propriétés par textème. Ce coût très élevé correspondant à un algorithme de « force brute » peut être réduit à O(pn log v) où v est le nombre moyen de valeurs par propriété (qui apparaissent dans le texte), avec le facteur log v ≈ 1 dans les cas pratiques. L’idée est de construire un trie spécial dont chaque parcours racine→feuille correspond 187 à un textème distinct et présent dans le texte (voir fig. 3.6). Le trie se construit en parcourant le texte textème par textème, et à l’intérieur de chaque textème propriété par propriété. (On suppose que l’ordre des propriétés dans les textèmes est invariable, une contrainte qui est facile à satisfaire.) Chaque arête du trie qui part d’un nœud correspondant à une propriété pi représente une valeur distincte rencontrée dans le texte. Puisque l’on visite chaque propriété de chaque textème une seule fois, le nombre total d’ajouts ou de déplacements dans le trie est égal à pn. Cependant, le nombre d’arêtes partant d’un nœud donné peut être très élevé (par exemple, une propriété unicode_character dans un texte chinois peut prendre des milliers de valeurs différentes). Par conséquent, le coût de retrouver l’arête correspondant à la valeur de la propriété courante n’est pas toujours négligeable. Pour la plupart des cas, ce coût peut être réduit à O(1) à l’aide d’une table de hâchage (dont il faut un exemplaire pour chaque nœud à partir duquel sort un grand nombre d’arêtes), mais dans le cas de propriétés qui possèdent un très grand nombre de valeurs différentes (comme les codes Unicode dans un texte chinois), le coût de la recherche d’arête doit être majoré par O(log v). 3.4 LE MODÈLE DE TEXTÈMES EN TANT QUE MODÈLE DE TEXTE GÉNÉRIQUE Le caractère est un des types de données le plus élémentaires de l’ingénierie informatique. Grâce à sa simplicité, il est considéré si trivial qu’il est souvent utilisé comme brique de base de structures plus complexes (telles que les documents XML). Cependant, nous avons pu constater que la simplicité apparente et superficielle du texte Unicode pouvait cacher une complexité considérable, davantage que les codages antérieurs (tels que le codage ASCII). Le modèle de texte introduit dans cette thèse remplace le caractère par une structure de données, le textème, et à travers cet acte il assume ouvertement la complexité inhérente du texte. Nous avons déjà examiné les implications théoriques de ce fait dans le chapitre précédent. Cette fois-ci, nous adoptons le point de vue du développeur d’applications, directement intéressé par des problèmes tels que la compatibilité, la performance, la simplicité de manipulation. Est-ce que la complexité et la nature ouverte du textème représentent un obstacle à son adoption en tant que remplaçant du caractère, c’est-à-dire en tant qu’unité textuelle de bas niveau ? Est-ce que « char *str » pourrait éventuellement être substitué par « texteme *str »4 , ou bien la notion de caractère comme unité textuelle atomique est-elle inévitable dans la pratique ? Comment serait construite une bibliothèque de base de gestion textuelle basée sur les textèmes ? Voici les questions que nous tenterons de répondre dans cette dernière partie du présent chapitre. 4 La question est, bien entendu, rhétorique : le type de données char du langage C ne pourra jamais être remplacé par d’autres types, étant donné qu’il est, par convention, le seul type à avoir une taille fixe d’un octet, indépendamment d’architecture et d’implémentation. 188 3.4.1 O PÉRATIONS ÉLÉMENTAIRES DE MANIPULATION DE TEXTE Commençons par une énumération rapide de ce que l’on peut considérer comme les opérations élémentaires de manipulation de texte. Nous n’avons la prétention de donner ici ni une liste exhaustive de primitives, ni une méthodologie formelle et analytique de décomposition des opérations textuelles. Nous sommes toutefois convaincus que les opérations ci-décrites pourront au moins nous servir comme un point de départ dans l’objectif de comparer les implémentations respectives du modèle Unicode d’une part et du modèle en textèmes d’autre part. Ceci dit, il ne faut pas oublier que ce que nous appelons « modèle en textèmes » dénote en réalité une famille de modèles qui se distinguent par de nombreux paramètres de réalisation. Au présent, dans l’attente de définitions plus élaborées de ces modèles concrets (auxquelles nous arriverons bientôt), toute comparaison entre modèle Unicode et modèle en textèmes ne pourra être que partielle. Le point commun le plus évident entre la chaîne de caractères et la chaîne de textèmes est, bien entendu, qu’il s’agit de chaînes, c’est-à-dire de suites unidimensionnelles d’éléments du même type. Au-delà de la simplicité apparente de cette structure, la plupart des opérations textuelles s’avèrent être tout sauf triviales : LE CALCUL DE LA LONGUEUR DE LA CHAÎNE est une opération triviale s’il s’agit tout simplement d’indiquer le nombre de caractères ou le nombre de textèmes dans la chaîne. Cependant, on sait très bien que ce chiffre ne coïncide pas forcément avec le nombre de « signes » ou de « graphèmes » dans le texte. Dans le cas du texte Unicode, il faut tenir compte, entre autres, des caractères combinants. Dans le cas de textèmes, souvent on s’intéressera non pas au nombre total de textèmes mais au nombre d’apparitions d’une propriété ou d’un ensembe de propriétés précis. Par exemple, on voudrait savoir le nombre de « glyphes » dans le texte, sachant que pas tous les textèmes contiennent forcément une propriété glyph_id, et qu’il se peut qu’un textème en contienne plusieurs si le modèle permet l’usage de propriétés récursives. L’INSERTION D’UN NOUVEL ÉLÉMENT dans la chaîne, qu’il s’agisse d’un ca- ractère ou d’un textème, peut présenter des difficultés lorsque l’insertion s’effectue entre deux éléments qui entretiennent une relation de dépendance. Le modèle Unicode n’est pas dépourvu de la notion de dépendance (entre, par exemple, un caractère de base et ses caractères combinants), bien qu’il n’existe aucun mécanisme pour indiquer ceci de manière explicite. Dans le modèle en textèmes, nous avons considéré la dépendance comme une information de nature contextuelle. Par conséquent, et pourvu que nous souhaitions l’existence d’une forme de gestion de dépendances, l’insertion d’un nouveau textème dans la chaîne ne peut se faire sans la prise en compte du contexte. LA SUPPRESSION D’UN ÉLÉMENT TEXTUEL engendre la même sorte de pro- blèmes que l’insertion. LE TEXTÈME EST UNE STRUCTURE DE DONNÉES, puisqu’il est composé de propriétés ; à cette structure est lié un nombre d’opérations élémentaires 189 intra-textémiques. Un de nos objectifs est de définir la structure de données qu’est le textème de sorte que la performance des opérations les plus fréquentes soit optimale, sans que l’espace de mémoire qu’elle occupe ne soit trop important. La « liste de propriétés » dont est constitué le textème peut, en effet, être conçue de nombreuses manières : triée ou non, avec accès linéaire ou aléatoire aux propriétés individuelles, avec ou sans indexation des clés et des valeurs, etc. LA RECHERCHE D’UNE PROPRIÉTÉ au sein d’un textème est sans doute parmi les opérations les plus courantes. Pratiquement toutes les autres opérations y font recours : le filtrage de textème, ainsi que l’insertion, la suppression et la modification de propriété, commencent par vérifier si la propriété en question est déjà présente ou non dans le textème. La récurrence extrêmement fréquente de l’opération de recherche de propriété suggère la nécessité de garder la liste de propriétés triée par défaut. L’INSERTION ET LA SUPPRESSION DE PROPRIÉTÉ sont des opérations relativement simples dont l’implémentation est, bien évidemment, fonction de la structure de données choisie pour la liste de propriétés. LA MODIFICATION DE LA VALEUR DE PROPRIÉTÉ a la particularité — contrairement aux autres opérations telles que l’ajout ou la suppression de propriété — de pouvoir briser la dépendance algorithmique dans le texte (cf. section 2.7.7, p. 159). PAR VÉRIFICATION DE L’ÉGALITÉ DE DEUX PROPRIÉTÉS on n’entend pas forcément la vérification de leur identité. En section 2.4.4 nous avons déjà parlé des différentes formes d’égalité entre propriétés qui découlent des extensions et des intensions de celles-ci. La vérification de ces formes d’égalité peut être ou ne pas être réalisable en pratique, encore une fois en fonction de l’implémentation concrète du modèle de texte. LE FILTRAGE DU TEXTÈME est une opération fréquemment employée : entre autres, elle précède la comparaison de textèmes ou de textes, elles-mêmes opérations de base de la recherche textuelle (cf. cidessous). LA COMPARAISON DE DEUX TEXTES Unicode, afin de vérifier leur égalité, ne se limite pas à la comparaison des codes de caractère respectifs. Il est souvent nécessaire de prendre en compte les propriétés définies dans la BD d’Unicode, par exemple pour les comparaisons indépendantes de casse ou pour obtenir la décomposition canonique de caractères combinés. De même, la comparaison de deux chaînes de textèmes ou tout simplement de deux textèmes ne se limite pas à vérifier que les deux contiennent les mêmes couples clé-valeur. Un filtrage préalable de propriétés peut être nécessaire, suivi par une éventuelle comparaison des extensions communes ou des intensions des textèmes en question. De plus, une éventuelle différence entre la segmentation des deux chaînes de textèmes (e.g., entre un textème de ligature « fi » et une chaîne de deux textèmes « f i ») peut rendre la comparaison encore plus complexe. 190 LA RECHERCHE TEXTUELLE , enfin, est une opération complexe qui se dé- compose en comparaisons élémentaires entre textèmes individuels. La liste ci-dessus nous sera utile dans la suite en tant que « pense-bête » lorsque nous devrons déterminer les aspects implémentationnels de notre modèle : la performance d’une implémentation donnée dépendra de la complexité des algorithmes qui réalisent les opérations élémentaires. 3.4.2 L A COMPATIBILITÉ DE LA CHAÎNE DE TEXTÈMES ET DE LA CHAÎNE DE CARACTÈRES Sur notre chemin vers la caractérisation des aspects implémentationnels Unicode est inévitable du modèle en textèmes, notre point de départ est une considération d’ordre pragmatique, à savoir que l’introduction d’un nouveau modèle de texte aux systèmes informatiques en général ne peut se faire qu’en assurant une parfaite compatibilité avec le modèle actuel : celui des chaînes de caractères Unicode. Si au niveau du modèle interne d’une application ou d’un format de document on peut encore envisager un éloignement des standard actuels en faveur de modèles alternatifs, nous devons nous plier devant l’impossibilité incontestable d’un tel changement de modèle au niveau global, du moins dans le court et moyen terme. En effet, même l’adoption mondiale du codage Unicode a été le fruit d’efforts considérables, non seulement sur un plan technique mais aussi sur des plans commercial, politique et même diplomatique. En face des difficultés conséquentes de normalisation liées à la moindre modification du standard Unicode, la perspective de remplacer celui-ci par un modèle « révolutionnaire » reste, au mieux, une utopie. Bref, la proposition de modèles alternatifs n’a donc d’intérêt pratique que si ceux-ci restent compatibles avec Unicode. Or, nous avons déjà montré (p. 171) qu’une chaîne de caractères (Unicode ou autre) peut être simulée de façon triviale par une chaîne de textèmes ayant comme seule propriété le code de caractère. Inspirés de ce fait, nous examinerons dans la suite cinq scénarios ou niveaux de compatibilité entre Cinq niveaux le modèle en textèmes et le modèle en caractères, le premier niveau étant le de compatibilité plus proche du modèle Unicode et le cinquième le plus éloigné. Bien évidemment, ces quatre scénarios n’épuisent pas toutes les voies de convergence possibles entre textèmes et Unicode. Ainsi, nos observations relatives aux niveaux de compatibilité nous mèneront ensuite à la considération d’un codage de signes qui tente d’établir un compromis entre les approches intensionnelle et extensionnelle. 1. COMPATIBILITÉ STRICTE. Nous exigeons un maximum de compatibilité entre les deux modèles : les textèmes ne peuvent contenir qu’une seule propriété, celle du code de caractère. Dans ce cas, des bibliothèques de base de gestion de chaînes de caractères peuvent être mises à jour sans qu’aucune application les utilisant ne change de comportement. Bien que ce niveau de compatibilité interdise l’ajout de nouvelles pro- Accès à l’intension priétés aux textèmes, il peut par contre permettre l’accès aux caractères du caractère individuels comme s’ils y étaient représentés en tant qu’ensembles de propriétés. Cette approche est particulièrement utile pour les caractères Unicode qui possèdent un grand nombre de propriétés contenues dans 191 la base de données d’Unicode. Déjà à ce niveau de compatibilité, le concept de textème arrive à présenter quelques avantages. Le filtrage des propriétés de caractère est permis 2. COMPATIBILITÉ SOUSTRACTIVE . Comme précédemment, on exige la présence du code de caractère dans chaque textème mais on permet le filtrage des propriétés du caractère référencé (lorsque celui-ci possède une description intensionnelle, comme dans le cas du codage Unicode). En d’autres termes, on permet l’« annulation » des propriétés de caractère. Ce qui motive la définition de ce niveau de compatibilité est le fait que de nombreuses opérations textuelles courantes font recours à une forme de filtrage : il suffit de penser aux opérations indépendantes de casse (case folding), à l’utilité de la classification de signes (lettres, signes de ponctuation, chiffres, etc.) et ainsi de suite. La soustraction de propriétés est donc un type d’opération fréquemment employé. L’ajout de propriétés est permis Similarité à M-text 3. COMPATIBILITÉ ADDITIVE . Cette fois-ci, l’annulation de propriétés est interdite, par contre on permet l’ajout de nouvelles propriétés. Le modèle M-text de la bibliothèque m17n [40] est équivalent au modèle de texte de ce niveau de compatibilité. 4. COMPATIBILITÉ ADDITIVE -SOUSTRACTIVE. Il est évident que les opéra- tions d’addition et de soustraction de propriété correspondent à la généralisation et à la spécialisation du textème, respectivement. Les deux opérations étant très communes, nous avons tout intérêt à définir un niveau de compatibilité où elles sont permises simultanément, tout en exigeant la présence du code de caractère dans le textème. 5. SANS RESTRICTIONS. On n’impose aucune restriction sur l’emploi de propriétés : la présence du code de caractère dans le textème — ou des propriétés équivalentes — est facultative. Nous avons de bonnes raisons d’établir les niveaux de compatibilité de cette manière précise. Rappelons que l’ensemble de signes dans T0 représentés par un textème t = {(tclé1 , tvaleur1 ), ..., (tclé n , tvaleurn )} donné s’obtiennent en calculant l’extension commune de celui-ci (cf. p. 104) : extc(t) = ext(tvaleur1 ) ∩ ... ∩ ext(tvaleurn ) Il s’ensuit que l’addition d’une nouvelle propriété φ au textème t réduit l’ensemble de signes que le textème représente au sous-ensemble extc(t) ∩ ext(φ) il s’agit donc de la spécialisation du textème. Puisque le caractère n’est qu’un cas particulier du textème (une catégorie fonctionnelle de T3 ), la même chose peut être dite d’un caractère tc décrit à l’aide de propriétés φc1 , ..., φcn (fig. 3.7(a)). De la même manière, la soustraction (suppression, annulation) d’une propriété φci depuis le même tc relève d’une généralisation de la sémantique du textème car on obtient un surensemble de extc(t) (fig. 3.7(c)). Compatibilité additive Supposons maintenant qu’un textème ti est la spécialisation d’un autre textème tj : extc(ti ) ⊆ extc(tj ) 192 Cette relation est en réalité une variante de la relation « est-un » fréquemment employée en représentation des connaissances (à savoir, il s’agit de sa variante ensembliste, voir le fameux article [18]). En considérant maintenant un textème tc comprenant une seule propriété de caractère (telle que Unicode = U+0041), il est clair que l’ajout d’une nouvelle propriété φ crée un nouveau textème qui entretient une relation de spécialisation avec tc , autrement dit, qui « hérite de » tc . Nous avons donc le droit de parler de compatibilité additive précisément parce que (1) il s’agit de l’ajout d’une nouvelle propriété au textème, et (2) parce que le nouveau textème ainsi obtenu possède toutes les propriétés que possède le caractère initial, il est donc compatible avec celui-ci. Il se peut, par contre, que l’extension commune de tc et l’extension de la propriété φ soient disjointes, en d’autres termes, que ces propriétés soient incohérentes entre elles (fig. 3.7(b)), dans lequel cas le textème étendu ne dénote aucun signe existant. Le niveau 3 de compatibilité additive nécessite donc déjà une forme de gestion d’incohérences (ou de dépendances, ce qui réfère au même phénomène), comme en témoigne d’ailleurs l’emploi de drapeaux de volatilité par le modèle M-text (p. 148), modèle qui opère également au niveau de compatibilité additive. Le cas de la compatibilité soustractive est le cas inverse : le textème est Compatibilité la généralisation du caractère, et pour cette raison il peut arriver qu’il désigne soustractive non pas un mais plusieurs caractères à la fois (fig. 3.7(c)). Par exemple, en supprimant la propriété de casse d’un caractère A majuscule, le textème obtenu désignera en même temps la capitale et le bas-de-casse. La relation « est-un » est donc inversée par rapport au cas de la compatibilité additive, ce qui signifie que, strictement parlant, le textème généralisé ne peut être considéré « compatible » avec le caractère initial dans un sens de substituabilité. La raison pour laquelle nous continuons, malgré tout, d’appeler un tel textème « compatible » avec le caractère dont il contient le code est la certitude que le caractère reste toujours une « sous-classe » spécifique du textème : même si le caractère possède des propriétés non représentatives du textème, ils continuent à garder une certaine « proximité sémantique ». La relation d’héritage entre le textème et le caractère n’est plus forcément valable lorsque l’ajout de nouvelles propriétés et l’annulation de celles du caractère sont permis simultanément. Comme on peut voir en fig. 3.7(d), une généralisation suivie par une spécialisation peut créer un textème dont l’extension, bien que non vide, est disjointe de l’extension du caractère auquel il fait référence. En d’autres termes, dans un textème contenant l’ensemble de propriétés φc1 , ..., φcn décrivant un caractère (le code de caractère peut être considéré comme l’abréviation de l’ensemble précédent), l’annulation de certaines de ces propriétés couplé avec l’ajout de nouvelles peut créer la description d’un signe qui n’a plus « rien à voir » avec le caractère initial. Par exemple, dans le textème Unicode = 0041 − letter = A + letter = B on a annulé la propriété letter = A et on a ensuite ajouté une propriété letter = B. Le signe ainsi décrit existe (il s’agit de la lettre latine majuscule « B ») mais il est incohérent avec le code Unicode contenu dans le textème. 193 tc φ tc + φ tc (a) φ tc − φci tc (b) (c) tc − φci (tc − φci ) + φ tc φ (d) FIG. 3.7 – Les extensions de textèmes conformes aux différents niveaux de compatibilité. tc est un textème qui représente un caractère particulier, dont les propriétés sont φc1 , ..., φcn . φ est une propriété supplémentaire que l’on ajoute à ce textème. tc − φci signifie la suppression de la propriété φci à partir du textème, tc + φ signifie l’ajout de la propriété φ au textème. (a) spécialisation par ajout de propriété, (b) incohérence entre un caractère et une propriété ajoutée, (c) généralisation par soustraction de propriété, (d) ajout et soustraction simultanés où le résultat est incohérent avec le caractère initial. Les niveaux 4 et 5 sont Il est facile à prouver que le 4e niveau de compatibilité où l’addition et la équivalents soustraction simultanées sont permises est équivalent au 5e niveau où aucune contrainte n’est posée sur l’usage des propriétés de textème : il suffit d’annuler d’abord la totalité des propriétés de caractère, pour ensuite ajouter de nouvelles propriétés arbitrairement. De même, l’annulation d’une propriété suivie par l’ajout d’une autre avec la même clé mais une valeur différente équivaut à une modification. Il s’avère donc que ni dans le cas du 5e niveau, ni dans celui du 4e , on ne peut garantir la compatibilité entre le modèle Unicode et le modèle en textèmes. Cette constatation est d’autant plus déconcertante que le 4e niveau de compatibilité semble, au premier regard, être d’une utilité très significative : aussi bien l’enrichissement des caractères par de nouvelles propriétés que le filtrage des propriétés de caractère sont des opérations textuelles très courantes. Devoir interdire leur application simultanée afin de maintenir un degré de compatibilité minimum avec le modèle Unicode paraît donc un compromis mal choisi. Dans la suite, nous allons étudier plus en détail les différents niveaux de 194 compatibilité, notamment en ce qui concerne la gestion de dépendances et les enjeux de l’implémentation des opérations textuelles élémentaires. COMPATIBILITÉ STRICTE (NIVEAU 1) Rappelons que ce niveau assure une compatibilité totale entre le codage de caractères et le texte en textèmes : chaque textème doit représenter ni plus ni moins qu’un caractère Unicode. Cela se réalise par l’inclusion d’une seule propriété dans le textème, celle du code de caractère, l’intérêt étant toujours une représentation textuelle simple et économique, avec la possibilité d’accéder aux caractères en tant qu’ensembles de propriétés. Par « accès » nous entendons avant tout la lecture des valeurs de propriétés ; la modification, l’ajout et la suppression de propriétés, si permis, doivent être sévèrement restreints afin d’éviter la création de textèmes qui ne représentent aucun caractère. Plus Condition nécessaire précisément, on peut permettre une modification (ajout, suppression) si le de la modification des propriétés nouveau textème t′ ainsi produit vérifie que de textème ′ |extc(t )| = 1 c’est-à-dire qu’il représente un et un seul caractère. Ceci est vérifiable en un temps proportionnel à O(pS) où p est le nombre de propriétés dans t′ et S est un paramètre dont la valeur montre des variations fortes, entre 1 et le nombre total de caractères dans le codage. (En réalité, S est égal à |ext(φmin )| où φmin ∈ t′ est la propriété de t′ qui caractérise le moins de caractères du codage. L’algorithme de calcul d’extension commune, ainsi que son coût, seront détaillés dans la section 3.4.6.) La vérification de cette condition n’est moins, en fait, qu’une forme de gestion de dépendance, avec comme critère supplémentaire de non seulement interdire l’incohérence (où extc(t′ ) = ∅) mais aussi les textèmes référant à plusieurs caractères (où |extc(t′ )| > 1). Ce dernier critère semble cependant être trop restrictif car la généralisation est une opération textuelle très courante. Rappelons que celle-ci consiste à élargir l’extension commune d’un textème par la soustraction de certaines de ses propriétés : à le rendre plus général, justement. COMPATIBILITÉ SOUSTRACTIVE (NIVEAU 2) Puisque la soustraction d’une propriété de textème ne peut jamais introduire d’incohérence (tant que le textème d’origine n’est pas déjà incohérent), cette opération peut être permise sans vérification d’incohérence préalable. En pratique, un caractère généralisé peut être représenté par un textème au sein duquel on permet la soustraction de propriété : Unicode = 0041 − case = upper La généralisation crée un grand nombre de nouveaux éléments textuels : un caractère ayant un nombre p > 1 de propriétés peut être à l’origine de p−1 X p i=1 i = 2p − 3 (i est le nombre de propriétés soustraites) 195 textèmes généralisés (ne pas comptant le caractère lui-même et le textème vide). Du coup, la vérification de l’égalité de deux textèmes devient un problème non trivial. En mode de compatibilité stricte, les textèmes sont limités à représenter des caractères codés uniques et individuels : chaque textème correspond à un et un seul élément du codage. L’égalité de deux textèmes n’est donc possible que si les deux signes correspondants — et donc leurs codes — sont identiques5 . En revanche, lorsque la généralisation est permise, l’égalité extensionnelle de deux textèmes doit être vérifiée par la comparaison de leurs extensions communes respectives, une opération d’une complexité plus élevée (cf. section 3.4.6). COMPATIBILITÉ Propriétés externes et internes au codage Spécialisation par propriété externe Spécialisation par propriété interne ADDITIVE (NIVEAU 3) La possibilité d’ajouter des propriétés supplémentaires aux textèmes représentant des signes — autrement dit : de les spécialiser et d’ainsi enrichir le texte — est également une opération fréquente et nécessaire, d’où l’intérêt de la compatibilité additive. Comme signalé précédemment, le modèle M-text mis en œuvre par la bibliothèque m17n fonctionne à ce niveau : il permet l’ajout arbitraire de propriétés aux chaînes de caractères Unicode. Dans la suite, nous aurons besoin de distinguer entre deux types de propriétés : les propriétés internes au codage de caractères sont celles qui sont présentes dans la BD d’Unicode, dans le sens où elles sont employées dans la description d’au moins un caractère. Les propriétés externes au codage, elles, sont typiquement les propriétés venant de diverses opérations de traitement de texte, et n’apparaissent nulle part dans l’intension des caractères. La spécialisation par propriété externe est un cas bien particulier car elle ajoute au textème une propriété « inconnue » du point de vue du codage. (Il peut s’agir, par exemple, d’une propriété de couleur ajoutée lors du formatage.) Du coup, ce nouveau textème ne sera plus équivalent à aucun caractère codé. La relation qu’entretiennent le caractère et le textème est une relation de type « est-un » (d’héritage) : le caractère spécialisé hérite du caractère d’origine. La propriété externe ajoutée se distingue facilement (par sa clé) des propriétés internes, elle n’interfère pas avec le caractère d’origine. Une propriété interne, en revanche, possède une extension connue (déterminée par la BD d’Unicode), et il se peut que celle-ci soit disjointe de l’extension commune du caractère d’origine : si t est un textème représentant un caractère Unicode, et t est spécialisé par une propriété interne φ, alors l’extension du textème résultant, extc(t) ∩ ext(φ), peut être vide. En d’autres termes, il se peut que la propriété interne φ soit incohérente avec le codage de caractères parce qu’il n’existe pas de caractère dans le codage qui soit caractérisé par un tel ensemble de propriétés. Ceci est encore facilement détectable (il suffit de vérifier si extc(t) ∩ ext(φ) = ∅) et le système peut décider l’action à prendre : soit considérer cela comme une incohérence et interdire l’ajout de la propriété φ, soit considérer le nouveau textème comme la première manifes5 Pourvu que le codage ne contienne des signes extensionnellement ou intensionnellement égales. Même dans ce cas, une table pré-calculée des classes d’équivalence — à laquelle nous reviendrons bientôt — peut accélérer la vérification d’égalité. 196 tation d’un nouveau caractère, créé « à la volée » pour le temps du traitement du texte en question. En pratique, la spécialisation par propriété interne est une opération fréquemment employée. Par exemple, un utilisateur peut ajouter une propriété no_break = true à un caractère U+0020 SPACE qui par défaut permettrait la coupure de ligne à travers sa propriété « SP » (espacement ordinaire, coupure indirecte permise) indiquée par la BD d’Unicode. Dans ce cas particulier, le comportement raisonnable de la part du moteur de texte serait sans doute de supplanter la propriété par défaut par celle voulue par l’utilisateur. Cependant, dans le cas d’une autre combinaison de propriétés telle que script = arab et character = U+0644, l’insertion par l’utilisateur d’une propriété script explicite ayant la valeur (disons) hebrew résulte en un ensemble de données où il est moins évident de prévoir le comportement souhaité6 . Il est donc essentiel d’établir une politique de résolution d’incohérence non-ambigu entre propriétés implicites du caractère Unicode et propriétés explicitement ajoutées, comme par exemple un ordre de priorité préétabli (e.g., les propriétés explicites supplantent toujours les propriétés implicites). Ayant constaté le comportement différent au sein du textème entre propriétés externes et internes, une question importante se pose : comment peut-on décider pour une propriété donnée si elle est externe ou interne ? L’identité de la clé et de la valeur à celles d’une des propriétés Unicode peut indiquer qu’il s’agit d’une propriété interne, mais ceci n’est pas une condition nécessaire : dans l’exemple précédent, no_break et SP ont la même sémantique alors qu’elles s’identifient par des clés différentes. La réponse générale à ce problème se trouve, encore une fois, dans la création d’une base de description formelle de propriétés qui décrivent, entre autres, les relations d’équivalence qu’elles entretiennent. Ces considérations nous amènent au problème plus général des relations d’égalité entre textèmes et entre propriétés que nous avons examinées pour la première fois en section 2.4.4 et que nous avons également mentionnées à propos des opérations textuelles élémentaires. Nous avons pu voir qu’en théorie il existe deux manières de vérifier ces relations : soit en les dérivant à partir des relations ensemblistes dans T0 engendrées par T1 , soit par leur indication à travers des règles sémantiques explicites. Cette indication de l’équivalence pourrait venir de la description RDF/OWL distribuée des propriétés en question (si un tel cadre sémantique de description de propriétés est disponible), sinon, d’une base de données centralisée (c’est-à-dire intégrée dans la bibliothèque de gestion textuelle) d’un éventuel « noyau dur » de propriétés. L’autre solution, c’est-à-dire la dérivation des relations à partir des extensions des propriétés dans O ⊆ T0 , n’est possible que si l’ensemble O en question est connu en pratique : il comprend un nombre limité d’éléments dont chacun possède sa propre description intensionnelle. Tel est le cas des caractères Unicode (dont la description intensionnelle, fournie par la BD d’Unicode, reste cependant assez limitée). C’est également le cas du codage de signes intensionnel que nous allons introduire très prochainement, en section 3.4.3. Si la relation d’égalité entre propriétés peut se définir de plusieurs ma6 Il est inutile de mentionner que la résolution de tels conflits arabo-hébraïques s’est montrée souvent très difficile dans l’histoire. 197 Exemples de spécialisation Externe ou interne : comment décider ? Deux méthodes de vérification de l’incohérence et de l’égalité entre propriétés nières, c’est encore plus le cas de celle entre chaînes de textèmes conformes Égalité entre chaînes au niveau 3 de compatibilité. À part l’égalité extensionnelle entre deux texde textèmes tèmes (extc(t1 ) = extc(t2 )), les diverses formes d’égalité intensionnelles et Dépendances au niveau 3 Contraintes informatiques même l’égalité superficielle (où toutes les propriétés sont identiques), la présence du code de caractère permet de comparer deux textèmes en « mode de compatibilité », comme si l’on avait à comparer deux chaînes de caractères. La vérification de l’égalité des codes de caractère en ignorant le reste des propriétés est évidemment la méthode la plus rapide, mais son utilité est limitée : on a souvent intérêt à comparer des caractères filtrés (e.g., comparaison indépendante de casse) où le filtrage se manifeste par la présence de propriétés soustraites (annulées). Ainsi, en fin de compte, la comparaison entre caractères Unicode présente des difficultés similaires à celle entre ensembles de propriétés, ce qui n’est guère surprenant : la BD d’Unicode n’est autre qu’une forme de description intensionnelle, quoique restreinte, de l’ensemble de caractères à travers leurs propriétés et parfois même leurs relations. Contrairement au niveau de compatibilité soustractive, le niveau 3 est atteint par la problématique de la dépendance. D’une part, comme nous venons de voir, l’ajout de propriétés internes peut créer une incohérence entre celles-ci et le caractère référencé depuis le textème. Cette forme de violation de dépendance, de nature extensionnelle (cf. page 152) — car elle découle des relations ensemblistes entre les extensions respectives du caractère et de la propriété interne —, peut être évitée d’une façon préventive si l’on interdit l’ajout de propriétés internes aux textèmes. Il reste à résoudre cependant la gestion de dépendances algorithmiques qui peuvent exister entre tous genres de propriétés. Dans le chapitre précédent nous avons proposé quelques méthodes informatiques de gestion automatique de dépendances ; cependant, dans le contexte d’une bibliothèque textuelle générique de bas niveau, de telles approches ne sont pas forcément appropriées, aussi bien pour des raisons de perte de performance que parce que différents usages demandent différentes politiques de gestion. L’implémentation d’un système simple et léger de gestion de dépendances peut, malgré tout, être envisageable si son emploi reste optionnel, comme c’est le cas dans la bibliothèque m17n, certes sur un niveau très basique. Notamment, le drapeau de volatilité faible semble être très utile dans le but de demander la suppression automatique d’une propriété lorsque le caractère contenu dans le textème est modifié. Alternativement, la méthode de liens que nous avons présenté en section 2.7.8 est à peine plus complexe, aussi bien au niveau de mise en œuvre qu’au niveau de son application, même si elle ne peut indiquer que les dépendances inter-textémiques. La méthode de paramètres de condition (section 2.7.8) est une méthode plus puissante et plus générale que les précédentes, mais elle aurait certainement un effet négatif considérable sur la performance des opérations textuelles. COMPATIBILITÉ SOUSTRACTIVE- ADDITIVE (NIVEAU 4) Précédemment dans cette section nous avons annoncé et prouvé la « mauvaise nouvelle » selon laquelle la permission simultanée de l’addition et de la soustraction de propriété équivaut à n’imposer aucune restriction sur le contenu des textèmes. Autrement dit, même si la présence d’un code de ca198 ractère y est exigée, rien n’empêche la modification arbitraire de la sémantique du textème en annulant d’abord certaines propriétés Unicode pour ensuite y ajouter d’autres, incohérentes avec le caractère référencé. Ainsi, lorsque le textème t représente un signe codé dont on annule une propriété φg et que l’on spécialise ensuite par l’ajout d’une propriété φs , l’extension du textème t′ résultant peut être non-vide même si t et φs sont incohérents entre eux, de manière analogue à l’exemple sur la fig. 3.7, p. 194. Le 4e niveau de compatibilité est donc en réalité un niveau de non-compatibilité, dans ce sens équivalent au 5e niveau. Fort heureusement, à travers l’ajout d’une légère contrainte supplémentaire à la définition du 4e niveau, on peut arriver à avoir et le beurre et l’argent du beurre, c’est-à-dire d’assurer la cohérence entre caractères et textèmes tout en permettant l’addition et la soustraction simultanées. Il suffit de préciser que seul l’ajout de propriétés externes est permis. Comment gérer alors les cas d’utilisation tels qu’un caractère d’espacement ordinaire (U+0020 SPACE) auquel l’utilisateur souhaite ajouter une propriété d’insécabilité ? Il s’agit, bien entendu, d’une propriété qui apparaît dans la BD d’Unicode, d’une propriété interne. L’interdiction de l’ajout de cette propriété est sans doute fort gênante d’un point de vue d’utilisabilité. Afin de rendre ce critère moins restrictif, on peut envisager un système qui, au moment de l’ajout de la propriété d’insécabilité, remplace le caractère U+0020 SPACE par U+00A0 NO-BREAK SPACE possédant cette propriété interne7 et ainsi évite l’incohérence. CHAÎNES DE TEXTÈMES SANS RESTRICTIONS (NIVEAU 5) Le fait que le textème se dissocie complètement du caractère rend la compatibilité avec le modèle Unicode nettement plus problématique. Un caractère est toujours représentable en forme de textème. Dans le cadre du 5e niveau, le contraire n’est pas vrai : puisque rien ne garantit la présence du caractère dans le textème — ni la présence de son code numérique ni celle des propriétés le décrivant n’est assurée —, tout textème n’est pas convertible en un caractère spécifique. Par conversion, on entend plus exactement une opération qui vérifie une forme d’égalité — extensionnelle, intensionnelle, etc. — entre le textème et l’ensemble de caractères. Le problème est que cette opération n’est envisageable que si une description intensionnelle « suffisamment détaillée » et formalisée de l’ensemble des caractères est disponible, ce qui n’est pas du tout le cas pour la plupart des codages de caractères existants. Même dans le cas d’Unicode, la description intensionnelle reste très limitée et pour la plupart restreinte à des propriétés de formatage8 . Plus que jamais, la construction d’une base de connaissances intensionnelle de caractères semble être incontournable. Le problème est que notre ensemble de base de signes, O ⊂ T0 , est radicalement étendu (car nous n’imposons aucune restriction à ce qu’un textème 7 L’automatisation de cette procédure, y compris le coût de l’algorithme, sera le sujet des sections suivantes. 8 Certes, le nom informel du caractère Unicode (tel que LATIN CAPITAL LETTER A ), si analysé, pourrait éventuellement fournir davantage d’informations. 199 Conversion du textème en caractère L’ensemble T0 devient illimité peut exprimer), et par conséquent il n’est plus possible de vérifier l’égalité ou la dépendance de deux textèmes en comparant leurs extensions communes dans T0 . Prenons l’exemple d’un textème contenant une seule propriété glyph = a ; peu importe la manière dont le glyphe est référencé en pratique (par son identifiant numérique employé dans une fonte, par un pointeur vers une zone de mémoire contenant son image bitmap, etc.). Le caractère Unicode correspondant à ce glyphe est bien évidemment le U+0061 LATIN SMALL LETTER A, mais cette égalité est loin d’être évidente pour l’ordinateur. L’extension de ce textème dans T0 est inconnue, T0 lui-même étant inconnu car trop grand pour être entièrement déterminé. En d’autres termes, il existe effectivement une dépendance extensionnelle (glyph = a) → (char = U+0061) mais elle n’est pas formellement dérivable. La même dépendance peut cependant exister en forme algorithmique : d’une part, le code de caractère peut être déduisible de l’identifiant de glyphe lorsque la table cmap de la fonte est disponible, d’autre part, le caractère peut être obtenu à partir du glyphe par reconnaissance optique. Dans les deux cas, il s’agit de dépendances formulées en tant que relations de rang supérieur (cf. section 2.7.6). Cependant, l’existence de telles relations, c’est-à-dire la disponibilité de telles algorithmes, ne peut être supposée comme cas universel. Correspondances m-à-n Une autre difficulté de conversion depuis la chaîne de textèmes vers la entre caractère(s) chaîne de caractères est le manque de bijection dans certaines situations : le et textème(s) textème peut représenter des unités pertinentes textuelles plus petites ou plus grandes que le caractère. Encore une fois, l’indication explicite des dépendances algorithmiques peut être utile : supposons qu’une fonte assemble un signe coréen à partir de trois glyphes correspondant aux jamos : + + = . La chaîne de textèmes se présente alors de la manière suivante : glyph = glyph_id = 120 p glyph = glyph_id = 213 p glyph = glyph_id = 46 Les liens indiquent la dépendance entre les trois glyphes et peuvent signaler que ceux-ci correspondent à un seul caractère. Ensuite, un algorithme ayant accès à la fonte peut calculer le code de caractère à partir des trois identifiants de glyphe. 3.4.3 U N CODAGE DE SIGNES INTENSIONNEL À LA BASE DU MODÈLE DE TEXTE GÉNÉRIQUE Nous arrivons ici à ce qui est en quelque sorte la synthèse des résultats jusqu’ici annoncés dans cette thèse. Initialement, nous avons introduit le modèle de texte en textèmes en tant qu’alternative aux modèles actuels. Nous avons extensivement argumenté pour les avantages des modèles intensionnels, s’inspirant de certaines approches de la représentation des connaissances, en les comparant au modèle caractère-glyphe représenté par Unicode et aux technologies de fontes intelligentes. En même temps, nous avons également pu voir que la généralité, l’intensionnalité et la nature ouverte de nos modèles entraînent de nouvelles difficultés, souvent semblables aux problèmes classiques de la RC : 200 – la vérification de l’égalité de deux textèmes est très complexe et peut même être impossible en pratique ; celle de deux caractères Unicode est toujours possible mais peut également être complexe (cf. character folding, décomposition canonique, etc.) ; – la dépendance entre propriétés est un phénomène avec lequel il faut compter et qu’il faut savoir reconnaître et gérer ; – de même, il devrait être possible de reconnaître l’équivalence entre propriétés non identiques (un cas spécial de la dépendance) ; – il est parfois nécessaire de connaître les catégories fonctionnelles des propriétés (lors d’un changement de contexte d’usage, par exemple) ; – etc. Nous avons pu remédier à certaines de ces difficultés par la proposition de méthodes de gestion de dépendances et par la description des propriétés à l’aide de ressources RDF/OWL. En même temps, nous nous sommes rendus compte que l’efficacité de ces solutions est toujours bornée par la « surpuissance » du modèle : que l’ensemble de signes que le textème peut potentiellement représenter est illimité. Bien sûr, cette liberté peut également être vue comme un avantage — elle fournit au modèle, entre autres, le potentiel d’être à la source d’usages textuels novateurs (cf. section 2.4.7) — mais dans certaines situations il paraît plus intéressant de limiter les signes de base à un ensemble bien circonscrit et décrit (sans cependant que celui-ci soit forcément fermé). En somme, ce qui semble souvent être le plus souhaitable d’un point de vue implémentationnel est un compromis entre les mondes extensionnel et intensionnel, un modèle hybride qui profite à la fois des avantages d’Unicode que de ceux offerts par le modèle de texte en textèmes. Toujours dans le contexte de la construction d’un modèle de texte générique et d’usage universel, nous examinerons la possibilité d’un codage de signes intensionnel. Ce nouveau codage, quelque peu similaire au codage de caractères Unicode mais plus formel, plus général et plus ouvert, se distingue par les particularités suivantes : – les signes y contenus n’appartiennent pas forcément à la même catégorie fonctionnelle : c’est pour cette raison que nous ne parlons pas de codage de caractères ou de glyphes mais de signes en général ; – chaque signe possède une description sémantique (intensionnelle) extensive, à travers ses propriétés ; cette description est plus large et plus générale que celle fournie par la BD d’Unicode ; – les propriétés possèdent également leur propre description sémantique ; – aussi bien la description des signes que celle des propriétés est formalisée. Tout d’abord, une précision regardant l’appellation codage de signes. La L’usage du mot « signe » raison pour employer le terme signe au lieu de textème est la volonté de dis- au lieu de « textème » tinguer entre l’élément textuel en tant que membre d’un répertoire (le signe, remplaçant du caractère) et en tant qu’élément d’une chaîne (le textème), bien que les deux entités soient définies en tant qu’ensembles de propriétés. En effet, conformément aux niveaux de compatibilité 2.(a) et 3, il se peut qu’un textème, élément textuel générique, contienne un signe mais également d’autres propriétés ajoutées, d’où le besoin de clarifier la différence entre les deux concepts. 201 En quelque sorte, rien que l’extension de la BD d’Unicode par de nouvelles propriétés — aussi bien en nombre qu’en usages couverts — présente un intérêt considérable, puisque celles-ci peuvent fournir des informations liées à de nouveaux usages et d’ainsi rendre le texte Unicode plus polyvalent. Mais l’augmentation du nombre des propriétés crée une situation similaire à l’augmentation de la taille de codage : il devient essentiel d’y « faire l’ordre » par l’introduction de propriétés de propriétés ou des relations entre propriétés (e.g., relation d’équivalence). Notamment, les propriétés peuvent être catégorisées selon de nombreux critères, y compris l’usage, dans lequel cas nous parlons de catégories fonctionnelles. Celles-ci sont indispensables notamment lorsque le texte subit des changements de contexte d’usage (cf. section 2.6), entre autres pour filtrer les propriétés non pertinentes. Codage L’adoption d’un codage de signes ne représente pas forcément un retour de signes 6= modèle vers un modèle de texte équivalent à celui d’Unicode. Les considérations de Unicode compatibilité entre caractère et textème de la section précédente s’appliquent naturellement à des éléments textuels codés autres — plus générals, plus formalisés — que les caractères Unicode, ce qui sera le cas des signes que nous sommes sur le point d’introduire. Notamment, le troisième niveau de compatibilité reste disponible afin de permettre la spécialisation ou la généralisation des signes codés, tout en assurant la maintenance d’une compatibilité entre textèmes et signes. Le textème en tant que conteneur général de propriétés permet donc la conception de nombreux différents modèles de texte basés sur l’idée de codage de signes, tout comme le caractère Unicode peut être à la base du modèle caractères-glyphes de la technologie OpenType, de Graphite, de M-text, etc. Dans la suite, nous donnerons d’abord une solution pratique — qui est loin d’être la seule possible — d’implémentation d’un codage de signes intensionnel. Ensuite, nous considérerons les intérêts et les difficultés que présente une telle approche en comparaison avec l’emploi du codage Unicode. La polyvalence du codage de signes DESCRIPTION DU CODAGE EN RDF/OWL La nécessité Le critère peut-être le plus important que nous exigeons vis-à-vis du codage d’une définition de signes est qu’il possède une description formelle9 . Rappelons que dans le formelle du codage cas d’Unicode, ce critère n’est satisfait qu’à moitié : d’une part, chaque pro- priété possède un identifiant unique et les associations entre points de code et propriétés sont formalisées ; d’autre part, les propriétés elles-mêmes sont décrites informellement, à travers des documents destinés au lecteur humain. La maintenance des propriétés disponibles, leur documentation et la description des caractères par elles sont prises en charge exclusivement par la Consortium Unicode. Description du codage Dans le cas du codage de signes, les propriétés possèdent également leur en RDF/OWL description formelle en forme de ressources RDF/OWL, déjà présentées en section 3.3.1. En possession d’un document RDF/OWL de définition de propriétés tel que celui de la figure 3.4, p. 184, le codage de signes intensionnel 9 Par « description formelle » nous entendons un format de représentation directement interprétable par l’ordinateur, tel qu’un document XML, qui adhère à un schéma structurel ainsi qu’à un certain ensemble de conventions sémantiques. 202 se représente tout simplement comme un autre document RDF/OWL (voir fig. 3.8) qui fait recours aux ressources définies dans le document précédent. Bien entendu, les classes Texteme et TextemeProperty ainsi que les relations hasProperty, hasKey et hasValue doivent être définies dans un schéma RDF/OWL centralisé, comme c’était le cas du schéma de description des propriétés. En théorie, on pourrait envisager l’extensibilité décentralisée du codage de signes, d’une manière similaire à ce que nous proposons pour la liste de propriétés. Cependant, un codage ouvert et réparti présente un inconvénient majeur par rapport à un codage fermé et centralisé tel qu’Unicode : il n’est pas capable d’assurer l’unicité des codes numériques. En effet, la motivation principale pour abandonner les codages de caractères nationaux en faveur d’Unicode était justement la pénibilité de jongler avec une multitude de codages mutuellement incompatibles, de devoir indiquer pour chaque bout d’information textuelle son codage, etc. Dans le cas d’un codage de signes ouvert, on fait face au même problème : tout identifiant de signe, qu’il soit numérique ou autre, doit être attaché à une référence unique vers l’emplacement de sa définition, à la manière d’un espace de nommage. Même si en théorie cela ne pose pas de problème — puisque les textèmes peuvent toujours représenter cette information en tant que propriété —, il nous semble plus réaliste d’abandonner l’idée d’un codage de signes dont l’extension est ouvert au public, et de préférer un codage centralisé. Finalement, nous tenons à remarquer que le format RDF n’est bien évidemment pas le seul outil possible pour la description d’un codage de signes. Nous avons choisi ce cadre précis principalement parce qu’il est simple, il fait partie des normes W3C, il s’inscrit dans le cadre des outils de la représentation des connaissances, il a un format textuel en XML favorisant la publication sur le Web, et finalement parce que plusieurs moteurs d’inférence adaptés existent sur le marché. Typiquement, après qu’une application (ou bibliothèque) a récupéré et interprété le (ou les) document(s) décrivant le codage de signes, elle gardera celui-ci en mémoire dans un format rapidement accessible. Un standard décentralisé : est-ce possible ? Téléchargement et représentation en mémoire du codage de signes 3.4.4 U TILISATION DU CODAGE DE SIGNES AVEC LE MODÈLE DE TEXTE EN TEXTÈMES Un codage de signes associe un code numérique à chacun de ses élé- L’importance du code ments. Ce code, suivant le principe russellien de nommage (p. 94), peut être numérique considéré comme l’abréviation de l’ensemble de propriétés qui décrivent le signe. Qui parle d’abréviation parle d’économie de stockage : l’emploi des codes de signes permet une réduction drastique de l’espace occupé par le texte en mémoire vive. Compte tenu du nombre potentiellement très élevé de propriétés décrivant chaque signe, et aussi du fait que le signe peut également appartenir à des relations non-unaires (comme des propriétés contextuelles ou des relations d’équivalence non-extensionnelles) qui font néanmoins partie de sa définition, une implémentation de modèle qui ne recourt pas à une forme d’abréviation de ces informations serait, pour dire le moins, difficilement envisageable. Les considérations d’optimisation seront le sujet de la section 3.4.6 ; pour 203 <?xml version="1.0"?> <!-- ==================== DÉFINITIONS D’ENTITÉS ====================== --> <!DOCTYPE rdf:RDF [ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <!ENTITY cp "http://omega.enstb.org/CoreProperties.owl#"> <!ENTITY typo "http://typo.nexistepas.org/Typo-Ontology#"> ]> <!-- ====================== ESPACES DE NOMMAGE ======================= --> <rdf:RDF xmlns="http://omega.enstb.org/TextemeEncoding.owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xml:cp="http://omega.enstb.org/CoreProperties.owl#" xml:base="http://omega.enstb.org/TextemeEncoding.owl"> <owl:Ontology rdf:about=""/> <!-- ============================ SCHÉMA ============================= --> <rdfs:Class rdf:ID="Signe"/> <rdfs:Class rdf:ID="TextemeProperty"/> <!-- couple clé/valeur --> <owl:ObjectProperty rdf:ID="hasProperty"> <rdfs:range rdf:resource="#TextemeProperty"/> <rdfs:domain rdf:resource="#Signe"/> </owl:ObjectProperty> <owl:FunctionalProperty rdf:ID="hasKey"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/> <rdfs:domain rdf:resource="#TextemeProperty"/> <rdfs:range rdf:resource="&cp;TextemePropertyKey"/> </owl:FunctionalProperty> <owl:ObjectProperty rdf:ID="hasValue"> <rdfs:domain rdf:resource="#TextemeProperty"/> </owl:ObjectProperty> <!-- ================ DESCRIPTION DES SIGNES CODÉS =================== --> <Signe rdf:ID="00041"> <!-- lettre latine A majuscule --> <hasProperty><TextemeProperty> <hasKey rdf:resource="&cp;PropLatinLetter"/> <hasValue rdf:resource="&cp;letter_a"/> </TextemeProperty></hasProperty> <hasProperty><TextemeProperty> <hasKey rdf:resource="&cp;PropCase"/> <hasValue rdf:resource="&typo;upper"/> </TextemeProperty></hasProperty> <hasProperty><TextemeProperty> <hasKey rdf:resource="&cp;PropScript"/> <hasValue rdf:datatype="&xsd;string">latin</hasValue> </TextemeProperty></hasProperty> <hasProperty><TextemeProperty> <hasKey rdf:resource="&cp;PropUnicode"/> <hasValue rdf:datatype="&xsd;int">65</hasValue> </TextemeProperty></hasProperty> </Signe> </rdf:RDF> FIG. 3.8 – Une description (partielle) du signe « A majuscule » en RDF, à l’aide des propriétés PropLatinLetter (lettre « a »), PropCase (casse majuscule), PropScript (système d’écriture latin) et PropUnicode (référence vers le caractère Unicode équivalent). Les propriétés sont définies dans un fichier à part, nommé CoreProperties.owl (cf. fig. 3.4, p. 184). 204 le moment, il nous suffit d’accepter que le seul véritable moyen pratique de Cas analogue : représenter un signe au sein d’un textème est d’y inclure son code numé- caractères Unicode rique. Bien entendu, conceptuellement, on considère toujours qu’un tel tex- dans les textèmes tème comporte, d’une façon comprimée, la totalité des propriétés décrivant le signe en question. Nous avons déjà examiné certaines conséquences d’une telle approche à propos de la compatibilité entre textèmes et caractères (section 3.4.2) où il s’agit également de fusionner un codage, à savoir le codage Unicode, avec le modèle en textèmes. Il n’est pas très surprenant que les enjeux sont très similaires dans les deux cas, et que les niveaux de compatibilité que nous avons définis précédemment restent pertinents pour le codage de signes. 3.4.5 R ELATIONS DE COMPOSITION ENTRE SIGNES Jusqu’ici, nous n’avons considéré que des relations d’égalité entre textèmes et signes individuels. Cependant, à chaque contexte d’usage correspond une segmentation particulière de l’écriture, segmentation dont nous appelons les éléments unités pertinentes de l’usage donné. Puisque nous permettons dans le codage l’apparition de signes appartenant à des usages différents, il se peut que le codage permette la représentation d’un signe donné aussi bien comme une seule unité composée que comme la suite de plusieurs signes élémentaires. D’ailleurs, c’est également le cas d’Unicode qui contient aussi bien les jamo coréens que les syllabes entières, ou encore les traits élémentaires chinois et les caractères précomposés. Par contre, pendant qu’Unicode n’offre aucun moyen formel d’établir une liaison entre le caractère composé et les caractères composants, la description RDF/OWL formelle du codage de signes permet la définition de telles relations10 sans problème. L’indication de ces relations est essentielle pour pouvoir vérifier l’égalité de deux chaînes de textèmes lorsqu’elles sont composées d’unités pertinentes non-équivalentes. 3.4.6 STRUCTURES DE DONNÉES ET OPTIMISATIONS DANS L’ IMPLÉMENTATION D ’ UN MODÈLE DE TEXTE GÉNÉ - RIQUE Lors de l’examen des possibilités d’optimisation dans le contexte de stockage de documents en textèmes, notre but était principalement la réduction de la taille des documents. Cette fois-ci, nous partons de l’idée que le texte à traiter a déjà été chargé en mémoire vive. Nous employons le mot traitement dans un sens général pour référer à la recherche, à la modification interactive, à l’affichage (et donc au formatage), à la transformation et même à l’échange de l’information textuelle. Ces opérations sont parmi les plus courantes exécutées par un ordinateur personnel : lors de l’affichage d’une interface utilisateur textuelle (e.g., un menu), lors de la visualisation d’une page Web dans un navigateur, lors du traitement de texte, lors de l’affichage des sous-titres d’un film, lors de l’envoi d’un e-mail, etc. Malgré l’importance toujours grandissante de 10 Ces relations appartiennent, en fait, à la strate T4 puisque chaque entrée du codage des signes est un textème, élément de T3 . 205 l’audio, de la vidéo et des interfaces graphiques dans notre expérience quotidienne, le texte en reste un ingrédient incontournable. Dans cette optique, l’accès et le traitement rapides de texte sont essentiels et doivent, par conséquent, faire partie de nos critères d’évalution de la performance des différents modèles de texte, compte tenu du fait que ce n’est pas la structure formelle de ces modèles qui doivent être comparées, mais plutôt leurs implémentations optimisées respectives. REPRÉSENTATION EN MÉMOIRE DU TEXTE EN TEXTÈMES ET DES PROPRIÉTÉS CONTEXTUELLES La structure interne du textème Table associative Liste chaînée triée Nous avons pu voir que le modèle théorique du texte en textèmes peut se décliner en de nombreux différents modèles concrets, chacun d’eux adapté à des besoins particuliers : il suffit de penser aux différents niveaux de compatibilité Unicode ou aux modèles employant un codage de signes. Bien évidemment, la mise en œuvre et les optimisations possibles varient considérablement de modèle à modèle, ce qui nous oblige à prendre en considération plusieurs implémentations alternatives. Il faut tout d’abord préciser que le stockage des propriétés internes et externes ne se fait pas de la même manière. Lorsqu’un textème fait référence à un caractère ou à un signe donné par l’intermédiaire de son code, il faut bien évidemment considérer que la totalité des propriétés de ce dernier font partie du textème. Ces propriétés internes, contenues dans la BD d’Unicode ou dans une autre ressource, doivent également être stockées de manière optimisée afin d’être rapidement accessibles. Nous tournerons vers cette problématique lors de la section suivante ; pour le moment, nous allons restreindre notre intérêt aux propriétés externes, explicitement ajoutées aux textèmes. Nous tenons également à mentionner que certaines techniques d’indexation (de clés et de valeurs de propriété, etc.) — déjà expliquées à propos de l’optimisation des documents en textèmes, cf. p. 183 — peuvent être adoptées par les bibliothèques de gestion textuelle de bas niveau. Lorsque nous avons énuméré les opérations élémentaires sur les textèmes en section 3.4.1, p. 189, nous avons considéré la recherche de propriété (par clé) au sein du textème comme celle qui est le plus fréquemment employée. Ce fait semble suggérer une structure associative pour le stockage des propriétés, implémentée par l’intermédiaire d’une table de hâchage ou un arbre trié. Cependant, de telles structures ont tendance à occuper un espace de mémoire important en comparaison avec le contenu utile. Une solution différente est d’employer une simple liste chaînée de propriétés, peu gourmande en consommation de mémoire. La liste chaînée permet des insertions et des suppressions très rapides, son parcours est par contre linéaire. Il semble donc essentiel de maintenir la liste triée, ce qui augmente la vitesse non seulement de la recherche (de O(n) à O(log n)) mais aussi d’autres opérations telles que la comparaison entre textèmes propriété par propriété (de O(n2 ) à O(n)). Peu importe le critère de tri (lexicographique ou un autre ordre préétabli), mais il semble utile de garder les propriétés les plus souvent accédées — comme par exemple le code de caractère ou de signe — en début de liste, dans des positions fixes. Cette solution est d’ailleurs équivalente à celle des propriétés codées en dur au sein des nœuds de textème d’Ω2 (p. 176). 206 Bien entendu, l’approche qui considère le texte comme une chaîne de listes (tables de hâchage, arbres, etc.) indépendantes n’est pas la seule possible : lorsque l’occupation de mémoire est un critère plus important que la performance des opérations textuelles, des structures de données alternatives peuvent devenir nécessaires. En page 186 nous avons mentionné la possibilité de représenter les propriétés qui présentent une variation peu fréquente au long de la chaîne non pas textème par textème mais comme des suites d’intervalles (début, fin), en dehors de la structure de données propre au textème. L’implémentation du modèle M-text suit un principe très similaire. Là, le texte se présente comme une chaîne de caractères Unicode sur laquelle on définit une suite d’intervalles par propriété [40, cf. les commentaires dans le fichier textprop.c]. Si cette solution rend pratiquement toutes les opérations textuelles de base relativement compliquées, y compris le simple accès à une propriété attachée à un caractère dans une position donnée, cela est compensée par une implémentation efficace de la bibliothèque m17n en langage C et par une économie importante d’espace de stockage. L’implémentation de la liste de propriétés par intervalles est d’autant plus intéressante comme idée qu’elle offre la possibilité d’intégrer le concept de propriété de textème avec celui de propriété contextuelle. Rappelons que la propriété contextuelle peut être définie comme la généralisation de la propriété de textème aux arités supérieures à l’unité. Autrement dit, une propriété contextuelle s’associe non pas à un signe (ou textème) individuel mais à un tuple de signes (ou textèmes). Ainsi définie, il y a donc une différence conceptuelle importante entre l’intervalle de propriété et la propriété contextuelle : alors qu’un intervalle de longueur n n’est qu’une « abréviation » pour un ensemble de n relations unaires, une propriété contextuelle associée à n éléments textuels représente une seule relation d’arité n. Malgré cette différence, l’intégration des deux types de structure dans un cadre informatique commun semble être une idée prometteuse. Cette idée de fusionner au niveau implémentationnel les propriétés de textème et contextuelles, dans un but de simplification et d’optimisation, nous amène également vers des considérations conceptuelles. Nous pouvons en effet nous interroger sur la nécessité même du concept de textème en tant qu’unité structurelle figée. Il nous semble possible d’imaginer un modèle de texte dépourvu d’un tel unité atomique textuelle prédéfinie : un modèle qui décrit le texte non pas comme une suite de textèmes mais comme un ensemble d’intervalles de propriétés qui se chevauchent. Nous explorerons cette idée à la fin de cette thèse, à propos des perspectives de notre travail. REPRÉSENTATION EN MÉMOIRE DU CODAGE DE SIGNES Nous avons vu que le codage de signes est une représentation formelle des relations entre les strates T0 (signes) et T1 (propriétés). Nous appelons table des intensions la table de correspondance qui énumère pour chaque signe l’ensemble de propriétés le caractérisant, par exemple11 : 11 Ici et dans la suite, pour des raisons de simplicité, nous omettrons de marquer les clés de propriété, puisque nous ne nous intéresserons qu’aux relations entre les strates T0 et T1 . Les φi représentent donc des propriétés de T1 . 207 La chaîne de textèmes Propriétés en tant qu’intervalles Intervalles dans le modèle M-text Propriétés contextuelles Intervalles sans textèmes s1 s2 s3 .. . φa , φc , φf , φk , ... φb , φc , φj , φm , ... φa , φb , φg , φh , ... .. . L’inverse de cette table, que nous appelons table des extensions et qui met en œuvre la correspondance propriété 7→ signes, sera également gardé en mémoire afin d’accélérer certaines opérations fréquentes : φa φb φc .. . s1 , s3 , s7 , s8 , s12 , ... s2 , s3 , s4 , s5 , s10 , s15 , ... s5 , s8 , s12 , s18 , s21 , ... .. . S’il existe dans le codage des signes extensionnellement égaux, une table des classes d’équivalence peut indiquer pour chaque signe la liste de tels autres signes : s8 s12 .. . s12 , s31 , ... s8 , s31 , ... .. . Si l’on possède une description sémantique de propriétés correspondant aux niveaux T2 (clés) et T3 (catégories fonctionnelles), ces informations peuvent être incluses dans des tables séparées : – une table qui donne pour chaque clé l’ensemble de valeurs tombant dessous ; – une table qui donne pour chaque clé sa ou ses catégorie(s) fonctionnelle(s) ; – une table inverse qui donne pour chaque catégorie fonctionnelle les clés y appartenant. Dans la suite, nous supposerons que pour chaque table l’accès à une entrée donnée se fait en O(1) opérations (à l’aide de hâchage, par exemple), et aussi que dans les textèmes d’un texte donné, les propriétés sont triées afin de permettre l’accès à n’importe quelle propriété en temps O(log p), p étant le nombre moyen de propriétés par textème. 3.4.7 C ALCUL DE L’ EXTENSION COMMUNE D ’ UN TEXTÈME Le calcul de l’extension commune d’un ensemble de propriétés s’est montré incontournable pour la vérification de l’égalité extensionnelle, de la dépendance extensionnelle et aussi de l’incohérence des propriétés d’un textème. Puisqu’il s’agit d’une opération si fréquemment employée, on a certaines exigeances quant à sa performance. Supposons, pour simplifier notre exemple, que la table des intensions dérivée du codage de signes est la suivante : 208 φa φb φc φd φe s2 , s4 , s5 s1 , s2 s1 , s2 , s4 s2 s1 , s2 , s4 , s5 et que le textème dont nous cherchons l’extension commune contient quatre propriétés, φa , φc , φe et φz . Les étapes de l’algorithme sont les suivantes : 1. On filtre les propriétés externes du textème, leurs extensions étant inconnues. Dans notre exemple, φz est une propriété externe car elle n’est pas présente dans la table des intensions. Coût : O(p) (p est le nombre de propriétés dans le textème). 2. On parcourt l’extension de chaque propriété du textème (φa , φc et φe ) en parallèle, en y cherchant la présence de signes communs. Un signe si fait partie de l’extension commune si et seulement si toutes les lignes parcourues le contiennent. Puisque les signes se succèdent en ordre, avec un seul parcours des lignes on arrive à déterminer l’extension commune ; plus précisément, l’algorithme s’arrête lorsque l’on arrive à la fin de la ligne la plus courte (avec le moins d’éléments). Dans notre exemple, l’extension commune obtenue est {s2 , s4 }. Le coût de cette étape de l’algorithme : O(pmin∀i {|ext(φi )|}), où les φi sont les propriétés du textème. 3.4.8 C ALCUL DE L’ ÉGALITÉ ET DE LA DÉPENDANCE EXTENSIONNELLES ENTRE TEXTÈMES ET SIGNES Dans la suite, nous donnerons un algorithme pour calculer l’égalité extensionnelle entre deux textèmes ; une variante simplifiée du même algorithme peut être utilisée pour le calcul de la dépendance extensionnelle. Il suit, bien évidemment, le même principe que l’algorithme de calcul d’extension commune, à part quelques optimisations et avec la particularité que les extensions communes des deux textèmes se calculent en parallèle pour que l’algorithme puisse s’arrêter à la première différence. Le temps d’exécution de cet algorithme est fortement dépendant des textèmes actuels à comparer, mais il peut en général être majoré par le nombre de signes dans le codage multiplié par le nombre de propriétés par textème. Le coût d’exécution typique peut être bien en-dessous de cette valeur majorée. En possession des tables des extensions et des intensions, la vérification de l’égalité de deux textèmes peut se faire à l’aide de l’algorithme suivant : 1. filtrer les propriétés « externes » : leur extensions étant inconnues, elles ne seront prises en compte dans le calcul. 2. Parcourir les propriétés des deux textèmes en parallèle (y compris l’éventuelle propriété indiquant le code de signe), à la recherche de propriétés identiques (clé1 = clé2 , valeur1 = valeur2 ) ou contradictoires (clé1 = clé2 , valeur1 6= valeur2 ). Si l’on trouve du premier, les éliminer des deux textèmes, leurs extensions étant naturellement identiques. Si l’on trouve du dernier, alors on peut conclure sur la non-égalité des 209 deux textèmes, et l’algorithme s’arrête ici12 . Coût : le parcours des deux textèmes, O(p). 3. Si nécessaire, filtrer les propriétés selon les critères de comparaison (par exemple, égalité indépendante de casse). Coût : O(f + p), f étant le nombre de propriétés à filtrer et p le nombre de propriétés par textème. 4. Si un textème contient un code de signe, alors obtenir à partir de la table des intensions l’ensemble de propriétés correspondantes. Coût : O(1). 5. À partir des propriétés restantes, comparer les extensions communes des deux textèmes. On calcule l’extension commune respective des deux ensembles de propriétés. On suppose que chaque liste de signes associée à chaque propriété dans la table des extensions est triée de la même manière, par exemple selon son code numérique. Voici un exemple d’entrées de la table des extensions pour les propriétés des textèmes t1 et t2 à comparer, respectivement : t1 t2 φa φc φd φb φk φl s4 , s5 , s88 , s154 , s160 s2 , s3 , s5 , s16 , s88 , s154 , s200 s3 , s5 , s17 , s88 , s100 , s154 , s320 s1 , s5 , s16 , s88 , s111 , s404 s4 , s5 , s17 , s88 , s111 , s234 s5 , s88 , s90 , s111 Prenons la propriété de t1 dont l’extension est la plus petite, dans notre cas φa . Pour t2 , cette propriété est φl . Prenons le premier signe dans la ligne de φa , à savoir s4 . En parcourant les lignes φc et φd en parallèle, on vérifie si s4 est présent dans toutes les deux. La réponse est négative (le parcours s’arrête à s5 car les signes sont en ordre croissant). On continue par s5 : cette fois-ci, la réponse est positive. On passe au textème t2 , afin d’y trouver, à la même manière, le signe le plus petit caractérisé à la fois par φb , φk et φl . Il s’agit également de s5 , donc pour le moment on n’a pas trouvé de différence au niveau des extensions communes de t1 et de t2 . En continuant, on trouve que s88 satisfait les mêmes critères, donc pour le moment extc(t1 ) = extc(t2 ) = {s5 , s88 }. Ensuite, extc(t1 ) s’étend par s154 et extc(t2 ) par s111 : cette première différence suffit pour conclure sur t1 6= t2 , l’algorithme s’arrête donc ici. Dans le cas contraire, il aurait fallu continuer avec le même procédé jusqu’au parcours complet de φa et de φl . Quant au coût de cette étape de l’algorithme, il est très difficile d’en donner une estimation correcte car le nombre de comparaisons élémentaires à effectuer dépend de nombreux facteurs, dont le nombre et la distribution de signes par propriété et le nombre de propriétés. Il peut néanmoins être majoré par |t1 | |t2 | X X |ext(φ1i )| + |ext(φ2j )| O i=1 j=1 12 Nous supposons toujours (cf. p. 101) que les valeurs d’une clé de propriété sont « disjointes », c’est-à-dire que pour deux valeurs (t(1)1 , t(1)2 ∈ T1 ) quelconques non-identiques (t(1)1 6≡ t(1)2 ) apparentant à la même clé (∃t(2) ∈ T2 tq. t(1)1 , t(1)2 ∈ ext(t(2) )), elles ont une intersection vide : ext(t(1)1 ) ∩ ext(t(1)2 ) = ∅. 210 φ1i et φ2j étant les propriétés de t1 et de t2 , respectivement. Ce coût, à son tour, peut être majoré par O(2SP ), S étant le nombre total de signes et P le nombre total de propriétés dans le codage, mais il s’agit d’un cas aberrant : aussi bien les deux textèmes que tous les signes du codage sont caractérisés par toutes les propriétés à la fois. 3.4.9 R ECHERCHE DE RELATIONS DE SPÉCIALISATION OU DE GÉNÉRALISATION ENTRE UN TEXTÈME DONNÉ ET LES ÉLÉMENTS DU CODAGE DE SIGNES Parmi les algorithmes liés à la compatibilité entre le texte en textèmes et le texte en signes codés, le dernier que nous allons considérer sert à trouver pour un textème t donné les signes du codage qui lui sont soit extensionnellement égaux, soit en relation d’héritage avec lui (généralisation ou spécialisation). En résumé, il s’agit de parcourir toutes les lignes de la table des intensions en parallèle (une ligne de la table contient toutes les propriétés qui caractérisent un signe précis), une seule fois. Prenons comme exemple un textème t = {φa , φc , φe , φg } et la table des intensions suivante : s1 s2 s3 s4 s5 φb , φc , φe , φf φa , φc , φe , φf φa , φc , φe φb , φd , φf φa , φe Tout d’abord, comme dans les algorithmes précédents, on élimine depuis le textème les propriétés externes au codage, dans notre cas φg . À partir des propriétés restantes, on attend que l’algorithme fournisse le résultat suivant : t est extensionnellement égal à s3 , il est la spécialisation de s5 et la généralisation de s2 . Ces résultats seront obtenus à l’aide d’un tableau que nous allons remplir au fur et à mesure : s1 s2 s3 s4 s5 φa φc φe La cellule (φi , sj ) contiendra « X » si l’intension du signe sj contient φi , sinon elle contiendra « × ». Le parcours commence par la première propriété de textème, φa , que nous appellerons propriété courante. (Comme jusqu’ici, nous supposons qu’il existe une relation d’ordre totale entre propriétés, à l’aide de laquelle sont triées aussi bien les propriétés de textème que les propriétés de signe de la table des intensions.) Les lignes de la table des extensions sont parcourues en parallèle, dans chaque ligne jusqu’à la première propriété identique ou supérieure à la propriété courante. (Le symbole « ⌊ » indiquera la position courante dans la table des extensions.) Les lignes qui contiennent la propriété courante (φa ) sont marquées dans le tableau de résultat par « X », le reste par « × » : 211 s1 s2 s3 s4 s5 ⌊φb , φc , φe , φf φa , ⌊φc , φe , φf φa , ⌊φc , φe ⌊φb , φd , φf φa , ⌊φe φa φc φe s1 × s2 X s3 X s4 × s5 X Ensuite, on prend la propriété courante suivante, φc . On avance dans chaque ligne jusqu’à ce que l’on ne rencontre φc ou une propriété supérieure. Si entretemps on dépasse une propriété (forcément absente du textème t), alors on « marque » le signe correspondant (ici par une étoile) : s1 ∗ s2 s3 s4 ∗ s5 φb , φc , ⌊φe , φf φa , φc , ⌊φe , φf φa , φc , ⌊φe φb , ⌊φd , φf φa , ⌊φe φa φc φe s1 ∗ × X s2 X X s3 X X s4 ∗ × × s5 X × La dernière propriété du textème t est φe , qui maintenant devient propriété courante : s1 ∗ s2 s3 s4 ∗ s5 φb , φc , φe , ⌊φf φa , φc , φe , ⌊φf φa , φc , φe ⌊ φb , φd , ⌊φf φa , φe ⌊ φa φc φe s1 ∗ × X X s2 X X X s3 X X X s4 ∗ × × × s5 X × X À ce point, toutes les propriétés de t ont été considérées, et notre tableau est rempli. Il faut cependant continuer le parcours de la table des intensions, ou du moins de ses lignes non encore marquées : dans notre cas, s2 , s3 et s5 . Ces deux dernières sont terminées, mais dans la ligne de s2 il reste encore une dernière propriété φf . Celle-ci est une propriété absente du textème t, il faut donc marquer s2 également. Le parcours se termine ici, et donne le résultat suivant : s1 ∗ s2 ∗ s3 s4 ∗ s5 φb , φc , φe , φf ⌊ φa , φc , φe , φf ⌊ φa , φc , φe ⌊ φb , φd , φf ⌊ φa , φe ⌊ φa φc φe s1 ∗ × X X s2 ∗ X X X s3 X X X s4 ∗ × × × s5 X × X Le tableau que nous avons rempli s’interprète de la manière suivante : – une colonne non marquée (par une étoile) qui ne contient que des « X » représente un signe qui est extensionnellement égal à t ; – une colonne marquée qui ne contient que des « X » représente un signe qui est la spécialisation de t ; – une colonne non marquée qui contient au moins un « X » et au moins un « × » représente un signe qui est la généralisation de t. Pour calculer le coût de l’algorithme, soit S le nombre total de signes dans le codage (le nombre de lignes de la table des intensions), P le nombre total de propriétés utilisées dans le codage, et p le nombre de propriétés dans t. (Dans notre exemple, S = 5, P = 6 et p = 3.) Chaque ligne de la table des extensions est parcourue une seule fois, et le nombre de comparaisons faites 212 dans la ligne i est max{|int(si )|, p}. Le coût est donc |S| X max{|int(si )|, p} ≤ O(SP ) O i=1 parce que max{|int(si )|, p} ≤ P . 3.4.10 CONCLUSIONS SUR L’UTILISABILITÉ PRATIQUE D ’ UN CODAGE DE SIGNES INTENSIONNEL Nous avons présenté les algorithmes précédents afin de démontrer que l’existence d’un codage de signes rend effectivement possible la vérification de diverses relations extensionnelles (égalité, dépendance, généralisation, spécialisation) entre deux textèmes ou entre un textème et les signes codés. En même temps, nous avons trouvé que le coût de ces algorithmes est relativement élevé : il est proportionnel au nombre de propriétés multiplié par le nombre de signes dans le codage. Certes, le produit de ces deux constants est un très grand nombre, mais dans des situations réelles — lorsque les textèmes et les signes sont caractérisés par relativement peu de propriétés, et on ne s’intéresse qu’à un sous-ensemble réduit de signes (tel que les signes de l’écriture latine) — ils se réduisent drastiquement. De plus, puisqu’il s’agit de nombres constants, avec l’augmentation de la puissance des ordinateurs le coût de ces algorithmes devient de moins en moins critique. 213 214 CHAPITRE 4 CONCLUSIONS ET PERSPECTIVES 4.1 RÉSUMÉ DES RÉSULTATS Nous avons entamé cette thèse avec l’objectif d’analyser en détail les modèles de texte informatiques actuels afin de repérer leurs défauts et leurs limitations éventuelles. Ainsi, nous avons consacré un intérêt particulier au codage de caractères Unicode, aux fontes intelligentes et au modèle de texte caractère-glyphe qui établit une connexion entre les représentations (et les usages) d’échange et finale. Nous avons trouvé que la plupart des problèmes liés à ce modèle remontent à sa nature fondamentalement extensionnelle, au fait qu’il considère les éléments textuels comme de simples entrées d’une table de codage. Cette approche s’est avérée trop rudimentaire pour être à la base d’un modèle de texte qui vise l’universalité, aussi bien au niveau des écritures qu’au niveau des usages couverts. D’autre part, en réponse à ce défaut, nous avons observé chez Unicode les premiers signes d’une transition vers un mode de représentation intensionnelle, dans la forme d’une base de données de propriétés associées aux caractères. Le même phénomène s’est produit pour le modèle de texte formaté, lorsque les fontes sont devenues « intelligentes ». Certaines autres technologies, comme le modèle de texte typographique du format de fonte Graphite et surtout le modèle M-text, ont poursuivi ce changement d’orientation par l’ouverture de la possibilité de créer des propriétés définies par l’utilisateur et de les attacher au texte. Par l’introduction d’un nouveau cadre formel de modélisation de texte, nous avons souhaité examiner la possibilité théorique et pratique d’une représentation textuelle informatique intensionnelle et complètement ouverte. Dans ce but, nous avons emprunté une méthodologie développé initialement dans un contexte de représentation des connaissances, à l’aide duquel nous avons réussi à formaliser des notions telles que propriété, caractère, glyphe ou contexte d’usage. Du même cadre a découlé l’idée de généraliser l’unité textuelle en la considérant comme un ensemble de propriétés librement choisies, ensemble que nous avons nommé textème. Le textème s’est montré utile, entre autres, pour représenter des signes d’écriture et en général des propriétés textuelles absentes du codage Unicode, car il fournit une méthode d’enrichissement du texte alternative au balisage, ce dernier étant normalement prévu pour la structuration d’unités textuelles plus conséquentes. Aussi, l’interprétation libre de ce que représente un textème ou une propriété de textème nous a permis d’élargir notre conception du texte informatique, et d’y introduire des entités textuelles novatrices comme par exemple les signes d’écriture probabilistes ou les textèmes-balises. 215 Le modèle caractère-glyphe Approches liées à la RC parmi les modèles existants La possibilité de la modélisation de texte sur des bases intensionnelles L’intérêt du textème Mais avant tout, le textème a permis de créer les fondements théoriques d’un modèle de texte extensible et indépendant d’usage, à l’opposé du modèle caractère-glyphe où la chaîne Unicode et la chaîne de glyphes correspondent à des usages prédéterminés. Dans le cas d’un texte en textèmes, le contexte d’usage détermine la catégorie fonctionnelle à laquelle appartiennent les propriétés présentes dans les textèmes. Il détermine également le choix d’unité pertinente, c’est-à-dire la segmentation de l’écriture en unités élémentaires auxquelles correspondront les textèmes. Dans le modèle caractère-glyphe, l’acte de changement d’usage se traduit par un passage depuis la chaîne de caractères vers la chaîne de glyphes pour l’opération de formatage, et dans La problématique l’autre sens pour l’extraction de contenu à partir du document formaté. Dans de changement d’unité le modèle en textèmes, un changement d’usage se réalise par l’ajout de noupertinente velles propriétés aux textèmes (et par la suppression éventuelle d’autres), mais aussi par un changement d’unité pertinente si nécessaire. Le modèle caractèreglyphe résoud ce dernier problème par la maintenance parallèle de la chaîne de caractères et de la chaîne de glyphes, avec une table de correspondance qui permet le passage depuis l’un vers l’autre. Dans le modèle en textèmes, la même chaîne peut subvenir à plusieurs usages à la fois tant que les unités pertinentes d’écriture restent les mêmes ; sinon, le modèle doit être étendu d’une manière ou d’une autre : par la représentation soit de plusieurs signes par le même textème, soit d’un seul signe par plusieurs textèmes. L’« impureté » conceptuelle des deux solutions reflète que le modèle en textèmes, du moins dans sa formulation la plus simple, ne prévoit pas la représentation simultanée d’usages qui segmentent différemment la même écriture. Le textème s’adapte aux différents usages L’inévitabilité La relation qu’entretiennent les textèmes adjacents représentant le même du contexte signe (comme par exemple une ligature) n’est qu’un parmi de nombreux exemples où l’information doit être considérée inter-textémique plutôt qu’intratextémique. Il s’agit tout simplement du fait que toute information textuelle ne se traduit pas forcément en propriété de textème, soit parce que l’information s’attache clairement à une unité structurelle de plus haut niveau, soit parce qu’une propriété de textème peut être généralisée pour un morceau de texte entier lorsque chacun de ses textèmes la partage, soit parce qu’il s’agit d’une relation entre plusieurs textèmes d’un texte donné. Nous avons appelé ce type d’informations contextuelles car conceptuellement elles ne font pas partie du textème : elles se distinguent par le fait que l’arité des éléments de l’extension de la première est supérieure à l’unité. Le contexte et les propriétés contextuelles sont donc des ingrédients incontournables dans la modélisation de texte, puisque c’est à travers elles que les éventuelles relations et interactions entre unités textuelles peuvent être décrites. La dépendance : Le phénomène de dépendance est une forme de contextualité non pas une forme entre signes mais entre propriétés de textème, où la valeur d’une ou de plude contextualité sieurs propriété(s) donnée(s) détermine celle d’une autre. L’existence d’une dépendance entre deux propriétés peut parfois découler d’une nécessité logique (comme le rapport entre le radius et la surface d’un sphère) mais, au plus général, il s’agit d’une conséquence des « réalités factuelles » du monde que l’on observe et que l’on modélise : si la valeur d’une propriété A détermine celle d’une propriété B, c’est parce qu’il se trouve qu’il n’existe pas 216 d’objets dans le monde modélisé qui aient la propriété A mais non B1 . Il n’est donc pas surprenant que la dépendance n’est pas un phénomène unique au modèle de texte en textèmes ; au contraire, il est récurrent dans tout modèle qui entreprend une certaine forme de représentation des connaissances. Dans cette thèse, nous avons appelé cette définition de la dépendance dépendance extensionnelle, car elle lie le phénomène aux relations ensemblistes entre les extensions des propriétés (c’est-à-dire entre les ensembles de signes qu’elles caractérisent). Cependant, si nous ne nous contentons pas de la description théorique du phénomène mais nous cherchons à automatiser, d’une façon ou d’une autre, la gestion des dépendances au sein du texte afin d’éviter une combinaison de propriétés jugée invalide, alors la définition précédente nous sera peu utile, étant donné que nous n’avons pas — et ne pourrons jamais avoir — une connaissance exhaustive de la totalité des signes d’écriture du monde et de toutes leurs propriétés. Pour cette raison, nous avons créé une définition alternative et restreinte de la notion de dépendance, que nous avons appelé algorithmique, en liant l’existence de celle-ci à l’obtention de la valeur de propriété par l’intermédiaire d’un algorithme informatique. Ceci nous a permis de concevoir des solutions informatisables de suivi de dépendances. La relation d’égalité entre propriétés et entre textèmes est un autre problème auquel nous avons consacré une attention particulière. En effet, la vérification d’égalité entre deux textes est à la base de nombreuses opérations textuelles courantes (la recherche, l’indexation, la comparaison, etc). L’identité superficielle de deux textes, textème par textème et propriété par propriété, est évidemment un critère d’égalité suffisant mais pas forcément le plus utile, tout comme la comparaison de deux chaînes Unicode ne se fait pas forcément à travers les codes de caractère seuls. Par contre, à l’opposé d’Unicode où le code numérique est incontournable car il est le seul à fournir l’identité du caractère, l’identité du signe (ou des signes) représenté(s) par le textème est entièrement définie par l’ensemble de ses propriétés, et dans une première approximation, par l’extension commune de celles-ci. Ainsi, deux propriétés sont extensionnellement égales si elles caractérisent exactement les mêmes signes, et l’égalité extensionnelle de deux textèmes est définie comme l’égalité ensembliste de leurs extensions communes respectives. L’égalité extensionnelle n’est en même temps qu’une parmi les définitions possibles de la relation d’égalité. Parfois, ce critère seul est insuffisant et les intensions des propriétés doivent également être prises en compte (par exemple, leur appartenance à la même catégorie fonctionnelle). Le plus grand problème de l’égalité extensionnelle reste cependant le fait qu’en pratique nous n’avons pas une connaissance totale de l’ensemble de base de signes, et par conséquent nous ne connaissons pas non plus les extensions des propriétés. Dans sa généralité, l’égalité extensionnelle entre deux propriétés est impossible de vérifier en pratique pour exactement la même raison qu’il est impossible de vérifier leur dépendance extensionnelle. En partie en réponse à ces problèmes, nous avons proposé dans le chapitre 3 une solution pratique à la description intensionnelle de propriétés à 1 Bien entendu, nous sommes en train de simplifier ici : il se peut également que de tels objets existent mais nous les jugeons non importants pour notre modèle, etc. 217 Gestion automatique des dépendances Formes d’égalité entre propriétés et entre textèmes La non-vérifiabilité de l’égalité extensionnelle Description sémantique des propriétés Description sémantique des signes Codage de signes intensionnel La conversion d’Unicode en codage de signes l’aide des langages RDF et OWL. Il s’agit de mettre en place une description sémantique qui peut comprendre une référence vers un espace de nommage, des catégories fonctionnelles auxquelles appartient la propriété et aussi des formulations explicites d’égalité avec d’autres propriétés. Puisque le modèle de texte en textèmes promeut l’invention et l’usage libres de propriétés « custom » dans les textes, la sémantisation des propriétés devient incontournable si l’on souhaite que de tels textes soient interprétables par des logiciels tiers, au moins partiellement. Cette méthode permet la description de l’intension des propriétés, c’est-àdire des différents rapports qu’elles entretiennent entre elles ainsi qu’avec des relations de rangs supérieurs. Intuitivement, on peut également envisager de poursuivre la même méthode descriptive vers la strate T0 inférieure, afin de définir les extensions des propriétés : les rapports entre les propriétés et les signes qu’elles caractérisent. Rappelons que la raison pour laquelle ni la définition extensionnelle de la dépendance ni celle de l’égalité entre propriétés ne sont utiles en pratique est précisément que ces extensions sont en général inconnues2 . Si, par contre, on restreint l’ensemble de base de signes (le contenu de la strate T0 de notre cadre formel de modélisation) à une taille maîtrisable (par exemple, de l’ordre de grandeur du codage Unicode), alors il devient possible de déterminer exactement l’extension de chaque propriété, ce qui permet ensuite de vérifier les relations ensemblistes de compréhension et d’égalité entre propriétés. L’idée, développée en fin du chapitre 3, est donc de créer un codage de signes intensionnel qui intègre les avantages des codages traditionnels avec une approche intensionnelle grâce aux textèmes. Nous cherchons ainsi à obtenir un catalogue de signes restreint mais extensible, chacun d’eux étant caractérisé par une gamme étendue de propriétés mais aussi par des relations qui le connectent à d’autres signes du codage (par exemple, une relation ( , , , ) peut établir l’égalité d’une syllabe hangûl à la séquence de ses trois composants jamo). Une différence majeure entre le codage Unicode et notre codage de signes est que dans ce dernier l’identifiant numérique — le code de signe — n’est plus la seule information permettant la vérification de l’identité d’un élément textuel ni de l’égalité entre deux éléments textuels. Ainsi, pour comparer deux textèmes composés de couples clé-valeur, il suffit de trouver leurs extensions communes respectives3 et puis de vérifier l’égalité des deux ensembles obtenus, une opération exécutable en un temps proportionnel au carré du nombre de propriétés par signe. Entre autres, le codage Unicode peut être converti en codage de signes sans perte de compatibilité vers les systèmes existants. D’abord, il s’agit d’étendre la gamme de propriétés associées aux caractères, en commençant par leur identité (e.g., la description « LATIN CAPITAL LETTER A » peut être formalisé par quatre propriétés). Ensuite, la génération de la table de correspondance propriété 7→ caractères est triviale. 2 Car, on ne peut répondre à des questions telles que « quels sont, en général, tous les signes rouges ? » ou « est-ce qu’il existe du texte français écrit dans un système d’écriture autre que le latin ? ». 3 C’est-à-dire l’intersection des ensembles de signes correspondant à chaque couple clévaleur. 218 4.2 CONCLUSIONS Dans cette thèse, nous avons proposé une approche intensionnelle à la modélisation de texte, sur laquelle nous avons ensuite fondé un ensemble de modèles autour du concept de textème. Nous avons examiné ces modèles de nombreux points de vue et nous les avons comparés aux modèles existants, notamment à celui basé sur le codage Unicode et les fontes intelligentes. À ce point, il est sans doute utile de dresser un bilan objectif des résultats obtenus, entre autres d’un point de vue pragmatique : qu’est-ce que les modèles proposés peuvent offrir aux systèmes informatiques d’aujourd’hui ? Quels seraient les effets de court et de long terme de l’adoption de ces modèles sur les usages textuels informatiques ? Un des résultats les plus intéressants de la thèse est probablement la reconnaissance de l’importance grandissante des approches liées à la représentation des connaissances dans la modélisation de texte. Le fait qu’Unicode et les formats de fonte intelligents ont tous les deux adoptés, du moins partiellement, des formes de description intensionnelles — des bases de données de propriétés, des règles de combinaison de glyphes, etc. — prouve qu’il existe aujourd’hui une réelle besoin de création de modèles de texte « intelligents ». Ce que nous considérons comme l’objectif primaire de cette thèse est la tentative de généraliser ces diverses manifestations d’intelligence dans le cadre d’une approche formelle basée sur la représentation des connaissances. La définition formelle de l’élément textuel généralisé, le textème, a tourné notre attention vers des réflexions sur l’atomicité des éléments textuels. Comme les atomes de la matière physique, ces unités ne sont plus considérées indivisibles puisqu’elles représentent des conglomérats de propriétés. Néanmoins, les textèmes restent les briques de base du texte numérique, car ce sont à partir d’eux que la chaîne unidimensionnelle est construite. Si une telle vision de l’unité textuelle semble, au premier regard, contreintuitive et compliquée à une personne habituée à des alphabets de petite taille, elle l’est sans doute moins pour, par exemple, un Chinois ou un Japonais qui a un regard plus « constructiviste » sur les éléments de son écriture. Notons qu’à la même personne occidentale un modèle de texte qui distingue entre l’abstrait qui est le caractère et le concret qui est le glyphe n’est pas forcément intuitif non plus. Heureusement, l’intuitivité du modèle ne concerne pas directement l’utilisateur final car il n’accède jamais au texte autrement qu’à travers une interface homme-machine : un usager d’un logiciel de traitement de texte n’a pas besoin de comprendre la structure interne du textème, tout comme il n’a pas besoin de comprendre la différence entre caractère et glyphe. En même temps, la compréhension théorique que nous avons pu tirer du formalisme établi nous a servi, d’une part, à mieux définir ce que l’on entend, justement, par caractère ou glyphe. La notion clé qui a permis de réunir ces deux concepts sous une théorie unique est celle de l’usage : c’est par sa capacité de s’adapter aux différents usages — et les propriétés qui leur appartiennent — que le modèle de texte en textèmes devient flexible et polyvalent. Ceci étant dit, nous avons dû reconnaître qu’à différents usages peuvent correspondre différents unités pertinentes d’écriture, ce qui relativise la polyvalence 219 Besoin de modèles de texte « intelligents » et d’approches RC L’atomicité de l’élément textuel Définition des notions de caractère, de glyphe et d’usage de la chaîne de textèmes en tant que texte « multi-usages ». Interactions entre Ces réflexions nous ont inévitablement menées à identifier les limites atomes textuels : d’une approche qui considère le texte comme une suite d’atomes indépendépendances dants. En effet, les phénomènes de contextualité et de dépendance observés et contextualité sur des exemples concrets de textes en textèmes ne sont pas propres à ce mo- dèle : on les retrouve, entre autres, au sein du texte Unicode et aussi entre la chaîne de caractères et la chaîne de glyphes. Il s’agit, en réalité, de phénomènes qui n’échappent à aucun modèle qui vise à décrire un fragment suffisamment complexe du monde ; ce n’est donc pas un hasard que l’introduction d’un contexte formalisé et de méthodes de gestion de dépendances est lieu commun parmi les différentes approches à la représentation des connaissances. Il n’y a donc aucune doute sur la nécessité de l’extension du modèle en textèmes par une forme de gestion de contexte. Ayant reconnu l’insuffisance du concept de textème et de propriété de textème vis-à-vis de ces problèmes, nous avons tenté une formalisation des propriétés contextuelles et des dépendances ; en vue des points précédents, le fait que nos solutions proposées soient si similaires à celles développées dans d’autres domaines n’est guère surprenant. Cependant, à l’opposé de méthodes développées dans un cadre scientifique tel que l’intelligence artificielle, la création et la manipulation de texte sont des pratiques quotidiennes qui ne sont pas, et ne devraient pas devenir, des actes nécessitant une compréhension profonde des modèles de texte sous-jacents. Par conséquent, des méthodes sophistiqués de gestion de dépendances et de contexte ne conviennent pas pour des usages où l’utilisateur exige que le texte soit manipulable d’une manière transparente. C’est pour la même raison que nous avons proposé des solutions ad hoc d’ingénierie, adaptées à des usages précis, au lieu d’un système d’inférences générique, puissant mais très probablement non réalisable. L’intérêt du modèle Dans la même optique, nous avons envisagé plusieurs scénarios quant à en textèmes l’utilisation pratique des différents modèles fondés sur le concept de textème. dans l’application Ω Nos expériences de l’implémentation d’une variante de modèle sur la plate- forme Ω ont prouvé que nos idées théoriques peuvent montrer leur utilité au sein d’une application de composition de documents, en la rendant plus puissant (par la gestion simultanée du caractère et du glyphe), plus extensible (par l’ajout de propriétés définies par l’utilisateur à travers des modules externes) et plus simple (par la suppression de certains types de nœuds). D’autre part, le succès de l’implémentation a montré que le modèle peut être intégré sans grandes difficultés dans le code source d’un logiciel écrit dans les années 1980. La normalisation Nous avons également considéré l’utilité du modèle en tant que médium des propriétés d’échange, aussi bien dans le cadre de documents en textèmes qu’en tant que modèle générique implémenté au niveau du système d’exploitation. Bien évidemment, l’échange d’information textuelle entre applications sous-entend la connaissance d’un format commun. Or, si les modèles de texte extensionnels (comme le texte en caractères ASCII) reposent sur un ensemble normalisé d’éléments textuels, à savoir le codage de caractères, les modèles intensionnels, eux, requièrent la normalisation des propriétés. En connaissance des difficultés ahurissantes de la création de normes internationales, et notamment 220 les enjeux politiques qu’ont dû surmonter les créateurs de la norme Unicode4 , nous sommes conscients du fait que la probabilité du succès d’une norme similaire pour les propriétés de textème tend vers zéro. En effet, l’adoption mondiale de la norme Unicode doit déjà être considérée comme un succès durement gagné. En vue de ces difficultés insurmontables, la solution que nous avons proposée au problème de normalisation tente de contourner ces problèmes par la proposition d’une norme extensible et décentralisée, dont la mise en œuvre est rendue possible par des technologies telles que XML (qui fournit le concept d’espace de nommage, et donc l’identification unique des propriétés) ou RDF (qui, en tant qu’outil informatique développé pour la représentation des connaissances, permet la description formelle des propriétés). Le Web, à son tour, permet la répartition des définitions, pour que l’invention d’une nouvelle propriété liée à un nouvel usage ne soit pas contrainte par une procédure quelconque de normalisation centralisée. Nous considérons que le cadre de description formelle de propriétés proposée dans cette thèse est une idée à part entière qui est intéressant même indépendamment de l’adoption éventuelle d’un modèle de texte en textèmes. Si la base de données d’Unicode formalise les correspondances entre caractères et propriétés, ces dernières ne possèdent que des définitions textuelles informelles. Tant que la gamme de propriétés Unicode reste limitée, une telle approche suffit, mais si les nouveaux usages poussent la Consortium Unicode à l’élargissement de cet ensemble, alors la situation pourra très vite ressembler à celle de l’explosion du nombre de caractères codés : comme la description intensionnelle des caractères, celle des propriétés deviendra également inévitable. Des considérations de compatibilité avec les modèles existants, ainsi que d’optimisation de stockage et de traitement, nous ont menés à l’idée de réunir dans un seul modèle les avantages des approches intensionnelle et extensionnelle. D’une part, le codage Unicode est incontournable aujourd’hui, et il le restera sans doute pendant encore bien longtemps. Pragmatiquement parlant, il serait donc illusoire de proposer — du moins pour un usage général et à court terme — un modèle alternatif qui, de plus, va à l’encontre de la plupart des principes de la modélisation textuelle en usage depuis le XIXe siècle. D’autre part, l’intérêt pratique du code de caractère en tant que représentation compacte d’un signe d’écriture est, bien sûr, loin d’être négligeable. Heureusement, nous avons trouvé que le concept de textème pouvait très bien être reconcilié avec le principe de codage. D’une part, le textème peut référer à un élément textuel codé à travers une propriété numérique, la description de celui-ci pouvant être étendue par des propriétés supplémentaires au sein du même textème. La chaîne de caractères peut donc être considérée comme un cas spécial de la chaîne de textèmes. D’autre part, par la formalisation et l’extension du codage de caractères Unicode on obtient ce que nous avons appelé un codage de signes intensionnel qui, tout en restant compatible avec le codage de caractères, intègre, de plus, la notion d’usage et par cela ouvre le modèle de texte vers de nouveaux usages potentiels. C’est donc dans 4 Si nous possédons un aperçu de ce genre de problèmes, c’est avant tout grâce au témoignage personnel de M. Éric Muller, membre illustre du comité technique d’Unicode. 221 Une norme décentralisée Codage de signes : la synthèse des approches intensionnel et extensionnel Un intérêt immédiat des résultats : l’extension d’Unicode l’extension du codage Unicode par des connaissances intensionnelles formalisées que nous voyons l’intérêt immédiat des résultats avancés dans cette thèse, à part bien sûr l’implémentation éventuelle du modèle de texte en textèmes dans des applications autonomes, telles que le logiciel Ω. 4.3 PERSPECTIVES D’USAGE ET D’ÉVOLUTION POUR LES MODÈLES DE TEXTE INTENSIONNELS Dans cette section terminale nous souhaitons aborder certains aspects de notre travail auxquels nous avons déjà référé mais qui n’ont cependant pas pu être développés dans le cadre de cette thèse. Le sujet peut-être le plus important est l’influence du textème sur l’interface homme-machine de manipulation de texte. Un autre sujet intéressant est lié au problème de la représentation de multiples usages, chacun ayant des unités pertinentes d’écriture différentes, au sein d’une chaîne de textèmes. Nous allons esquisser un modèle de texte alternatif qui contourne ce problème en se débarrassant du concept de textème. 4.3.1 L ES ASPECTS INTERFACE HOMME - MACHINE DES MODÈLES DE TEXTE EN TEXTÈMES L’impossibilité d’adresser la problématique de l’IHM dans le cadre de cette thèse Quelques problèmes de caractère intuitif En chapitre 2 nous avons introduit et analysé le concept de textème d’un point de vue théorique, pour ensuite passer aux questions d’implémentation en chapitre 3. La pièce manquante du puzzle, d’une importance égale aux deux aspects précédents, est l’examen du rapport qui existe entre le modèle et l’utilisateur : comment le remplacement du modèle Unicode par un modèle en textèmes peut changer les pratiques liées à la manipulation du texte dans le contexte d’une application donnée, telle qu’un logiciel de traitement de texte, un éditeur simple, le texte immuable d’une boîte de dialogue, etc. La problématique de la conception d’interfaces de manipulation de texte et de l’influence mutuelle entre celle-ci et le modèle sous-jacent est, évidemment, un domaine de recherche auquel nous ne pourrions pas faire justice dans le cadre de cette thèse, pour plusieurs raisons. Tout d’abord, la conception IHM est une science à part entière dont l’auteur n’est malheureusement pas en possession de connaissances théoriques adéquates qui seraient pourtant essentielles afin d’éviter une approche fondamentalement naïve. De plus, une étude rigoureuse du domaine aurait largement dépassé le cadre de cette thèse. Nous avons donc décidé qu’il était préférable de ne point adresser la problématique de l’IHM plutôt que de tenter à mettre en place une étude forcément restreinte qui, de plus, manquerait probablement de rigueur. Néanmoins, même sans connaissances théoriques dans la conception d’interfaces homme-machine de manipulation de texte, de nombreuses questions spécifiques surgissent intuitivement, inspirées de nos expériences des pratiques textuelles courantes, que nous souhaitons aborder dans le cadre des perspectives, ne serait-ce que par simple mention. – Dans quels usages/applications la structure théorique du textème — le fait qu’il est composé d’un ensemble de propriétés — transparaît-elle à travers l’interface utilisateur ? 222 – Un éditeur de texte simple (c’est-à-dire plutôt du genre « bloc-notes » que « Word ») mais adapté au texte en textèmes n’est pas forcément censé (ni capable de) faire transparaître la totalité de propriétés que possèdent les signes à travers leur apparence visuelle sur l’écran. Comment résoudre, alors, le problème de l’incongruence qui peut potentiellement exister entre la visualisation des signes et les propriétés de textème les décrivant, afin d’éviter une situation de « dissonance cognitive » de la part de l’utilisateur ? – Est-ce qu’on peut imaginer des cas d’utilisation où l’utilisateur peut modifier les propriétés de textème arbitrairement ? – Si la réponse à la question précédente est affirmative, alors comment gérer les éventuels problèmes de dépendance introduits par les modifications de l’utilisateur ? – Comment l’utilisateur peut-il appréhender les concepts tels que dépendance, contexte et propriété contextuelle ? Comment est-ce qu’ils peuvent être « traduits » à travers l’interface ? – Lors d’un copier-coller, est-ce que l’utilisateur exerce un contrôle sur l’ensemble de propriétés transmises, y compris les éventuelles propriétés contextuelles ? Le lecteur a certainement noté qu’il n’existe probablement pas de réponses uniques et définitives à ces questions, car elles dépendent avant tout de l’environnement (des applications, des usages) dans lequel s’intègre l’interface. Des solutions concrètes ne peuvent donc être proposées que dans le cadre d’usages préalablement spécifiés. Cependant, il ne serait sans doute pas suffisant comme méthodologie de considérer uniquement les usages et les applications existants et bien connus, car ces usages et applications sont intimement liés à leur modèle de texte sous-jacent. Ainsi, les éditeurs de texte brut développés pour du texte ASCII sont des logiciels simples aussi bien au niveau implémentationnel qu’au niveau d’utilisation. Lorsque le modèle de texte basé sur le codage ASCII est remplacé par celui basé sur Unicode, le même genre d’éditeur de texte se complexifie considérablement au niveau implémentationnel et aussi à un certain degré au niveau de l’interface (gestion de coupures de ligne, de caractères combinants, de directionnalité, etc.). Néanmoins, l’éditeur de texte Unicode maintient, malgré tout, son aspect « bas niveau » qui permet l’accès et la modification des caractères individuels. Tout change lorsque l’on imagine un éditeur de texte en textèmes, au point que les critères de simplicité d’utilisation et d’accès bas niveau deviennent presque contradictoires. Ainsi, un éditeur simple et intuitif n’autorisera probablement pas l’affichage complet ni le contrôle libre des propriétés de textèmes, alors qu’un éditeur de bas niveau — dont la raison d’être est justement de permettre un accès non restreint au texte — ne sera probablement pas d’une utilisation facile, notamment à cause de la dissonance cognitive ci-haut mentionnée entre propriétés effectives et image perçue. Il n’est donc plus possible de parler d’« éditeur de texte brut » dans le contexte d’un modèle de texte en textèmes, du moins pas dans le sens classique du terme. 223 Il n’existe pas de recettes générales car l’IHM est également fonction de l’usage En revanche, l’usage est également fonction du modèle Étude de cas : éditeurs de texte brut 4.3.2 M ODÈLES DE TEXTE INTENSIONNELS SANS TEXTÈMES Recherche d’une Un direction potentielle pour la recherche de modèles de texte intensionsolution généralisée nels est celle qui mène vers des modèles sans éléments atomiques, sans texau problème tèmes. La motivation pour étudier des modèles autres que ceux déjà examinés du changement d’unité dans cette thèse, outre un intérêt théorique, peut être la volonté de trouver textuelle pertinente Avantages et inconvénients d’un modèle de texte sans atomes une solution plus efficace et plus naturelle aux problèmes de « granularité » qui peuvent exister entre propriétés. Nous avons observé — notamment dans la section 2.5 — que certaines propriétés s’attachent non pas à un seul textème mais à une suite de textèmes ; nous avons appelé ce type de propriété contextuelle. Dans d’autres cas, ce genre de correspondance multiple-à-un opère dans la direction inverse : plusieurs unités textuelles devraient se retrouver au sein du même textème, chacun ayant ses propres propriétés (cf. fig. 2.6 sur la page 118). Le problème semble être la rigidité du textème même, de cette « boîte à propriétés » qui n’est donc pas capable de s’adapter facilement à des usages textuels simultanés qui segmentent le texte de manières différentes. Il est bien possible de créer des modèles qui ne considèrent pas le texte comme une « succession de boîtes ». L’avantage d’un tel modèle serait d’une part, de résoudre le problème de différence de granularité entre unités textuelles pertinentes de différents usages, et d’autre part, de ne plus distinguer entre propriétés « dans et en dehors de la boîte » (propriétés de textème et propriétés contextuelles). Le revers de la médaille est que l’abandon de l’approche intuitive qui regarde le texte comme une succession de signes mène vers des modèles extrêmement abstraits dont l’utilité pratique peut être questionnable. Pour des raisons de cohérence et aussi pour ne pas allonger davantage la taille du présent texte, l’auteur préfère présenter ses recherches quant aux modèles de texte alternatifs dans un travail séparé. 224 BIBLIOGRAPHIE [1] « Acharya, website dedicated to multilingual computing in Indian languages ». http://acharya.iitm.ac.in/. [2] ADOBE L ABS. « Le projet Mars », 2007. http://labs.adobe.com/wiki/index.php/Mars. [3] ADOBE SYSTEMS. PostScript Language Reference, 3rd Ed. Addison Wesley, 1999. ISBN 0 201 37922 8. [4] ADOBE SYSTEMS. « Adobe Glyph List (Liste de glyphes d’Adobe) », 2002. http://partners.adobe.com/public/developer/en/opentype/ glyphlist.txt. [5] ADOBE SYSTEMS. « Adobe Glyph Naming Convention (Convention de nommage de glyphes d’Adobe) », 2003. http://partners.adobe.com/public/developer/opentype/ index_glyph.html. [6] ADOBE SYSTEMS. « PDF Reference, Sixth Edition, version 1.7 », 2007. http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf. [7] Patrick ANDRIES. « Unicode et les polices : deux mondes ». Dans Actes de l’atelier « La typographie entre les domaines de l’art et de l’informatique », Publications de l’Institut Royal de la Culture Amazighe, Rabat, 2007. http://hapax.qc.ca/pdf/deux-mondes.pdf. [8] Jacques ANDRÉ. Création de fontes en typographie numérique. Habilitation à diriger des recherches, 1993. http://hal.inria.fr/view_by_stamp.php?label=INRIA &action_todo=view&langue=fr&id=tel-00011218&version=1#. [9] Jacques ANDRÉ. « ISO Latin-1, norme de codage des caractères européens ? trois caractères français en sont absents ! ». Dans Cahiers GUTenberg, volume 25, 1996. http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/ 25-andre.pdf. [10] Jacques ANDRÉ et Henri HUDRISIER , éditeurs. Document numérique, volume 6 (Unicode, écriture du monde). 3-4/2002. [11] APPLE COMPUTER. « How GX Does Justification ». http://developer.apple.com/textfonts/WhitePapers/ GXJustification.html. [12] APPLE COMPUTER. « TrueType Reference Manual, AAT Tables ». http://developer.apple.com/textfonts/TTRefMan/. [13] Gábor BELLA. « An Automatic Diacritic Positioning System for Arabic and Hebrew Scripts ». Master’s thesis, ENST Bretagne, 2003. 225 [14] Gábor BELLA et Yannis HARALAMBOUS. « Fontes intelligentes, textèmes et typographie dynamique ». Document numérique, vol. 9 (Fontes numériques), 2007. [15] Massimo BENERECETTI, Paolo BOUQUET, et Chiara GHIDINI. « Contextual reasoning distilled ». JETAI, 12(3):279–305, 2000. http://citeseer.ist.psu.edu/benerecetti00contextual.html. [16] Tom BISHOP et Richard COOK. « A Specification for CDL Character Description Language », 2003. Rapport technique, Wenlin. http://www.wenlin.com/cdl/cdl_spec_2003_10_31.pdf. [17] Gérard BLANCHARD. « Pour une Sémiologie de la Typographie ». PhD thesis, École des Hautes Études en Sciences Sociales, 1980. [18] R.J. BRACHMAN. « What IS-A Is and Isn’t: An Analysis of Taxonomic Links in Semantic Networks ». Computer, 16(10):30–36, 1983. ISSN 00189162. http://ieeexplore.ieee.org/iel5/2/34675/01654194.pdf ?tp=&isnumber=&arnumber=1654194. [19] Peter T. DANIELS et William BRIGHT, éditeurs. The World’s Writing Systems. Oxford University Press, 1996. ISBN 0-19-507993-0. [20] John DEFRANCIS. Visible Speech: The Diverse Oneness of Writing Systems. University of Hawai‘i Press, 1989. [21] Patrick DEHORNOY. Mathématiques de l’informatique. Dunod, 2000. ISBN 2 10 004446 X. [22] Jon FERRAIOLO, Jun FUJISAWA, et Dean Jackson (EDS.). « Scalable Vector Graphics (SVG) 1.1 Specification », 2007. Recommandation W3C. http://www.w3.org/TR/SVG11/. [23] FOURNIER, 1764. LE JEUNE. Manuel typographique, tome I. Paris, Fournier, [24] Gottlob FREGE. Écrits logiques et philosophiques. Seuil, 1971. ISBN 2-02-002742-9. [25] Fausto GIUNCHIGLIA et Paolo BOUQUET. « Introduction to contextual reasoning. An Artificial Intelligence perspective ». Dans Perspectives on Cognitive Science, volume 3, pages 138–159, 1996. http://www.nbu.bg/cogs/personal/kokinov/COG507/ INTRODUCTION%20TO%20CONTEXTUAL%20REASONING %20AN%20ARTIFICIAL%20INTELLIG.pdf. [26] William C. HANNAS. Asia’s Orthographic Dilemma. University of Hawai‘i Press, 1997. ISBN 0 8248 1892 X. [27] Tereza HARALAMBOUS et Yannis HARALAMBOUS . « Characters, Glyphs and Beyond ». Dans Actes du Glyph and Typesetting Workshop, Kyoto, Japon, 2003. http://omega.enstb.org/yannis/pdf/kyoto2003-1.pdf. [28] Yannis HARALAMBOUS. Fontes et codages. O’Reilly France, 2004. ISBN 2-84177-273-X. 226 [29] Yannis HARALAMBOUS. « Voyage au centre de TEX: composition, paragraphage, césure ». Cahiers GUTenberg, 44-45, 2004. http://omega.enstb.org/yannis/pdf/voyage.pdf. [30] Yannis HARALAMBOUS . « Infrastructure for Typesetting High-Quality Arabic ». Dans TUGboat, 27(2), 2006. Actes de la conférence TUG 2006, Marrakech, Maroc. [31] Yannis HARALAMBOUS . « Unicode et typographie : un amour impossible ». Dans Document Numérique, volume 6 (« Unicode, écriture du monde »), 3-4/2002. [32] Yannis HARALAMBOUS et Gábor BELLA. « Injecting Information into Atomic Units of Text ». Dans ACM Symposium on Document Engineering, 2005. http://omega.enstb.org/yannis/pdf/p10174-haralambous.pdf. [33] Yannis HARALAMBOUS et Gábor BELLA. « Omega Becomes a Sign Processor ». Dans Actes de la conférence EuroTEX 2005, Pont-à-Mousson, France, 2005. (Version mise à jour : Omega Becomes a Texteme Processor.). http://omega.enstb.org/yannis/pdf/eurotex05.pdf. [34] Yannis HARALAMBOUS et Gábor BELLA. « Open-Belly Surgery upon Ω2 ». Dans TUGboat 26(1), 2006. Actes de la conférence EuroTEX 2006, Debrecen, Hongrie. [35] M. HOSKEN, B. HALLISSY, W. CLEVELAND, S. CORRELL, et A. WARD. « Graphite Description Language, version 2.001 », 2000. http://scripts.sil.org. [36] « ISO/IEC 10036, Information technology—Font information interchange—Procedures for registration of font-related identifiers », 1993. http://10036ra.org. [37] « ISO/IEC Technical Report 15285, Information technology: An operational model for characters and glyphs », 1998. http://standards.iso.org/ittf/PubliclyAvailableStandards/ index.html. [38] Mohamed JAMAL, Eddine BENATIA, Mohamed ELYAAKOUBI, et Azzedine L AZREK. « Arabic Text Justification ». Dans TUGboat 27(2), 2006. Actes de la conférence TUG 2006, Marrakech, Maroc. [39] Ioannis KANELLOS. « Contributions à la représentation des concepts : fondements logiques et modélisation des processus de catégorisation cognitive. ». PhD thesis, École des Hautes Études en Sciences Sociales, 1990. [40] KEN-ICHI HANDA, Nishikimi MIKIKO, Takahashi NAOTO, et Tomura SATORU. « The m17n Library—A General Purpose Multilingual Library for Unix/Linux Applications ». Dans Asian Symposium on Natural Language Processing to Overcome Language Barriers, 2004. http://www.m17n.org/common/import/hainanm17n.pdf. [41] Donald E. KNUTH. The TEXbook. Addison-Wesley, 1984. ISBN 0-20113448-9. 227 [42] Donald E. KNUTH. Digital Typography. Center for the Study of Language and Information—Lecture Notes, 1999. [43] Donald E. KNUTH et Michael F. PLASS. « Breaking Paragraphs into Lines ». Dans Software—Practice and Experience, volume 11, 1981. [44] Azzedine L AZREK. « CurExt, Typesetting Variable-sized Curved Symbols ». Dans TUGboat 24(3), 2003. Actes de la conférence EuroTEX 2003, Brest, France. http://www.ucam.ac.ma/fssm/rydarab/doc/communic/curext.pdf. [45] Raph LEVIEN. « SVG Fonts. Is the SVG working group about to choose shame and get war? », 1999. http://www.levien.com/svg/shame.html. [46] John MCCARTHY. « Notes on Formalizing Context ». Dans Actes du 13th International Joint Conference on Artificial Intelligence, Chambéry, France, pages 555–560, 1993. http://www.nbu.bg/cogs/personal/kokinov/COG507/ Formalizing%20context.pdf. [47] Marshall MCLUHAN. The Gutenberg Galaxy. University of Toronto Press, 1962. ISBN 0-8020-6041-2. [48] MICROSOFT CORP. « Word 2007 Rich Text Format (RTF) Specification, version 1.9 », 2007. http://www.microsoft.com/downloads/details.aspx?FamilyId= DD422B8D-FF06-4207-B476-6B5396A18A2B&displaylang=en. [49] Frank MITTELBACH et Chris ROWLEY. « Application-independent representation of text for document processing—will Unicode suffice? ». 1996. http://omega.enstb.org/yannis/pdf/docnum.pdf. [50] G.L. MURPHY et D.L. MEDIN. « The Role of Theories in Conceptual Coherence ». Psychological Review, 92(3):289–316, 1985. [51] Le Dictionnaire de l’Académie française, 1re édition. Paris, Coignard, 1694. Source : version numérisée par le projet ARTFL. http://portail.atilf.fr/dictionnaires/ACADEMIE/PREMIERE/ premiere.fr.html. [52] Le Dictionnaire de l’Académie française, 8e édition. Paris, Hachette, 1932-1935. Source : version numérisée par ATILF-CNRS. http://atilf.atilf.fr/academie.htm. N.D.. N.D.. [53] OWL. « OWL Web Ontology Language Reference, W3C Recommendation », 10 février 2004. http://www.w3.org/TR/owl-ref/. [54] John PLAICE, Yannis HARALAMBOUS, et Chris ROWLEY. « An extensible approach to high-quality multilingual typesetting ». Dans IEEE Research Issues in Data Engineering: Multi-lingual Information Management, RIDE-MLIM 2003, Hyderabad (Inde), 2003. http://omega.enstb.org/yannis/01249847.pdf. [55] John PLAICE et Chris ROWLEY. « Characters are not simply names, nor documents trees ». Dans Actes du Glyph and Typesetting Workshop, Kyoto, Japon, 2003. 228 http://coe21.zinbun.kyoto-u.ac.jp/papers/ ws-type-2003/009-plaice.pdf. [56] RDF. « RDF Primer, W3C Recommendation », 10 février 2004. http://www.w3.org/TR/REC-rdf-syntax/. [57] Chris ROWLEY et John PLAICE. « New directions in document formatting: What is text? ». Dans Actes du Glyph and Typesetting Workshop, Kyoto, Japon, 2003. http://coe21.zinbun.kyoto-u.ac.jp/papers/ ws-type-2003/001-rowley.ps. [58] Richard SPROAT. A Computational Theory of Writing Systems. Cambridge University Press, 2000. [59] Johny SROUJI et Daniel M. BERRY. « Arabic Formatting with DITROFF/FFORTID ». Electronic Publishing, 5(4):163–208, 1992. http://citeseer.ist.psu.edu/article/srouji92arabic.html. [60] Toshiya SUZUKI, Masatake YAMATO, et Yoshiki MIKAMI. « Encodings in Legacy Khmer TrueType Fonts ». Document numérique, vol. 9 (Fontes numériques), 2007. [61] Edward H. TRAGER. « The Penguin and Unicode: The State of Unicode and Internationalization in Linux », 2005. Présentation à la 27e Conférence Unicode. [62] « Le standard Unicode, Introduction ». Traduction française par P. Andries. http://hapax.qc.ca. [63] « The Unicode Standard, version 5.0 ». http://www.unicode.org. [64] « Unicode Technical Report #17 : Character Encoding Model ». http://unicode.org/reports/tr17/. [65] Ludmilla G. VÉDÉNINA. Pertinence linguistique de la présentation typographique. Peeters-Selaf, Paris, 1989. ISBN 2-87723-020-1. [66] Kaiyu WAN, Vasu ALAGAR, et Joey PAQUET. « A Context Theory for Intensional Programming ». Dans Proceedings of the CRR’05 Workshop on Context Representation and Reasoning, Paris, France, 2005. http://sra.itc.it/events/crr05/wan.pdf. [67] Adolf WILD. « La typographie de la Bible de Gutenberg ». Dans Cahiers GUTenberg, volume 22 (« numéro spécial : ligatures & caractères contextuels »), 1995. [68] Christian WITTERN. « Embedding Glyph Identifiers in XML Documents ». Dans Journal of the Japan Association for East Asian Text Processing, volume 4, 1995. http://www.jaet.gr.jp/jj/egix.pdf. [69] Candy YIU et Wai WONG. « Chinese Character Synthesis using METAPOST ». TUGboat, 24(2), 2003. [70] Y.T.YEOW et T.G.TANG. « Radical-Pattern-Based Chinese Character Synthesis ». Proceedings of the IEEE, 70, no 10, 1982. 229 [71] Victor-Hugo ZALDIVAR-CARRILLO. « Contributions à la formalisation de la notion de contexte : le concept de « théorie » dans la représentation des connaissances ». PhD thesis, Université de Montpellier II, 1995. 230 ANNEXE A LISTE DE PUBLICATIONS Gábor BELLA et Yannis HARALAMBOUS . « Fontes intelligentes, textèmes et typographie dynamique ». Dans Document numérique, vol. 9 (Fontes numériques), 2007. Yannis HARALAMBOUS , Gábor BELLA et Atif GULZAR. « Open-Belly Surgery upon Ω2 ». TUGboat 26(1), 2006. Actes de la conférence EuroTEX 2006, Debrecen, Hongrie. Yannis HARALAMBOUS et Gábor BELLA. « Injecting Information into Atomic Units of Text ». ACM Symposium on Document Engineering, 2005. http://omega.enstb.org/yannis/pdf/p10174-haralambous.pdf Yannis HARALAMBOUS et Gábor BELLA. « Omega Becomes a Sign Processor ». Actes de la conférence EuroTEX 2005, Pont-à-Mousson, France. (Version mise à jour : Omega Becomes a Texteme Processor.) http://omega.enstb.org/yannis/pdf/eurotex05.pdf John PLAICE, Yannis HARALAMBOUS, Paul SWOBODA et Gábor BELLA. « Moving Omega to an Object-Oriented Platform ». Actes de la conférence EuroTEX 2004, Xanthi, Grèce. Springer Lecture Notes in Computer Science. Yannis HARALAMBOUS, Gábor BELLA et Anish MEHTA. « Adapting Omega to OpenType Fonts ». Actes de la conférence EuroTEX 2003, Brest, France. http://omega.enstb.org/yannis/pdf/ 231