Измените семейство шрифтов на форматируемую таблицу в R

#html #r #kable #formattable

Вопрос:

Кто-нибудь знает, как изменить семейство шрифтов при использовании таблицы форматирования при создании изображения для рендеринга в формате pdf?

В настоящее время у меня есть следующая таблица с этим кодом.

 library("htmltools")
library("webshot")  
library(formattable)
DF <- data.frame(Ticker=c("", "", "", "IBM", "AAPL", "MSFT"),
                 Name=c("Dow Jones", "Samp;P 500", "Technology", 
                        "IBM", "Apple", "Microsoft"),
                 Value=accounting(c(15988.08, 1880.33, 50, 
                                    130.00, 97.05, 50.99)),
                 Change=percent(c(-0.0239, -0.0216, 0.021, 
                                  -0.0219, -0.0248, -0.0399)))

unit.scale = function(x) (x - min(x)) / (max(x) - min(x))
export_formattable <- function(f, file, width = "100%", height = NULL, 
                               background = "white", delay = 0.2)
    {
      w <- as.htmlwidget(f, width = width, height = height)
      path <- html_print(w, background = background, viewer = NULL)
      url <- paste0("file:///", gsub("\\", "/", normalizePath(path)))
      webshot(url,
              file = file,
              selector = ".formattable_widget",
              delay = delay)
    }
FT <- formattable(DF, list(
  Name=formatter("span", 
                 style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA)), #NOT APPLIED when we output to PNG with the function!
  #Value = color_tile("white", "orange"),
  Value = color_bar("orange" , fun = unit.scale
                    ),
  Change = formatter("span", 
                     style = x ~ style(color = ifelse(x < 0 , "red", "green"), "font.size" = "18px"), 
                     x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x)
                     )),
  table.attr = 'style="font-size: 18px;";"')

FT
export_formattable(FT,"FT.png")
 

введите описание изображения здесь
Тем не менее, я хочу изменить все семейство шрифтов таблицы на Calibri, я пробовал много разных вещей, но безрезультатно, пожалуйста, помогите!

Комментарии:

1. Кроме того, при выводе этого в PDF-файл rmarkdown жирный текст просто игнорируется! ничего не напечатано жирным шрифтом, пожалуйста, помогите

2. Если вы воспроизведете мой пример, вы обнаружите, что форматирование текста действительно изменяется, когда я использую функцию экспорта, мне действительно нужен шрифт Calibri!

Ответ №1:

Вы можете изменить шрифт, добавив font-family: Calibri table.attr его .

Код

 FT <- formattable(DF, list(
  Name=formatter("span", 
                 style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA)), #NOT APPLIED when we output to PNG with the function!
  #Value = color_tile("white", "orange"),
  Value = color_bar("orange" , fun = unit.scale
  ),
  Change = formatter("span", 
                     style = x ~ style(color = ifelse(x < 0 , "red", "green"), "font.size" = "18px"), 
                     x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x)
  )),
  table.attr = 'style="font-size: 18px; font-family: Calibri";"')

FT
export_formattable(FT,"FT.png")
 

Выход
введите описание изображения здесь