R:在 eps 中使用 libertine 字体 - 错误消息

R: using libertine font in eps - error message

我正在用 R 构建地图,我希望文本以 Linux Libertine 字体显示。包 extrafont 已加载,字体已加载且 ghostscript 路径已正确设置。

当我使用以下命令时,R 会保存输出并且一切正常。

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

然而,当我改为使用 family='Linux Libertine' 时,我收到以下错误消息:

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

好像找不到字体,奇怪的是它列在fonttable()的return中。有什么想法可以让 R 使用该字体吗?

用户TomNash提供的link确实说明了问题和解决方案:

问题是某些字体(包括 Linux Libertine)具有不同的字体名称(Linux Libertine Bold、Linux Libertine Italics 等)但都共享相同的姓氏(Linux 浪荡子)。 extrafont 包无法区分这些字体,因为它只查看姓氏(在上面的示例中 Linux Libertine Display 有效,因为这是一个唯一的姓氏)。

解决此问题的最简单方法是找到字体 table 的目录:system.file("fontmap", "fonttable.csv", package="extrafontdb") 然后打开 fonttable.csv 并复制所有 Linux Libertine 字体(或这涉及的任何字体)将字体名称放入字体系列单元格中。然后 return 到 R 并再次执行 loadfonts() 以确保 R 重建字体 table。