Добавить шрифт в R, которого нет в библиотеке дополнительных шрифтов

После установки библиотеки дополнительных шрифтов 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"    

Однако мне нужно использовать National 2 Condensed и National (https://klim.co.nz/retail-fonts/national-2-condensed/).

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

Установлены ли у вас уже эти шрифты в масштабе всей системы, чтобы их можно было автоматически использовать в других программах (например, Microsoft Word)? Я думаю, что часто будет проще, если вы начнете с этого, устанавливая шрифты с помощью метода установки вашей ОС по умолчанию.

Marius 10.09.2018 07:16

Просто загрузите шрифты и щелкните их правой кнопкой мыши -> установить, если вы работаете в Windows. После этого снова запустите "font_import ()" в R

Tung 10.09.2018 07:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
2
10 578
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сначала вы получаете нужный шрифт и устанавливаете его в своей системе. Ничего общего с 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)

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

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)

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

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

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

К вашему сведению, для других типов шрифтов вы можете использовать пакет showtext

Tung 10.09.2018 16:50

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

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 на фактические пути к вашим файлам.

Другие вопросы по теме