2016-07-26 55 views
1

Ich baue eine Karte in R, die ich möchte, dass der Text in Linux Libertine Schriftart angezeigt werden soll. Paket extrafont ist geladen, Schriftarten wurden geladen und der Pfad zu Ghostscript ist korrekt eingestellt.R: mit libertine Schrift in eps - Fehlermeldung

Wenn ich den folgenden Befehl verwende, speichert R die Ausgabe und alles funktioniert gut.

ggsave(file = foo.eps, plot = map, width = 15, height = 10, units = "cm", family='Linux Libertine Display') 

Allerdings, wenn ich stattdessen family='Linux Libertine' verwenden, erhalte ich folgende Fehlermeldung:

Error in grDevices::postscript(..., onefile = FALSE, horizontal = FALSE, : 
    unknown family 'Linux Libertine' 

Es scheint, dass es nicht die Schrift finden kann, was seltsam ist, wie es in der Rückkehr von aufgeführt wird fonttable(). Irgendwelche Ideen, wie ich R dazu bringen kann, die Schrift zu benutzen?

+1

Ich arbeite an das Laden der Schriftarten aus dem Paket, aber ich habe dieses [Paket Problem auf GitHub, die Ihr Problem abdecken kann] (https://github.com/wch/extrafont/issues/26) gefunden. Siehe den letzten Kommentar. – TomNash

Antwort

2

Die link bereitgestellt durch Benutzer TomNash in der Tat das Problem und die Lösung nicht erklären:

Das Problem ist, dass einige Schriftarten (und dazu gehört auch Linux Libertine) unterschiedlichen Schriftart-Namen (Linux Libertine Bold, Linux Libertine Kursiv haben, usw.), aber alle haben den gleichen Familiennamen (Linux Libertine). Das extrafont-Paket kann nicht zwischen diesen Zeichensätzen unterscheiden, da es nur den Familiennamen betrachtet (und im obigen Beispiel funktioniert Linux Libertine Display, weil dies ein eindeutiger Familienname ist).

Der einfachste Weg, dies zu beheben, ist das Verzeichnis der Schriftart-Tabelle zu finden: system.file("fontmap", "fonttable.csv", package="extrafontdb") und dann die fonttable.csv öffnen und für alle Linux Libertine Schriftarten (Fonts oder was auch immer diese Bedenken) der Schriftname in der Schriftenfamilie Zelle kopieren. Kehren Sie dann zu R zurück und führen Sie erneut loadfonts() aus, um sicherzustellen, dass R die Schriftartentabelle neu erstellt.

+1

Und Linux Libertine ist richtig, der Punkt des Familiennamens ist, dass es das gleiche für die gesamte Schriftfamilie ist. Mit Ausnahme von alten Schriftarten oder Schriftarten, die für die Umgehung älterer Software entwickelt wurden, werden Sie keine eindeutigen Familiennamen finden. – nim