2014-12-18 13 views
17

Ich habe die folgende Anleitung wurde mit Parzellen mit ggplot zu pdf gemacht exportieren: plot fonts guideggplot eingebettete Schriften in PDF-

Es stellt sich die Frage am Ende des Postens einige Schriften nicht, wie sie erscheinen sollte, was passiert, in meinem Beispiel unten. Der Text in der Schriftart Bauhaus 93 wird korrekt angezeigt, während der Text in Calibri falsch angezeigt wird.

Hat jemand einen Weg gefunden, dieses Problem zu lösen?

library(ggplot2) 
library(plyr) 
library(grid) 
library(gridExtra) 
library(extrafont) 

data1<-as.data.frame(1:5) 
data1[,2]<-as.data.frame(c(1,3,5,7,9)) 
data1[,3]<-as.data.frame(c(2,4,6,8,10)) 
colnames(data1)<-c("x","y1","y2") 

ggplot(data1, aes(x=x)) + 
    geom_line(aes(y = y1, colour = "Taux selon DEF"), size=0.61, colour="black") + 
    geom_line(aes(y = y2, colour = "Taux selon EC"), size=0.61, colour="black", linetype="dashed") + 
    xlab("X axis lab") + ylab("Y axis lab)") + 
    annotate("text", x=1, y=4, label="Some text here", size=2, family="Bauhaus 93") + 
    annotate("text", x=4, y=1, label="More text here", size=2, family="Calibri") + 
    theme_bw() + theme(legend.title = element_blank(), 
        legend.key = element_rect(fill=NA), 
        panel.border = element_blank(), 
        axis.line = element_line(colour="black", size=0.25), 
        axis.ticks = element_line(size=0.25), 
        panel.grid.major = element_line(colour = "grey80", size=0.25), 
        panel.grid.minor = element_line(colour = "grey80", size=0.25), 
        axis.text.x = element_text(size=5.5 , lineheight=0.9, hjust=0.5, family="Bauhaus 93"), 
        axis.text.y = element_text(size=5.5 , lineheight=0.9, vjust=0.5, family="Calibri"), 
        axis.title.y = element_text(size=6.1, angle=0, vjust=0.975, face="bold", family="Calibri"), 
        axis.title.x = element_text(size=6.1, angle=0, vjust=-0.20, face="bold", family="Calibri")) + 
    scale_x_continuous(expand = c(0, 0), limits=c(0,5)) + 
    scale_y_continuous(expand = c(0, 0), limits=c(0,10)) + 
    ggtitle("Title") + 
    ggsave("Test.pdf", width=7, height=5) 
Sys.setenv(R_GSCMD = "C:/Program Files (x86)/PDF24/gs/bin/gswin32.exe") 
embed_fonts("Test.pdf") 
+0

Anfangs hatte ich den gleichen Fehler, aber jetzt kann ich es nicht reproduzieren! Wie sieht die Ausgabe von 'fonttable()' aus? – Nicholas

+0

Die Folowing Ausgang für die calibri Familie gegeben wird '65 Calibri Calibri FALSE FALSE FALSE NA 66 Calibri Calibri-Bold TRUE FALSE FALSE NA 67 Calibri Calibri-BoldItalic TRUE TRUE FALSE NA 68 Calibri Calibri-Kursiv FALSE TRUE FALSE NA 69 Calibri Light Calibri-Light FALSCH FALSE FALSE NA 70 Calibri Light Calibri-LightItalic FALSCH WAHR FALSCH NA' – user2568648

+1

OK, ich habe das Problem unter Windows reproduzieren können: es erzeugt eine Ladung von "font width unknown" Warnungen und alle Calibri-Charaktere sind durcheinander. Es gibt eine Reihe von verwandten Extrafont-Problemen hier: https://github.com/wch/extrafont/issues Abgesehen von der Verwendung einer anderen Schriftart, weiß ich nicht, was ich vorschlagen soll! – Nicholas

Antwort

23

Try device=cairo_pdf zum ggsave() Gespräch hinzugefügt. Diese erscheint, um das Problem für mich zu lösen. Auf diese Weise ist es nicht mehr notwendig, embed_fonts() zu verwenden.

Siehe mgaudet ‚s Kommentar hier ein: https://github.com/wch/extrafont/issues/8

+0

Perfekt! Dies löst es. – user2568648

+2

Ich fand auch, dass die Verwendung von 'device = cairo_pdf' die Schriftart einbettet, aber dies führt zu einem schlechteren Kerning - wer kennt eine bessere Lösung? – user1092247

+0

@ user1092247 Möglicherweise hat die von Ihnen angeforderte Schriftart keine Kerning-Unterstützung. Denken Sie daran, dass Kerning vom Font-Designer ausgeführt wird, obwohl einige Systeme dies ignorieren. – Hugh

Verwandte Themen