Добавление шрифтов в 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
можно использовать шрифты. Поэтому я попытаюсь загрузить эту библиотеку.