2014-12-18 17 views
17

Używam następujący przewodnik eksport działek wykonanych z ggplot do PDF: plot fonts guideggplot osadzone czcionki w pdf

podnosi kwestię u dołu stanowisko niektóre czcionki nie pojawiają się tak, jak powinny, co się dzieje w moim przykładzie poniżej. Tekst w czcionce Bauhaus 93 pojawia się poprawnie, a tekst w Calibri jest wyświetlany niepoprawnie.

Czy ktoś znalazł sposób na rozwiązanie tego problemu?

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

Początkowo miałem ten sam błąd, ale teraz nie mogę odtworzyć go! Jak wygląda wyjście 'fonttrable()'? – Nicholas

+0

Wyjście folowing podano dla rodziny Calibri '65 Calibri Calibri FAŁSZ false NA 66 Calibri Calibri-Bold PRAWDA false NA 67 Calibri Calibri-BoldItalic TAK TAK FAŁSZ NA 68 Calibri Calibri kursywą FAŁSZ PRAWDA FAŁSZ NA 69 Calibri Light Calibri-Light FAŁSZY FAŁSZY FALSE NA 70 Calibri Light Calibri-LightItalic FAŁSZYWY PRAWDA FAŁSZ NA' – user2568648

+1

OK, udało mi się odtworzyć problem w systemie Windows: powoduje on załadowanie ostrzeżeń o "nieznanej szerokości czcionki" i wszystkich Znaki Calibri są pomieszane jeden na drugim. Istnieje wiele powiązanych problemów extrafont tutaj: https://github.com/wch/extrafont/issues Oprócz użycia innej czcionki, nie wiem, co zasugerować! – Nicholas

Odpowiedz

23

spróbuj dodać device=cairo_pdf na wezwanie ggsave(). To pojawia się, aby rozwiązać problem dla mnie. W ten sposób nie jest już konieczne używanie embed_fonts().

Zobacz mgaudet „s komentarz tutaj: https://github.com/wch/extrafont/issues/8

+0

Idealnie! To rozwiązuje to. – user2568648

+2

Odkryłem również, że użycie 'device = cairo_pdf' osadza czcionkę, ale powoduje to gorsze kerning - czy ktoś wie o lepszym rozwiązaniu? – user1092247

+0

@ user1092247 Być może żądana czcionka nie obsługuje kerningu. Pamiętaj, że kerning jest wykonywany przez projektanta czcionek, chociaż niektóre systemy ignorują to. – Hugh

Powiązane problemy