Класс тестирования дизайна шрифта для Sile.
FontProte позволяет создавать тестовые документы PDF -шрифта, не вступая в неприязнь с Indesign или другими программами ручного макета страниц или обработки текста. Вы можете применить один из предварительно разработанных тестовых документов (для добавления позже) или использовать FontPropt для создания собственного тестового документа Font.
Обратите внимание, что FontPropet-это очень работающая работа, так что есть много, что еще не работает или не работает очень элегантно. Используйте свой собственный риск и помогите нам сделать его лучше.
FontProte требует Shile Sypeetter. Вам нужно будет установить Sile в соответствии с инструкциями этого пакета.
Обратите внимание, что Сайл быстро меняется. Текущий класс был разработан и протестирован с выпуском 0,14,0 или новым. Для поддержки более старых версий Sile см. Старые версии Fontproof.
Установка Fontroof в первую очередь выполняется через Rocks Lua:
$ luarocks install fontproofРабочая установка Sile v0.14.0 или более новой предполагается, но не проверена во время установки.
Вы также можете установить из -за ручной работы из справочного каталога:
$ luarocks make Запуск Font Propone выполняется с помощью собственного CLI:
$ fontproof --help
Usage: fontproof [OPTIONS] [--] [SILEARGS-1 [SILEARGS-2 [...]]]
ARGUMENTS:
SILEARGS All remaining args are passed directly to SILE
(optional)
OPTIONS:
-F, --family=VALUE Specify the font to be tested as a family name
(ignored if --filename used)
-f, --filename=VALUE Specify the font to be tested as a path to a
font file
-o, --output=FILE output file name
-p, --features=VALUE Specify the test font features
-s, --size=VALUE Specify the test font size
-S, --style=VALUE Specify the test font style (ignored if
--filename used)
-t, --template=VALUE Use the bundled template by name (full,
gutenberg, test, unichar);
-w, --weight=VALUE Specify the test font weight (ignored if
--filename used)
-h, --help display this help, then exit
-v, --version display version information, then exit Четыре стартовых шаблона предоставляются из коробки. Чтобы адаптировать их, лучшее, что можно сделать, это скопировать то, что самое похожее на то, где вы планируете отправиться и изменить его самостоятельно. Основная особенность шаблона заключается в том, что он использует класс Fontprouse . Использование специальных команд, которые она определяет, находится на необходимости.
Например:
$ cp /usr/local/share/lua/ < version > /fontproof/templates/full.sil mytemplate.sil
$ fontproof -- mytemplate.silНа этом этапе есть один основной шаблон - fpfull.sil - но больше будет следовать. Этот шаблон покажет вам практически все, что может сделать FontPrower. Сам Сайл способен далеко, далеко, больше, и вы очень рады поиграть с ним.
В качестве альтернативного метода использования Font Probrety, изображения Docker доступны в Docker Hub или в реестре контейнеров Github с Sile и Fontprot Class, выпеченным и готовым для использования. Выпущенные версии помечены для совпадения (например, v2.0.5 ), последний выпуск будет отмечен latest , а также будет доступен master -тег с самой свежей сборкой разработки. Чтобы быть полезным, вам нужно сообщить команде Docker Run способ достичь ваших исходных документов (и, следовательно, также дать ей место для написания вывода), а также сказать ему, кто вы на хост -машине, чтобы вывод, сгенерированный внутри контейнера, может быть создан с ожидаемыми свойствами владения. Вам может быть легче бегать со псевдонимом, как это:
$ alias fontproof= ' docker run -it --volume "$(pwd):/data" --user "$(id -u):$(id -g)" siletypesetter/fontproof:latest '
$ fontproof proofs.sil Любая удаленная система CI, которая может использовать изображения Docker в качестве бегунов заданий, может быть настроена для запуска заданий для FontProve. Кроме того, на рынке доступно готовое действие GitHub:
name : FontProof
on : [push, pull_request]
jobs :
fontproof :
runs-on : ubuntu-latest
name : FontProof
steps :
- name : Checkout
uses : actions/checkout@v4
- name : FontProof
uses : sile-typesetter/fontproof@latest
with :
args : proofs.sil Добавьте в свой репозиторий в качестве .github/workflows/fontproof.yml . Этот рабочий процесс предполагает, fontproof.pdf ваш проект имеет исходное файловое proofs.sil . Обратите внимание, что комментарии в разделе о Docker относительно Tagged версии, кроме latest применяются одинаково здесь, но GitHub Actions использует сепаратор @ вместо Docker's : .
Каждый шаблон может содержать полный выбор тестов. Каждый тест указан с использованием команды в этом общем формате:
commandname[set of parameters]{text to be typeset}
Некоторые тесты могут иметь только параметры, или только текст, или ни один, как в этом примере, который изначально поддерживается в самом SILE:
pangrams
Более подробную информацию о выполнении команд в Sile можно найти в руководстве SILE.
По умолчанию, работающая головка перечисляет имя файла, шрифт (семья или имя файла), дату и время. Содержание не настраивается (в настоящее время), но вы можете установить шрифт и размер с помощью команды setRunHeadStyle . Обратите внимание, что это не имеет отношения к тестовому шрифту.
%setRunHeadStyle[filename="Example-Bold.ttf", size="12pt"]
Чтобы добавить раздел и заголовки подраздела:
section{Heading text}
subsection{Heading text}
Стиль их в настоящее время не настраивается, но вы можете вручную настроить их для всех документов с шрифтами, изменяя настройки в классах/Fontprote.lua .
Поддерживаются следующие виды тестов и проиллюстрированы в fpfull.sil :
Подробная информация об командах, используемых для указания их ниже.
Fontprote Copyright © 2016 SIL International и лицензирован по лицензии MIT. Кстати - несмотря на сходство названия, сама SILE не разработан SIL International, хотя нам очень нравится проект. Вы можете внести свой вклад как в шрифт, так и Sile.
Эти команды в настоящее время поддерживаются.
Это основная команда Fontprouse, и может использоваться для установления как простых тестовых текстов, так и водопадов. Дополнительные параметры включают шрифт (по семейству или имени файла) и размер (ы). Вы также можете установить здесь тестовый заголовок, а не использовать отдельную команду section .
proof{This is basic proof text using the test font}
proof[family="Gentium Plus",heading=A basic family test]{This is basic text with a font defined by family}
proof[size="10pt",filename="Example-Light.ttf",heading=A basic filename test]{This is another basic text with common parameters}
proof[size="10pt,11pt,12pt,16pt"]{This is basic proof text in a range of sizes}
proof[size="10,11,12,13,20"]{This is basic proof text in a range of sizes with numbers only}
proof[features="Ligatures=Rare, Ligatures=Discretionary"]{This is a proof with rare ligatures turned on}
proof[features="+dlig,+hlig"]{This is a proof with features manipulated manually}
proof[language="grk",direction = "rtl"]{Here are some options which are passed on to the font command}
proof[color="green"]{Here are some options which are passed on to the color command}
proof[shapers="ot,fallback"]{Here we pass a list of subshapers to Harfbuzz}
Это создает несколько копий текста с различными символами, заменяемыми в ключевых местах. Иногда их называют «тестированием кадров». Традиционно общим испытанием этого типа был тест «Hobonop». «Hobonop» для букв ABCD будет выглядеть как:
haoabaoanaoap hbobbbobnbobp hcocbcocncocp hdodbdodndodp
Команда для создания этого будет:
pattern[chars="@",reps="abcd"]{h@o@b@o@n@o@p}
Это определяет символ заполнителя, затем набор букв, используемый для его замены, затем текстовый шаблон, содержащий заполнителя (ы).
Вы также можете использовать несколько заполнителей для создания всех комбинаций, например:
ooaxoo oobxoo oocxoo
OOAYOO OOBYOO OOCYOO
Команда для этого будет: (обязательно следуйте синтаксису этого точно, или вы можете получить очень запутанные ошибки!)
pattern[chars="@,#",reps="abc,xy"]{oo@#oo}
Есть некоторые персонажи, которые являются особенными для Sile и Lua и не должны использоваться в качестве Chars . (Список предлагаемых безопасных, здесь было бы хорошим дополнением!) Также плохая идея использовать персонажа, который находится в повторениях .
Есть еще один необязательный параметр в команде pattern :
Это легче продемонстрировать это, чем объяснить. Сначала отформатированный пример, затем команда для его создания:
ooaxoo oobxoo oocxoo
OOAYOO OOBYOO OOCYOO
pattern[chars="@,#",reps="abc,xy",format="table"]{oo@#oo}
ooaxoo
Ообксу
oocxoo
Ооаюоо
oobyoo
Oocyoo
pattern[chars="@,#",reps="abc,xy",format="list"]{oo@#oo}
ooaxoo oobxoo oocxoo ooayoo oobyoo oocyoo
pattern[chars="@,#",reps="abc,xy",format="para"]{oo@#oo}
Это круто! Скажите, что у вас есть группа букв, которые вы хотите использовать в нескольких тестах с шаблонами, но не хотите определять их снова и снова. Вы можете определить их как группу шаблонов с определенным именем. Обратите внимание, что вы должны определить эти группы в своем документе, прежде чем ссылаться на них. Также обратите внимание, что эта команда на самом деле ничего не производит на странице. Это полезно только для последующих команд pattern .
patterngroup[name="vowels"]{aeiou}
Чтобы ссылаться на это в префиксе команды pattern с именем группы с «Group_» и используйте в параметре reps . Например:
pattern[chars="@,#",reps="group_vowels,xy",format="table"]{oo@#oo}
Есть также несколько предопределенных групп, как указано ниже. Вы также можете определить свои собственные постоянные группы в пакетах/fontprousegroups.lua .
| Название группы | Описание |
|---|---|
| Group_az | Основной строчный алфавит |
| Group_az | Основной верхний алфавит |
| Group_combdiacs | Основное сочетание диакритики |
| Group_09 | Основные цифры |
| Group_punct | Основная пунктуация |
FontProte включает в себя ряд встроенных тестовых текстов. Установите содержимое команды proof или pattern для любого из следующих имен предусмотренных заданий text_xxxx . Вы также можете добавить свои собственные тексты в пакетах/fontprooftexts.lua .
| Содержание | Описание |
|---|---|
| text_az | Основной строчный алфавит |
| text_az | Основной верхний алфавит |
| text_combdiacs | Основное сочетание диакритики |
| text_spacingdiacs | Основная расстояние диаклитики |
| Text_09 | Основные цифры |
| text_numsym | цифры и связанные с ними символы |
| text_nummath | Математические символы |
| Text_symbols | Общие символы |
| text_punct | Основная пунктуация |
| text_pangram | простой Панграм |
| Text_verne | выдержка из 20 000 лиг под морем |
| text_vernecaps | Версия верхней регистрации |
| text_reveng | Выдержка из Откровения 7 (английский) |
| text_revfin | отрывок из Откровения 7 (финский) |
| text_revger | Отрывок из Откровения 7 (немецкий) |
| text_revdut | Выдержка из Откровения 7 (голландский) |
| text_revind | отрывок из Откровения 7 (Индонезия) |
| text_revswa | отрывок из Откровения 7 (суахили) |
| text_arrowroot | Традиционный текст тестирования шрифтов |
| text_capslower | Латинские столицы против строчных ключевых букв /o и /n |
| Text_bringhurst | Тест Кернинга из «Элементов типографского стиля» Trugerhurst |
| text_allkernpairs | Текст, содержащий все комбинации латинских букв верхнего и нижнего чехла |
| text_jafkerns | Тест Кернинга из текстового генератора еще одного литейного завода |
Это использует словари для производства мусора, состоящего из реальных слов, похожих на lorem . Однако слова будут содержать буквы только из набора, который вы поставляете:
adhesion[characters=hamburgefonsiv]
Необязательные аргументы - это words , количество слов (дефолт до 120) и dict , путь словарного файла. Класс смотрит в /usr/share/dict/words и /usr/dict/words если опция dict не предоставлена. Слова выбираются из файла словаря, если они содержат только указанные символы.
Это загружает и набрает текст из Project Gutenberg.
gutenberg[id=100] % The complete works of Shakespeare
Набранные некоторые цифры PI:
pi[digits=500]
Это создает простую невозмещенную таблицу, которая будет показывать ряд Unicode и любых глифов, которые представляют USV в этом диапазоне.
Некоторые примеры:
unicharchart[type="all",columns="12",rows="16"]
Это создает таблицу, которая показывает каждый кодированный символ в шрифте, отформатированный как таблица с увеличением USV, спускающихся по столбцу, 16 ChARS на столбец, с максимум 12 столбцов, прежде чем разбить новую таблицу. Это очень похоже на таблицы в стандартных диаграммах кода Unicode и может быть настройками по умолчанию для простого unicharchart .
unicharchart[type="range",start="AA80",end="AADF"]
Это производит то же самое, за исключением того, что показывает только заданный диапазон USV.
Они работают в SILE даже без Font Proprose, хотя вам нужно загрузить их с помощью script[src=packages/specimen] .
Это создает набор предопределенных паграм.
Это производит текст мусора Lorem Ipsum , с указанным количеством слов.
Это создает красиво расположенную таблицу всех глифов в шрифте.
Вот некоторые команды, которые мы надеемся когда -нибудь поддержать, с предлагаемыми форматами команд. Некоторые могут никогда не быть реализованы. Предложения приветствуются!
Мы хотели бы увидеть еще более потенциальные параметры для proof :
proof[
size = "10, 11/13, 12/16",
columns = 3,
lines = 12
]{Text}
Оооооо!