Релиз Typst 0.15 подчинил верстке оси вариативных шрифтов и чистый MathML

Хвост буквы «р» больше не должен пробивать нижнюю границу ячейки в плотной таблице. В коде достаточно выставить одно значение для оси YTDE, и выносной элемент аккуратно поджимается ровно на столько пунктов, сколько требует сетка. Июньский релиз Typst 0.15 превратил работу с вариативной типографикой в штатную инженерную операцию: система верстки, написанная на Rust под лицензией Apache-2.0, научилась напрямую управлять скрытыми параметрами шрифтовых файлов.
До сих пор верстальщики в кодовых средах смотрели на вариативные гарнитуры с завистью к веб-разработчикам. Теперь вариативность стала частью базового синтаксиса через параметр variations внутри функции text(). Typst берет один файл и позволяет вытягивать из него любые промежуточные состояния без подгрузки десятка отдельных начертаний. Разработчики проверили механику на двух показательных примерах с непрерывными и дискретными осями. Первый — тяжеловес Roboto Flex с его 13 осями, где наряду со стандартными оптическими размерами можно регулировать длину нисходящих элементов под табличные сетки. Второй — экспериментальный Zycon: гарнитура из 17 графических символов с шестью осями, меняющими фазы луны и параметры графических анимаций. По сути, иконки и микроиллюстрации теперь трансформируются прямо в строке набора.

Формулы без скриптов и пакетный экспорт
Второй тектонический сдвиг версии 0.15 произошел в веб-выводе. Typst давно заглядывается на территорию браузеров, но раньше математический рендеринг упирался либо в растровые картинки, либо в подключение тяжелых скриптов. В свежей сборке экспериментальный генератор HTML научился собирать формулы на чистом MathML. Браузер рисует математику нативно, без костылей вроде MathJax и без задержек отрисовки. Функция пока спрятана за флагом командной строки --features html, но вектор понятен: верстка научных и технических лонгридов уходит от громоздкого стека.
С этим обновлением тесно связана функция пакетного вывода, получившая название Bundle. Она активируется связкой флагов --features html,bundle --format bundle и снимает головную боль синхронизации форматов. Из единого исходника проект компилирует сразу целую экосистему документов:
- многостраничный веб-сайт с перекрестной навигацией;
- сопутствующий сверстанный PDF-документ с общими текстовыми фрагментами;
- комплект из слайдов для публичного доклада и академического препринта с едиными переменными.
При этом внутри связки корректно работают как ссылки между разными документами пакета, так и внутренняя навигация по разделам. Исправили опечатку в исходном файле — правка разошлась и по сайту, и по презентации, и по печатному буклету.
Академическая структура и полиграфический контроль
Для сложных многостраничных изданий появилась поддержка нескольких библиографических списков внутри одного издания. Функция bibliography() принимает файлы баз данных вроде .bib и теперь позволяет закреплять отдельный список литературы за каждой главой. Если в вызове указать параметр group: none, нумерация цитирований внутри каждого нового раздела обнулится и начнется с единицы. Авторам академических сборников больше не придется вручную делить базу на куски через скрипты автоматизации.
Требования к качеству финального файла тоже ужесточили. Движок получил механизм одновременной валидации нескольких стандартов PDF — как архивных, так и стандартов доступности для людей с ограничениями восприятия. Компилятор отслеживает несовместимые связки и сразу выдает предупреждения либо блокирует сборку. К примеру, если верстальщик затребует спецификацию PDF 1.7 для архива PDF/A-1b, система напомнит, что этот архивный стандарт жестко привязан к версии 1.4. При включении стандарта доступности UA-1 движок откажется компилировать макет, пока в коде явно не пропишут метаданные документа через директиву set document(title: [...]).

В число менее громких, но практичных дополнений вошли:
- прямая поддержка плашечных цветов (spot colors), необходимая для точной полиграфии и шелкографии;
- встроенные методы
mapиfilterв собственном языке сценариев, упрощающие обработку данных; - подробные диагностические отчеты о сбоях сходимости верстки (convergence diagnostics), когда взаимное расположение блоков зацикливает расчет страницы.
Масштаб проделанной работы подчеркивает документация: официальный PDF-мануал к версии 0.15 разросся до 26 МБ. Вокруг проекта сложилось живое сообщество — на GitHub зафиксировано 460 контрибьюторов, а центральный каталог Typst Universe перевалил за 1500 пользовательских пакетов и шаблонов. При этом авторы сохраняют жесткую политику контрибьютинга: код, сгенерированный языковыми моделями, принципиально отклоняют при ревью пулл-реквестов. Развитием системы руководит коммерческая компания, поэтому баланс между опенсорсной гибкостью и коммерческой стабильностью выдерживается строго.
Для арт-директора или дизайнера изданий Typst 0.15 выглядит как серьезный повод перестать воспринимать кодовую верстку как удел сугубо математических препринтов. Возможность крутить оси вариативного гротеска из скрипта и тут же генерировать согласованный сайт и печатный релиз возвращает типографике ту пластичность, которую мы привыкли видеть только в графических редакторах. Программируемая верстка наконец заговорила на языке современной формы.


