Make Fira Sans Condensed use more consistent in ggplot
Change-Id: Ifd3aa8544b0ef828dcfc51ad8d5ce15fa5b33cff
diff --git a/R/idsThemeR.R b/R/idsThemeR.R
index bbe510b..d370628 100644
--- a/R/idsThemeR.R
+++ b/R/idsThemeR.R
@@ -1,4 +1,34 @@
-idsBaseFontFamily <- 'Fira Sans Condensed'
+idsBaseFontFamily <- "Fira Sans Condensed"
+
+ids_font_available <- function(font_family) {
+ if (!requireNamespace("systemfonts", quietly = TRUE)) {
+ return(FALSE)
+ }
+ info <- tryCatch(systemfonts::font_info(font_family), error = function(e) NULL)
+ !is.null(info) && nrow(info) > 0
+}
+
+ids_resolve_font_family <- function(preferred = idsBaseFontFamily, fallback = "sans") {
+ candidates <- unique(stats::na.omit(c(preferred, idsBaseFontFamily, fallback)))
+ available <- vapply(candidates, ids_font_available, logical(1))
+ if (any(available)) {
+ return(candidates[which(available)[1]])
+ }
+
+ if (requireNamespace("sysfonts", quietly = TRUE)) {
+ try(sysfonts::font_add_google("Fira Sans Condensed", "Fira Sans Condensed"), silent = TRUE)
+ if (requireNamespace("showtext", quietly = TRUE)) {
+ try(showtext::showtext_auto(enable = TRUE), silent = TRUE)
+ }
+ candidates_after <- unique(c("Fira Sans Condensed", candidates))
+ available_after <- vapply(candidates_after, ids_font_available, logical(1))
+ if (any(available_after)) {
+ return(candidates_after[which(available_after)[1]])
+ }
+ }
+
+ fallback
+}
#' Title
@@ -9,27 +39,27 @@
#' @examples
idsPaletteIDS <- function() {
c(
- '#F18700',
- "#1E2662",
- "#6A7702",
- "#C10A25",
- "#009EE3",
- "#FAF3DE",
- "#A7C2D2",
- "#E2E8A4",
- "#CFBCBD",
- "#BCE3FA",
- "#5C401C",
- "#000000",
- "#354C32",
- "#5C131C",
- "#273582",
- "#FFE3BF",
- "#8994E1",
- "#A3B29E",
- "#DF9599",
- "#79B8DB"
-)
+ "#F18700",
+ "#1E2662",
+ "#6A7702",
+ "#C10A25",
+ "#009EE3",
+ "#FAF3DE",
+ "#A7C2D2",
+ "#E2E8A4",
+ "#CFBCBD",
+ "#BCE3FA",
+ "#5C401C",
+ "#000000",
+ "#354C32",
+ "#5C131C",
+ "#273582",
+ "#FFE3BF",
+ "#8994E1",
+ "#A3B29E",
+ "#DF9599",
+ "#79B8DB"
+ )
}
#' Title
@@ -40,27 +70,27 @@
#' @examples
idsPaletteD3 <- function() {
c(
- '#EB7C31',
- "#1F77B4",
- "#2CA02C",
- "#D62728",
- "#9467BD",
- "#8C564B",
- "#E377C2",
- "#7F7F7F",
- "#BCBD22",
- "#17BECF",
- "#AEC7E8",
- "#FFBB78",
- "#98DF8A",
- "#FF9896",
- "#C5B0D5",
- "#C49C94",
- "#F7B6D2",
- "#C7C7C7",
- "#DBDB8D",
- "#9EDAE5"
-)
+ "#EB7C31",
+ "#1F77B4",
+ "#2CA02C",
+ "#D62728",
+ "#9467BD",
+ "#8C564B",
+ "#E377C2",
+ "#7F7F7F",
+ "#BCBD22",
+ "#17BECF",
+ "#AEC7E8",
+ "#FFBB78",
+ "#98DF8A",
+ "#FF9896",
+ "#C5B0D5",
+ "#C49C94",
+ "#F7B6D2",
+ "#C7C7C7",
+ "#DBDB8D",
+ "#9EDAE5"
+ )
}
#' Title
@@ -84,7 +114,7 @@
#' @examples
idsPaletteGreyscale <- function() {
c(
- "#000000", "#B2B0AD", "#737373", "#D8D7D6", "#B2B0AD", "#8C8984"
+ "#000000", "#B2B0AD", "#737373", "#D8D7D6", "#B2B0AD", "#8C8984"
)
}
@@ -125,13 +155,13 @@
#'
#' \url{https://github.com/d3/d3}
#'
-ids_pal <- function(palette="default") {
+ids_pal <- function(palette = "default") {
values <- switch(tolower(palette),
- ids = idsPaletteIDS(),
- gray = idsPaletteGreyscale(),
- grey = idsPaletteGreyscale(),
- poly20 = idsPalettePoly20(),
- idsPaletteD3()
+ ids = idsPaletteIDS(),
+ gray = idsPaletteGreyscale(),
+ grey = idsPaletteGreyscale(),
+ poly20 = idsPalettePoly20(),
+ idsPaletteD3()
)
f <- scales::manual_pal(values)
attr(f, "max_n") <- length(values)