【问题标题】:embed_fonts() changes paper size on encapsulated postscript (.eps, R)embed_fonts() 更改封装后记 (.eps, R) 上的纸张大小
【发布时间】:2016-10-03 11:10:39
【问题描述】:

我正在尝试创建一个(封装的)Postscript 图形,其中嵌入了文件中的字体。对于嵌入,我使用extrafont 包。

虽然postscript() 设备创建的实际图形完全没有问题,但embed_fonts() 似乎将纸张尺寸更改为A4 或Letter 之类的东西。这是为什么?有没有办法保持postscript() 设备设置的纸张尺寸?

这是一个最小的例子:

library(extrafont)

postscript( "test.eps", family="Times New Roman", width=4, height=4,
            horizontal = FALSE, onefile=FALSE, paper = "special")

plot(1:10)

dev.off()
embed_fonts("test.eps")

运行此示例调用embed_fonts() 会生成具有适当尺寸的图形(即所需的输出)。这是我的文档查看器的屏幕截图:

但是,只要在此文件上运行embed_fonts(),纸张大小就会更改为固定的纸张大小:

有没有办法解决这个问题?嵌入字体和使用 .eps 都是必要的。我怀疑这可能与paper="special"(或缺少)时保存在 Postscript 文件中的信息有关。似乎embed_fonts() 会自行重置此信息。

【问题讨论】:

    标签: r graphics fonts postscript


    【解决方案1】:

    如果您发布一个示例文件,那么我可以查看并告诉您有什么不同,我无法告诉您有关从 R 控制它的任何信息

    对于 EPS(相对于 PostScript),程序不得请求媒体大小,尽管它可以(实际上必须)包含描述边界框的 cmets。

    因此,要么文件不是 EPS,要么 cmets 将其描述为 A4 或“某物”。你还没有解释你正在用 PostScript 程序做什么,它表现出两组之间的差异。我的意思是“你的文件查看器是什么?”

    【讨论】:

    • 该文件是真正的 .eps 还是只是 .ps,我无法判断。我基本上关注了these instructions。 R 中的 embed_fonts() 函数是 Ghostscript 的包装器。我设法通过调用embed_fonts("test.eps", format="eps2write") 生成了一个大小合适的.eps,我假设它在Ghostscript 中调用了一个不同的过程。为什么这有效,我不知道。我的文档查看器是 Evince,它在文件属性中显示了与我在 R 中指定的 4x4 英寸相匹配的纸张大小。
    • 嗯,这可能取决于您使用的 Ghostscript 版本。旧版本可能使用了 epswrite 设备,该设备已被弃用,现在不再提供。无论如何,我都非常推荐使用 eps2write 设备,它会产生相当高的质量输出。听起来你现在已经可以正常工作了,好消息 :-) FWIW 我认为 Evince 使用 Ghostscript 来显示 PostScript。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2017-08-28
    • 1970-01-01
    • 2015-04-10
    • 2018-04-20
    相关资源
    最近更新 更多