Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
R 中加载与使用系统字体
type
status
date
slug
summary
tags
category
icon
password
comment
一文讲清:系统装字体 → R 导入 → 设备加载 → 图中调用 → PDF 嵌入。重点用 extrafont,兼顾 ggplot2、base 图形与 grid 系统。
快速上手
1. extrafont 是做什么的?
- 目的:让 R 能识别并使用你电脑里的 TrueType/OpenType 字体(如 Cambria Math、Noto Sans Math、中文字体等)。
- 流程:
- font_import:扫描并登记系统字体信息到
extrafontdb。 - loadfonts:把已登记字体注册到具体绘图设备(Windows 屏幕、pdf、postscript)。
- 使用:在绘图主题/参数里指定
family = "字体名"。 - 嵌入:将字体真正打包进 PDF,解决跨机查阅缺字/替换问题。
2. 在 Windows 安装字体(系统层面)
- 双击
.ttf/.otf→ 安装(建议“为所有用户安装”)。
- 常见数学/符号字体:Cambria Math(Office 自带)、Noto Sans Math、STIX Two Math。
- 安装后 重启 R/RStudio,再做
font_import。
3. 用 extrafont 导入与加载
3.1 导入字体(首次或新增字体后)
小贴士
fonttable()查看已登记字体表;fonts()查看当前可用字体名。
- 新装字体后需 重新 font_import 才会出现在
extrafont数据库。
3.2 加载到绘图设备
4. 在图里使用字体
4.1 ggplot2
4.2 base R
4.3 grid / forestploter
5. 导出 PDF 并“嵌入字体”
extrafont 能让 pdf() 使用到系统字体,但很多 PDF 阅读器仍会替换字体。解决方案:嵌入字体到 PDF 文件。5.1 安装 Ghostscript
- Windows 下安装后记住路径,例如:
C:/Program Files/gs/gs10.04.0/bin/gswin64c.exe- R 里告诉
extrafont:
5.2 导出与嵌入
6. 常见问题与排查
Q1. font_import() 很慢?
- 用
pattern=精准筛选,如pattern = "Noto|Cambria";
- 或指定路径:
font_import(paths = "C:/Windows/Fonts", prompt = FALSE)。
Q2. 绘图时报 unknown family?
- 字体名不匹配。用
fonts()/fonttable()查实际名称;
- Windows 建议用
windowsFonts(别名 = windowsFont("实际名")),再用par(family="别名");
- 重启 R 后,记得
loadfonts(device="win")/("pdf")。
Q3. PDF 里字体被替换?
- 需要
loadfonts(device="pdf")+embed_fonts();
- 确保
R_GSCMD指向 Ghostscript 的可执行文件。
Q4. 中文或 CJK 字体乱码?
- 优先选带完整 CJK 字形的字体(如 SimSun 宋体、Microsoft YaHei 微软雅黑等),同样走
font_import→loadfonts;
- 若仍不稳,备选方案:
showtext(兼容性强,跨平台省心)。
7. 进阶:和 R Markdown / Quarto 配合
- HTML 输出:浏览器自身渲染,若使用 web 字体(Google Fonts)更稳定;
- PDF 输出:沿用本文流程(
loadfonts("pdf")+embed_fonts()),或用showtext;
- 在 YAML 里指定
mainfont: "Cambria Math"(需 Pandoc/LaTeX 能识别该字体)。
8. 最小可复现脚本(Windows)
总结:在 Windows 上,
extrafont 的标准操作是安装系统字体 →
font_import() → loadfonts("win"/"pdf") → 在图里 family="字体名" → embed_fonts()。配合
pattern 精准导入和 Ghostscript 嵌入 PDF,就能做出跨设备也稳定一致的出版级图表。Prev
Chrome 使用全攻略
Next
R 中的数据类型完整指南
Loading...
YouTube 使用笔记