Guide d'installation et de configuration de Linux Précédent Chapitre 10. Installation de XWindow Suivant Gestion des polices de caractères
La gestion des polices de caractères est relativement compliquée sous XWindow. En effet, elle est gérée par un protocole complexe, qui permet de décrire avec précision les diverses polices de caractères, quel que soient leur type et leur aspect. De plus, la gestion des polices nécessite de traiter correctement les symboles spécifiques à chaque pays, ce qui complique encore un peu plus les choses. Enfin, pour couronner le tout, XWindow n'utilise pas la notion de graphisme indépendant du périphérique, comme la GDI de Windows. Cela implique, hélas, qu'il ne se charge que de l'affichage et pas de l'impression. Chaque programme doit donc se charger de lui-même de l'impression, et en général les programmes ne sont capables que d'imprimer sur des imprimantes PostScript. Par conséquent, la configuration des polices de caractères doit non seulement se faire pour XWindow, mais également pour chacun des programmes (ou, au moins, pour l'interpréteur GhostScript, utilisé pour l'impression avec des imprimantes non PostScript).
Gestion des polices de caractères sous XWindow
Originellement, XWindow ne pouvait afficher que des polices de type bitmap, c'est-à-dire des polices de caractères définies par un dessin pour chaque caractère et pour un certain nombre de résolutions. Cette technique avait l'avantage d'être rapide à l'affichage, mais de relative mauvaise qualité lorsque les tailles demandées n'étaient pas exactement celles pour lesquelles la police avait été dessinée. En effet, la police devait alors être redimensionnée à partir de la taille la plus proche disponible. Ultérieurement, les polices Postscript sont apparues. Ces polices sont définies vectoriellement, c'est-à-dire par des formules mathématiques. La forme des caractères est ainsi calculée pour chaque dimension, ce qui permet d'avoir une qualité irréprochable. L'avantage des polices Postscript est qu'elles sont gérées de manière native par les imprimantes PostScript, et assurent une qualité d'impression optimale. En revanche, leur affichage sur les écrans n'est pas toujours correct, car les formules utilisées ont été conçues pour les périphériques disposant de grandes résolutions et ne donnent pas forcément un résultat esthétique pour les résolutions d'écrans. Enfin, les polices Truetype ont été inventées par Apple. Ces polices sont également vectorielles, mais disposent en plus de petites astuces permettant d'améliorer leur lisibilité sur les périphériques à faible résolution tels que les écrans. Microsoft a licencié la technologie Truetype et l'a intégrée à Windows par la suite.
Afin de décrire les polices le plus précisément possible, XWindow leur donne des noms relativement complexes. Ces noms constituent ce que l'on appelle la description logique des polices (« XLFD », qui est l'abréviation de l'anglais « X Logical Font Description »). Cette convention de dénomination spécifie que la description des polices doit être constituée de différents champs, séparés par des tirets ('-'). De plus, la description doit elle-même être précédée d'un tiret. Les différents champs utilisés dans la description logique des polices sont les suivants :
le nom de l'éditeur de la police, ou le nom du type de la police ;
le nom de la police (par exemple, « arial ») ;
la graisse de la police (par exemple, « bold » pour gras, « medium » pour normal) ;
l'inclinaison de la police (par exemple, 'r' pour roman, 'i' pour italique) ;
la largeur de la police ;
des options de styles avancées ;
la taille de la police ;
la taille des points ;
la résolution horizontale de la police ;
la résolution verticale ;
le type d'espacement de la police (par exemple, 'c' pour constant, 'p' pour proportionnel) ;
la largeur moyenne de la police ;
le jeu de caractères de la police ;
la page de code de la police.
Vous pouvez consulter la documentation de XWindow pour une description plus détaillée de ces champs. Ces informations ne sont pas toutes supportées par les polices de caractères. Inversement, certaines polices peuvent correspondre à plusieurs descriptions (ne serait-ce que parce qu'elles disposent de plusieurs tailles).
Parmi les informations décrivant les polices se trouvent le jeu de caractères de la police et sa page de codes (rappelons que ces informations constituent ce que l'on appelle l'encodage de la police). Il peut y avoir plusieurs pages de codes pour un jeu de caractères, chacune représentant une manière de numéroter les différents caractères du jeu. Une police peut disposer de plusieurs jeux de caractères, mais en pratique ce n'est que rarement le cas. En revanche, la manière de numéroter les caractères (c'est-à-dire la page de codes) peut avoir une influence certaine.
Comme on le verra plus tard, le jeu de caractères le plus pratique pour les pays d'Europe de l'Ouest est le jeu ISO 8859 (jeu de caractères dit « latin »). Ce jeu de caractères dispose de la plupart des caractères utilisés en Europe. Pour les alphabets occidentaux, la page de codes la plus utilisée est la page de code 1, ce qui fait que l'encodage des polices occidentales est ISO 8859-1. Cependant, quelques caractères ont été oubliés dans cette page de code (notamment le o e dans l'o français ('½')). Ces caractères sont pourtant disponibles dans certaines polices (en particulier, les polices Truetype provenant de Windows), mais ne sont malheureusement pas disponibles avec l'encodage ISO 8859-1. Pour y accéder, on est obligé d'utiliser un autre encodage, comme par exemple l'encodage ISO 8859-15. Cet encodage est quasiment identique à l'encodage ISO 8859-1, aux caractères additionnels près, qui ont été ajoutés pour les pays européens. Il est également possible d'utiliser la page de code 1252 des polices de caractères de Windows. Cette page de code correspond à l'encodage « windows-1252 », parfois également nommé « microsoft-ansi » ou encore « microsoft-cp1252 ». En résumé, le jeu de caractères et la page de code permettent d'indiquer pour quel pays (ou quel alphabet) une police est destinée.
Note : Le problème des encodages est que seul l'encodage ISO 8859-1 est vraiment utilisé par la majorité des gens. Cela implique que les autres encodages risques de ne pas être reconnus par tous les programmes. En particulier, il est assez difficile d'imprimer des textes encodés avec des encodages non standards.
La description logique des polices de caractères est très précise, puisqu'elle permet de spécifier l'origine de la police, son nom, les informations la concernant, les caractères qu'elle comprend et comment ils sont numérotés. Lorsqu'on choisit une police de caractères, on peut parfaitement ne préciser que certains critères (comme par exemple, l'encodage de la police). Dans ce cas, les champs constituant le nom de la police non spécifiés pourront être remplacés par des caractères génériques. Le caractère '*' permet ainsi de spécifier n'importe quelle valeur pour ce champ, et le caractère '?' permet de spécifier n'importe quel caractère dans un champ.
Le programme xfontsel permet de sélectionner les polices de caractères installées sur un système. Il peut être utile pour comprendre la signification des différents champs de la description logique des polices. Des exemples de descriptions logiques de polices sont donnés ci-dessous :
-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1 -*-courier-bold-*-normal-*-10-*-*-*-*-*-iso8859-15 -winfonts-arial-*-i-normal-*-16-*-*-*-*-*-microsoft-cp1252Les polices de caractères sont souvent regroupées dans des répertoires. Il peut exister plusieurs répertoires de polices sur un système, si bien qu'il est nécessaire d'indiquer à XFree86 dans quels répertoires ils doit rechercher les polices de caractères utilisables. Les répertoires des polices utilisées par le serveur X sont indiqués dans le fichier XF86Config, dans la section « Files ». Comme on le verra plus tard, cette section peut également contenir des références sur des serveurs de polices de caractères. Les serveurs de polices de caractères peuvent rechercher les polices dans des répertoires indiqués de différentes manières selon le serveur. Pour certains serveurs, les répertoires de polices sont indiqués dans un fichier de configuration, pour d'autres, ils sont indiqués en ligne de commande.
Dans le protocole X, les répertoires de polices doivent contenir un fichier fonts.dir donnant la liste des polices de ce répertoire. Ce fichier indique, sur sa première ligne, le nombre de polices installées dans ce répertoire, et, sur les lignes suivantes, l'association entre les fichiers de polices et leur description logique. Ce fichier est créé normalement par le programme mkfontdir. Ce programme génère le fichier fonts.dir à partir des informations contenues dans les fichiers des polices ou à partir du nom des fichiers des polices eux-mêmes. En général, les polices à taille variable ne contiennent pas ces informations dans le format standard des polices X11 classiques, et mkfontdir ne peut donc pas créer le fichier fonts.dir automatiquement. Pour ces polices, il faut créer un fichier fonts.scale contenant les mêmes informations que le fichier fonts.dir, et que mkfontdir utilisera pour créer ce dernier. La méthode pour créer le fichier fonts.scale dépend du type de polices utilisé. Celle utilisée pour les polices Truetype sera décrite dans la la section intitulée Installation des polices Truetype.
En général, les encodages les plus standards sont gérés directement par le serveur X ou par le serveur de polices. En particulier, l'encodage ISO 8859-1 est géré nativement. Il est toutefois possible de définir de nouveaux encodages dans des fichiers d'encodages. Pour que le serveur X ou le serveur de polices puisse utiliser les polices définies avec ces encodages, il faut que le répertoire d'installation des polices contiennent un fichier encodings.dir. Ce fichier a la même structure que le fichier fonts.dir, c'est-à-dire qu'il contient le nombre des encodages sur la première ligne, et, sur chaque ligne suivante, le nom de l'encodage et le nom d'un fichier contenant la définition d'un encodage, séparés par un espace. De cette manière, le serveur X et le serveur de polices sont capables de réaliser l'association entre le nom de l'encodage utilisé dans la description logique de polices et le fichier de définition de cet encodage. La méthode permettant de créer le fichier encodings.dir sera décrite plus loin dans la section traitant de l'installation des polices Truetype.
L'écriture des fichiers de définition d'encodages de polices est une tâche assez compliquée, qui nécessite de bien connaître la numérotation des caractères de chaque type de fichiers de polices. De manière très simplifiée, on peut dire que les fichiers de définition d'encodage font l'association entre le numéro de chaque caractère dans la police et une numérotation standardisée des caractères (XWindow utilise souvent la numérotation Unicode) de cette police. Cela permet de manipuler les textes avec la numérotation standard, et d'utiliser des polices qui ne définissent pas tous les caractères de cette numérotation ou qui ne les numérotent pas de la même manière. Heureusement, les encodages les plus standards ont déjà été écrits, il est fort peu probable que vous ayez à vous intéresser à ce problème. La structure des fichiers d'encodages ne sera donc pas décrite plus en détail dans ce document.
Installation des polices Truetype
L'installation des polices TrueType sous XWindow ne pose désormais plus de problème particulier, puisqu'il suffit de définir le fichier fonts.dir dans le répertoire d'installation de ces polices. Cependant, un certain nombre d'opérations supplémentaires devront être réalisées pour permettre l'impression des documents utilisant les polices TrueType. Ce paragraphe détaille la manière de déclarer les polices TrueType au niveau du serveur X, et présente les opérations nécessaires à leur impression pour quelques logiciels courants.
Généralement, les fichiers de polices sont placées dans des sous-répertoires du répertoire /usr/X11R6/lib/X11/fonts/. Ces sous-répertoires permettent de classer les fichiers de polices par type et par taille. Dans la suite de ce document, il sera supposé que les polices TrueType sont toutes situées dans le sous-répertoire truetype/.
Configuration du serveur X
Pour permettre au serveur X d'utiliser les polices TrueType, il faut simplement écrire le fichier fonts.dir de chaque répertoire de polices. Rappelons que ce fichier contient la liste des polices du répertoire dans lequel il se trouve, et est utilisé à la fois par le serveur X et par les serveurs de polices de caractères. La notion de serveur de polices sera vue en détail dans la la section intitulée Configuration d'un serveur de polices.
Normalement, le fichier fonts.dir est généré par le programme mkfontdir. Ce programme utilise les informations contenues dans les fichiers de polices ou dans le nom de ces fichiers de polices pour le générer. Malheureusement, les polices Truetype, comme la plupart des polices à taille variable, ne contiennent pas ces informations dans un format compréhensible par mkfontdir, ni dans leurs fichier, ni dans leurs nom. Celui-ci ne peut donc pas créer le fichier fonts.dir directement. Dans ce cas, mkfontdir utilise le fichier de définition des polices à taille variable fonts.scale. Ce fichier doit être créé manuellement, ou à l'aide de l'utilitaire ttmkfdir de Joerg Pomnitz, que vous pouvez trouver sur Internet. Cette archive contient un fichier binaire déjà compilé, nommé ttmkfdir.linuxbin.glibc2. Vous pouvez utiliser directement ce fichier si vous le voulez, en le renommant en ttmkfdir et en le copiant dans le répertoire des binaires de XWindow.
L'utilitaire ttmkfdir s'utilise de la manière suivante :
ttmkfdir > fonts.scalepour générer le fichier fonts.scale.Une fois le fichier fonts.scale créé, il ne reste plus qu'à appeler mkfontdir avec la ligne de commande suivante :
mkfontdirCette commande aura pour effet de créer le fichier fonts.dir à partir du fichier fonts.scale (en fait, il s'agit d'une simple recopie).
Les encodages utilisés par le serveur X pour les polices Truetype sont tous définis dans le fichier fonts.dir, qui donne la correspondance entre les descriptions logiques de polices et les fichiers de polices Truetype. Par conséquent, vous pourrez aisément modifier ou ajouter des encodages différents pour ces polices de la manière suivante :
éditez le fichier fonts.scale contenant la liste des noms de polices et des descriptions logiques de polices ;
modifiez la description logique de chaque police ;
relancez mkfontdir.
La modification de la description logique de la police consiste simplement à changer l'encodage utilisé par la police en un autre encodage. Vous pouvez utiliser n'importe lequel des encodages suivants, qui sont gérés nativement par le serveur de polices et par le serveur X :
iso10646-1 (encodage Unicode) ;
iso8859-1 à iso8859-10 ;
iso8859-15 ;
koi8-r, koi8-u, koi8-ru, koi8-uni, ou koi8-e ;
microsoft-symbol (uniquement pour les polices Truetype) ;
apple-roman (uniquement pour les polices Truetype d'Apple).
Vous pouvez également utiliser des encodages additionnels, à condition d'utiliser l'option -e de mkfontdir lors de la génération du fichier fonts.dir. Cette option permet d'indiquer le répertoire contenant les fichiers de définition des encodages à utiliser :
mkfontdir -e répertoireoù répertoire est le répertoire contenant les fichiers de définition d'encodages. Cette commande a pour conséquence de créer un fichier encodings.dir en plus du fichier fonts.dir.XWindow est fourni avec un certain nombre de fichiers de définition d'encodages standards, tous situés dans le répertoire /usr/X11R6/lib/X11/fonts/encodings/. L'un des plus intéressants est sans doute microsoft-cp1252, qui permet de disposer des caractères additionnels ajoutés par Microsoft dans ses polices, tout en conservant un encodage compatible avec les documents Windows.
Note : Si vous voulez rester compatible avec les normes ISO, vous pouvez utiliser l'encodage ISO 8859-15 au lieu de microsoft-cp1252. Vous accéderez ainsi à tous les caractères utilisés en Europe, mais vous ne pourrez plus utiliser les caractères additionnels définis par Microsoft.
Il faut noter que la plupart des polices sont défectueuses et indiquent une page de code erronée dans leur fichier. Cela explique pourquoi quelques descriptions logiques de polices dans le fichier fonts.scale généré automatiquement par ttmkfdir peuvent être fausses. Pour ces polices, il faudra corriger l'encodage manuellement en suivant la méthode décrite ci-dessus.
Certains programmes ne donnent pas la possibilité de choisir l'encodage pour les polices de caractères. C'est en particulier le cas pour la suite bureautique StarOffice. Il y a qu'une seule solution à ce problème : ne définir qu'un seul encodage pour la police en question.
Configuration des polices Truetype pour l'impression
Comme il l'a été dit plus haut, la configuration des polices Truetype pour l'impression dépend fortement de chaque programme utilisé. D'une manière générale, plusieurs cas peuvent se présenter :
Dans les deux cas, il se peut qu'il faille configurer le logiciel utilisé pour qu'il puisse utiliser les polices Truetype. C'est en particulier le cas de la suite bureautique StarOffice, qui ne permet de choisir que les polices qu'il peut imprimer.
soit on dispose d'une imprimante PostScript, auquel cas il faut convertir les polices Truetype en polices Adobe Type 42, qui constituent une encapsulation des polices Truetype en PostScript. Cette conversion a l'avantage de ne pas provoquer de perte de qualité, puisque la police Truetype est utilisée telle quelle ;
soit on ne dispose pas d'imprimante PostScript, auquel cas on utilise nécessairement un interpréteur PostScript. Cet interpréteur est souvent GhostScript, car il s'agit encore une fois d'un logiciel libre. Quel que soit l'interpréteur PostScript utilisé, il faut le configurer pour utiliser les polices Truetype. Nous verrons comment le faire pour les versions de GhostScript ultérieures à la 6.01.
Les paragraphes suivants décrivent les procédures à suivre pour imprimer les polices Truetype en général. La configuration de StarOffice 5.2 sera également décrite, car c'est l'une des suites logicielles les plus abouties sous Linux (qui de plus est devenue un logiciel libre grâce à Sun). La configuration des autres logiciels ne sera pas abordée, consultez leur aide ou recherchez des renseignements sur Internet quant à la procédure à suivre.
Conversion des polices Truetype en polices Adobe de Type 42
La conversion des polices Truetype en polices Adobe de Type 42 est une opération nécessaire si l'on utilise directement une imprimante PostScript, ou si l'on utilise un interpréteur PostScript incapable de gérer directement les polices Truetype. De manière générale, il est recommandé d'utiliser GhostScript même si l'on possède une imprimante PostScript, car la configuration de l'impression se fait de la même manière que les autres utilisateurs de Linux, et il est donc plus facile de trouver de l'aide sur Internet.
La conversion en polices Adobe de Type 42 peut être réalisée avec le programme ttfps, disponible sur Internet sous le nom ttfps.tar.gz. Cet outil est tout à fait correct, mais il souffre d'un grave défaut : il ne permet pas de choisir l'encodage de la police PostScript qu'il génère. Plus grave encode, il utilise systématiquement l'encodage standard Adobe, qui ne dispose pas de la plupart des lettres accentuées françaises (c'est aussi la raison pour laquelle il est recommandé d'utiliser GhostScript). Vous pouvez bien entendu modifier le code source si vous vous en sentez le courage.
Vous devrez compiler ttfps pour pouvoir l'utiliser. Lorsque vous aurez extraits les fichiers sources de l'archive, vous aurez à éditer le fichier Makefile pour :
définir la variable d'environnement CC avec pour valeur le nom du compilateur que vous utilisez (en l'occurence, GCC) :
choisir entre les deux jeux d'options de compilations CFLAGS. Vous ne devez en choisir qu'un seul, il faut obligatoirement commenter l'autre avec un caractère dièse ('#'). Le choix dépend de l'architecture de votre machine. Si vous utilisez un PC, vous devrez choisir l'option contenant l'option -DSMALLENDIAN.
Une fois ces modifications faites, vous pourrez compiler ttsps avec la simple commande suivante :
makeL'utilisation de ttfps est très simple. Pour convertir une police Truetype en police Adobe de Type 42, il suffit d'utiliser la ligne de commande suivante :
ttfps [-a fichier.afm] fichier.ttf fichier.pfaoù fichier.afm est le nom du fichier de définition des dimensions de la police PostScript, fichier.ttf est le nom du fichier de police Truetype à encapsuler, et fichier.pfa est le nom de la police PostScript résultante.La génération du fichier .afm est facultative. Elle doit être utilisée lorsqu'on veut utiliser un logiciel comme StarOffice, qui a besoin de connaître les dimensions de la police pour l'afficher correctement et pour faire ses calculs de mise en page.
Installation des polices Truetype pour GhostScript
GhostScript est un interpréteur PostScript capable d'imprimer les polices Truetype. Sa configuration est très simple, puisqu'il suffit de lui donner le nom de police que les fichiers PostScript utilisent pour la référencer et le nom du fichier de police correspondant. Cette association est définie dans le fichier Fontmap de GhostScript, que vous pourrez trouver dans son répertoire d'installation (normalement, GhostScript se trouve dans le répertoire /usr/share/ghostscript/version/, où version est le numéro de la version installée).
Les informations que vous devez ajouter dans ce fichier sont similaires à celles stockées dans le fichier fonts.dir du répertoire de polices. Pour chaque police, il faut rajouter une ligne de la forme suivante :
(nom) (fichier) ;où nom est le nom de la police d'imprimante que les programmes utilisent dans les fichiers PostScript qu'ils génèrent, et fichier est le chemin absolu du fichier de la police Truetype.En pratique, le nom de la police d'imprimante peut être choisi librement. En revanche, il faudra bien utiliser ce nom lors de la déclaration des polices d'imprimantes dans les logiciels capables d'imprimer en PostScript. On veillera toutefois à ne pas utiliser des noms de polices contenant des espaces blancs, car certains programmes peuvent avoir du mal à manipuler de tels noms.
Configuration de StarOffice pour l'utilisation des polices Truetype
StarOffice ne gère pas les polices Truetype directement. En fait, il n'est capable d'imprimer lui-même que les polices Adobe de Type 1. De plus, il ne propose pour l'affichage que les polices qu'il est capable d'imprimer. Cependant, il est possible d'utiliser malgré tout les autres polices en tapant directement leur nom dans le contrôle de sélection de polices, tel qu'il apparaît dans leurs descriptions logiques et en minuscule. Dans ce cas, StarOffice utilisera les polices XWindow malgré tout, mais il ne pourra toujours pas les imprimer. Il faut également s'attendre à ce que la mise en page ne soit pas correcte, car il ne peut pas déterminer les caractéristiques géométriques de la police.
Pour qu'il puisse imprimer les caractères d'une police Truetype, il existe deux possibilités. La première est tout simplement de convertir les polices Truetype en polices Adobe de Type 1. Cette méthode souffre de plusieurs inconvénients :
les polices Adobe de Type 1 sont moins précises que les polices Truetype, surtout pour les petits caractères ;
la conversion n'est pas parfaite (c'est-à-dire que les caractères ne sont pas exactement les mêmes) ;
elle n'est pas complète (les outils de conversion ne gèrent que l'encodage ISO 8859-1).
La deuxième solution est de faire croire à StarOffice que l'imprimante contient la définition de la police Truetype dans sa mémoire. Cette solution a l'avantage de ne pas convertir les polices Truetype en police Adobe de Type 1, et donc de ne pas perdre en qualité. De plus, elle permet d'économiser la place disque occupée par les polices converties. Cependant, elle a également des inconvénients :
il faut passer par un émulateur PostScript (comme GhostScript par exemple) capable de comprendre les polices Truetype, ou il faut encapsuler ces polices dans une police Adobe de Type 42 (cette encapsulation n'est pas une conversion, il n'y a donc toujours pas de perte de qualité) ;
la configuration de StarOffice est bien plus compliquée ;
il faut installer les polices pour l'interpréteur PostScript ou pour l'imprimante ;
il faut générer un fichier de description de caractéristiques géométriques .afm. Cela n'est pas très aisé, et le problème de la gestion des encodages autres que ISO 8859-1 se pose à nouveau.
Note : Aucune de ces solutions ne permet d'utiliser les encodages ISO 8859-15 et microsoft-cp1252, ce qui implique que certains caractères des polices Truetype ne seront pas imprimables. En particulier, le caractère o e dans l'o français ('½') ne pourra pas être imprimé...
En fait, cette limitation est une limitation des outils de conversion pour la première méthode, et une limitation de GhostScript pour la deuxième.
Seule la deuxième méthode sera décrite ici, car c'est la seule méthode qui permette réellement d'utiliser les polices Truetype avec StarOffice. De plus, c'est la méthode qui nécessite le plus d'explications, ceux qui sont intéressés par la première méthode trouveront des informations claires dans l'aide de StarOffice.
La première étape est de créer un fichier .afm pour chaque fichier de police Truetype. Ces fichiers contiennent la définition des dimensions de chaque caractère de la police, ainsi que l'encodage utilisé. StarOffice utilise ces fichiers pour effectuer ses calculs de mise en page, à partir des dimensions des caractères.
Note : StarOffice n'utilise pas l'encodage indiqué dans le fichier .afm. Il utilise l'encodage de la police X11 de l'affichage. Si une police dispose de plusieurs encodages différents, il choisit celui qui lui semble le plus approprié. En général, il s'agit de l'encodage ISO 8859-1. Comme on l'a vu plus haut, on est obligé de ne définir qu'un seul encodage dans le fichier fonts.dir si l'on veut être sûr que StarOffice utilise l'encodage que l'on désire.
La création des fichiers .afm est une opération assez compliquée. Elle peut être faite grâce au programme PostScript « afmmaker.ps », que l'on peut trouver sur Internet. Pour l'utiliser, il faut l'éditer et définir la police pour laquelle on désire créer un fichier .afm. Les champs qui doivent être modifiés sont marqués avec le commentaire « MAKE CHANGES ». On veillera à ne pas modifier le programme en dehors de ce cette zone.
Les informations à modifier sont les suivantes :
le nom de la police d'imprimante (variable « /fontName »). Le nom qui doit être utilisé ici est le nom de la police qui a été entré dans le fichier Fontmap de GhostScript ;
l'encodage de la police (variable « /encodingScheme »). Il est recommandé de conserver l'encodage « ISOLatin1Encoding », car les autres encodages sont moins riches. En fait, on peut utiliser tous les encodages reconnus par GhostScript, à savoir « StandardEncoding », « ISOLatin1Encoding », « SymbolEncoding », ou « DingbatsEncoding » ;
Note : Le fait de ne pas pouvoir utiliser l'encodage microsoft-cp1252 ou l'encodage ISO 8859-15 est bien une limitation de GhostScript.
le nom complet de la police (variable « /fullName ») ;
le nom de la famille de la police (variable « /familyName ») ;
la graisse de la police (variable « /weight ») ;
l'angle de la police si elle est italique (choisissez 0 s'il s'agit d'une police romane).
Pour la plupart des polices, il n'est nécessaire de préciser, en plus du nom de la police d'imprimante, que la graisse de la police. Les polices normales utilisent souvent « Medium », et les polices grasses utilisent souvent « Bold ».
Une fois ces modifications faites, vous pourrez créer le fichier .afm avec la commande suivante :
gs -q -dNODISPLAY -dBATCH afmmaker.ps > fichier.afmoù fichier.afm est le nom du fichier .afm à créer. Vous pouvez choisir n'importe quel nom, StarOffice ne s'en soucie absolument pas (il utilise tous les fichiers .afm dont il dispose de toutes façons).La deuxième étape est d'installer tous les fichiers .afm ainsi créé dans le sous-répertoire xp3/fontmetrics/afm/ du répertoire d'installation de StarOffice. Assurez-vous de ne pas écraser de fichiers .afm déjà présent, et renommez au besoin les fichiers .afm que vous avez créé.
La troisième étape est de faire l'association entre la police d'imprimante et la police X11 à utiliser. Cette association est faite dans le fichier xp3/psstd.fonts, qui contient la définition des polices PostScript standards. La structure de ce fichier est très simple : pour chaque police installée, il existe une ligne donnant le nom de la police d'imprimante (celui qui a été utilisé dans le fichier Fontmap de GhostScript) et la description logique paramétrée de la police X11 correspondante, séparés par une virgule. La description logique paramétrée de la police X11 est la même description que celle que l'on peut trouver dans le fichier fonts.dir du répertoire d'installation des polices, à ceci près que les champs de taille de police, de taille des points, de résolution horizontale et de résolution verticale sont remplacés par la chaîne de caractère « %d ». Cette chaîne de caractères indique à StarOffice que les champs correspondants devront être remplacés par leurs valeurs en fonction de la taille de la police choisie. Faites bien attention à ne pas faire de fautes de frappe lors de la saisie de ces descriptions. Le plus simple est encore de les copier à partir du fichier fonts.dir et de les modifier pour remplacer les spécifications de taille et de résolution par « %d ». La ligne suivante donne un exemple d'association entre la police d'imprimante TimesNewRoman et la police Truetype correspondante dans X11 :
Note : StarOffice n'utilise pas nécessairement l'encodage de la police que vous indiquez ici. Il est recommandé d'utiliser l'encodage ISO 8859-1 pour ne pas avoir de problèmes, cependant, même si l'encodage est différent, tout fonctionnera correctement.
La dernière étape est d'indiquer à StarOffice que cette police est connue de l'imprimante. Cela est nécessaire pour qu'il n'essaie pas de la définir (il n'y parviendrait d'ailleurs pas, puisqu'il ne sait pas lire les polices Truetype), et qu'il laisse cette imprimante utiliser sa propre définition. Pour les utilisateurs de GhostScript, il faut modifier le fichier SGENPRT.PS du sous-répertoire ppds (« PostScript Printer Definition ») du répertoire d'installation de StarOffice. Vous devrez ajouter une ligne pour chaque police d'imprimante installée, dans la section « Fonts » de ce fichier. Le format de ces lignes doit être le suivant :
*Font nom: Standard "(001.002)" Standard ROMoù nom est le nom de la police d'imprimante tel qu'il apparaît, encore une fois, dans le fichier Fontmap de GhostScript.Une fois ces étapes réalisées, vous pourrez redémarrer StarOffice, et vous disposerez de vos polices Truetype sous StarOffice. Le nom de ces polices sera celui de la police X11 utilisée pour l'affichage. Le nom de la police utilisée dans les fichiers d'impression sera celui du fichier Fontmap de GhostScript.
Note : Il est nécessaire d'utiliser le même encodage pour la police X11 et dans le fichier .afm. En effet, si ce n'est pas le cas, le texte imprimé utilisera l'encodage de la police X11 et sera imprimé avec l'encodage du fichier .afm. Cela peut provoquer quelques erreurs désagréables à l'impression. Pour éviter tous les problèmes, il est recommandé de n'utiliser que l'encodage ISO 8859-1, jusqu'à ce que GhostScript puisse utiliser l'encodage microsoft-cp1252 ou l'encodage ISO 8859-15.
Configuration d'un serveur de polices
XWindow étant un système de fenêtrage fonctionnant en réseau, il propose des services additionnels sur le réseau en plus de l'affichage. Parmi ces services, on notera la possibilité de mettre en place des serveurs de polices de caractères. Ces serveurs permetttent à des clients situés sur d'autres machines d'accéder à la définition des polices de caractères de la machine locale.
Le serveur de police fourni par XWindow se nomme « xfs » (abréviation de l'anglais « X Font Server »). Ce serveur utilise un fichier de configuration, qui permet de lui spécifier les options avec lesquelles il doit démarrer. Dans la suite de ce document, le nom supposé de ce fichier est /etc/xfs.conf. Un fichier de configuration typique est donné ci-dessous :
# Exemple de fichier de configuration du serveur de police : # Limite à 10 le nombre de clients connectés à ce serveur : client-limit = 10 # Demande le démarrage d'un autre serveur quand la limite # précédente est atteinte : clone-self = on # Répertoire des polices de caractères : catalogue = /usr/X11R6/lib/X11/fonts/truetype # Fixe la taille par défaut (en dixièmes de points) : default-point-size = 120 # Résolution par défaut (100 x 100 et 75 x 75) : default-resolutions = 100,100,75,75 # N'utilise pas le mécanisme de traçage des erreurs du système : use-syslog = off # Utilise le fichier d'erreurs suivant à la place : error-file = /root/xfs.errorsLorsque vous aurez créé votre fichier de configuration, il ne vous restera plus qu'à tester si tout fonctionne bien. Il vous faut pour cela lancer le serveur de polices avec la ligne de commande suivante :
xfs -port 7100 -config /etc/xfs.conf &et essayer de lui demander la liste des polices qu'il peut fournir :fslsfonts -server localhost:7100Si cette dernière commande échoue, il se peut que le chemin indiqué pour les répertoires de polices dans le fichier /etc/xfs.conf ne soit pas correct, ou que le fichier fonts.dir n'existe pas ou ne soit pas correct dans un des répertoires de polices.
Si vous le désirez, vous pouvez faire en sorte que le serveur de polices soit démarré automatiquement au lancement de X. Vous pourrez pour cela créer un script de lancement du serveur de polices, que vous placerez dans le répertoire /etc/rc.d/ (ou le répertoire /sbin/init.d/, selon votre distribution) pour lancer et arrêter le serveur de police en suivant le mécanisme des niveaux d'exécution. Vous trouverez ci-dessous un exemple de script de lancement du serveur de police permettant d'utiliser le fichier de configuration précédent :
#!/bin/bash # # /etc/rc.d/xfs # # Fichier de lancement du serveur de polices. # PORT=7100 FILE=/etc/xfs.conf PRGM=/usr/X11/bin/xfs [ -f $PRGM ] || exit 0 # Analyse les paramètres : case "$1" in start) # Vérifie si xfs est déjà lancé : if [ -f /var/lock/subsys/xfs ]; then echo -n "Redémarrage du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi $PRGM -port $PORT -config $FILE & touch /var/lock/subsys/xfs ;; stop) if [ ! -f /var/lock/subsys/xfs ]; then echo -n "xfs n'est pas lancé" else echo -n "Arrêt du serveur de polices" killall -e -TERM $PRGM rm -f /var/lock/subsys/xfs fi ;; restart) echo -n "Relecture du fichier de configuration" if [ -f /var/lock/subsys/xfs ]; then killall -e -USR1 $PRGM fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0Comme X11 est démarré classiquement dans le niveau d'exécution 3 ou 4, vous devrez créer les liens symboliques vers ce fichier pour le lancement et l'arrêt du serveur de police dans le répertoire rc3.d/ ou rc4.d/. Attention, rappelez-vous que les noms de ces liens indiqueront le moment où le script sera appelé, aussi bien pour l'entrée que pour la sortie du niveau d'exécution. Vous devrez impérativement faire en sorte que ce script soit appelé avant que XWindow ne démarre si vous désirez utiliser le serveur de police dans les sessions X locales.
L'utilisation du serveur de polices est très simple. Il suffit d'y accéder comme à un répertoire de polices de caractères normal, en utilisant la syntaxe suivante :
tcp/serveur:portoù serveur est le serveur sur lequel le serveur de police à accéder est lancé, et port est le port que ce serveur écoute. Par exemple, pour ajouter les polices d'un serveur de polices locales à la liste des polices du serveur X, il suffit de taper la commande suivante : Vous pourrez alors vérifier que ces polices sont bien disponibles avec le programme xfontsel.Si vous le désirez, vous pouvez ajouter automatiquement les polices d'un serveur de polices en ajoutant la ligne suivante dans la section « Files » dans le fichier de configuration XF86Config du serveur :
Cette ligne permet d'indiquer au serveur X qu'il trouvera des polices de caractères au niveau du serveur de polices de la machine locale.
Précédent Sommaire Suivant Gestion de la sécurité sous XWindow Niveau supérieur Problèmes classiques rencontrés