r- emojifont程序包的font-awesome命令在Windows 10中不显示图标

时间:2018-12-21 17:42:10

标签: r font-awesome

当我从emojifont包中使用fontawesome命令时,出现一个正方形,而不是我要求的图标。我对R相当陌生,可能缺少一些非常简单的东西,但这使我陷入了一段时间。

我正在使用RStudio运行Windows 10,R版本是最新的。 据说这些命令可以在Linux计算机上正常工作,请参见前面的讨论:Replace categorical values with traffic light colors

在另一个问题中,用户说要运行Windows()。这没有区别,意义重大吗? using font awesome in ggplot

示例代码

> library(emojifont)
> load.fontawesome()

> fontawesome('fa-circle')
[1] ""

> fontawesome('fa-apple')
[1] ""

> fontawesome('fa-at')
[1] ""

更新: 我可以在线重现一些简单的示例,但不能重现其他示例。

set.seed(123)
x <- rnorm(10)
set.seed(321)
y <- rnorm(10)
plot(x, y, cex=0)
text(x, y, labels=emoji('cow'), cex=1.5, col='steelblue', family='EmojiOne')

d <- data.frame(x=x, y=y,
                label = sample(c(emoji('cow'), emoji('camel')), 10, replace=TRUE),
                type = sample(LETTERS[1:3], 10, replace=TRUE))

library("ggplot2")
ggplot(d, aes(x, y, color=type, label=label)) +
  geom_text(family="EmojiOne", size=6)

这正常工作,如下所示 Correct Output

但是此代码仅产生正方形(以及我尝试过的大多数其他示例)

set.seed(2016-03-09)
fa <- fontawesome(c('fa-github', 'fa-weibo', 'fa-twitter', 'fa-android', 'fa-coffee'))
d <- data.frame(x=rnorm(20),
                y=rnorm(20),
                label=sample(fa, 20, replace=T))

ggplot(d, aes(x, y, color=label, label=label)) +
  geom_text(family='fontawesome-webfont', size=6)+
  xlab(NULL)+ylab(NULL) +
  theme(legend.text=element_text(family='fontawesome-webfont'))

enter image description here

在上面的图像(以及我尝试过的大多数示例)中,我得到了正方形而不是图标。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为它不应该在控制台上打印,而只能在绘图中打印。

基本上,您正在做的是询问emojifont / fontawesome,Unicode中可能超过一百万个代码点中的哪个对应于一个“圆”(它是代码点f51d),然后打印该字符。

在绘图中,您可以说您希望该字符以某种字体打印,并且如果您选择“ fontawesome-webfont”(例如emojifont中的示例),则会绘制这些圆圈。

ggplot(d, aes(x, y, color=label, label=label)) +
    geom_text(family='fontawesome-webfont', size=6)

现在,如果您选择了其他字体系列,那么这些标签将以其他字体打印。

除了在实践中,制作字体的人会仔细考虑如何绘制他们的a和b等,但是他们没有太多时间去思考如何绘制“ codepoint f51d”,即使他们知道那应该只是一个圆圈。他们不希望任何人会使用这种晦涩的代码点。

因此,他们会照顾到他们希望使用的字符,而只是将占位符用于其他字符,例如“”

在控制台中,您将使用默认字体,具体取决于您所使用的控制台。在我的Rstudio安装中,使用了“ Lucida控制台”。不确定控制台中显示的是哪种字体,但是显然没有很好的表示法,例如“ codepoint f51d”

因此,要显示它,您需要以正确的字体显示它:fontawesome。这意味着要么绘图,要么将控制台设置为使用fontawesome。尽管我不确定最后一个是否有效,但这可能会导致诸如“ A”之类的简单字符也显示占位符,或者也许他们已使用它来显示完全不同的内容。

使用windows()的原因是,standard-rstudio-plotwindow有时使用其自己的默认值,因此可能找不到fontawesome。但这仅与RStudio中的绘图有关。