如何在RShiny应用程序中使用自定义字体

5

我希望在我的Rshiny应用程序中使用自定义字体。 我猜代码会放在tags $ style中,但是我没有实际包含这个代码的想法。

示例代码:

ui <- fluidPage(
        tags$style(  ),
        column(12,
                dataTableOutput("testtab")
              ) # close column
) #close fluidpage

server <- function(input, output, session) {
  output$testtab <- 
        DT::renderDataTable({
                               tab <- data.frame(a = 1:10, b = 11:20, c = 21:30)
                               dat.tab <- datatable(tab) %>% formatPercentage('a', 0) %>% 
                                                          formatCurrency(1:ncol(tab), '$')
                              return(dat.tab)
                            }) # close renderDataTable
} # close server

shinyApp(ui=ui, server=server)

举个例子,假设我想在网上使用任何自定义字体。

(小提示 - 如果您不知道有一个很好的包[shinythemes](https://rstudio.github.io/shinythemes/),其中包含7个漂亮的主题) - Michal Majka
@UnnamedUser,谢谢。我想使用特定的自定义字体,这是我想要改变的唯一事情。 - matsuo_basho
1
哪种字体?是指您已经安装的字体吗?另外,您使用的是什么系统?对于Windows/Mac/Linux,字体设置略有不同。 - Mike Wise
@MikeWise,不,我没有安装这个字体。假设它是这个字体:http://www.fontspace.com/gunarta/surabanglus。我正在使用 Windows。 - matsuo_basho
那么,你觉得呢? - Mike Wise
这个有帮助吗?链接 - symbolrush
1个回答

4

这应该会有所帮助。

首先,您需要从http://www.fontspace.com/gunarta/surabanglus下载字体,并通过单击带有ttf扩展名的文件并单击安装来安装字体。在此处,我已经添加了标签以控制默认的正文字体,以及使用“id标签”控制特定控件和背景颜色的标签。

还有其他方法可以使用单独的CSS文件等进行操作。但这很快,简单而不太麻烦。

library(shiny)
library(dplyr)
library(DT)

ui <- fluidPage(
  tags$style(HTML('body {font-family:"Times New Roman",Georgia,Serif; background-color:orange}')),
  tags$style(HTML('#testtab {font-family:"surabanglus",Georgia,Serif; background-color:lightblue}')),
  tags$style(HTML('#hello2 {font-family:"Courier",Georgia,Serif; background-color:pink}')),
  column(12,
         dataTableOutput("testtab"),
         actionButton("hello1","Hello There (uses font inherited from body)"),
         actionButton("hello2","Hello There again (uses Courier)")

  ) # close column,
) #close fluidpage

server <- function(input, output, session) {
  output$testtab <- DT::renderDataTable({
    tab <- data.frame(a = 1:10, b = 11:20, c = 21:30)
    dat.tab <- datatable(tab) %>% formatPercentage('a', 0) %>% 
      formatCurrency(1:ncol(tab), '$')
    return(dat.tab)
  }) # close renderDataTable
} # close server

shinyApp(ui=ui, server=server)

产生如下结果:

这里输入图片描述


1
这看起来很不错,如果我只是从上面复制你的代码,它就能正常工作。然而,我无法在我的电脑上使用实际字体使其正常工作。我的选项卡标题有两个单词,也许这就是问题所在:tags$style(HTML('#body {font-family:"surabanglus",Georgia,Serif}')), tags$style(HTML('#Tab one {font-family:"surabanglus",Georgia,Serif}')) - matsuo_basho
最好保持问题和答案简短而精炼,这已经是一个相当成功的问题和答案了,所以我建议您将其标为正确并发布另一个与此相关的问题。这对每个人都有好处。 - Mike Wise
你好,这个能在shiny.io上运行吗?当我在本地安装字体并在我的电脑上运行应用程序时,它可以工作 - 但是当我发布到shiny.io(包括在www文件夹中的.tff文件)时,在线上字体无法呈现。 - mdb_ftl

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