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到系统并注册
- 下载Roboto Condensed字体文件,右键选择"安装"完成系统层面安装
- 使用
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
相关产品推荐
相关产品推荐

