无法识别r wordcloud外部ttf vfont

无法识别r wordcloud外部ttf vfont,r,truetype,word-cloud,R,Truetype,Word Cloud,为了通过ttf_import()方法安装外部字体库,我安装了“extrafont”软件包。但是,通过wordcloud方法指定字体时,我收到以下错误: 安装命令: # Assuming the font file, DUALITY_.ttf, is in the working directory (see link to font above) font_import(".",FALSE,pattern="DUALITY") Wordcloud命令: wordcloud(ap.d$word,

为了通过ttf_import()方法安装外部字体库,我安装了“extrafont”软件包。但是,通过wordcloud方法指定字体时,我收到以下错误:

安装命令:

# Assuming the font file, DUALITY_.ttf, is in the working directory (see link to font above)
font_import(".",FALSE,pattern="DUALITY")
Wordcloud命令:

wordcloud(ap.d$word, ap.d$freq, scale=c(8,2), min.freq=10, vfont=c("Duality","plain"),
      random.order=FALSE, rot.per=0, use.r.layout=FALSE, colors=pal2, fixed.asp=FALSE)
输出:

Error in strwidth(words[i], cex = size[i], ...) : 
  invalid 'vfont' value [typeface -2147483648]
为了验证字体是否已安装,我发出了以下命令

> choose_font("Duality")
[1] "Duality"
> fonts()
....[49] "Waree"                    "Duality"    

为什么wordcloud的vfont参数看不到二元字体?以及如何使其对Cairo(默认渲染器)可见。蒂亚

我已经能够使用传递到text
family
font
并在
?par
中描述的参数而不是
vfont
来克服相同的问题。我还需要先加载字体。事情是这样的:

导入字体(抱歉,OP中提供的指向二元性的链接不再可用,我改用Lucida手写,在windows中可用):

加载(有关详细信息,请参见此):

Wordcloud:

wordcloud(ap.d$word, ap.d$freq, scale=c(8,2), min.freq=10, family="Lucida Handwriting", font=1,
  random.order=FALSE, rot.per=0, use.r.layout=FALSE, colors=pal2, fixed.asp=FALSE)

补充前面的答案,并解释如何实际选择要使用的字体。首先,导入字体(可以在
font\u import()

要了解可用的字体,请执行以下操作:

unique(fonttable()$FamilyName)
这为“字体系列”中包含的内容提供了确切的参考。然后,您可以像下面这样发出
wordcloud
命令:

wordcloud(c(letters, LETTERS, 0:9), seq(1, 1000, len = 62), family = "Carlito", font = 1)
为什么
font=1
?从
?par()
,下面是关于
font
参数的说明:

一个整数,指定文本使用的字体。如果可能, 设备驱动程序的排列方式使1对应于纯文本( 默认设置),2为粗体,3为斜体,4为粗体斜体


我很幸运地使用了
windowsFont
将字体加载到R中,然后使用
family
参数
par
允许基本绘图使用它。该函数是否区分字体名称的大小写?我将尝试使用windowsFont,尽管默认的Cairo安装不支持win-fonts=\您如何知道如何引用字体?LHANDW和“Lucida Handwriting”之间的映射?还有,你在哪里可以看到vfont()的合法值。可以查找吗?@user1603472我所做的是检查我电脑中字体文件的名称。我使用windows,据我所知,字体不是在R中,而是在你的操作系统中。因此我在“字体”中查找我想要使用的字体文件夹中,右键单击“我的字体”的文件,从“常规”选项卡中获取文件的DOS名称,在我的示例中为LHANDW.TTF。关于问题的第二部分。您可以使用计算机上安装的任何字体,要知道哪些字体可用,只需在“字体”目录中列出文件即可。
library(extrafont)
font_import(prompt = FALSE)
unique(fonttable()$FamilyName)
wordcloud(c(letters, LETTERS, 0:9), seq(1, 1000, len = 62), family = "Carlito", font = 1)