Windows字体库未找到Waffle与FontAwesome字体,华夫图图标显示失败求助
解决Waffle图中FontAwesome字体找不到的问题
我之前也碰到过Windows下用waffle包调用FontAwesome图标时的字体识别坑,这个错误主要是extrafont在Windows上的字体加载逻辑和设备适配问题导致的,给你两个可行的解决方案:
方案一:修复extrafont的字体加载问题
确认FontAwesome已安装到系统
先检查Windows字体文件夹(一般是C:\Windows\Fonts)里有没有FontAwesome字体,要是没有,先去官网下载安装免费的Solid样式版本。精准导入FontAwesome字体
全量扫描字体耗时还可能漏导,不如指定只导入FontAwesome:library(extrafont) # 只导入包含FontAwesome的字体,跳过确认提示 font_import(pattern = "FontAwesome", prompt = FALSE)针对Windows设备加载字体
你之前用的loadfonts(device = "postscript")是给PostScript设备用的,Windows默认绘图设备得用win参数:loadfonts(device = "win") # 验证是否加载成功,查看字体列表里有没有FontAwesome fonts()重新运行绘图代码
现在再执行你的Waffle代码,应该就能正常识别字体了:library(waffle) parts <- c(`Un-breached\nUS Population`=(318-11-79), `Premera`=11, `Anthem`=79) waffle(parts/10, rows=3, colors=c("#969696", "#1879bf", "#009bda"), use_glyph="medkit", size=8)
方案二:用showtext替代extrafont(更稳定)
如果extrafont还是搞不定,试试showtext包,它在跨平台字体处理上更省心:
安装并加载所需包
install.packages(c("waffle", "showtext")) library(waffle) library(showtext)加载FontAwesome字体
可以直接从谷歌字体加载,或者用本地安装的字体:# 从谷歌字体加载FontAwesome 5 Free(Solid样式) font_add_google("Font Awesome 5 Free", family = "fa", regular.wt = 900) # 如果是本地安装的字体,用下面的方式(替换成你的字体文件路径) # font_add("fa", "C:/Windows/Fonts/Font Awesome 5 Free-Solid-900.otf")启用showtext自动渲染
showtext_auto()绘制Waffle图
记得指定family="fa"来调用加载的字体:parts <- c(`Un-breached\nUS Population`=(318-11-79), `Premera`=11, `Anthem`=79) waffle(parts/10, rows=3, colors=c("#969696", "#1879bf", "#009bda"), use_glyph="medkit", size=8, family="fa")
小提示
如果medkit图标不显示,可能是FontAwesome版本差异导致的,新版里这个图标叫kit-medical,可以试试替换use_glyph="kit-medical"。
内容的提问来源于stack exchange,提问作者RulesOfTheGame
相关产品推荐
相关产品推荐

