代码之家  ›  专栏  ›  技术社区  ›  Thierry

网格在控制台中运行时查找字体,但在呈现rmd时不查找字体

  •  2
  • Thierry  · 技术社区  · 6 年前

    当我从控制台下面的最小rmarkdown运行块时,将显示正确的字体。但是,当我试图将rmarkdown文档编译为pdf时,我得到了错误: font family 'Pacifico' not found in PostScript font database .字体在我的Ubuntu机器上可用为 ttf 字体。您可以在下载字体 https://www.fontsquirrel.com/fonts/pacifico

    ---
    output: pdf_document
    ---
    
    ```{r fig.cap = "Plot with ttf font"}
    library(grid)
    grid.newpage()
    grid.text("Some text", gp = gpar(fontfamily = "Pacifico"))
    ```
    

    当我使用像“Courier New”这样的标准字体时,它会起作用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ralf Stubner    6 年前

    我可以使用rmarkdown和控制台复制错误 pdf() 设备:

    library(grid)
    pdf("...")
    grid.newpage()
    grid.text("Some text", gp = gpar(fontfamily = "Pacifico"))
    # -> font family 'Pacifico' not found in PostScript font database
    dev.off()
    

    我找到的最简单的解决方案是使用 cairo_pdf() 设备:

    ---
    output: pdf_document
    ---
    
    ```{r fig.cap = "Plot with ttf font", dev = 'cairo_pdf'}
    library(grid)
    grid.newpage()
    grid.text("Some text", gp = gpar(fontfamily = "Pacifico"))
    ```
    

    或者,您可以使用 extrafont 包裹。你得先打电话

    extrafont::font_import()
    

    在控制台中。之后你可以用

    ---
    output: pdf_document
    ---
    
    ```{r fig.cap = "Plot with ttf font", dev = 'pdf'}
    library(grid)
    extrafont::loadfonts(quiet = TRUE)
    grid.newpage()
    grid.text("Some text", gp = gpar(fontfamily = "Pacifico"))
    ```