You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarto在RStudio生成PDF报告遇字体缺失问题求助

解决Quarto生成PDF时theme_ft_rc()字体缺失问题

问题背景

使用RStudio + Quarto生成PDF报告时,因theme_ft_rc()依赖的Roboto Condensed字体缺失触发报错;尝试用extrafont导入字体失败,修改base_family为"Times New Roman"也出现"invalid font type"错误。

可行解决方案

方案1:正确安装Roboto Condensed到系统并注册

  1. 下载Roboto Condensed字体文件,右键选择"安装"完成系统层面安装
  2. 使用extrafont精准注册目标字体:
library(extrafont)
# 仅扫描匹配的字体文件,避免全量扫描报错
font_import(pattern = "RobotoCondensed", prompt = FALSE)
# 将字体加载到PDF设备
loadfonts(device = "pdf")

注意:pattern参数需匹配字体文件的实际命名(部分系统中字体文件名为RobotoCondensed,无空格)

方案2:修改theme_ft_rc()字体参数的正确方式

指定base_family前,先确认字体已被R识别,且选择适配主题的无衬线字体:

# 查看系统已注册的字体列表
windowsFonts()
# 替换为已存在的无衬线字体,比如"Segoe UI"
theme_ft_rc(base_family = "Segoe UI") +
  theme(text = element_text(family = "Segoe UI"))

避免使用"Times New Roman"这类衬线字体,部分深色主题对衬线字体渲染逻辑不兼容

方案3:用showtext替代extrafont处理字体

showtext对PDF字体渲染兼容性更优,操作步骤:

library(showtext)
# 添加Roboto Condensed字体(需确保字体文件路径正确)
font_add(family = "Roboto Condensed", regular = "RobotoCondensed-Regular.ttf")
# 启用自动渲染
showtext_auto()

# 绘图函数中应用
plot_for_package <- function(package_code) {
  gg <- gp.tb.pad.recipe %>%
    filter(Package_Code %in% package_code) %>%
    ggplot() +
    # ... 原有绘图代码 ...
    theme_ft_rc(base_family = "Roboto Condensed") +
    # ... 其他主题设置 ...
  gg
}

可通过font_paths()查看showtext默认搜索路径,将字体文件放入对应目录即可直接调用

额外排查配置

在Quarto的YAML头部添加PDF引擎配置,提升字体支持:

---
format: pdf
editor: visual
self_contained: TRUE
pdf-engine: xelatex  # xelatex对自定义字体支持更好
mainfont: Roboto Condensed
---

内容的提问来源于stack exchange,提问作者Gambit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:40:28