pdf设备和字体系列"Arial"/或:更改PDF格式的字体名称(不是字体)

jak*_*b-r 6 pdf fonts r typeface

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

或者我可以在PDF中替换此字体,创建一个具有我想要的字体的文件?

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

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

Jos*_*ien 5

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

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

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

有一个新系列“ArialMT”,用于 pdf() 和 postscript() 设备。只有能够访问 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")
Run Code Online (Sandbox Code Playgroud)


Rei*_*son 2

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

Arial <- Type1Font(family = "Arial",
                   metrics = c("ArialMT.afm",
                               "arial-BoldMT.afm", 
                               "Arial-ItalicMT.afm",
                               "Arial-BoldItalicMT.afm"))
Run Code Online (Sandbox Code Playgroud)

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

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

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

pdfFonts(Arial = Arial)
Run Code Online (Sandbox Code Playgroud)

Arial先前生成的对象在哪里Type1Font()

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

pdf("testArial.pdf", family = "Arial")
plot(1:10, 1:10)
dev.off()
Run Code Online (Sandbox Code Playgroud)

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

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

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