Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 5 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago
Петербург! ☝️
Очень рад тому, что тема стека технологий цифрового шрифта становится популярнее! И что такие читаемые журналы, как type.today, сообщают о важных текстах в этой области. Но хочется чуть-чуть уточнить, да простят меня коллеги.
Текст Бехдада (о котором я упоминал тут, тут и тут) важен, потому что это подробный рассказ прямым участником обо всех открытых (и почти всех проприетарных) технологиях цифрового текста и набора. А также о том, как цифровой текст существует последние 15 лет с точки зрения человека, который положил 25 лет жизни на то, чтобы мы с вами могли читать, в том числе, вот эти буквы у вас на экране. Он довольно обзорный в деталях каждого кирпичика стека, но с антропологической хваткой перечисляет каждый такой кирпич, заложенный в здание современного бытования текста.
Его рассказ начинается примерно там, где я заканчивал свою лекцию о шрифтовых технологиях на курсе типографики у Евгения Григорьева, продолжая даже не столько летопись, сколько текущее положение дел, как оно есть. Когда-то по интернетам ходил текст с названием «Рендеринг текста вас ненавидит», пугающий сложностью описываемых процессов. Состояние рендеринга текста 2024 Бехдада — это буквально state-of-the-art области от человека, по-настоящему любящего свой предмет.
А ещё мне очень нравится вот этот фрагмент мини-интервью с ним на TYPO Labs 2017, взятого по поводу только появившихся тогда вариативных шрифтов, в котором он рассказывает, как его плюшевая каспийская нерпа Гуфи помогает ему справляться со сложностью.
В шрифтовой файл поместили нейросеть!
Точнее, одну из версий LLaMA на 15 миллионов параметров (довольно небольшую), дообученную на генерацию сказочных историй.
Устройство экспериментальное, но довольно простое. Оно основано на том, что любой шрифт перед тем, как показать на экране, надо «отрендерить»: посчитать лигатуры, применить все OpenType правила и вывести конечное растровое изображение. Этот процесс называется шейпинг. Распространённый шейпер HarfBuzz имеет модификацию, позволяющую выполнить произвольный WASM-код непосредственно во время шейпинга (то есть, попросту, во время набора текста). [ Для справки: WASM, или веб-ассемблер — это способ выполнить эффективный низкоуровневый код, запущенный, например, прямо в браузере. В WASM можно скомпилировать почти любой компилируемый язык, такой как C++ или Rust.]
Тут-то и появляется встроенный в шрифт движок, передающий написанное как промпт в модель (которая тоже находится в самом шрифтовом файле), и формирующий ответ как сложную лигатуру. Управление простое — запуск захардкоден на «Once upon a time» и 70 восклицательных знаков. Это запускает движок, который убирает 70 набранных «!», а каждый последующий меняет на предложение от нейронки.
Подробнее и демонстрация: https://fuglede.github.io/llama.ttf/
Это, конечно, кликбейт (впрочем, слишком нёрдовский, чтобы сработать). А вот действительно интересной технологией тут является та самая реализация шейпера HarfBuzz с возможностью встраивания WASM-инструкций. Она даёт возможность, по сути, вмешиваться в сам процесс формирования вывода (то есть того, как должен работать набор вашим шрифтом) с помощью почти любого языка программирования, а не только определять OpenType правила на очень ограниченном в возможностях микроязыке OpenType фич (впрочем, ~~обманутые рекламой~~ пользователи Glyphs.app даже этого обычно не делают). Собственно, для выхода за ограничения возможностей GSUB и GPOS таблиц wasm-harfbuzz и появился, как реакция на выступление Джона Хадсона о невозможности набора на некоторых языках исключительно существующими шрифтовыми технологиями.
Хадсон даже заявил, что, на его взгляд, OpenType основан на неподходящей парадигме (на идее позиционирования прямоугольников). И это, кстати, в 2014 году! Что ж, в 2023 году Behdad Esfahbod приступил к реализации экспериментальной версии шейпера (напомню, что Бехдад — это человек, на котором держится шейпинг почти всего цифрового мира, от Chrome до приложений Adobe) и вот мы уже некоторое время как имеем возможность создавать действительно программируемые шрифты, хоть и «в песочнице». Нейронка внутри — пока что маленькая (и немного желатиновая) вишенка, появившаяся буквально 3 дня назад. Ещё есть тетрис внутри шрифтового файла и анимация из 6000 кадров (репозиторий с кодом и слайдами, и конкретно шрифтовой файл тетриса, на случай если вы захотите поиграть). Конечно, есть и более практичные примеры, среди которых, например, решение проблемы арабских языков (о которой говорил Джон Хадсон), первый полноценный набор египетских иероглифов, а также шрифт, включающий в себя другой шрифт (и расставляющий по второму вариативные точечки) и КАЛЬКУЛЯТОР. И настоящая вишенка — параметрический кернинг прямо в процессе набора (на основе bubblekern от Тоши Омагари)! Всё это здесь, включая шрифтовые файлы.
Current state. В данный момент wasm-harfbuzz не поставляется в стандартные сборки. Из полностью готовых вариантов есть, например, специальный билд FontGoggles (к сожалению, только под mac на arm-архитектуре), в котором можно поиграться с шрифтовыми файлами. Как альтернатива — самостоятельно собрать HarfBuzz из исходников с нужными флагами (подробности есть на странице llama.ttf)
Также авторы призывают экспериментировать с технологией, но уточняют, что вряд ли она станет повсеместной в ближайшие несколько лет (как было, например, с многомерной вариативностью, которая, тем не менее, постепенно разворачивается в принятые стандарты).
Картинок не будет.
Бустрофедон шагает туда-сюда!
(а теперь ещё и перпендикулярно)
Подробности и адрес можно узнать в личке @mylittleposter
Моя мастерская в замечательном месте всё. Пространства F5 больше не будет.
Приходите с ним попрощаться, если для вас оно тоже что-то значило. Я буду там сегодня и завтра.
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 5 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago