SystemFonts - это пакет, который определяет установленные шрифты. Он использует системные библиотеки на Mac (coretext) и Linux (FontConfig) и использует Freetype для анализа шрифтов в реестре в Windows.
SystemFonts доступен в Cran с использованием install.packages('systemfonts') . Однако он все еще находится в разработке, и вы можете установить версию разработки, используя DevTools.
# install.packages('devtools')
devtools :: install_github( ' r-lib/systemfonts ' )Основное использование этого пакета - найти файлы шрифтов на основе семьи и стиля:
library( systemfonts )
match_fonts( ' Avenir ' , italic = TRUE )
# > path index features
# > 1 /System/Library/Fonts/Avenir.ttc 1Эта функция возвращает путь к файлу, удерживающему шрифт, а также на 0-м индексе шрифта в файле.
Также возможно получить данные. Фрейма всех доступных шрифтов:
system_fonts()
# > # A tibble: 843 × 9
# > path index name family style weight width italic monospace
# > <chr> <int> <chr> <chr> <chr> <ord> <ord> <lgl> <lgl>
# > 1 /System/Library/Fonts… 2 Rock… Rockw… Bold bold norm… FALSE FALSE
# > 2 /Users/thomas/Library… 0 Open… Open … Ligh… normal norm… TRUE FALSE
# > 3 /Users/thomas/Library… 0 Open… Open … Semi… semib… semi… TRUE FALSE
# > 4 /System/Library/Fonts… 0 Note… Notew… Light normal norm… FALSE FALSE
# > 5 /System/Library/Fonts… 1 Deva… Devan… Bold bold norm… FALSE FALSE
# > 6 /System/Library/Fonts… 0 Kann… Kanna… Regu… normal norm… FALSE FALSE
# > 7 /System/Library/Fonts… 0 Verd… Verda… Bold bold norm… FALSE FALSE
# > 8 /System/Library/Fonts… 8 Aria… Arial… Light light norm… FALSE FALSE
# > 9 /Users/thomas/Library… 0 Open… Open … Medi… medium norm… TRUE FALSE
# > 10 /System/Library/Fonts… 10 Appl… Apple… Thin thin norm… FALSE FALSE
# > # ℹ 833 more rows Кроме того, вы можете запросить дополнительную информацию о шрифтах и конкретных глифах, если это интересно с использованием функций font_info() и glyph_info() .
Хотя получение этой информации в R хорошо, предполагаемое использование в основном через скомпилированный код, чтобы графические устройства могли легко найти соответствующие файлы шрифтов и т. Д.
Чтобы использовать функции из SystemFonts в C (++) код, ваш пакет должен перечислить SystemFonts в поле LinkingTo в файле DESCRIPTION . Как только это будет сделано, теперь вы можете #include <systemfonts.h> в вашем коде и использовать предоставленные функции. Посмотрите на файл inst/include/systemfonts.h чтобы ознакомиться с CPI C.
SystemFonts всегда будет пытаться найти для вас шрифт, даже если ни один из них не существует с данной фамилией или стилем. Как это решает это, специфично и не следует полагаться, но можно ожидать, что действительный файл шрифта всегда возвращается независимо от ввода.
Существует несколько специальных псевдонимов, которые ведет себя предсказуемо, но системное зависимое:
"" И "sans" возвращает Helvetica на Mac, Arial on Windows и шрифт по умолчанию Sans-Serif на Linux ( Dejavu Sans on Ubuntu)"serif" Время возврата на Mac, Times New Roman на Windows и шрифт по умолчанию Serif на Linux ( Dejavu Serif на Ubuntu)"mono" вернуть курьер на Mac, курьер новый на Windows и шрифт по умолчанию на Linux ( Dejavu Mono на Ubuntu)"emoji" возвращает яблочный цвет эмодзи на Mac, Segoe UI Emoji на Windows и шрифт эмодзи по умолчанию на Linux ( Noto Color на Ubuntu) Обратите внимание, что проект «SystemFonts» выпускается с кодексом поведения участника. Внося вклад в этот проект, вы соглашаетесь соблюдать его условия.