Ich versuche eine (gekapselte) Postscript-Grafik mit in die Datei eingebetteten Schriften zu erstellen. Zum Einbetten verwende ich das extrafont
Paket.embed_fonts() ändert die Papiergröße auf gekapseltem Postscript (.eps, R)
Während die eigentliche Grafik, die von der postscript()
Gerät erstellt wird, völlig in Ordnung ist, scheint embed_fonts()
die Papiergröße zu etwas wie A4 oder Letter zu ändern. Warum das? Gibt es eine Möglichkeit, die Papiergröße des Geräts postscript()
beizubehalten?
Hier ist ein minimal Beispiel:
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")
Ausführen dieses Beispiels ohne den Anruf zu embed_fonts()
führt zu einer Figur mit geeigneten Abmessungen (d.h. die gewünschte Ausgabe). Hier ist ein Screenshot von meinem Dokument-Viewer:
jedoch sobald embed_fonts()
auf diese Datei ausführen, wird die Papiergröße auf eine feste Papierformat geändert:
Gibt es einen Weg dahin? Das Einbetten der Schriftarten und das Verwenden von .eps ist erforderlich. Ich vermute, dass es möglicherweise mit den Informationen zu tun hat, die in der Postscript-Datei gespeichert sind, wenn paper="special"
(oder das Fehlen davon). Es scheint so, als würde embed_fonts()
diese Information selbst zurücksetzen.
Ob die Datei wirklich .eps oder nur .ps ist, kann ich nicht sagen. Ich habe im Wesentlichen [diese Anweisungen] (http://stackoverflow.com/questions/5142842/export-a-graph-to-emp-file-with-r) gefolgt. Die Funktion 'embed_fonts()' in R ist ein Wrapper für Ghostscript. Ich habe es geschafft, ein richtig großes .eps durch Aufruf von 'embed_fonts (" test.eps ", format =" eps2write ") zu erzeugen, was vermutlich eine andere Prozedur in Ghostscript aufruft. Warum das funktioniert, habe ich keine Ahnung. Mein Dokumentenbetrachter ist Evince und zeigt mir eine Papiergröße in den Dateieigenschaften an, die den in R. angegebenen 4 x 4 Zoll entspricht. – SimonG
Hmm, es hängt vielleicht von der Version von Ghostscript ab, die Sie verwenden. Ältere Versionen haben möglicherweise das Gerät epswrite verwendet, das veraltet ist und jetzt nicht mehr ausgeliefert wird. Ich würde das ems2write Gerät trotzdem sehr empfehlen, da es eine wesentlich höhere Ausgabequalität liefert. Klingt so, als hättest du es sowieso schon gemacht, also gute Neuigkeiten :-) FWIW Ich denke, Evince benutzt Ghostscript um PostScript anzuzeigen. – KenS