【发布时间】:2021-11-17 08:24:58
【问题描述】:
我已经编写了一个函数来在同事之间共享图形,我的组织更喜欢 Calibri 而不是 ggplot2 默认 Arial 文本。如果我是唯一会使用此功能的人,我会首先在我的脚本顶部执行此操作:
library(extrafont)
font_import()
loadfonts(device="win")
然后制作我的 ggplot2 图表。我似乎只需要在给定的机器上执行一次font_import(),但是每次开始新会话时我都需要执行loadfonts(device="win")。我不太熟悉这些功能,但如果我不执行 loadfonts 步骤,我的图表就不会使用 Calibri。
我希望我编写的图形函数可以为其他人工作,并且我想检查他们是否已经完成了这些步骤,如果他们还没有,就给他们一个有用的信息不。我以为我可以使用fonts(),然后检查输出中是否列出了Calibri,但我认为这只会检查我在使用这台机器的历史上曾经加载过font_import() 的字体。我也觉得可能
systemfonts::match_font("Calibri")
会检查,但无论我是否已经运行 loadfonts(...,我都会得到相同的结果,所以也不是这样。
如何检查字体是否可以在图表中使用?
【问题讨论】:
-
我认为您可以使用
showtext代替在其他计算机上使用 Calibri 字体,而无需 extrafont::loadfonts 步骤。 -
试试
names(grDevices::windowsFonts())。 -
@JonSpring:
showtext是做什么的?是哪个包的?我找不到它。 -
@stefan:这会告诉我是否有衬线、无衬线或单色字体选项,但实际上不会告诉我字体系列。
-
同意@JonSpring - showtext 是我处理这项任务的方式 - 例如
install.packages("showtext"); library(showtext); list_of_fonts <- as.data.frame(font_files()); grep(pattern = "Calibri", x = list_of_fonts$family, ignore.case = TRUE, value = TRUE)