Добавление шрифтов в R с использованием библиотек extrafont или showtext (на Mac через FontBook)

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

Во-первых, я не могу загрузить showtextбиблиотека. После переустановки и загрузки библиотеки я получаю такое сообщение об ошибке:

>   library(showtext)
Loading required package: sysfonts
Error: package or namespace load failed for ‘sysfonts’:
 .onLoad failed in loadNamespace() for 'sysfonts', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so, 6): Library not loaded: /opt/X11/lib/libfreetype.6.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so
  Reason: image not found
Error: package ‘sysfonts’ could not be loaded

... и когда я пытаюсь загрузить sysfonts библиотеки, я получаю следующее:

> library(sysfonts)
Error: package or namespace load failed for ‘sysfonts’:
 .onLoad failed in loadNamespace() for 'sysfonts', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so, 6): Library not loaded: /opt/X11/lib/libfreetype.6.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/sysfonts/libs/sysfonts.so
  Reason: image not found

Я не знаю как это исправить unable to load shared object ошибка, и в результате я в основном отказался от использования showtext, так как я не могу загрузить его в R.

Переходя на extrafont затем я запускаю следующее, чтобы импортировать шрифты с моего Mac в R:

> library(extrafont)
> font_import() # import all fonts on my system
Importing fonts may take a few minutes, depending on the number of fonts and the speed of the system.
Continue? [y/n] y
Scanning ttf files in /Library/Fonts/, /System/Library/Fonts, ~/Library/Fonts/ ...
Extracting .afm files from .ttf files...
/Library/Fonts/Andale Mono.ttf => /Library/Frameworks/R.framework/Versions/3.5/Resources/library/extrafontdb/metrics/Andale Mono
/Library/Fonts/Apple Chancery.ttf : No FontName. Skipping.
/Library/Fonts/AppleGothic.ttf : No FontName. Skipping.
/Library/Fonts/Arial Black.ttf => /Library/Frameworks/R.framework/Versions/3.5/Resources/library/extrafontdb/metrics/Arial Black
...
...
Found FontName for 63 fonts.
Scanning afm files in /Library/Frameworks/R.framework/Versions/3.5/Resources/library/extrafontdb/metrics
Writing font table in /Library/Frameworks/R.framework/Versions/3.5/Resources/library/extrafontdb/fontmap/fonttable.csv
Writing Fontmap to /Library/Frameworks/R.framework/Versions/3.5/Resources/library/extrafontdb/fontmap/Fontmap...
There were 50 or more warnings (use warnings() to see the first 50)

Я заметил, что некоторые шрифты пропускаются из-за No FontNameошибка, тогда как другие (Arial Black), похоже, загружаются нормально. После запуска font_import я проверяю доступные шрифты:

>   fonts()
 [1] ".Keyboard"             "System Font"           ".SF NS Rounded"        "Andale Mono"          
 [5] "Apple Braille"         "AppleMyungjo"          "Arial Black"           "Arial"                
 [9] "Arial Narrow"          "Arial Rounded MT Bold" "Arial Unicode MS"      "Bodoni Ornaments"     
[13] "Bodoni 72 Smallcaps"   ""                      "Brush Script MT"       "Comic Sans MS"        
[17] "Courier New"           "DIN Alternate"         "DIN Condensed"         "Georgia"              
[21] "Impact"                "Khmer Sangam MN"       "Lao Sangam MN"         "Luminari"             
[25] "Microsoft Sans Serif"  "Tahoma"                "Times New Roman"       "Trattatello"          
[29] "Trebuchet MS"          "Verdana"               "Webdings"              "Wingdings"            
[33] "Wingdings 2"           "Wingdings 3"    

Для моих пользовательских шрифтов мне был предоставлен zip-файл шрифтов, и я загрузил эти шрифты на свой Mac*. Название шрифтаFreightDisp Pro, и здесь я вижу, что шрифт находится в приложении Mac Font Book. Однако отмечу, что шрифт недоступен в моемlibrary/Fonts/ папка, как вы можете видеть на следующем изображении:

Я проверил, что шрифт доступен в Microsoft Word, и это действительно так.

И наконец, когда я пытаюсь импортировать шрифты в R, я получаю следующую ошибку:

> font_import(pattern="FreightDisp Pro")
Importing fonts may take a few minutes, depending on the number of fonts and the speed of the system.
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

и я получаю ту же ошибку при изменении шаблона на "National2".

Итак, когда я завершаю этот пост, кажется, что я также пришел к ответу на свой вопрос, который заключается в том, что шрифты нельзя просто установить в книгу шрифтов, но они также должны находиться в папке / Library/Fonts. Я не уверен, могу ли я просто перетащить шрифты в эту папку или могу использовать Font Book для записи этих шрифтов в правильные места. Я также не уверен в типах файлов, если могу использовать только.ttf файлы, как предлагается в сообщении, хотя все файлы шрифтов, которые у меня есть, .otf.

Любые мысли / помощь по этому поводу приветствуются. Я опубликую обновление, как только смогу решить.

Изменить: использование пользовательских шрифтов OTF в ggplot2 этот пост указывает, что.otf шрифты необходимо преобразовать в .ttf использовать с дополнительными шрифтами, но с showtext, .otfможно использовать шрифты. Поэтому я попытаюсь загрузить эту библиотеку.

1 ответ

Решение

В "Книга шрифтов"> "Настройки", переключив предпочтение шрифтов с "Пользовательский" на "Компьютер", он гарантирует, что шрифты будут установлены в папку шрифтов. Это решило мою проблему.

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