You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.9 KiB

#' Preview numbers, kerning, and ligatures from font variants you create
#'
#' Use this function to preview the special features of fonts you create
#' including how well the default kerning ruls work, how tabular numbers
#' behave, and whether or not modern, fun ligatures are supported. Change
#' the `test_label` if you wish to use a custom preview string.
#'
#' @param font_variant a font variant object created with [reconfigure_font()]
#' @param font_size passed to [ggplot2::geom_text()]
#' @param test_label a specially designed preview string to showcase some
#' specific font features
#' @return A ggplot2 object
#' @export
#' @examples
#' reconfigure_font(
#' family = "Trattatello",
#' width = "normal",
#' ligatures = "discretionary",
#' calt = 1, tnum = 1, case = 1,
#' dlig = 1, kern = 1,
#' zero = 0, salt = 0
#' ) -> trat
#'
#' preview_variant(trat)
#'
#' reconfigure_font(
#' family = "Barlow",
#' width = "normal",
#' ligatures = "standard",
#' tnum = 1, kern = 1
#' ) -> barlow
#'
#' preview_variant(barlow)
preview_variant <- function(font_variant, font_size = 5,
test_label = "Lorem Ipsum dolor sit amet consectetur. => A⃝\n−0+1:2~3,456789\n−9+8:7~6,543210") {
ggplot() +
geom_text(
data = data.frame(
x = rep(1, length(font_variant)),
y = 2 * (0:(length(font_variant)-1)),
family = unlist(font_variant, use.names = FALSE)
),
aes(x = x, y = y, label = test_label, family = family),
size = font_size, lineheight = 0.875, color = "black"
) +
scale_y_continuous(expand = c(0, 2)) +
labs(title = attr(font_variant, "family")) +
theme_minimal() +
theme(
plot.title = element_text(family = font_variant$normal, size = 9, hjust = 0.5)
) +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
) +
theme(
axis.text = element_blank(),
axis.title = element_blank()
)
}