La gestion du texte dans les applications multimédia

publicité
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
´
Å
Brique MIX
δ
±
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
Téléchargement