font_google | R Documentation |
Include font file(s) when defining a Sass variable that represents a CSS
font-family
property.
font_google(
family,
local = TRUE,
cache = sass_file_cache(sass_cache_context_dir()),
wght = NULL,
ital = NULL,
display = c("swap", "auto", "block", "fallback", "optional")
)
font_link(family, href)
font_face(
family,
src,
weight = NULL,
style = NULL,
display = c("swap", "auto", "block", "fallback", "optional"),
stretch = NULL,
variant = NULL,
unicode_range = NULL
)
font_collection(..., default_flag = TRUE, quote = TRUE)
is_font_collection(x)
family |
A character string with a single font family name. |
local |
Whether or not download and bundle local (woff2) font files. |
cache |
A |
wght |
One of the following:
|
ital |
One of the following:
|
display |
A character vector for the |
href |
A URL resource pointing to the font data. |
src |
A character vector for the |
weight |
A character (or numeric) vector for the |
style |
A character vector for the |
stretch |
A character vector for the |
variant |
A character vector for the |
unicode_range |
A character vector for |
... |
a collection of |
default_flag |
whether or not to include a |
quote |
whether or not to attempt automatic quoting of family names. |
x |
test whether |
These helpers must be used the named list approach to variable definitions, for example:
list( list("font-variable" = font_google("Pacifico")), list("body{font-family: $font-variable}") )
a sass_layer()
holding an htmltools::htmlDependency()
which points
to the font files.
By default, font_google()
downloads, caches, and serves the relevant font
file(s) locally. By locally serving files, there's a guarantee that the font
can render in any client browser, even when the client doesn't have internet
access. However, when importing font files remotely (i.e., font_google(..., local = FALSE)
or font_link()
), it's a good idea to provide fallback
font(s) in case the remote link isn't working (e.g., maybe the end user
doesn't have an internet connection). To provide fallback fonts, use
font_collection()
, for example:
pacifico <- font_google("Pacifico", local = FALSE) as_sass(list( list("font-variable" = font_collection(pacifico, "system-ui")), list("body{font-family: $font-variable}") ))
These font helpers encourage best practice of adding a !default
to Sass
variable definitions, but the flag may be removed via font_collection()
if
desired.
as_sass(list("font-variable" = pacifico)) #> $font-variable: Pacifico !default; as_sass(list("font-variable" = font_collection(pacifico, default_flag = F))) #> $font-variable: Pacifico;
Non-Google fonts may also be served locally with font_face()
, but it
requires downloading font file(s) and pointing src
to the right location
on disk. If you want src
to be a relative file path (you almost certainly
do), then you'll need to mount that resource path using something like
shiny::addResourcePath()
(for a shiny app) or servr::httd()
(for static
HTML).
https://developers.google.com/fonts/docs/css2
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face
https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_text/Web_fonts
library(htmltools)
my_font <- list("my-font" = font_google("Pacifico"))
hello <- tags$body(
"Hello",
tags$style(
sass(
list(
my_font,
list("body {font-family: $my-font}")
)
)
)
)
if (interactive()) {
browsable(hello)
}
# Three different yet equivalent ways of importing a remotely-hosted Google Font
a <- font_google("Crimson Pro", wght = "200..900", local = FALSE)
b <- font_link(
"Crimson Pro",
href = "https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@200..900"
)
url <- "https://fonts.gstatic.com/s/crimsonpro/v13/q5uDsoa5M_tv7IihmnkabARboYF6CsKj.woff2"
c <- font_face(
family = "Crimson Pro",
style = "normal",
weight = "200 900",
src = paste0("url(", url, ") format('woff2')")
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.