Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rstudio/fontawesome

Easily insert FontAwesome icons into R Markdown docs and Shiny apps
https://github.com/rstudio/fontawesome

List: fontawesome

font-awesome r svg-icons

Last synced: 3 months ago
JSON representation

Easily insert FontAwesome icons into R Markdown docs and Shiny apps

Awesome Lists containing this project

README

        


CRAN status
R build status
Package Site
Coverage status

The project has reached a stable, usable state and is being actively developed.
Monthly Downloads
Total Downloads

Contributor Covenant



The **fontawesome** R package makes it very easy to insert **Font Awesome** icons into **R Markdown** documents and **Shiny** apps (or, anywhere else you need to put them).

## Examples

The `fa()` function can be used to insert an FA icon. For example, we
can get the *r-project* icon in `steelblue`:

``` r
fa(name = "r-project", fill = "steelblue")
#>
```

As can be seen, what we really get from the function is an SVG object that represents the icon. This can be directly used within **R Markdown** with:

``` r
{text} `r fa(...)` {text}
```

Font Awesome SVG icons are great to use instead of `` tags + font files for a few reasons:

- There is less overhead in a **Shiny** app or **R Markdown** document since an `` tag requires computation to obtain the icon (`` tags represent the actual icon)
- Using `` tags has a 'being online' requirement since network activity is necessary for resolving these tags (SVGs in **fontawesome** are stored in the package, so, no Internet connectivity is necessary for that)
- There are styling options available for SVG that aren't there for icon fonts

### R Markdown

Here is an example **R Markdown** document that includes Font Awesome icons:

---
title: "Font Awesome in R Markdown"
output: html_document
---

```{r load_packages, message=FALSE, warning=FALSE, include=FALSE}
library(fontawesome)
```

# Just a few tests with `r fa("font-awesome-logo-full", fill = "forestgreen")`

It works well in headings...

# `r fa("r-project", fill = "steelblue")` H1 Heading

## `r fa("r-project", fill = "steelblue")` H2 Heading

### `r fa("r-project", fill = "steelblue")` H3 Heading

#### `r fa("r-project", fill = "steelblue")` H4 Heading

##### `r fa("r-project", fill = "steelblue")` H5 Heading

...and works equally well within inline text: `r fa("r-project", fill = "steelblue")`.

This will appear, when knit, as:

### Shiny

Hereโ€™s a **Shiny** app (from the [Shiny Gallery](https://shiny.rstudio.com/gallery/basic-datatable.html)) thatโ€™s been slightly modified to incorporate Font Awesome icons in the text above the three search fields:

``` r
library(shiny)
library(DT)
library(ggplot2)
library(fontawesome)

ui <- fluidPage(

titlePanel("Basic DataTable"),

# Create a new Row in the UI for selectInputs
fluidRow(

column(
width = 4,
selectInput(
inputId = "man",
label = tags$p(fa("car", fill = "purple"), "Manufacturer:"),
choices = c(
"All",
unique(as.character(mpg$manufacturer))))
),

column(
width = 4,
selectInput(
inputId = "trans",
label = tags$p(fa("car", fill = "forestgreen"), "Transmission:"),
choices = c(
"All",
unique(as.character(mpg$trans))))
),

column(
width = 4,
selectInput(
inputId = "cyl",
label = tags$p(fa("car", fill = "steelblue"), "Cylinders:"),
choices = c(
"All",
unique(as.character(mpg$cyl))))
)
),

# Create a new row for the table.
fluidRow(
dataTableOutput("table")
)
)

server <- function(input, output) {

# Filter data based on selections
output$table <- renderDataTable({

data <- mpg
if (input$man != "All") {
data <- data[data$manufacturer == input$man,]
}
if (input$cyl != "All") {
data <- data[data$cyl == input$cyl,]
}
if (input$trans != "All") {
data <- data[data$trans == input$trans,]
}
data
})
}

shinyApp(ui = ui, server = server)
```

The **Shiny** app will look something like this:

Please note that using `shiny::icon()` in place of `fontawesome::fa()` will still work. Internally, the `icon()` function will call `fontawesome`'s `fa_i()` function, which generates an old-school `` tag for the icon.

### Installation

Want to try this out? The **fontawesome** package can be installed from CRAN:

``` r
install.packages("fontawesome")
```

Also, you can install the development version of **fontawesome** from **GitHub**:

``` r
devtools::install_github("rstudio/fontawesome")
```

If you encounter a bug, have usage questions, or want to share ideas to make this package better, feel free to file an [issue](https://github.com/rstudio/fontawesome/issues).

##### Code of Conduct

Please note that the `rstudio/fontawesome` project is released with a [contributor code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
By participating in this project you agree to abide by its terms.

##### ๐Ÿ›๏ธ Governance

This project is primarily maintained by [Rich Iannone](https://github.com/rich-iannone). Other authors may occasionally assist with some of these duties.