在shinyapps.io上使用自定义字体 [英] Using custom fonts on shinyapps.io

查看:22
本文介绍了在shinyapps.io上使用自定义字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在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 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

有没有人看到可能出了什么问题?

推荐答案

经过一番挣扎,我找到了一个更简单的解决方案,适用于shinyapps.io

开始吧:

  1. 将自定义字体放置在www目录中:例如IndieFlower.ttf来自here
  2. 按照here
  3. 中的步骤操作

这将导致以下app.R文件的上半部分:

dir.create('~/.fonts')
file.copy("www/IndieFlower.ttf", "~/.fonts")
system('fc-cache -f ~/.fonts')

由于Linux查找.fonts目录来搜索字体,因此您不需要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"))

这篇关于在shinyapps.io上使用自定义字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆