AllSorts - это анализатор шрифта, формирование двигателя и подмножество для Opencepe, Woff и Woff2, полностью написанного в ржавчине. Этот репозиторий содержит инструменты, которые были разработаны для отладки и тестирования всех сортов, и приведены примеры его использования.
Примечание. Эти инструменты предназначены для демонстрации, ссылки и отладки целей. Вы не должны полагаться на них на производственные процессы.
Доступные инструменты:
bitmaps - сброс растровые карты из растровых шрифтовcmap - печатный персонаж для отображений глифаdumphas-table -проверьте, имеет ли шрифт конкретную таблицуinstance - создайте статический экземпляр шрифта из переменного шрифтаlayout-features -распечатайте список функций GSUB и GPOS шрифтаshape - применить формирование к глифам из шрифтаspecimen - генерируйте визу для шрифта HTML для шрифтаsubset - подмножество шрифтаvalidate - проанализируйте поставляемый шрифт, сообщая о любых неудачахvariations - перечислите оси изменения переменного шрифтаview - генерировать SVG из Glyphsbitmaps Инструмент bitmaps извлекает растровые карты из шрифтов, содержащих глифные растровые карты в таблицах EBLC / EBDT или CBLC / CBDT .
-o -это путь к каталогу, чтобы написать растровые карты. Он будет создан, если его не существует. Изображения записаны как PNG в подчиненной режиссере для каждого удара (размер). Формат {ppem_x}x{ppem_y}@{bit_depth} , файлы называются {glyph_id}.png :
terminus
├── 12x12@1
│ ├── 0.png
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 7.png
⋮ ⋮
├── 14x14@1
│ ├── 0.png
⋮ ⋮
└── 32x32@1
⋮ ⋮
allsorts bitmaps -o noto-color-emoji NotoColorEmoji.ttf
cmap Инструмент cmap выбирает предпочтительный подтол cmap и сбрасывает символ в записи индекса Glyph. Если кодирование таблицы является Unicode, то символы печатаются вместе с кодовой точкой, в противном случае только числовое значение символа печатается.
-f , --font Определяет путь к файлу шрифта.-i , --index является индексом шрифта для дампа (для TTC, WOFF2) (по умолчанию: 0). $ allsorts cmap --font profontn.otb
cmap sub-table encoding: Unicode
'' U+0000 -> 0
'' U+0001 -> 1
'' U+0002 -> 2
⋮
'?' U+003F -> 63
'@' U+0040 -> 64
'A' U+0041 -> 65
'B' U+0042 -> 66
⋮
'»' U+00BB -> 187
'¼' U+00BC -> 188
'½' U+00BD -> 189
'¾' U+00BE -> 190
'¿' U+00BF -> 191
'À' U+00C0 -> 192
'Á' U+00C1 -> 193
'Â' U+00C2 -> 194
'Ã' U+00C3 -> 195
'Ä' U+00C4 -> 196
⋮
dump Инструмент dump печатает или извлекает информацию из файла шрифта.
allsorts dump path/to/font Отпечатает информацию о шрифте.
--name включает метаданные, содержащиеся в таблице name в выводе.-c может использоваться для печати информации о шрифте CFF или таблице, не обернутой в контейнер TrueType или Opentype.-t извлекает названную таблицу из поставленного шрифта. Вывод должен быть перенаправлен на файл. Например, allsorts dump -t glyf > glyf.bin-g печатает информацию о конкретном глифе шрифтом.-l распечатает все смещения в столе loca в шрифте. $ allsorts dump noto-subset.otd | head
TTF
- version: 0x4f54544f
- num_tables: 9
CFF (checksum: 0x625ba831, offset: 156, length: 166505)
OS/2 (checksum: 0x9f6306c8, offset: 166664, length: 96)
cmap (checksum: 0x131b2742, offset: 166760, length: 274)
head (checksum: 0x09e560e8, offset: 167036, length: 54)
hhea (checksum: 0x0c1109cf, offset: 167092, length: 36)
hmtx (checksum: 0x1b9b0310, offset: 167128, length: 52)
maxp (checksum: 0x000d5000, offset: 167180, length: 6)
name (checksum: 0x1f3037ad, offset: 167188, length: 418)
post (checksum: 0xff860032, offset: 167608, length: 32)
- CFF:
- version: 1.0
- name: NotoSansJP-Regular
- num glyphs: 13
- charset: Custom
- variant: CID
has-table Инструмент has-table проверяет, если предоставленный файл шрифта содержит таблицу, передаваемую через аргумент -t . Если шрифт содержит таблицу, которую он выходит с успехом статуса (0), если шрифт не содержит таблицы, которую он выходит со статусом 1.
Этот инструмент удобен в сочетании с find , чтобы найти шрифты, которые имеют желаемую таблицу.
-t , таблица --table TABLE , чтобы проверить на наличие-i , индекс --index INDEX шрифта для проверки (для TTC, WOFF2) (по умолчанию: 0)-p , --print-file печать пути к шрифту, если он содержит таблицу.-v , --invert-match выберите шрифты, у которых нет данной таблицы В этом примере мы ищем текущий каталог для файлов, заканчивающихся ttf , otf или otc и проверяем, содержат ли они таблицу EBLC . Если таблица найдена, путь к шрифту печатается.
find . -regextype posix-extended -type f -iregex '.*.(ttf|otf|otc)$' -exec allsorts has-table -t EBLC -p {} ;
instance Инструмент instance применяет набор значений (кортеж) к осям вариации переменного шрифта для получения статического, не подлежащего шрифту с этими настройками.
-t , --tuple -это разделенный запятой список значений по одному для каждой оси вариации шрифта. Инструмент variations перечисляет оси, их заказ и ограничения.-o , --output -это путь к выходному шрифту. В этом примере шрифт имеет две оси: UNDO и UNDS . Мы поставляем значение 500 для каждого из них и записываем выходной шрифт на UnderlineTest.ttf .
allsorts instance --tuple 500,500 UnderlineTest-VF.ttf -o UnderlineTest.ttf
layout-featuresОтпечатает отступный список функций GSUB и GPOS шрифта.
$ layout-features fonts/devanagari/AnnapurnaSIL-Regular.ttf
Table: GSUB
Script: DFLT
Language: default
Feature: aalt
Lookups: 56
Feature: abvs
Lookups: 27,28,29,30
Feature: akhn
Lookups: 4
Feature: blwf
Lookups: 9
# additional output omitted
shape Инструмент shape формирует поставляемый текст в соответствии с поставляемым шрифтом, языком и сценарием. Он распечатывает глифы до и после формирования.
-f , --font PATH Path к файлу шрифта-i , индекс --index INDEX шрифта в форме (для TTC, WOFF2) (по умолчанию: 0)-s , --script SCRIPT сценариев в форме-l , --lang LANG language для формы--vertical вертикальная макет, по умолчанию горизонталь $ shape -f fonts/devanagari/AnnapurnaSIL-Regular.ttf -s deva -l HIN 'शब्दों और वाक्यों की तरह'
# output omitted
specimen Инструмент specimen генерирует лист образцов HTML -шрифта, содержащий образец текста, установленного в шрифте, а также информацию о шрифте и его поддерживаемых функциях.
-i , индекс --index INDEX шрифта в подмножество (для TTC, WOFF2) (по умолчанию: 0)--sample-text TEXT текст для использования в образце шрифта $ allsorts specimen ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
subset Инструмент subset принимает шрифт источника и немного текста и записывает новую версию исходного шрифта, содержащую только глифы, необходимые для поставляемого текста.
-t , --text TEXT подмножество шрифта, чтобы включить глифы из текста-a , --all включают все глифы в подмножество шрифтов-i , индекс --index INDEX шрифта в подмножество (для TTC, WOFF2) (по умолчанию: 0) $ allsorts subset -t 'This a subsetting test' NotoSansJP-Regular.otf noto-subset.otf
Number of glyphs in new font: 13
validate Инструмент validate пытается проанализировать все глифы (или различные DICTS в случае CFF) в поставляемом шрифте. Он сообщает о любых ошибках, которые столкнулись, но в остальном молчат. Эта команда была полезна для массового тестирования Allsorts против большого репертуара шрифтов реального мира.
$ allsorts validate ../allsorts/tests/fonts/bengali/Lohit-Bengali.ttf
$ fd '.(ttf|otf|ttc)$' /usr/share/fonts | sort | parallel --bar allsorts validate {}
variations В инструменте variations перечислены информация о переменной шрифте. Информация включает в себя:
Этот пример печатает информацию о вариации для шрифта по адресу ../text-rendering-tests/fonts/TestHVARTwo.ttf -Rendering-tests/fonts/testhvartwo.ttf.
$ allsorts variations ../text-rendering-tests/fonts/TestHVARTwo.ttf
Axes: (2)
- wght = min: 0, max: 1000, default: 0
- cntr = min: 0, max: 100, default: 0
Instances:
Subfamily: ExtraLight
PostScript Name: TestFont-ExtraLight
Coordinates: [0.0, 0.0]
Subfamily: Light
PostScript Name: TestFont-Light
Coordinates: [150.0, 0.0]
Subfamily: Regular
PostScript Name: TestFont-Regular
Coordinates: [394.0, 0.0]
Subfamily: Semibold
PostScript Name: TestFont-Semibold
Coordinates: [600.0, 0.0]
Subfamily: Bold
PostScript Name: TestFont-Bold
Coordinates: [824.0, 0.0]
Subfamily: Black
PostScript Name: TestFont-Black
Coordinates: [1000.0, 0.0]
Subfamily: Black Medium Contrast
PostScript Name: TestFont-BlackMediumContrast
Coordinates: [1000.0, 50.0]
Subfamily: Black High Contrast
PostScript Name: TestFont-BlackHighContrast
Coordinates: [1000.0, 100.0]
view Инструмент view формирует поставляемый текст или список кодепоинтов в соответствии с поставленным шрифтом, языком и сценарием. Затем он генерирует SVG глифов.
-f , --font PATH Path к файлу шрифта-s , --script SCRIPT сценариев в форме-l , --lang LANG language для формы--mark-origin отмечает происхождение каждого глифа с поперечным HAIR--margin num или top,right,bottom,left укажите запас, который должен быть добавлен к краю SVG--fg-colour rrggbbaa Установите цвет наполнения глифов--bg-colour rrggbbaa Установите цвет фона сгенерированного SVG--fg-color rrggbbaa псевдоним для --fg-colour--bg-color rrggbbaa псевдоним для --bg-colour-t , --text TEXT-c , --codepoints CODEPOINTS разделенные в запятой список кодепоинтов (как шестнадцатеричные числа), чтобы отображать-i , --indices GLYPH_INDICES .-F , --features FEATURES разделенные в запятой, список функций Opentype для включения (Примечание: только включает эти функции) $ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva -t 'खि'
# output omitted
$ allsorts view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva -c '916,93f'
# output omitted
В этом примере включена функция OpenType pres , что позволяет заменить Glyph 30 ее специальной формой презентации (Glyph 547).
$ view -f fonts/devanagari/NotoSerifDevanagari-Regular.ttf -s deva --features pres -i '30,54'
# output omitted
Минимальная поддерживаемая версия ржавчины: 1.70.0
Для создания инструментов убедитесь, что у вас установлена ржавчина.
cargo build --releasecargo install --path . Есть пакет AUR для allsorts-tools :
git clone https://aur.archlinux.org/allsorts-tools.git
cd allsorts-tools
makepkg -si
Взносы приветствуются, пожалуйста, обратитесь к Руководству AllSorts, чтобы получить более подробную информацию.
Мы стремимся поддерживать стандарты сообщества Rust:
Мы стремимся обеспечить дружескую, безопасную и гостеприимную среду для всех, независимо от пола, сексуальной ориентации, инвалидности, этнической принадлежности, религии или аналогичной личной характеристики.
Мы следуем кодексу поведения ржавчины.
Allsorts и эти инструменты распределены в соответствии с условиями лицензии Apache (версия 2.0).
Смотрите лицензию для деталей.