在shinyapps.io上使用自定义字体
我想在shinyapps.io上的闪亮应用程序(绘图)中使用自定义字体。我的Roboto-Regular.ttf在在shinyapps.io上使用自定义字体,shiny,shinyapps,Shiny,Shinyapps,我想在shinyapps.io上的闪亮应用程序(绘图)中使用自定义字体。我的Roboto-Regular.ttf在/www/目录中。这是我的app.R文件的上半部分: dir.create('~/.fonts') system("chmod +x ./www/Roboto-Regular.ttf") system("cp ./www/Roboto-Regular.ttf ~/.fonts/") system('fc-cache -f -v ~/.fonts/') system('fc-match
/www/
目录中。这是我的app.R文件的上半部分:
dir.create('~/.fonts')
system("chmod +x ./www/Roboto-Regular.ttf")
system("cp ./www/Roboto-Regular.ttf ~/.fonts/")
system('fc-cache -f -v ~/.fonts/')
system('fc-match Roboto')
library(ggplot2)
library(shiny)
library(shinythemes)
library(extrafont)
font_import(pattern="Roboto",prompt=FALSE)
loadfonts()
print(fonts())
部署应用程序时,我最终会出现如下错误:
Registering fonts with R
Scanning ttf files in /usr/share/fonts/, ~/.fonts/ ...
Extracting .afm files from .ttf files...
/home/shiny/.fonts/Roboto-Regular.ttfWarning in gzfile(dest, "w") :
cannot open compressed file '/opt/R/3.5.1/lib/R/library/extrafontdb/metrics/Roboto-Regular.afm.gz', probable reason 'Permission denied'
Error in value[[3L]](cond) : cannot open the connection
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted
向R注册字体
正在扫描/usr/share/font/,~/.font/…中的ttf文件。。。
正在从.ttf文件中提取.afm文件。。。
/home/shinny/.fonts/Roboto-Regular.ttfWarning在gzfile中(dest,“w”):
无法打开压缩文件“/opt/R/3.5.1/lib/R/library/extrafontdb/metrics/Roboto Regular.afm.gz”,可能原因是“权限被拒绝”
值[[3L]](cond)中出错:无法打开连接
电话:本地。。。tryCatch->tryCatchList->tryCatchOne->
停止执行
有人看到什么地方出了问题吗?这是我从RStudio那里得到的关于这个问题的答案。我自己还没有测试过 嗨 我们的开发人员之所以能够提出这一建议,是因为他们在创建extrafont和相关的extrafontdb包时做出了一个可能很不幸的设计选择。extrafont数据库存储在extrafontdb包目录中,这就是extrafontdb包的基本用途 这意味着extrafontdb目录需要是用户可写的。如果用户安装了该包,这将正常工作,但是如果root安装了该包(如在shinyapps.io上的情况),那么它将无法工作 一种可能的解决方法是将extrafontdb包安装到应用程序子目录中的库中 为此:创建一个
r-lib/
subdir,然后在那里下载extrafontdb源程序包:
dir.create('r-lib')
download.file('https://cran.r-project.org/src/contrib/extrafontdb_1.0.tar.gz','r-lib/extrafontdb_1.0.tar.gz')
部署时,应用程序将包括此r-lib/
子目录和extrafontdb源程序包
然后,在应用程序顶部,将源程序包中的extrafontdb程序包安装到r-lib
目录中
.libPaths(c('r-lib', .libPaths()))
install.packages('r-lib/extrafontdb_1.0.tar.gz',type = 'source',repos = NULL)
他们在shinyapps.io上部署了一个应用程序,可以安装extrafontdb,运行良好。libpath设置为install.packages()
将从提供的源程序包安装到应用程序的r-lib/
子目录
请让我们知道您是否能够实现上述功能或有任何其他问题
谢谢,经过一番努力,我找到了一个更简单的解决方案,它适用于
shinyapps.io
:
我们开始:
www
目录中:例如IndieFlower.ttf
fromapp.R
文件的以下上部:
dir.create('~/.fonts')
file.copy("www/IndieFlower.ttf", "~/.fonts")
system('fc-cache -f ~/.fonts')
由于Linux查找.font
目录来搜索字体,因此不需要extrafont
软件包,但可以直接使用以下字体:
ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) +
geom_line(position="jitter", color="red", size=2) + theme_bw() +
theme(text=element_text(size = 16, family = "IndieFlower"))
恢复一个旧主题,但使用自定义字体没有什么特别之处,只需将其添加到www文件夹,并创建CSS规则以应用于感兴趣的标记
请查看详细信息。我遇到了同样的问题。你同时明白了吗?我已经添加了从RStudio得到的关于这个的回复。如果它工作,让我知道,我会接受它作为一个答案。谢谢张贴此。我想我走近了。。但对我来说还是不行。请看我的问题,非常感谢您的解决方案。这是我绘制带有日文标签的树形图所必需的步骤,因为treemap()函数似乎没有找到合适的字体来呈现日文字符。