pdf-устройство и семейство шрифтов "Arial" / или: изменить имя шрифта (не шрифт) в PDF

У меня проблема с шрифтами и PDF-выводом в R. На этой машине windows нет Helvetica и шрифт, используемый устройством, кажется Ариал как вы можете видеть ниже. Простая проблема в том, что Arial используется (как я хочу), но редактирование PDF-файла говорит Helvetica - это. Как я могу заставить R записать правильное имя в PDF-файл. pdf(...,family="Arial") не будет работать, так как это семейство не известно (версия grDevices 2.15.1).

или я могу заменить этот шрифт в PDF после этого, создав файл с нужным шрифтом?

R-PDF-выход R Output: Arial Typeface

сравнение из этой статьи:Ариал и Гельветика enter image description here

4 ответов


вам нужно установить новое семейство шрифтов для использования с pdf(). Для этого необходимо иметь файлы метрик шрифтов Adobe (*.afm files) для шрифтов, которые вы хотите использовать. Вы можете преобразовать .tty файлы .afm или найти .afm файлы для Arial в interweb, если у вас их еще нет.

Arial <- Type1Font(family = "Arial",
                   metrics = c("ArialMT.afm",
                               "arial-BoldMT.afm", 
                               "Arial-ItalicMT.afm",
                               "Arial-BoldItalicMT.afm"))

где вектор символов metrics содержит пути к соответствующим .afm файлы, файлы должны быть указаны в таком порядке:

  1. равнина лицо
  2. жирным шрифтом
  3. курсив face
  4. полужирный курсив лице

при использовании pdfFonts() функция для добавления отображения в эти новые шрифты

pdfFonts(Arial = Arial)

здесь Arial является объектом, производимым Type1Font() раньше.

последний шаг-использовать на ?X11 для сведения.


R по умолчанию не встроить шрифты. Он просто указывает, что должен использоваться Helvetica. Вероятно, вам лучше всего встраивать шрифты. Есть два способа сделать это, либо использовать cairo_pdf устройства или extrafont пакет с обычным pdf устройства. cairo_pdf намного проще, но выход отличается тонкими способами от pdf.


Как указано в одном из комментариев, базовые шрифты 14 не должны быть встроены, и Helvetica является одним из этих шрифтов.Предполагается, что потребители PDF обеспечивают замену таких шрифтов, а Arial (или Arial MT) часто используется вместо Helvetica.

Я не знаком с R, но вы, кажется, в состоянии вставить шрифты после

edit:ответ на этот вопрос объясняет, как вставлять шрифты после ghostscript, просто убедитесь чтобы иметь GS map Helvetica (или Arial) к версии шрифта, который вы хотите. Спасибо Гэвину Симпсону за то, что я искал это:)


начиная с R-3.1.0, это намного проще. Теперь, чтобы получить шрифт Arial, просто установите family="ArialMT":

pdf("Arial.pdf", height=0.3, width=1.45, family="ArialMT")
grid::grid.text("CGJQRSafrst1237")
dev.off()

Цитата Из апреля 2014 R-3.1.0 примечания к выпуску:

существует новое семейство "ArialMT" для pdf () и postscript() устройства. Это будет отображаться правильно только на зрителях, которые иметь доступ к шрифтам TrueType монотипа (которые иногда запрошено журналами).

чтобы убедиться, что pdf будет отображаться правильно везде, где он просматривается, вам также нужно будет вставить необходимые шрифты Arial в документ. Вот один простой способ сделать это:

library(extrafont)
loadfonts()  ## Really only needed the first time you use extrafont
## Modify this to point to the corresponding Ghostscript executable on your own machine
Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.07/bin/gswin64c.exe")
embed_fonts("Arial.pdf")