2016-06-03 3 views
0

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:

enter image description here

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:

enter image description here

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.

Répondre

0

Si vous publiez un fichier eample, je peux regarder et vous dire ce qui est différent, je ne peux pas vous dire quoi que ce soit au sujet de la contrôler de R

Pour EPS (par opposition au format PostScript), le programme ne doit pas demander une taille de support, bien qu'il puisse (en fait doit) contenir des commentaires qui décrivent la boîte de délimitation. Donc, soit le fichier n'est pas un fichier EPS, soit les commentaires le décrivent comme A4 ou «quelque chose». Vous n'avez pas expliqué ce que vous faites avec le programme PostScript qui présente une différence entre les deux ensembles. J'entends par là «quel est votre spectateur de document?

+0

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

+0

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