如何在使用extrafont导入字体时解决“无字体名称”问题?

46

我在Windows桌面上有一个文件夹(C:\Users\me\Desktop\Fonts),其中包含我想要使用extrafont将其导入到R中的字体。

当我尝试使用以下方式导入字体时:

library(extrafont)
font_import(paths = "C:/Users/me/Desktop/Fonts", prompt=FALSE)

我收到了错误信息

Scanning ttf files in C:/Users/me/Desktop/Fonts ...
Extracting .afm files from .ttf files...
C:\Users\me\Desktop\Fonts\arista-light.ttf : No FontName. Skipping.
C:\Users\me\Desktop\Fonts\facebook-letter-faces.ttf : No FontName. Skipping.
C:\Users\me\Desktop\Fonts\Guardian-EgypTT-Text-Regular.ttf : No FontName. Skipping.
C:\Users\me\Desktop\Fonts\pico-black.ttf : No FontName. Skipping.
C:\Users\me\Desktop\Fonts\product-sans.ttf : No FontName. Skipping.
Found FontName for 0 fonts.
Scanning afm files in C:/Users/me/Documents/R/R-3.6.3/library/extrafontdb/metrics
Warning messages:
1: In system2(ttf2pt1, c(args, shQuote(ttfiles[i]), shQuote(tmpfiles[i])),  :
  running command '"C:/Users/me/Documents/R/R-3.6.3/library/Rttf2pt1/exec/ttf2pt1.exe" -a -G fAe "C:\Users\me\Desktop\Fonts\arista-light.ttf" "C:\Users\me\AppData\Local\Temp\RtmpOgbdTh/fonts/arista-light"' had status 1
2: In system2(ttf2pt1, c(args, shQuote(ttfiles[i]), shQuote(tmpfiles[i])),  :
  running command '"C:/Users/me/Documents/R/R-3.6.3/library/Rttf2pt1/exec/ttf2pt1.exe" -a -G fAe "C:\Users\me\Desktop\Fonts\facebook-letter-faces.ttf" "C:\Users\me\AppData\Local\Temp\RtmpOgbdTh/fonts/facebook-letter-faces"' had status 1
3: In system2(ttf2pt1, c(args, shQuote(ttfiles[i]), shQuote(tmpfiles[i])),  :
  running command '"C:/Users/me/Documents/R/R-3.6.3/library/Rttf2pt1/exec/ttf2pt1.exe" -a -G fAe "C:\Users\me\Desktop\Fonts\Guardian-EgypTT-Text-Regular.ttf" "C:\Users\me\AppData\Local\Temp\RtmpOgbdTh/fonts/Guardian-EgypTT-Text-Regular"' had status 1
4: In system2(ttf2pt1, c(args, shQuote(ttfiles[i]), shQuote(tmpfiles[i])),  :
  running command '"C:/Users/me/Documents/R/R-3.6.3/library/Rttf2pt1/exec/ttf2pt1.exe" -a -G fAe "C:\Users\me\Desktop\Fonts\pico-black.ttf" "C:\Users\me\AppData\Local\Temp\RtmpOgbdTh/fonts/pico-black"' had status 1
5: In system2(ttf2pt1, c(args, shQuote(ttfiles[i]), shQuote(tmpfiles[i])),  :
  running command '"C:/Users/me/Documents/R/R-3.6.3/library/Rttf2pt1/exec/ttf2pt1.exe" -a -G fAe "C:\Users\me\Desktop\Fonts\product-sans.ttf" "C:\Users\me\AppData\Local\Temp\RtmpOgbdTh/fonts/product-sans"' had status 1

基于这一点,我有两个问题:

  1. 我该如何克服“无字体名称。跳过。”的问题?
  2. 这些警告消息试图告诉我什么,我需要担心吗?

我将不胜感激地接受任何帮助,在此提前致谢!


这个链接解决了你的问题吗?不确定,因为它似乎是针对Mac的。 - caldwellst
@caldwellst 感谢您指出这个问题。我看到了那个帖子,但由于它是针对Mac的,除了链接到Rttf2pt1包之外,我没有找到有用的信息。此外,该帖子已经有7年的历史了,我认为在那之后可能发生了一些变化。 - David Metcalf
3个回答

105

如@Moritz Schwarz所提到的,问题可以追溯到Rttf2pt1

根据这里提出的解决方案,将其降级至1.3.8即可解决该问题:

library(extrafont)
library(remotes)
remotes::install_version("Rttf2pt1", version = "1.3.8")
extrafont::font_import()

2
太厉害了!问题解决了!非常感谢你!我真的很生气,他们发布了这样一个该死的测试版。该死的新版本!我的GIS脚本在R 4.x.x下也完全失败了... - Tomas
1
导入速度比收到“无字体名称”消息要快得多! - Jayden
1
这对我不起作用。还有其他方法吗? - Melanie Baker
1
@MelanieBaker 你可能想要关注extrafont的GitHub存储库中相应的问题;例如 https://github.com/wch/extrafont/issues/88 和 https://github.com/wch/extrafont/issues/32 - cartoonist
1
这对我有用,但我不得不进行一些修改。我必须安装最新版本的rtools。然后,在安装Rttf2pt1之后,我必须重新启动R。最后,在最后一步中,我必须指定一个路径:font_import(paths="C:/Windows/Fonts") - Alex C.

12

我碰到了一个和我的字体文件一模一样的问题 - 错误总是发生在 Rttf2pt1 可执行文件中。

我在该软件包的 GitHub 页面上创建了一个问题,让我们看看他们是否能够解决这个问题。

同时,您也可以解决这个问题:

我认为错误的根源来自于 .ttf 文件的故障。前往 FontForge 并下载这个开源软件。安装后,打开您的 .ttf 文件,并使用 文件 菜单中的 生成字体... 选项将其另存为.ttf。您可能会收到一条警告消息,提示字体中有些小问题 - 如果您愿意,可以查看并修复它,但我选择直接点击 生成

然后,您可以使用新的 .ttf 文件进行 ttf_import(),然后就可以愉快地进行工作了! :)


3
谢谢你的回答,Moritz!我不再需要在R中使用自定义字体,但我相信其他用户会发现它有用。希望他们能找到解决方法! - David Metcalf
1
除了这个之外,没有任何东西解决了我长期以来的问题! - Our

5

你怎么用这个下载字体?比如标准字体。 - Melanie Baker
是的。看看文档吧。它非常简明扼要。 - ap21
1
使用showtext的一个重要注意事项:这将把文本转换为多边形,这意味着您将失去在后期处理中编辑任何文本的能力(例如在Illustrator、Inkscape等软件中)。以下是关于如何使用showtext的详细信息。 - Maurits Evers
这对我的情况非常有用,我可以使用font_add_google()来使用任何字体。非常感谢你提到了这个软件包! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接