J'essaie de créer un graphique PostScript (encapsulé) avec des polices incorporées dans le fichier. Pour l'intégration, j'utilise le package extrafont
.embed_fonts() change la taille du papier sur postscript encapsulé (.eps, R)
Alors que le graphique créé par le périphérique postscript()
est complètement correct, embed_fonts()
semble changer le format de papier à quelque chose comme A4 ou Lettre. Pourquoi donc? Est-il possible de conserver le format de papier défini par le périphérique postscript()
?
Voici un exemple minimal:
library(extrafont)
postscript("test.eps", family="Times New Roman", width=4, height=4,
horizontal = FALSE, onefile=FALSE, paper = "special")
plot(1:10)
dev.off()
embed_fonts("test.eps")
L'exécution de cet exemple sans l'appel à embed_fonts()
résultats dans une figure avec des dimensions appropriées (à savoir, la sortie désirée). Voici une capture d'écran de mon lecteur de document:
Cependant, dès que embed_fonts()
est exécuté sur ce fichier, le format de papier est remplacée par un format de papier fixe:
Y a-t-il un moyen de contourner ceci? Les deux incorporant les polices et utilisant .eps est nécessaire. Je soupçonne qu'il peut avoir à faire avec les informations qui sont enregistrées dans le fichier Postscript lorsque paper="special"
(ou l'absence de celui-ci). Il semble que embed_fonts()
réinitialiserait cette information par lui-même.
Que le fichier soit vraiment .eps ou juste .ps, je ne sais pas. J'ai essentiellement suivi [ces instructions] (http://stackoverflow.com/questions/5142842/export-a-graph-to-eps-file-with-r). La fonction 'embed_fonts()' dans R est un wrapper pour Ghostscript. J'ai réussi à produire un .eps correctement dimensionné en appelant 'embed_fonts (" test.eps ", format =" eps2write ")', ce qui, je suppose, appelle une procédure différente dans Ghostscript. Pourquoi cela fonctionne, je n'en ai aucune idée. Ma visionneuse de document est Evince, et il me montre une taille de papier dans les propriétés du fichier qui correspond aux 4x4 pouces que j'ai spécifié dans R. – SimonG
Hmm, cela peut dépendre de la version de Ghostscript que vous utilisez. Les anciennes versions ont peut-être utilisé le périphérique epswrite, qui est obsolète et n'est plus livré. Je recommande fortement d'utiliser l'appareil eps2write de toute façon, il produit une sortie de qualité considérablement supérieure. On dirait que ça marche maintenant, donc bonne nouvelle :-) FWIW Je pense qu'Evince utilise Ghostscript pour afficher PostScript. – KenS