---
title: "gfonts"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{gfonts}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
eval = FALSE
)
```
```{r setup, eval=TRUE}
library(gfonts)
```
{gfonts} allow you to use a [Google font](https://fonts.google.com/) to use it offline in a Shiny application or a R Markdown document. You can download a font via [google-webfonts-helper](https://gwfh.mranftl.com) and generate appropriate CSS to use it.
## Setup a font to use in your project
In your project directory, use `setup_font` once to download a font and generate CSS code. For example to use the [Roboto font](https://fonts.google.com/specimen/Roboto), you can do :
```{r}
setup_font(
id = "roboto",
output_dir = "www",
variants = "regular"
)
```
In a Shiny application you can use `www/` folder, for R Markdown, create a sub-folder at the same level as your `.Rmd` file.
`setup_font()` will create two sub-folders, containing the following files :
```
www
+-- css
| \-- roboto.css
\-- fonts
+-- roboto-v20-latin-regular.eot
+-- roboto-v20-latin-regular.svg
+-- roboto-v20-latin-regular.ttf
+-- roboto-v20-latin-regular.woff
\-- roboto-v20-latin-regular.woff2
```
To know all fonts and their ids, you can use `get_all_fonts()` :
```{r, eval=gfonts:::is_service_ok()}
head(get_all_fonts())
```
## Use a font
To use a downloaded font, you can use in your UI or in a chunk :
```{r}
use_font("roboto", "www/css/roboto.css")
```
First argument is the id of font downloaded, second is path to CSS file generated.
An other solution in Shiny application is to import the CSS file in a link tag and add a style tag:
```{r}
fluidPage(
tags$link(rel = "stylesheet", type = "text/css", href = "css/roboto.css"),
tags$style("body {font-family: 'Roboto', sans-serif;}")
)
```
In Markdown, import CSS file in yaml header, and add a CSS chunk :
``````
---
output:
html_document:
css: assets/css/roboto.css
---
```{css}
body {font-family: 'Roboto', sans-serif;}
```
``````
## Download a font
If you only want to download a font, you can use:
```{r}
download_font(
id = "roboto",
output_dir = "azerty",
variants = c("regular", "300italic", "700")
)
```
## Generate CSS
To download CSS code to import a font in HTML, you can use:
```{r}
generate_css("roboto", "regular", font_dir = "path/to/font")
```
```{r, eval=gfonts:::is_service_ok(), echo=FALSE}
cat(generate_css("roboto", "regular", font_dir = "path/to/"))
```
The path must be relative to the one were this code is saved.