R-CMD-check / R CMD check (push) Successful in 3m41s
Replace the 16-color / 3-palette system with the full Civilytics design system: 53 named colors (full navy, ember, violet ramps plus teal, plum, moss, brass supporting hues) and 10 visualization palettes (qual, qual_warm, qual_cool, seq_ember, seq_navy, seq_violet, seq_paper_ink, div_navy_ember, div_violet_ember). Enrich theme_civilytics() with grid and paper_bg parameters, add theme_civilytics_slide() for presentations, and load all four brand fonts (Inter, Libre Franklin, Source Serif 4, JetBrains Mono). Add README.Rmd with rendered gallery showing all palettes, theme variants, grid options, dark/slide modes, facets, and scale usage.
56 lines
2.0 KiB
R
56 lines
2.0 KiB
R
# Font family name constants used as defaults in theme functions.
|
|
# These match the --cv-font-* CSS custom properties on www.civilytics.com.
|
|
CV_FONT_DISPLAY <- "Libre Franklin" # headings / display text
|
|
CV_FONT_SANS <- "Inter" # axis text, legends, UI elements
|
|
CV_FONT_SERIF <- "Source Serif 4" # body prose / editorial long-form
|
|
CV_FONT_MONO <- "JetBrains Mono" # code, data tables, numeric callouts
|
|
|
|
# Internal flag so civilytics_load_fonts() is idempotent within a session.
|
|
.cv_fonts_loaded <- FALSE
|
|
|
|
#' Load Civilytics brand fonts
|
|
#'
|
|
#' Downloads Inter and Libre Franklin from Google Fonts via
|
|
#' [sysfonts::font_add_google()], then calls [showtext::showtext_auto()] so
|
|
#' that all graphics devices render text with those fonts. This is called
|
|
#' automatically when the package loads; use this function to retry if the
|
|
#' initial load failed (e.g., the machine was offline at load time).
|
|
#'
|
|
#' @return Invisibly returns `NULL`.
|
|
#' @export
|
|
#'
|
|
#' @examples
|
|
#' \dontrun{
|
|
#' civilytics_load_fonts()
|
|
#' }
|
|
civilytics_load_fonts <- function() {
|
|
sysfonts::font_add_google("Inter", family = "Inter")
|
|
sysfonts::font_add_google("Libre Franklin", family = "Libre Franklin")
|
|
sysfonts::font_add_google("Source Serif 4", family = "Source Serif 4")
|
|
sysfonts::font_add_google("JetBrains Mono", family = "JetBrains Mono")
|
|
showtext::showtext_auto()
|
|
.cv_fonts_loaded <<- TRUE
|
|
invisible(NULL)
|
|
}
|
|
|
|
.onLoad <- function(libname, pkgname) {
|
|
tryCatch(
|
|
civilytics_load_fonts(),
|
|
error = function(e) {
|
|
# Store the failure so .onAttach can surface a message to the user.
|
|
options(.civilytics_fonts_failed = TRUE)
|
|
}
|
|
)
|
|
}
|
|
|
|
.onAttach <- function(libname, pkgname) {
|
|
if (isTRUE(getOption(".civilytics_fonts_failed"))) {
|
|
packageStartupMessage(
|
|
"[civilytics] Brand fonts (Inter, Libre Franklin, Source Serif 4, ",
|
|
"JetBrains Mono) could not be loaded from Google Fonts. ",
|
|
"Charts will fall back to system fonts. ",
|
|
"Call civilytics_load_fonts() once you have an internet connection."
|
|
)
|
|
}
|
|
}
|