6

我在 R 中的字体和 PDF 输出有问题。在这台 Windows 机器上没有Helvetica并且设备使用的字体似乎是Arial,如下所示。一个简单的问题是,使用了 Arial(如我所愿),但编辑了它说使用Helvetica的 PDF 文件。如何让 R 将正确的名称写入 PDF 文件。pdf(...,family="Arial")不起作用,因为这个系列是未知的(grDevices 版本 2.15.1)。

或者我可以在 PDF 中替换这个字体,然后用我想要的字体创建一个文件吗?

R-PDF-输出 R 输出:Arial 字体

与本文的比较:Arial 与 Helvetica 在此处输入图像描述

4

4 回答 4

3

从 R-3.1.0 开始,这要简单得多。现在,要获得 Arial 字体,只需设置family="ArialMT"

pdf("Arial.pdf", height=0.3, width=1.45, family="ArialMT")
grid::grid.text("CGJQRSafrst1237")
dev.off()

引用 2014 年 4 月的R-3.1.0 发行说明

pdf() 和 postscript() 设备有一个新系列“ArialMT”。这只会在可以访问 Monotype TrueType 字体(期刊有时要求)的查看器上正确呈现。

为确保无论在何处查看 pdf 都能正确呈现,您还需要在文档中嵌入所需的 Arial 字体。这是一种简单的方法:

library(extrafont)
loadfonts()  ## Really only needed the first time you use extrafont
## Modify this to point to the corresponding Ghostscript executable on your own machine
Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.07/bin/gswin64c.exe")
embed_fonts("Arial.pdf")
于 2016-03-24T16:10:29.537 回答
2

正如评论之一所述,不需要嵌入 base 14 字体,Helvetica 是其中一种字体。PDF 消费者应该为此类字体提供替代品,而 Arial(或 Arial MT)通常用于Helvetica 的地方。

我对 R 不熟悉,但之后您似乎可以嵌入字体

编辑:这个问题的答案 解释了如何在之后使用 ghostscript 嵌入字体,只要确保 GS 将 Helvetica(或 Arial)映射到您想要的字体版本即可。感谢 Gavin Simpson 让我搜索那个 :)

于 2012-10-24T13:50:15.713 回答
2

您需要设置一个新的字体系列以用于pdf(). 这要求您拥有*.afm要使用的字体的 Adob​​e Font Metric 文件(文件)。如果您还没有 Arial文件,您可以将.tty文件转换为这些文件.afm或在互联网上查找Arial 文件。.afm

Arial <- Type1Font(family = "Arial",
                   metrics = c("ArialMT.afm",
                               "arial-BoldMT.afm", 
                               "Arial-ItalicMT.afm",
                               "Arial-BoldItalicMT.afm"))

其中字符向量metrics包含相关.afm文件的路径,文件应按以下顺序指定:

  1. 素颜
  2. 黑体
  3. 斜体脸
  4. 粗斜体脸

您使用该pdfFonts()函数将映射添加到这些新字体

pdfFonts(Arial = Arial)

Arial之前产生的对象在哪里Type1Font()

最后一步是使用family参数,pdf()其中引用由 定义的现有系列之一pdfFonts()

pdf("testArial.pdf", family = "Arial")
plot(1:10, 1:10)
dev.off()

我没有尝试过这个,因为我的系统上没有 Arial,也没有太多.afm文件,但我从几个来源拼凑起来:

  1. Paul Murrell 和 Brian Ripley (2006) PostScript 和 PDF 图形中的非标准字体。R 新闻6(2):41-47。 PDF格式
  2. 今年早些时候,David L. Carlson 在 R 邮件列表上发表了一篇文章。

取决于您的系统设置方式的另一种选择是基于 Cairo 的 PDF 设备,因为它将使用您系统的功能来识别和加载仅基于字体名称的字体。有关详细信息,请参见?cairo_pdf然后的Cairo 字体部分?X11

于 2012-10-24T12:18:05.283 回答
1

R 默认情况下不嵌入字体。它只是指定要使用 Helvetica。你可能最好嵌入字体。有两种方法可以做到这一点,要么使用cairo_pdf设备,要么使用extrafont通常设备的包装pdfcairo_pdf简单得多,但输出与pdf.

于 2012-10-24T12:28:18.697 回答