Добавить шрифт в R, которого нет в библиотеке extrafonts - PullRequest
0 голосов
/ 10 сентября 2018

После установки библиотеки extrafonts R и проверки, какие шрифты она должна предложить, она получила следующий список:

[1] ".Keyboard"               "System Font"             "Andale Mono"             "Apple Braille"           "AppleMyungjo"           
[6] "Arial Black"             "Arial"                   "Arial Narrow"            "Arial Rounded MT Bold"   "Arial Unicode MS"       
[11] "Batang"                  "Bodoni Ornaments"        "Bodoni 72 Smallcaps"     "Bookshelf Symbol 7"      ""                       
[16] "Brush Script MT"         "Calibri"                 "Calibri Light"           "Cambria"                 "Cambria Math"           
[21] "Candara"                 "Comic Sans MS"           "Consolas"                "Constantia"              "Corbel"                 
[26] "Courier New"             "DIN Alternate"           "DIN Condensed"           "Franklin Gothic Book"    "Franklin Gothic Medium" 
[31] "Gabriola"                "Georgia"                 "Gill Sans MT"            "Gulim"                   "Impact"                 
[36] "Khmer Sangam MN"         "Lao Sangam MN"           "Lucida Console"          "Lucida Sans Unicode"     "Luminari"               
[41] "Marlett"                 "Meiryo"                  "Microsoft Yi Baiti"      "Microsoft Himalaya"      "Microsoft Sans Serif"   
[46] "Microsoft Tai Le"        "MingLiU_HKSCS-ExtB"      "MingLiU_HKSCS"           "MingLiU"                 "MingLiU-ExtB"           
[51] "Mongolian Baiti"         "MS Gothic"               "MS Mincho"               "MS PGothic"              "MS PMincho"             
[56] "MS Reference Sans Serif" "MS Reference Specialty"  "Palatino Linotype"       "Perpetua"                "PMingLiU"               
[61] "PMingLiU-ExtB"           "SimHei"                  "SimSun"                  "SimSun-ExtB"             "Tahoma"                 
[66] "Times New Roman"         "Trattatello"             "Trebuchet MS"            "Tw Cen MT"               "Verdana"                
[71] "Webdings"                "Wingdings"               "Wingdings 2"             "Wingdings 3"    

Однако мой босс говорит мне, что типы шрифтов нашей компании, которые будут использоваться для графиков, согласно руководству по стилю нашей компании, являются национальными 2 конденсированными и национальными 2. Быстрый поиск в Google выявляет это для этих шрифтов: https://klim.co.nz/retail-fonts/national-2-condensed/

Есть ли способ загрузить эти пользовательские шрифты для R для использования в ggplot, даже если они не включены в дополнительные шрифты? А если нет , кто-нибудь знает, является ли какой-либо из этих шрифтов особенно похожим на National 2 Condensed и National 2?

Спасибо!

РЕДАКТИРОВАТЬ !! (принял более ранний ответ, но у меня есть вопрос сейчас): на моем компьютере установлен шрифт (проверено, работает ли он в Microsoft Word). Смотрите здесь, что это установлено.

enter image description here

Однако, когда я запускаю следующее, я получаю следующую ошибку:

library(extrafont)
extrafont::font_import(pattern="National2Condensed-Bold")

Continue? [y/n] y
Scanning ttf files in /Library/Fonts/, /System/Library/Fonts, ~/Library/Fonts/ ...
Extracting .afm files from .ttf files...
Error in data.frame(fontfile = ttfiles, FontName = "", stringsAsFactors = FALSE) : 
  arguments imply differing number of rows: 0, 1

эта ошибка возникает, потому что тип шрифта .otf, а не .ttf ?? Как я мог это исправить ??

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Решение с использованием пакета showtext :

library(showtext)
## Add the font with the corresponding font faces
font_add("national2",
    regular = "National2CondensedTest-Regular.otf",
    bold = "National2CondensedTest-Bold.otf")
## Automatically use showtext to render plots
showtext_auto()

library(ggplot2)
p = ggplot(NULL, aes(x = 1, y = 1)) + ylim(0.8, 1.2) +
    annotate("text", 1, 1.1, label = "National 2 Condensed Bold",
             family = "national2", fontface = "bold", size = 15) +
    annotate("text", 1, 0.9, label = "National 2 Condensed Regular",
             family = "national2", size = 12) +
    theme(axis.title = element_blank(),
          axis.ticks = element_blank(),
          axis.text  = element_blank())

ggsave("test.pdf", p, width = 8, height = 4)

Ниже сгенерированный участок:

Output of the plot using showtext

Я использовал тестовую версию файлов шрифтов, и в вашем случае просто измените аргументы regular и bold на фактические пути ваших файлов.

0 голосов
/ 10 сентября 2018

Сначала вы получите нужный шрифт и установите его в своей системе. Ничего общего с R. Проверьте, работает ли шрифт, проверив в любой обычной программе, такой как MS Word или что-то в этом роде.

Затем откройте R, загрузите пакет extrafont и импортируйте шрифт, который вы установили. Я думаю, что пока это работает только со .ttf шрифтами.

library(extrafont)
font_import(pattern="Roboto")

Если это работает, то этот шаг добавит эти шрифты в extrafontdb. Вы увидите что-то вроде этого ...

> font_import(pattern="Roboto",prompt=FALSE)
Scanning ttf files in C:\windows\Fonts ...
Extracting .afm files from .ttf files...
C:\Windows\Fonts\Roboto-Black.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-Black
C:\Windows\Fonts\Roboto-BlackItalic.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-BlackItalic
...
C:\Windows\Fonts\RobotoCondensed-Regular.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/RobotoCondensed-Regular
Found FontName for 30 fonts.
Scanning afm files in C:/R/R-3.5.1/library/extrafontdb/metrics
Writing font table in C:/R/R-3.5.1/library/extrafontdb/fontmap/fonttable.csv
Writing Fontmap to C:/R/R-3.5.1/library/extrafontdb/fontmap/Fontmap...

Это разовая вещь. После импорта он доступен в R с тех пор. Все, что вам нужно сделать, это запустить ниже.

library(extrafont)
# for windows
windowsFonts(sans="Roboto")
loadfonts(device="win")
loadfonts(device="postscript")

Теперь значения по умолчанию должны были измениться.

plot(x=1:5,y=1:5)

enter image description here

ggplot имеет base_family, который необходимо изменить, и family аргумент для текстовых geoms.

library(ggplot2)
p <- ggplot(data.frame(x=1:5,y=1:5),aes(x,y))+
  geom_point()+
  geom_text(aes(label=y),nudge_x=0.5,family="Roboto")+
  theme_bw(base_family="Roboto")
p

Экспорт растровых изображений тоже должен работать.

ggsave("plot.png",p)

enter image description here

PDF - это боль. У них есть дополнительный family аргумент. Есть также кое-что о внедрении и прочем. См. Ссылку ниже.

ggsave("plot.pdf",p,family="Roboto")

Вся необходимая информация: здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...