我正在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使用这个字体?
答案 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重建字体表。