ggplot自定义字体在Quarto中无法工作

4
当我使用自定义字体渲染ggplot时,它在IDE中可以工作,但是在Quarto和RMarkdown中,我一直收到这个错误:
Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  : 
  invalid font type
Calls: .main ... drawDetails -> drawDetails.text -> grid.Call.graphics

这些字体都已经安装在我的系统上,但是Quarto或RMakrdown并没有识别出来。
例如,这是我的脚本:

---
title: "TEST"
format: pdf
editor: visual
---

This plot works:
```{r echo=FALSE, message=FALSE, warning=FALSE}
library(tidyverse)

mtcars |>
  count (cyl) |>  
  ggplot (aes (x = cyl, y = n)) + 
  geom_col() + 
  labs (title = "Plot 1") + 
  geom_text (aes (label = n), 
             vjust = -1)
```

This plot does not:

 ```{r echo=FALSE, message=FALSE, warning=FALSE}
mtcars |>
  count (cyl) |>  
  ggplot (aes (x = cyl, y = n)) + 
  geom_col() + 
  labs (title = "Plot 2") + 
  geom_text (aes (label = n), 
             vjust = -1,
             family = "Montserrat") + 
  theme (text = element_text(size = 12,  family = "Montserrat"))
```

2
通常情况下,您需要另一个库,例如showtextextrafont来显示自定义字体。您可能是在IDE中运行该代码而不是在Rmarkdown文档中运行? - MrFlick
它会源代码调用字体脚本。 - GregRousell
我在你提供的示例中没有看到 source(),因此问题并不完全可重现。也许可以将该代码直接包含在 Markdown 文件中作为示例。 - MrFlick
这个例子展示了我的问题。字体已经在我的系统中加载,但是在文档渲染时却无法识别。这就是我的问题。 - GregRousell
1
我相信Montserrat是一种谷歌字体。在此处查看使用谷歌字体的代码,以在您的ggplot代码中使用https://dev59.com/9cLra4cB1Zd3GeqPEDTu。该代码需要在每个您想要使用该字体的R会话中运行,因此它也需要出现在您的markdown代码中。 - MrFlick
1个回答

4
错过了一个步骤。我添加了
extrafont::loadfonts(quiet = TRUE)

脚本开头的代码现在已经可以运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接