首页 > 解决方案 > 在 macos 上的 R 图中使用 texlive 字体

问题描述

有人可以指点我一份解释如何使 texlive 字体可用于 R 绘图的文档吗?

我曾经有这个工作,但它不再工作。这是我尝试使 texlive 2018 bera 字体可用于 R:

$ R --no-init-file
> options(texlive= "~/Documents/texlive/2018/")
> options(texfonts= paste0(getOption("texlive"), "/texmf-dist/fonts/"))
>
> pdfFonts(Bera = Type1Font("Bera", paste0(getOption("texfonts"), "afm/public/bera/", c("fvsr8a","fvsb8a","fvsro8a","fvsbo8a"), ".afm")))
> options(pfbdir = c(paste0(getOption("texfonts"), "type1/public/bera/")))
> pdfFonts("Bera")
$Bera
$family
[1] "Bera"

$metrics
[1] "~/Documents/texlive/2018//texmf-dist/fonts/afm/public/bera/fvsr8a.afm"
[2] "~/Documents/texlive/2018//texmf-dist/fonts/afm/public/bera/fvsb8a.afm"
[3] "~/Documents/texlive/2018//texmf-dist/fonts/afm/public/bera/fvsro8a.afm"
[4] "~/Documents/texlive/2018//texmf-dist/fonts/afm/public/bera/fvsbo8a.afm"
[5] "Symbol.afm"

$encoding
[1] "default"

attr(,"class")
[1] "Type1Font"

> pdf(file="test.pdf")
> plot( 1 )
> dev.off()
null device
          1

$ pdffonts test.pdf  ## from brew poppler
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ZapfDingbats                         Type 1            ZapfDingbats     no  no  no      10  0
Helvetica                            Type 1            Custom           no  no  no      11  0
$ ls ~/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fv*
/Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fveb8a.afm   /Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvmro8a.afm
/Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fver8a.afm   /Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvsb8a.afm
/Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvmb8a.afm   /Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvsbo8a.afm
/Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvmbo8a.afm  /Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvsr8a.afm
/Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvmr8a.afm   /Users/ivo/Documents/texlive/2018/texmf-dist/fonts/afm/public/bera/fvsro8a.afm
$ ls ~/Documents/texlive/2018/texmf-dist/fonts/type1/public/bera/
fveb8a.pfb  fver8a.pfb  fvmb8a.pfb  fvmbo8a.pfb  fvmr8a.pfb  fvmro8a.pfb  fvsb8a.pfb  fvsbo8a.pfb  fvsr8a.pfb  fvsro8a.pfb

也许pfb字体也需要安装在macos本身上,以前很简单(需要双击字体名称,但最新的macos似乎不再这样了。还是其他什么问题?

更新:我还尝试了 showtext 包(需要安装 XQuartz)。结果相同:

n <- "~/Documents/texlive/2018//texmf-dist/fonts/type1/public/bera/"
library( showtext )
font_add("Bera", paste0(n,"fvsr8a.pfb"), bold=paste0(n,"fvsb8a.pfb"),italic=paste0(n,"fvsro8a.pfb"),bolditalic=paste0(n,"fvsbo8a.pfb"))
showtext_auto()
pdf(file="t.pdf")
showtext_auto()
plot(1:20)
dev.off()

结果相同---我的 texlive bera (pfb) 字体对 pdffonts 不可见。

指向分步文档(如何和诊断问题)的指针会很棒。请帮忙。

标签: rplotfontstex-live

解决方案


我终于让它工作了。脚步:

[1] 安装 Bitstream Vera Sans 字体 (=Bera)。见https://tex.stackexchange.com/questions/457922/making-texlive-bera-font-accessible-on-macos-r-etc

brew tap homebrew/cask-fonts
brew install --cask font-bitstream-vera  # after 2021

要搜索字体,请使用brew search font-.

[2] 按照https://cran.r-project.org/web/packages/extrafont/README.html中的说明进行操作

install.packages('extrafont')
library(extrafont)
font_import()
loadfonts()

[3] 使用它们

> pdf("test.pdf", family="Bitstream Vera Serif")
> plot(1:10)
> dev.off()

[4] 检查 test.pdf 文件是否使用字体(必须安装 poppler):

pdffonts test.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ZapfDingbats                         Type 1            ZapfDingbats     no  no  no      10  0
BitstreamVeraSerif-Roman             Type 1            Custom           no  no  no      11  0

推荐阅读