Skip to content

Commit 980fb8f

Browse files
authored
vectorise the font_descent function to allow multiple input (#3237)
1 parent 47d65dd commit 980fb8f

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

R/margins.R

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -334,20 +334,26 @@ descent_cache <- new.env(parent = emptyenv())
334334
font_descent <- function(family = "", face = "plain", size = 12, cex = 1) {
335335
cur_dev <- names(grDevices::dev.cur())
336336
key <- paste0(cur_dev, ':', family, ':', face, ":", size, ":", cex)
337-
338-
descent <- descent_cache[[key]]
339-
340-
if (is.null(descent)) {
341-
descent <- convertHeight(grobDescent(textGrob(
342-
label = "gjpqyQ",
343-
gp = gpar(
344-
fontsize = size,
345-
cex = cex,
346-
fontfamily = family,
347-
fontface = face
348-
)
349-
)), 'inches')
350-
descent_cache[[key]] <- descent
337+
descents <- lapply(key, function(k) {
338+
descent <- descent_cache[[k]]
339+
340+
if (is.null(descent)) {
341+
descent <- convertHeight(grobDescent(textGrob(
342+
label = "gjpqyQ",
343+
gp = gpar(
344+
fontsize = size,
345+
cex = cex,
346+
fontfamily = family,
347+
fontface = face
348+
)
349+
)), 'inches')
350+
descent_cache[[k]] <- descent
351+
}
352+
descent
353+
})
354+
if (length(descents) == 1) {
355+
descents[[1]]
356+
} else {
357+
do.call(unit.c, descents)
351358
}
352-
descent
353359
}

0 commit comments

Comments
 (0)