• R语言
  • R输出的含中文字体的pdf编辑有BUG

用R绘制的含有中文字体或者其他符号的pdf文件,用Illustrator编辑的时候,illustrator不识别中文字体。

例如:

pdf("pentagram.pdf");

plot(3,3,type="n");

points(3,3,pch="☆",family="GB1",cex=2,col="blue");

dev.off()

用AI (adobe illustrator)打开后,五角星的符号是乱码。

如果尝试用library(Cairo)去做,CairoPDF("pentagram.pdf")生成的PDF文件里面,连坐标轴上的字体都不能识别了。

我用的R版本是2.15.1

这到底是R的问题还是illustrator的问题呢?

楼主,测试了一下你的代码,可以正常

Adobe Reader打开也不会乱码,一个五角星符号在图形中间。

回复 第2楼 的 ywh19860616:对的,reader打开不会乱码的,可是用adobe illustrator编辑的时候会出现乱码。

嗯,是个有意思的问题。虽然不懂但是也随机猜测下。

五角星 ☆ 这个符号即使在字体中有,也应该不是在正常的区段。而 R 中 grDevices 的 PDF 字体是非嵌入的,可能是 AI 自己映射了某种字体到上面,如果字体映射得不对,相同的位置存在的东西不同,显示可能就不对了。

检查一下 AI 中映射的字体,以及系统中有没有 PDF 属性中显示的对应字体。

回复 第1楼 的 yangxianwei:

library(Cairo)<br />
CairoPDF("pentagram.pdf");<br />
par(family = "simsun")<br />
plot(3, 3, type = "n", main = "五角星");<br />
points(3, 3, pch = "☆", cex = 2, col = "blue");<br />
dev.off()<br />
</p>

你再编辑下试试。

4 天 后

回复 第5楼 的 Ihavenothing:

你好,用包Cairo试过了,结果在AI里面打开时连坐标轴的字体都不能正常显示了。

我觉得可能是AI的问题。

谢谢你的热心回复!

回复 第6楼 的 yangxianwei:

刚试了一下,确实是AI的问题。你可以试一下开源的inkscape,是可以编辑的。