【问题标题】:corrupted UTF characters in pdf plots generated by RR生成的pdf图中损坏的UTF字符
【发布时间】:2017-11-16 18:11:33
【问题描述】:

我正在尝试将包含男性和女性 UTF 字符的图例保存为 R 中的 pdf。当我绘制到图形设备时:

plot(1)
legend('topright', bty = 'n', 
       expression(italic("legend"~"\u2640"~"\u2642")))

剧情的传说和预期的一样

我什至可以通过右键单击“保存为 pdf”将其保存为 pdf。但是,当我使用内置函数pdf

pdf('test.pdf')
plot(1)
legend('topright', bty = 'n',
       expression(italic("legend"~"\u2640"~"\u2642")))
dev.off()

它会发出警告并显示损坏的字符:

cairo_pdf 不会发出警告,但也不会显示正确的符号:

根据this post,我应该指定支持我的符号的编码,但是我不知道如何找出它的作用(除了默认的Helvetica,我试过MacRoman但没有成功)。

很明显,R 可以生成包含这些符号的 pdf(因为我可以通过右键单击来生成)。但是,我想以自动化的方式实现。

我的 R 会话设置:

R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.5 (El Capitan)

locale:
[1] en_US.UTF-8/C/en_US.UTF-8/C/en_US.UTF-8/C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

我还设法在另一台装有 macOS Sierra 10.12.1 的计算机上重现了相同的行为。

【问题讨论】:

  • 我之所以犹豫要不要删除这个问题,是因为我花了 4 个小时才找到有问题的正确答案,而接受的答案对我不起作用。也许拥有它会简化对其他人的搜索,我将这个决定留给社区。​​span>

标签: r pdf utf


【解决方案1】:

我遇到了同样的问题,其他解决方案对我不起作用,最后我用 png 代替了 pdf:

png('test.png', units="in", width=11, height=10, res = 600)
plot(1)
legend('topright', bty = 'n',
       expression(italic("legend"~"\u2640"~"\u2642")))
dev.off()

【讨论】:

    【解决方案2】:

    OS X 上的有效答案是使用quartz

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

    来源:https://stackoverflow.com/a/19610909/2962344

    cairo_pdf 似乎可以在 Linux 上运行。

    【讨论】:

    • 您尝试过来自Cairo 库的CairoPDF 吗?和cairo_pdf()函数不一样。
    【解决方案3】:

    嗨,这对我有用(在 Windows 上)

    cairo_pdf('test.pdf' , family="DejaVu Sans")
    plot(1)
    legend('topright', bty = 'n',
      paste("legend",quote("\u2640")  ,quote("\u2642")  )) 
    dev.off()
    

    Unicode Characters in ggplot2 PDF Output

    在 mac 上试试这个

    pdf('test.pdf',encoding="MacRoman")
    

    Plotting symbols fails in PDF

    【讨论】:

    • cairo_pdf('test.pdf' , family="DejaVu Sans")pdf('test.pdf',encoding="MacRoman") 都不起作用。它产生与没有编码规范的输出完全相同的输出。
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2011-09-16
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    相关资源
    最近更新 更多