Ben*_*ker 20 pdf unicode graphics r
你们中的一些人可能已经看过我关于这个主题的博客文章,在我想要帮助一个朋友在图表上生成半满的圆圈之后我编写了以下代码:
TestUnicode <- function(start="25a0", end="25ff", ...)
{
nstart <- as.hexmode(start)
nend <- as.hexmode(end)
r <- nstart:nend
s <- ceiling(sqrt(length(r)))
par(pty="s")
plot(c(-1,(s)), c(-1,(s)), type="n", xlab="", ylab="",
xaxs="i", yaxs="i")
grid(s+1, s+1, lty=1)
for(i in seq(r)) {
try(points(i%%s, i%/%s, pch=-1*r[i],...))
}
}
TestUnicode(9500,9900)
Run Code Online (Sandbox Code Playgroud)
这是有效的(即产生一个几乎完整的酷dingbatty符号网格):
它没有不同程度(即产生部分或完全填充点或空矩形的网格),无论是静默还是警告:
例如,尝试所有可用的PDF字体系列:
flist <- c("AvantGarde", "Bookman","Courier", "Helvetica", "Helvetica-Narrow",
"NewCenturySchoolbook", "Palatino", "Times","URWGothic",
"URWBookman", "NimbusMon", "NimbusSan", "NimbusSanCond",
"CenturySch", "URWPalladio","NimbusRom")
for (f in flist) {
fn <- paste("utest_",f,".pdf",sep="")
pdf(fn,family=f)
TestUnicode()
title(main=f)
dev.off()
embedFonts(fn)
}
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上,这些文件都不包含这些符号.
让它在尽可能多的组合上工作会很好,但特别是在一些矢量格式和双重 - 特别是在PDF中.
任何有关使这项工作的字体/图形设备配置的建议都会受到欢迎.
我发现cairo_pdf设备完全不足:输出明显不同于pdf屏幕渲染,并且它的plotmath支持是粗略的.
但是,在OS X上有一个相当简单的解决方法:使用"普通" quartz设备并将其设置type为pdf:
quartz(type = 'pdf', file = 'output.pdf')
Run Code Online (Sandbox Code Playgroud)
不幸的是,在我的计算机上,这忽略了字体系列并始终使用Helvetica(尽管文档声称默认为Arial).
至少有两个其他问题:
pdf将连字符转换为迷信.这可能不一定总是你想要的,但正确排版负数非常有用.链接的线程描述了此方法.(我意识到OP简单地提到了Quartz设备,但这个线程经常被查看,我认为这个解决方案需要更加突出.)