Этот каталог содержит инструменты для контекстуальной контекстуальной расстояния наполовину половины ширины для японской/китайской/корейской типографии.
Эта функция позволяет типографику , описанную в JLREQ 3.1.2 позиционировании знаков препинания (запятые, периоды и кронштейны) Основной способ размещения знаков препинания, скобок и т. Д. Для японского и CLREQ 3.1.6.1. Ниже приведена фигура от JLREQ:
Раннее обсуждение в статье в блоге Adobe CJK и части II может помочь лучше понять эту функцию.
Вы можете найти образец текста здесь. Эта образец использует шрифты, построенные с этим инструментом.
OpenType определяет 4 тега функций для шрифтов, чтобы поддержать эту функцию:
chws » и тег функции « vchw » в качестве аналога вертикального потока.halt » и тег функции « vhal » в качестве аналога вертикального потока.Все 4 функции нужны, так как каждая функция применяется в разных контекстах.
Этот пакет добавляет эти функции к любым шрифтам OpenType/TrueType, когда они отсутствуют, путем вычисления таблиц функций из таких данных, как точки кода Unicode и очертания Glyph.
Вы можете установить этот инструмент на PIP или PIPX.
pipx install east-asian-spacingpip install east-asian-spacingИмейте в виду, что, если вы устанавливаете с PIP в глобальной среде, его зависимости могут вызвать конфликты с другими пакетами. Если все, что вам нужно, это инструмент командной строки, PIPX может установить его глобально, при этом изолировать его в виртуальной среде.
Пожалуйста, также смотрите раздел «Установки пакета», если вы хотите использовать этот пакет из своей программы Python, или в разделе «Клон и установка», если вы хотите диагностировать шрифты или код более подробно.
В следующем примере добавляет функцию к input-font-file и сохраняет ее в каталоге build .
east-asian-spacing -o build input-font-fileВ разделе тестирования есть ресурсы для проверки различий и тестирования шрифтов, которые вы создали.
Для других вариантов и использования опция --help может показать полный список параметров.
Алгоритм применим к любым шрифтам CJK. Следующие шрифты тестируются на каждом выпуске:
Шрифты CJK на fonts.google.com тестируются в пакете CHWS_TOOL. Несколько других шрифтов также были проверены во время разработки.
При добавлении функций в ваши шрифты тест HTML - это удобный инструмент для проверки результатов. Если вы столкнетесь с какими -либо проблемами со своими шрифтами, сообщите о проблемах.
Пожалуйста, также ознакомьтесь с расширенными темами ниже, если вы хотите настроить поведение по умолчанию для ваших шрифтов.
Когда входной файл шрифта представляет собой коллекцию TrueType (TTC), этот инструмент по умолчанию добавляет эту функцию ко всем шрифтам в TTC.
Если вы хотите добавить эту функцию только к некоторым шрифтам в TTC, вы можете указать список индексов шрифтов, разделяемый запятыми. Следующий пример добавляет функцию к индексу Font 0 и 1, но не к другим шрифтам в TTC.
east-asian-spacing --index=0,1 input-font-file.ttcВы можете установить этот пакет, используя ваши любимые инструменты управления пакетами, такие как поэзия, Pipenv или PIP.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacingПожалуйста, также посмотрите раздел «Клон и установить», если вы хотите диагностировать шрифты или код более подробно.
Следующий пример создает шрифт с функциями в каталоге « build », если функции применимы.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )Тестовая HTML -страница доступна для проверки поведения шрифтов в браузерах.
Он может проверить шрифты, которые вы построили на месте.
fonts » в начале блока <script> .Обратите внимание, что если вы хотите протестировать TTC (коллекция TrueType), но ваш браузер может загрузить только первый шрифт в TTC, следующая команда извлекает все шрифты OpenType (.otf или .ttf) из файла шрифта Collection Opentype (.ttc или .otc).
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc Подкоманда dump может создавать различные типы текстовых файлов дампы.
Самое простое использование - показать список таблиц. Это похоже на опцию « -l » TTX, за исключением коллекций TrueType (TTC), этот инструмент может показать таблицы всех шрифтов в TTC, а также разделяются таблицы с какими шрифтами.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc Параметр « -o » создает файлы списка таблиц в указанном каталоге:
east-asian-spacing dump -o build/dump build/ * .ttc Параметр « --ttx » создает текстовые дампы TTX всех таблиц в дополнение к файлам списка таблиц. Это похоже на опцию « -s » TTX, за исключением того, что он может сбрасывать все таблицы в коллекции TrueType (TTC).
east-asian-spacing dump -o build/dump --ttx build/ * .ttc Подкоманда dump также может создавать файлы дамп двух файлов шрифтов и сравнить их. Это помогает визуализировать различия в двух шрифтах, в частности, файлов шрифтов, которые вы создали из исходных файлов шрифтов.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc Приведенный выше пример вычисляет различия между source_fonts_dir/NotoSansCJK.ttc и build/NotoSansCJK.ttc , создав следующие 3 набора файлов:
build/NotoSansCJK.ttc в каталоге build/diff/dump .source_fonts_dir/NotoSansCJK.ttc в каталоге build/diff/src .build/diff .Примечание. Опция «
--diff» более эффективна, чем выполнение всего этого, особенно для больших шрифтов, потому что он пропускает создание TTX таблиц, когда они являются бинарными равными.
Вариант -o не является обязательным. Когда это опущено, подкоманда выводит DIFF в stdout .
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | lessЧтобы создать файлы DIFF для всех созданных вами шрифтов, вы можете подготовить выход, как показано ниже:
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - Параметр « -p » напечатает входные и выходные пути шрифта в stdout в формате, разделенных TAB. Подкоманда dump с аргументом « - » считывает этот список из stdin и создает свои текстовые дамп и файлы Diff в каталоге build/diff . В этом случае опция « --diff » не является необходимой, потому что пути шрифта источника предоставляются из трубы.
После того, как вы просмотрите файлы DIFF, созданные выше, или протестированные шрифты, которые вы создаете, вы можете скопировать файлы DIFF в каталог references . Затем, когда вы хотите построить их снова, например, когда шрифты обновляются или когда изменяется среда сборки, вы можете сравнить файлы DIFF с эталонными файлами, чтобы узнать, как новые шрифты отличаются от предыдущих сборков.
С опцией « -r » подкоманда dump создает файлы DIFF между двумя файлами шрифтов и сравнивает файлы DIFF с некогда рецензируемыми файлами DIFF в каталоге references .
Типичное использование этой опции - как ниже:
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - Пожалуйста, смотрите раздел DIFF для опции « -p » и трубопровода.
Сценарии build*.sh включают этот вариант.
Тестирование формы формы формирует строки и проверяет, применяется ли контекстуальное расстояние или нет.
Параметр --test устанавливает уровень тестирования формы.
east-asian-spacing --test 2 -v -o build input-font-fileУровень 0 отключает тестирование формы. Уровень 1 запускает тест на дым, используя небольшой набор образцов. Уровень 2 выполняет тестирование формы с использованием большого набора тестовых строк. Значение по умолчанию составляет 1.
Алгоритм является языковым агностиком и применим к любым шрифтам CJK.
Этот пакет определяет пары глифа для регулировки пространств с помощью набора точек кода Unicode, определенных в классе Config .
Затем для каждой пары он проверяет, применимы ли пространства путем изучения контура Glyph и вычислительных ящиков с глифами. Например, когда глифы очень толстые, глифы могут не иметь достаточного количества внутренних расстояний, а применение пространств может привести к столкновению глифов. Этот пакет автоматически обнаруживает такие случаи и избегает применения пространств к таким парам.
Это автоматическое поведение может быть отключено путем указания языков ниже или установив Config.use_ink_bounds для False в вашей программе Python.
Существуют конвенции для конкретных языков, где в глифных пространствах помещаются символы пунктуации. Например, U+3002 Идеографическая полная остановка должна быть помещена в левый уголок глифного пространства на японском языке, в то время как ее следует размещать в центре в традиционном китайском языке.
По умолчанию этот пакет определяет такие отличия от контурах Glyph, как описано в разделе алгоритма выше. Но вы можете указать тег Language System Opentype, чтобы этот пакет следовал на языковой конвенции вместо использования схем Glyph. В следующем примере отключает автоматическое определение с помощью Глифа, и указывает, что шрифт является японским шрифтом.
east-asian-spacing --language=JAN input-font-fileДля коллекций TrueType (TTC) опция языка применима ко всем шрифтам в TTC по умолчанию. Если вы хотите указать разные языки на каждый шрифт в TTC, он принимает список, разделенный запятыми. В следующем примере указывается корейский индекс 1, упрощенный китайский для индекса 2 и автоматический для всех других шрифтов.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc Вы можете объединить эти два варианта. Следующий пример применяется JAN к индексу 2 и ZHS к индексу 3. Другие шрифты в TTC не изменяются.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttcВозможно, вы захотите отрегулировать, какая часть характера должна регулировать пространства, в таких случаях, как когда ваши шрифты, возможно, не ожидали пространств для некоторых персонажей. В настоящее время это возможно только из программ Python.
Для простого примера см. Функцию test_config в tests/config_test.py .
Проект CHWS_TOOL является фактическим примером настройки этого пакета.
В этом пакете используется двигатель формирования Harfbuzz с использованием привязки Cython uharfbuzz.
Если вы хотите использовать определенную сборку Harfbuzz, этот инструмент может вызовать внешний инструмент командной строки HB-формы вместо этого, установив переменную среды SHAPER .
export SHAPER=hb-shapeДля установки HB-форма для Linux:
sudo apt get libharfbuzz-binЧтобы установить HB-форма для Mac с HomeBrew:
brew install harfbuzzИнструкции для других платформ могут быть доступны по адресу command-not-found.com.
Если вам может потребоваться диагностировать шрифты или код, рекомендуется клонирование и установка с использованием поэзии:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shellЭтот метод имеет следующие преимущества:
-e " опция "или setuptools " режим разработки ").Вы также можете установить клонированный каталог с помощью PIP, если вы предпочитаете:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .Этот репозиторий содержит модульные тесты с использованием Pytest. Модульные тесты охватывают основные функции, включая тесты формы, добавление этой функции в тестовый шрифт и сравнение ее со ссылками.
Если вы следили за разделом клона и установки, инструменты для модульного тестирования уже установлены. Прежде чем запустить их в первый раз, вам нужно скачать шрифты для тестирования:
./tests/download_fonts.pyЗатем вы можете запустить тесты:
pytestили запустите их с несколькими версиями Python с помощью Tox:
tox В каталоге scripts есть несколько небольших сценариев оболочки.
Сценарии build*.sh Последования являются примерами использования.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v