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

时间:2016-07-26 17:25:25

标签: r fonts embed eps

我正在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()的返回中列出时很奇怪。我有什么想法让R使用这个字体?

1 个答案:

答案 0 :(得分:2)

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

问题在于某些字体(包括Linux Libertine)具有不同的字体名称(Linux Libertine Bold,Linux Libertine Italics等),但它们都具有相同的系列名称(Linux Libertine)。 extrafont包无法区分这些字体,因为它只查看姓氏(在上面的示例中,Linux Libertine Display可以使用,因为这是一个独特的系列名称)。

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