我之前通过使用 sysfonts 和 showtext 解决了类似的问题。看看这是否适合您的用例:
library(ggplot2)
#install.packages("sysfonts")
library(sysfonts)
#install.packages("showtext")
library(showtext)
font_add(family = "charter", regular = "/System/Library/Fonts/Supplemental/charter.ttc")
showtext_auto()
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
ggtitle("Charter ttc Example") +
theme(text = element_text(family = "charter", size = 20),
axis.text = element_blank())
编辑 1
pdf 设备对您可以使用的字体有限制:我相信它必须是“PostScript 字体数据库”字体之一(请参阅https://www.rdocumentation.org/packages/grDevices/versions/3.6.2/topics/postscript)。
要使用石英设备,您可以使用par()更改字体,例如
TestChars <- function(...)
{
info = l10n_info()
r <- c(32:126, 160:254)
par(pty = "s")
plot(c(-1,10), c(20,260), type = "n", xlab = "", ylab = "", xaxs = "i", yaxs = "i")
grid(11, 24, lty = 1)
mtext(paste("MBCS:", info$MBCS, " UTF8:", info$`UTF-8`, " Latin:", info$`Latin-1`))
mtext(paste(LETTERS, collapse=" "), side = 3, padj = -2)
mtext(paste(letters, collapse=" "), side = 3, padj = -4)
for(i in r) try(points(i%%10, 10*i%/%10, pch = i, font = 5,...))
}
par(family="Charter")
TestChars()
cairo_pdf 设备可以使用其他字体,但它显示为粗体(不知道为什么;请参阅 https://stackoverflow.com/a/38545416/12957340),并且 Charter 字体中的许多特殊字符似乎不兼容,例如
cairo_pdf(file="test.pdf")
par(family="Charter")
TestChars()
dev.off()