制作pdf时如何在R中选择open SAN字体

制作pdf时如何在R中选择open SAN字体,r,pdf,R,Pdf,我想在R中创建一个pdf,并使在开放式SAN中写入的文本(例如,通过调用text()创建的文本)可供选择 通常,pdf格式的文本是可选的,例如 pdf(file="NiceLFile.pdf",width=8,height=8, pointsize=10) plot(x=c(0,1),y=c(0,1),type="n") text(x=0.5, y=0.5, adj=c(0.5,0.5), labels="lower case l text") dev.off() 但当我使用开放式SAN时,情

我想在R中创建一个pdf,并使在开放式SAN中写入的文本(例如,通过调用text()创建的文本)可供选择

通常,pdf格式的文本是可选的,例如

pdf(file="NiceLFile.pdf",width=8,height=8, pointsize=10)
plot(x=c(0,1),y=c(0,1),type="n")
text(x=0.5, y=0.5, adj=c(0.5,0.5), labels="lower case l text")
dev.off()
但当我使用开放式SAN时,情况并非如此

library(showtext)
dest2 <- file.path(tempdir(), "open-sans.light.ttf")
download.file("http://ff.static.1001fonts.net/o/p/open-sans.light.ttf", dest2, mode = "wb")
font.add("light", regular = dest2)
showtext.auto()
pdf(file="ChunkyLFile.pdf",width=8,height=8, pointsize=10)
plot(x=c(0,1),y=c(0,1),type="n")
text(x=0.5, y=0.5, adj=c(0.5,0.5), family="light", labels="lower case l text")
dev.off()
库(showtext)
dest2要在windows上执行此操作:

  • 必须在机器上安装开放式SAN,请参阅
  • extrafont然后可以将其安装到R中,请参见
  • 然后,正如alistaire所指出的,您可以调用pdf,并将fonts参数设置为要呈现为文本而不是法线向量图形的字体
  • 那你就可以了

    require(extrafont)
    pdf(file="SelectableFile.pdf",width=8,height=8, pointsize=10, fonts=c("Open Sans Light"))
    plot(x=c(0,1),y=c(0,1),type="n")
    text(x=0.5, y=0.5, adj=c(0.5,0.5), family="Open Sans Light", labels="lower case l text")
    dev.off()
    
    您可能还需要在pdf中嵌入字体

    embed_fonts(file="SelectableFile.pdf",outfile ="SelectableFile.pdf")
    

    这种行为取决于操作系统和屏幕分辨率,但与R无关。无论如何显示,底层PDF都是相同的。知道如何使R以文本形式导出PDF是一个合理的问题。Adobe员工的观点是,文本应该以文本的形式存在于pdf中,这是有一定逻辑的。默认情况下,R已经使文本可选择。你的问题似乎是关于pdf是如何显示的。你能选择上面代码生成的pdf中的文本吗?我不能。你的评论实际上很有帮助。问题似乎在于我对开放式SAN的使用。Adobe Reader不会导致文本出现这些问题。因此,问题似乎是关于如何在pdf文件中选择开放式SAN。