如何解决extrafont中的status 5错误并成功加载xkcd.ttf字体
解决xkcd字体无法通过extrafont导入的问题
看起来你碰到的问题是extrafont依赖的ttf2pt1工具没法识别xkcd.ttf的FontName字段,导致导入失败(返回状态码5)。下面给你几个靠谱的解决方案,优先推荐第一个,操作更简单:
方案1:用showtext包替代extrafont(推荐)
showtext对非标准字体的支持比extrafont好很多,不需要依赖ttf2pt1这类工具,直接就能加载字体:
- 先安装包:
install.packages("showtext")
- 加载包并导入xkcd字体:
library(showtext) # 直接指定字体文件路径导入,给字体起个名字叫"xkcd" font_add("xkcd", regular = "C:/Users/prgca/AppData/Local/Microsoft/Windows/Fonts/xkcd.ttf") # 开启自动模式,让所有绘图都使用showtext的字体 showtext_auto()
- 测试一下是否生效:
plot(1:10, main = "Hello xkcd!", family = "xkcd")
这样应该就能看到xkcd风格的标题了。
方案2:修复xkcd字体的FontName(适用于坚持用extrafont的情况)
如果一定要用extrafont,需要先给xkcd.ttf补上标准的FontName字段:
- 下载并打开FontForge(免费的字体编辑工具),导入xkcd.ttf
- 点击顶部菜单的
Element->Font Info,切换到PS Names标签页 - 在
FontName输入框里填写xkcd(或者你喜欢的名字),点击OK保存设置 - 把修改后的字体另存为新文件(比如
xkcd-fixed.ttf),放到一个容易找到的文件夹里 - 再次用extrafont导入修改后的字体:
library(extrafont) font_import(path = "你的修改后字体所在文件夹路径", pattern = "xkcd-fixed") loadfonts() # 测试 plot(1:10, main = "Fixed xkcd Font", family = "xkcd")
错误原因说明
你看到的No FontName. Skipping.和状态码5的警告,是因为xkcd字体可能没有符合PostScript标准的FontName元数据,而extrafont依赖的ttf2pt1工具必须读取这个字段才能生成字体指标文件,所以处理失败了。
内容的提问来源于stack exchange,提问作者GiulioGCantone
相关产品推荐
相关产品推荐

