Polices Ghostscript pour Linux, Unix et MacOSX.

Merci à Craig Ringer et à Russell Lang, en charge de GSview.

Une des causes d'échec du rendu/importation/conversion d'un fichier est lorsque Ghostscript n'arrive pas à localiser les polices nécessaires pour afficher un EPS ou un PS. Il ne s'agit pas d'une lacune ou d'une défaillance de Ghostscript, puisque tous les interpréteurs EPS/PS ont besoin d'accéder à la liste correcte des polices listés dans le fichier PostScript. Ceci peut définitivement affecter les fichiers EPS/PS que vous essayez d'importer dans Scribus. Certaines applications n'incluent pas correctement les polices, elles doivent donc être fournies en externe.

Lorsque Ghostscript ne peut pas trouver une police, un message d'erreur de la console sera habituellement émis comme suit :

  gs -h
  AFPL Ghostscript 8.50 (2004-12-10)
  Copyright (C) 2004 artofcode LLC, Benicia, CA.  All rights reserved.
bla bla bla...

invalidfont
Current allocation mode is local
Last OS error: No such file or directory
et ainsi de suite...

L'erreur invalidfont signifie a) : Ghostscript ne peut pas trouver la police ou les polices; b) : Ghostscript ne peut trouveraucune police; c) : il y a une police corrompue ou mal formée sur votre système.

La solution :

Créer un fichier Fontmap

Il y a un secret dans la distribution source de GS,
$GS_SRC_DIR/toolbin/genfontmap.ps
Cette approche peut être utilisée pour générer un fichier Fontmap - les mêmes fichiers où vous voyez ces redoutables scripts PERL sur Internet. Ce fichier peut être livré ou non avec votre distribution; donc, dans notre exemple, nous mentionnons le répertoire source "non-tarré" pour construire une installation GS parallèle. Vous devriez utiliser le genfontmap.ps de la version de Ghostscript que vous utilisez. Les autres fichiers pourraient ne pas fonctionner correctement. Voilà une autre bonne raison d'obtenir une version récente de Ghostscript.
  
  $ gs -q -sFONTPATH=/usr/local/share/fonts/TrueType ${HOME}/build/ghostscript-8.31/toolbin/genfontmap.ps
  
  % This Fontmap generated by genfontmap.ps
  
  (AndaleMono)    (/usr/local/share/fonts/TrueType/AndaleMo.TTF) ;
  (Arial-Black)   (/usr/local/share/fonts/TrueType/AriBlk.TTF) ;
  (Arial-BoldItalicMT)    (/usr/local/share/fonts/TrueType/Arialbi.TTF) ;
  (Arial-BoldMT)  (/usr/local/share/fonts/TrueType/Arialbd.TTF) ;
  ... blah blah blah ...
  (Utopia-Regular)        (putr.pfa) ;
  (Verdana)       (/usr/local/share/fonts/TrueType/Verdana.TTF) ;
  (Verdana-Bold)  (/usr/local/share/fonts/TrueType/Verdanab.TTF) ;
  (Verdana-BoldItalic)    (/usr/local/share/fonts/TrueType/Verdanaz.TTF) ;
  (Verdana-Italic)        (/usr/local/share/fonts/TrueType/Verdanai.TTF) ;
  (Webdings)      (/usr/local/share/fonts/TrueType/Webdings.TTF) ;
  (ZapfChancery-MediumItalic)     /URWChanceryL-MediItal ;
  (ZapfDingbats)  /Dingbats ;
  
  genfontmap completed OK. 42 new fonts added.
  

Donc vous redirigez stdout ou copiez tout à partir de la ligne % This Fontmap... dans un éditeur de texte et sauvegardez le Fontmap, copiez le FontMap généré dans le répertoire font, puis ajoutez le répertoire à votre variable d'environnement GS_LIB :

Le chemin exact peut varier.

  $ gs -q -sFONTPATH=/usr/local/share/fonts/TrueType ${HOME}/build/ghostscript-8.50/toolbin/genfontmap.ps > /tmp/Fontmap
  $ sudo cp /tmp/Fontmap /usr/local/share/fonts/Truetype
  $ export GS_LIB=/usr/local/share/fonts/TrueType:$GS_LIB
  

Ensuite vous pouvez lancer Scribus à partir de la même console et GS trouvera les polices et importera les fichiers EPS/PS sans problèmes.

Alternativement, vous pouvez éditer votre lib/Fontmap GS à partir de la source ou ajouter les nouvelles entrées fontmap à votre lib/Fontmap principal.

Ajouter les polices TrueType supplémentaires de l'utilisateur

En dépit des efforts de la documentation de Ghostscript pour laisser entendre le contraire, les polices TrueType sont bien supportées dans Ghostscript et assez faciles à utiliser avec cet outil.

Encore mieux : la variable d'environnement GS_FONTPATH et l'argument -sFONTPATH peuvent spécifier des répertoires contenant toute police supportée, en sus des polices PostScript mentionnées dans la documentation.

$ export GS_FONTPATH=$MY_FONT_DIR:$HOME/.fonts
$ scribus

Polices Ghostscript et importation EPS

L'importation EPS dans Scribus est affectée par le chemin de police de Ghostscript. Si GS ne peut pas trouver les polices, elles seront substituées sans signal particulier. L'idée est de permettre à GS de trouver vos polices.

Il est recommandé de créer les fichiers Fontmap pour vos répertoires de polices, puis de les ajouter à la variable d'environnement GS_LIB, ce qui permettra à GS de charger les polices plus rapidement dans le futur. Les tests confirment qu'une fois que GS sait où trouver les polices, l'importation EPS dans Scribus choisit heureusement les polices parmi celles disponibles localement lorsqu'il y a une correspondance avec une police requise par l'EPS, mais qui n'est pas incluse.

Notez que dans tout ce qui précède, la création et la mise à jour de Fontmap.gs est habituellement fait automagicalement, en utilisant Kfontinstaller, comme mentionné ici : Installation des polices avec KDE