Установка TrueType шрифтов (TTF) в R

This post was kindly contributed by Когнитивная психология и эмоции » R - go there to comment and to read the full post.

Если вы когда-либо делали графики с русскими подписями в R, то знаете, что периодические появляются проблемы со шрифтами. То буквы слипаются, то вообще одни точки, то еще что. Например вам может выдаваться что-нибудь типа такого:

Warning: conversion failure on 'контроль' in 'mbcsToSbcs': dot substituted for <ba>

Большую часть этих проблем можно решить с помощью tikz, если вы работаете с pdf. Однако для экспорта в виде растровых (png, jpeg) изображений такой вариант не очень подходит. Убив пару часов я-таки нашел способ, как можно побороть большую часть проблем. Дело в том, что в используемых по умолчанию шрифтах (тех, которые использует postscript) все крайне плохо с кириллицей. Однако просто взять и указать какие-то системные шрифты вместо стандартных не получится. Postscript жаждет видеть только шрифты в определенном формате, а именно в формате afm, а большинство используемых системы шрифтов хранятся в формате True Type Font (ttf). Кроме того, после конвертации их еще надо импортировать, что тоже не очень тривиально. Для того, чтобы решить все проблемы разом есть прекрасный пакет extrafont. Для того, чтобы все заработало, нужно установить пакет, а затем выполнить команду font_import(). Она автоматически находит все шрифты в системе и конвертирует их в нужный формат. После чего можно посмотреть, какие шрифты доступны с помощью fonttable() или fonts(). После этого для использования шрифтов вам достаточно будет подгрузить их с помощью команды loadfonts() и указать нужный шрифт при создании графика. Например:

library(ggplot2)
library(gridExtra)
png('fonttest%03d.png', width=450,height=450)
p <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()+xlab("Много-много русских буков")+ylab("Русские буковы по вертикали")
 
#шрифт по умолчанию
grid.arrange(p + theme_gray(base_family="sans"),p + theme_gray(base_family="Impact"),p + theme_gray(base_family="FreeMono"),p  + theme_gray(base_family="Droid Serif"))
dev.off()
Пример использования TrueType шрифтов в R

Пример использования TrueType шрифтов в R

Под Windows для работы пакета вам также понадобится указать путь к Ghostscript:

Sys.setenv(R_GSCMD="C:/Program Files/gs/gs9.05/bin/gswin32c.exe")

Когнитивная психология и эмоции. Блог Андрея Четверикова, 2012. | оригинал заметки
Метки: , , , ,

Tags: , , , ,

Comments are closed.