在没有管理员权限的情况下在 RMarkdown 主体中使用 Google 字体

Using Google Fonts in RMarkdown main body without admin privileges

我想定义要在我的 RMarkdown PDF 文档中使用的字体。我想使用 Google 字体,比如 Roboto,但我没有直接安装它的管理员权限。尽管如此,我认为我可以绕过这些特权,因为我已经安装了许多带有自己字体的 R 包(例如,tint)。

通常,要为 markdown 文档设置自定义字体,我会在我的 YAML 中做这样的事情:

---
title: "Title"
output:
  pdf_document:
    latex_engine: xelatex
mainfont: Calibri
---

如果安装了字体,这会起作用,但是,正如我所说,我无法安装字体。我可以通过 showtext 包使用 Google 字体,如下面的示例所示,但这仅适用于数字:

---
title: "Title"
output:
  pdf_document
---

# Header One  

## Header Two
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

```{r fonts, message=FALSE}
library(showtext)
font_add_google("Lobster", "lobster")
```

```{r fig.showtext=TRUE, fig.align='center'}
plot(1, pch = 16, cex = 3)
text(1, 1.1, "A fancy dot", family = "lobster", col = "steelblue", cex = 3)
```

大家可以看到,我在我的图中使用了Lobster字体,很棒。我想扩展此示例,以便将 Lobster 字体用于文档的主体,但不需要直接安装。这可能吗?

正如@camille 上面提到的,tint 安装 TeX 包以使用字体。 (有一个相当广泛的字体包列表 here,包括 Google 字体,如 Roboto。)如果我想使用 Lobster 作为主字体 body,我可以在header这样,编织时自动下载安装:

---
title: "Title"
output:
  pdf_document
header-includes:
  - \usepackage{LobsterTwo}
---

# Header One  

## Header Two
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

不是一个完美的解决方案,因为它依赖于该字体的 TeX 包的存在,但仍然...