La gestion du texte dans les applications multimédia Module MEDIA Cyril Concolato Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 1 Introduction But Créer une application MM affichant du texte Comprendre les APIs existantes Problèmes Gestion de l’internationalisation Accents et caractères spéciaux: ç -> ç Mode d’affichage: gauche-droite, droite-gauche, haut-bas Spécificité des langues: o e -> œ ou oe Opacité des fonctions gérées par l’OS Changement d’environnement linguistique (machine japonaise) Rendu efficace sur une diversité de terminaux => simplicité apparente Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 2 Les 20 langues les plus parlées Source : Ethnologue, 12e éd., Dallas, États-Unis d'Amérique, 1992 Langue Localisations principales Nb de locuteurs (est. en millions) Français France, Canada, Belgique, Suisse, Afrique noire 122 Allemand Allemagne, Autriche, Suisse 118 Wu Chine (Chang-haï) 77 Javanais Indonésie (Java) 75 Coréen Corée 72 Italien Italie 65 Marathe Inde du Sud 63 Chinois Chine 885 Anglais Amérique du Nord, Grande-Bretagne, Australie, Afrique du Sud 450 Hindiourdou Inde, Pakistan 333 Espagnol Amérique du Sud, Espagne 266 Portugais Brésil, Portugal, Angola, Mozambique 175 Télougou Inde du Sud 55 Bengali Bengladesh, Inde 162 Tamoul Inde du Sud, Sri Lanka 48 Russe ex-URSS 153 Cantonais Chine (Canton) 47 Arabe nord de l'Afrique, Moyen-Orient 150 Japonais Japon 126 ukrainien Ukraine 46 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 3 Plan Vocabulaire Etude de codages de caractères Etude de format de représentation de polices de caractères Etude de mécanismes de rendu API et formats textuels Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 4 Partie I Vocabulaire Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 5 Vocabulaire Ambiguïtés de vocabulaire informatique et typographie classique Anglais - Français Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 6 Texte Séquence de caractères lisible par l’homme. Exemples: Non multimédia Littérature (livre) Informatique (texte pour imprimante) Multimédia Informatique : Langage de description (ex XML, HTML, SVG) Télévision (Télétexte, sous-titre ) Téléphonie mobile : SMS … Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 7 Caractère (Character) Nombreux sens Linguistique: l'unité minimale ayant un sens, à laquelle correspond un graphème (unité graphique) Typographie: pièce de métal servant à imprimer (grec) Informatique: « caractère 46 » (abus de langage) Confusion entre l’image imprimée et ce qu’elle représente Ex: « M » et la lettre M majuscule Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 8 Distinction Caractère – Glyphe Caractère unité d'information abstraite utilisée pour coder des éléments de texte Glyphe Désigne le dessin, le signe graphique de tout ou partie d’un ou plusieurs caractères. Utilisé pour présenter graphiquement des morceaux de texte Un glyphe peut-être représenté sous forme vectorielle (courbes de Bézier) ou sous forme d’image ‘raster’. Exemples Caractère: « M majuscule » Glyphes: M, , M… Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 9 Relation Caractère – Glyphe Règle générale 1 caractère = 1 glyphe Exceptions 1 caractère de commande = 0 glyphe delete, escape … 1 caractère accentué = 2 glyphes Caractère « a accent aigu » (à) = glyphe « a » + glyphe « ` » 2 caractères liés (ligature) = 1 glyphe Glyphe « fi » = caractère « f » + caractère « i » Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 10 Relation Caractère – Glyphe Ambiguïté Importance du contexte de langue Ex: « A » = lettre latine A majuscule = lettre grec ALPHA majuscule Importance de la direction d’écriture Ex: parenthèse ouvrante de gauche à droite « ( » (français) parenthèse ouvrante de droite à gauche « ) » (arabe) Importance pour les caractères contextuels Glyphes de substitution en fonction de la position du caractère Ex: écriture arabe (initial, milieu, fin, isolé) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 11 Jeu de caractères codé (coded character set) Un ensemble ordonné de caractères (répertoire) chaque caractère est représenté par un entier (code position). Pour transmettre ou stocker la position dans cet ensemble on utilise un procédé de codage de caractère. Règles de constitution d’un jeu universel 2 caractères correspondant au même glyphe sont codés séparément Les glyphes multiples représentant un même caractère sont codés de la même manière Attention aux exceptions Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 12 Partie II Codages de caractères Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 13 Codage de caractères (character set encoding) But échange de caractères entre machine Une bijection De l’ensemble des positions dans un jeu de caractères Vers un ensemble de codes binaires (à longueurs variables) Exemples: ASCII Unicode, CJKV … Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 14 Codages de caractères Le codage ASCII et ses variantes Les codages JIS La norme Unicode et ses codages associés Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 15 Codages de caractères: ASCII American Standard Code for Information Interchange Inventé en 1965 aux USA, standardisé en 1983 (ISO 646) Jeu de caractères 33 caractères de commandes (prémices des instructions de présentation: ex CR) 95 caractères imprimables – 83 caractères obligatoires • Lettres minuscules, majuscules • Chiffres • Ponctuation (! " % & ‘ * + , - . / : ; < = > ? _ ) et espace – 2 caractères au choix ( # ou £ et $ ou ¤ ) – 10 caractères nationaux Codage de 128 caractères sur 7 bits Opération de codage = identité Possibilité d’extensions (8ème bit) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 16 US-ASCII Avantage Codage simple très utilisé, très répandu Ex: codage des URL Utiliser comme base pour d’autres langages Inconvénients Ne permet de représenter que l’anglais Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 17 ASCII variantes nationales Problème d’internationalisation Différence de caractères nationaux Brique MIX Symboles monétaires Caractères nationaux Gestion du texte dans les applications MM. 26/04/04. Page 18 Problèmes d’ASCII Incapacité de représenter tous les caractères existants Pas d’interoperabilité d’un pays à l’autre Réutilisation des codes nationaux 1 seul nom = différents ensembles de caractères US-ASCII (standard ANSI): sur 7 bits Codage sur 8 bits – Codages spécifiques à des plateformes • Ex: pages de code Windows – Les codages ISO 8859 – … Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 19 Codages de caractères: Les normes ISO-8859 Extensions à 8 bits de la norme ASCII ISO/IEC 8859-n, n=1…16 Latin-1 – Europe occidentale (base pour Unicode) Latin-2 – Europe orientale Latin-5 – Turquie Latin-9 – Correctifs à Latin-1 (€) Principes 128 premières positions identiques à ASCII 32 suivantes communes à tous les codages ISO 8859 96 dernières spécifiques à chaque codage Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 20 ISO Latin-1 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 21 Problèmes des codages ISO 8859 + Possibilité de couvrir plusieurs langues (arabe, hébreu, cyrillique, thaï, grec) – 256 caractères insuffisants pour les langues orientales – Difficulté de mélanger des ISO 8859 – Non compatibilité ISO Latin-1 et ISO Latin-9 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 22 Utilisations du codage ASCII Représentation des codages 8 bits Principe: coder un caractère d’un jeu de caractères X en une séquence de caractères ASCII Caractère é Å ± MIME =E9 =C5 =B1 HTML &acute; &Aring; Brique MIX &delta; &plusmn; Gestion du texte dans les applications MM. 26/04/04. Page 23 Codages de caractères: Les codages JIS Langues à base d’idéogrammes => plusieurs milliers de caractères (ex: Kanji) Codage sur 2 x 7 bits Séquence d’échappement entre codage ASCII et codages JIS Plusieurs variantes JIS X 208, SJIS … en fonction des codes d’échappement Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 24 La norme Unicode Situation avant Unicode Codage à un octet: peu de caractères représentables Utilisation de plusieurs codages dans un même document pour couvrir plusieurs langues Nécessité pour les logiciels de connaître plusieurs codages Inefficacité due aux séquences d’échappement Naissance d’Unicode Consortium industriel crée en 1988 (Xerox) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 25 La norme Unicode Jeu de caractères universel Plus d’1 million de caractères représentables (220) Version 4.0 (Sept. 2003): 96 248 caractères définis Regroupement des caractères en 16 plans de 216 caractères Plan principal: Plan Multilingue de Base (PMB – BMP) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 26 Plan de caractères Unicode Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 27 Plan Multilingue de Base Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 28 Zone d’écriture générale et symboles Écriture générale Symboles Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 29 Démonstration Font2DTest.java Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 30 Jeu de caractères d’Unicode A chaque caractère est associé: Un numéro unique (code position): U+xxxx (plan de base) Ex : 0x0044 Ex : U+yyxxxx (autres plans) Un nom: ex Lettre majuscule latine D Une direction: gauche – droite ou droite – gauche Une décomposition éventuelle: é = e + ‘ Des renseignements sur la langue La forme graphique n’est pas associée Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 31 Unicode et ISO 10646 2 standards parallèles Unicode Consortium et ISO/IEC JTC1/SC2 WG 2 (1984) converge en 1992 Utilisent le même ensemble de caractères Unicode spécifie des techniques d’implémentation table de conversion entre Unicode et JIS, … ISO 10 646 spécifie 2 codages : UCS-2 et UCS-4 Les codages associés permettent de coder Des textes multilingues Des caractères alphabétiques Des caractères idéographiques Des symboles Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 32 Codages associés à Unicode Codage à longueur fixe Définis par ISO UCS-2: Universal Character Set 16 bits pour coder les caractères du PMB UCS-4 32 bits pour coder tous les caractères restriction à [0x0..0x10FFFF] pour compatibilité avec UTF-16 Rapidité d’exécution sur machines 32 bits Non compatibles ASCII Émulation de caractères de commandes Problème de nommage de fichiers Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 33 Codages associés à Unicode Codage à longueur variable Définis par IETF UTF-8: Universal Transformation Format (RFC 2279) 1998 alignement à l’octet compatible ASCII (0..127) – Un fichier ASCII transcodé en UTF est identique au fichier d’origine – Les caractères non ASCII dont le bit de poids fort est à 1 sont ignorés par les processeur ASCII Conversion efficace avec UTF-16 et UTF-32 Utilisé par Java UTF-16 alignement sur 2 octets Caractères du PMB = 2 octets Autres caractères = 2 (indirection) + 2 UTF-32 = UCS-4 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 34 Les codages UTF Universal Transformation Format Code Unicode binaire (PMB) UTF-16 UTF-8 1er octet UTF-8 2e octet UTF-8 3e octet 0000 0000 0xxx xxxx 0000 0000 0xxx xxxx 0xxx xxxx 0000 0yyy yyxx xxxx 0000 0yyy yyxx xxxx 110y yyyy 10xx xxxx zzzz yyyy yyxx xxxx zzzz yyyy yyxx xxxx 1110 zzzz 10yy yyyy 10xx xxxx 000u uuuu zzzz yyyy yyxx xxxx 1101 10ww wwzz zzyy + 1101 11yy yyxx xxxx 1111 0uuu 10uu zzzz 10yy yyyy UTF-8 4e octet 10xx xxxx wwww = uuuuu – 1 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 35 Exemple de codage des caractères Unicode Caractère Å Å A+° Code Unicode U+00C5 U+212B U+0041 + U+030A UTF-8 C3 85 E2 84 AB 41 CC 8A UTF-16 00C5 212B 0041 030A UTF-32 0000 00C5 0000 212B 0000 0041 0000 030A Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 36 Problèmes d’Unicode Unification problématique des ensembles de caractères Japonais, Chinois…. Utilisation de tables de traductions (JIS->Unicode) Caractères controversés ZWNJ (zero width non joiner): empêche les ligatures (dévanagari) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 37 Partie III Représentation des polices de caractères Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 38 Police de caractères (font family) Contient un ensemble de glyphes Destinés au rendu, à l’impression Décrit les caractères d’un jeu de caractères Informe sur la relation caractère-glyphe Correspond à un même style Tous les glyphes sont dessinés de la même manière e.g. Times New Roman Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 39 Fonte (font) Une fonte est une police de caractère paramétrée Origine historique (caractère en fonte) Son style (gras, italique, soulignée …) Certains paramètres (taille, épaisseur, …). Conclusion Helvetica est une famille de polices. Helvetica italic est une police de caractères avec style. Helvetica italic 10 pt est une fonte. Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 40 Historique des formats de représentation (1/2) Polices Bitmap Glyphe représenté sous forme d’image, de pixels Images à résolution dépendante de l’imprimante PostScript (Xerox, Apple) Langage de description de page Destiné aux imprimantes Commandes stockées sous forme textuelle Commandes de tracé, commandes de déplacement Nécessité d’utiliser un interpréteur Polices limitées à 256 caractères, utilisation de plusieurs polices pour gérer plus de caractères Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 41 Historique des formats de représentation (2/2) Type1 (Adobe) Cas particulier de police PostScript Plus strict, plus efficace, plus compact Possibilité d’inclure des ‘hints’ pour s’adapter au terminal basse-résolution Utilisation de courbes de Bézier cubiques (4 points) TrueType (Apple, Microsoft) Format binaire: suite d’instructions Corriger les limitations de Type1 : ‘Hinting’ plus avancé (diagonale) Utilisation de courbes de Bézier quadratiques (3 points) ou d’images bitmap OpenType (Apple, Microsoft, Adobe) Unification de TrueType et Type1 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 42 Police Bitmap vs. Police Vectorielle Bitmap Toujours le même aspect (WYSIWYG ??) Simplicité de rendu, pas de moteur de rendu complexe Limité à une résolution Redondance de parties de caractères (Ex: à, è; idéogrammes) Vectoriel Réduction de la taille Redimensionnable (haute résolution et basse résolution(hinting)) Rendu coûteux (courbe de Bézier, antialiasing) Rendu dépendant de la qualité du moteur d’affichage Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 43 Le format OpenType Description des polices de caractères Format de fichier compatible multi-plateforme (Unix, Win, Mac) Jeu de caractère reposant sur Unicode Utilisation de données vectorielles pour la représentation des glyphes Support pour la typographie avancée Structure du fichier Utilisation de table CMAP: correspondance caractères – glyphes GLYF: Dessin vectoriel TrueType de glyphes CFF: Programme de police PostScript GSUB: substitution de glyphes (1-1,1-n, n-1) GPOS: déplacement et positionnement des glyphes les uns par rapport aux autres en (X,Y) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 44 Affichage du texte à base résolution Problème de traitement des traits horizontaux ou verticaux Sans hinting Brique MIX Avec hinting Gestion du texte dans les applications MM. 26/04/04. Page 45 Vocabulaire typographique Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 46 Informations contenues dans une police de caractères Information graphiques Système de coordonnées Hauteur/largeur de chaque caractère Point d’encrage de chaque caractère (jambage, hampe) Information de crénage (kerning) Réajustement de l’espace entre caractères Démonstration (TTX) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 47 Le mécanisme de rendu du texte Déterminer la représentation graphique à utiliser pour chaque caractère Ré-ordonnancement (direction, orientation) Transposition caractère - > glyphe Substitution éventuelle de glyphes (e.g. ligatures) Affichage des glyphes Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 48 Partie IV Le rendu des glyphes Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 49 Rendu de polices de caractères Moteur de saisie de texte Brique MIX Moteur de traitement de texte Rendu des polices Police de caractères Gestion du texte dans les applications MM. 26/04/04. Page 50 Le rendu des glyphes Plusieurs paramètres: Types d’écran Cathodique: Progressif (PC), Entrelacé (TV) LCD: PC, PDA, téléphone mobile … Résolution Capacité mémoire Complexité Contrainte Préserver la lisibilité du texte en minimisant la bande passante et la complexité algorithmique Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 51 Rendu entrelacé 2 images de résolution moitié affichée en alternances Avantages: Bande passante faible Pas de scintillement de l’image Inconvénients: Résolution faible, distorsions, scintillement des lignes, brillance faible … Mauvaise lisibilité du texte (cf. Photo) Solutions: Utilisation de fontes ad hoc (e.g. Tiresias …) Utilisation d’images pour chaque glyphe (e.g. Teletext, sous-titres DVB) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 52 Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 53 Rendu Ecran LCD Technique de rendu sous-pixel (Microsoft CleanType) Tirer partie de la structure d’un écran LCD RGB Utiliser les canaux RGB pour ‘tripler’ la résolution Avantages Résolution plus importante Contour plus marqués Inconvénients Efficace seulement sur des éléments très contrastés (texte) Problème de bavures Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 54 Techniques de rendu sous-pixel Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 55 Partie V Comment utiliser du texte dans une applications multimédia? Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 56 Utilisations de texte dans une application MM De manière programmatique Utilisation d’API fournies par l’OS Dépendantes de l’OS, de la machine Rapidité d’exécution, implémentation matérielle De manière déclarative Utilisation de normes de représentation du texte Description des directives d’affichage (positionnement, style …) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 57 Manipuler du texte via des API C/C++ Type ‘char’ un octet : peut gérer ASCII ou UTF-8 Fonctions : strcpy, strlen, strcat, strchr, … Type ‘wchar’ wide char 2 octets : Capable de manipuler le PMB Unicode, UTF-16 Fonctions : wcscpy, wcslen, wcscat, wcsrchr, … Windows: types neutres (Unicode/ASCII) :‘TCHAR’, ‘STR’ Java Types ‘char’, ‘String’ (UTF-8), ‘Font’ Méthodes: String.*, Graphics2D.drawString Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 58 Manipuler du texte via des langages déclaratifs Exemples Langages textuels: HTML, SVG … Langages binaires: PDF, Flash, BIFS Informations à décrire Contenu textuel Police de caractères Informations de style, épaisseur …. Effet d’affichage (embossage, relief, ombrage …) Positionnement du texte (implicite ou explicite) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 59 Contenu textuel sur le Web Utilisation de XML pour structurer les données textuelles Langage textuel structuré Élément (2 formes syntaxiques) <MonElement/> Ou <MonElement>…autres éléments et/ou texte brut…</MonElement> Attributs <MonElement MonAttribut="Ma valeur"/> Spécification du mode de codage <?xml encoding="méthode" ?> Méthodes: – utf-8, utf-16, iso-8859-n, us-ascii Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 60 Problèmes du positionnement de texte Deux types de positionnement Absolu positionnement exact, indépendant de la taille de la scène. Utilisation de matrices de transformation par mots/par caractères Relatif Positionnement par bloc, variable en fonction de la taille de la scène Utilisation de primitives de positionnement implicite Gestion de la progression du texte Linéaire: gauche-droite, droite-gauche, haut-bas Non-linéaire: ex: cartographie (texte le long d’un chemin) Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 61 Problèmes de visualisation des polices de caractères Incohérence entre environnement de création de contenu et environnement de visualisation Polices de caractères absentes Environnement linguistique différent Solution Inclure les informations des polices de caractères dans le contenu Ex: Word, PDF, SVG, BIFS Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 62 Le texte en SVG SVG version 1.1 Une ligne de texte = un élément ‘text’ Pas de coupure de mots, de retour à la ligne Utilisation d’éléments ‘tspan’ pour changer de style Démos SVG version 1.2 Gestion du positionnement implicite à la HTML Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 63 Liens Projets Open-Source FreeType: rendu graphique des polices de caractères TTX: comprendre une police OpenType/TrueType Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 64 Sources Vocabulaire http://iquebec.ifrance.com/hapax/glossaire.htm Revue ‘Document numérique’ www.unicode.org www.microsoft.com/typography Brique MIX Gestion du texte dans les applications MM. 26/04/04. Page 65