为了账号安全,请及时绑定邮箱和手机立即绑定

在跨设备和平台(尤其是PDF)的R图形中使用Unicode“类似于dingbat的”字形

在跨设备和平台(尤其是PDF)的R图形中使用Unicode“类似于dingbat的”字形

幕布斯6054654 2019-12-03 16:27:30
你们中的有些人可能已经看过我关于这个主题的博客文章,在这里我希望帮助朋友产生半填充圆作为图形上的点,从而编写了以下代码: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) 这是可行的(即产生一个几乎完整的凉爽的符号符号网格):在X11或PNG设备上的Ubuntu 10.04上在安装了pango-devel的Mandriva Linux发行版上,具有本地R的相同设备它在不同程度上(无声地或警告中)无法不同程度地生成(即生成部分或全部填充有点或空矩形的网格):使用PDF或PostScript在同一台Ubuntu 10.04计算机上运行(尝试将font =“ NimbusSan”设置为使用URW字体无济于事)在MacOS X.6上(石英,X11,开罗,PDF)例如,尝试所有可用的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)}在Ubuntu上,这些文件都不包含符号。使它能够处理尽可能多的组合会很好,但是尤其是在某些矢量格式中,尤其是在PDF中更是如此。任何有关字体/图形设备配置的建议都将受到欢迎。
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

我发现该cairo_pdf设备完全不够用:输出pdf与屏幕渲染都明显不同,并且对绘图的支持是粗略的。


但是,在OS X上有一个非常简单的解决方法:使用“普通” quartz设备并将其设置type为pdf:


quartz(type = 'pdf', file = 'output.pdf')

不幸的是,在我的计算机上,它忽略了字体系列,并始终使用Helvetica(尽管文档声称默认值为Arial)。


至少还有两个陷阱:


pdf将连字符转换为负号。这可能甚至不总是您想要的,但是正确排版负数非常有用。链接的线程描述了解决方法。

当然,它是特定于平台的,并且只能在OS X上运行。

(我意识到OP简短地提到了Quartz设备,但是经常查看此线程,并且我认为此解决方案需要更加突出。)


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信