#r #pdf #extrafont
#r #PDF #extrafont
Вопрос:
Я хочу создать R-plot, который использует шрифт Latin Modern Roman, и экспортировать его в формате PDF. Я нашел пакет extrafont
, который предоставляет такие дополнительные шрифты. Сначала у меня были некоторые проблемы с Ghostscript, который не был установлен на моем компьютере и после установки не был найден. Однако предоставление R полного пути к .exe, подобного этому Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.52/bin/gswin64.exe")
, устранило проблему. Подобно многим примерам, которые я нашел в Интернете, я затем написал следующий скрипт*:
require("extrafont")
loadfonts(device = "win")
dat <- data.frame(x = seq(1, 20), y = c(
1, 2, 4, 5, 7, 8, 9, 11, 21, 43, 30, 91, 100, 200, 238, 490, 700, 900, 920, 1000
))
file <- paste(fig_dir, "/test.pdf", sep = "")
pdf(file = file, width = 5, height = 5*0.75)
par(family = "LM Roman 10")
plot(x~y, data = dat, main = "LaTeX Font Plot", ylab = "y-lab", xlab = "This is the x-label")
dev.off()
embed_fonts(file = file, outfile = str_replace(file, ".pdf", "_embed.pdf"))
Здесь fig_dir
находится каталог папки, содержащей экспортированные рисунки.
Первая проблема — это предупреждающее сообщение, сообщающее мне, что ширина символа 0x2d неизвестна. Тем не менее, файл .pdf экспортируется. Основная проблема, однако, заключается в последующей embed_fonts()
команде, потому что она просто выполняется вечно. К сожалению, я не получу никаких сообщений об ошибках, я просто никогда не получу результат. Может быть, у кого-то есть подсказка, в чем может быть проблема, или он даже сталкивался с подобной проблемой?
* шрифты были установлены ранее:
font_import(prompt = FALSE, pattern = "lmroman")
loadfonts(device = dev)
Комментарии:
1. Привет, Мануэль! Если вы используете Windows, мои проблемы с экспортом разных шрифтов заканчиваются, когда я начинаю использовать функцию cairo_pdf() вместо обычной функции pdf(). Я делаю то же самое, что и вы (используя пакет extrafont), но мне не нужно было вставлять шрифты с помощью этой функции cairo_pdf().
2. Спасибо, cairo_pdf() выполняет работу; отлично!
3. Хорошо, что я помогаю. Я не понимаю, почему это связано с cairo (системой защиты Windows), но в Windows так много проблем, связанных с отображением шрифтов, что я согласен с этим решением kkkk.