Текст в Lottie представляет собой отдельный тип слоя, который сериализуется из After Effects и сохраняется в JSON-структуре анимации. В отличие от векторных shapes, текстовые слои не являются геометрией по умолчанию — они описываются как набор параметров, которые должны быть интерпретированы движком рендеринга (например, lottie-web).
Ключевое поле текстового слоя — t, внутри которого
содержится описание текстового содержимого и его визуальных
параметров:
t.d.k — ключевые кадры текстового содержимогоt.d.k[].s.t — строка текстаt.d.k[].s.f — шрифтt.d.k[].s.s — размер шрифтаt.d.k[].s.j — выравниваниеt.d.k[].s.fc — цвет заливки текстаt.d.k[].s.sc — цвет обводкиt.d.k[].s.sw — толщина обводкиt.d.k[].s.lh — межстрочный интервалt.d.k[].s.ls — межбуквенный интервалДополнительно текстовый слой содержит трансформации
(ks), маски, эффекты и привязку к композиции, как и любой
другой слой.
Шрифты в Lottie не являются бинарными файлами (woff/ttf), а
описываются через метаданные в секции fonts:
fonts.list[] — список шрифтовfonts.list[].fName — имя шрифтаfonts.list[].fFamily — семействоfonts.list[].fStyle — стиль (Regular, Bold и т.д.)fonts.list[].ascent — метрика подъёмаfonts.list[].fPath — путь (в некоторых
экспортерах)fonts.list[].origin — источник шрифтаLottie Web не загружает шрифты автоматически. Он использует либо системные шрифты браузера, либо заранее подключённые веб-шрифты, сопоставленные по имени.
Библиотека lottie-web поддерживает несколько стратегий рендеринга:
В контексте текста различия критичны.
SVG renderer преобразует текст в <text> элементы
SVG, если шрифт доступен в системе или в CSS. Canvas renderer чаще всего
конвертирует текст в пути (paths), особенно если требуется точное
соответствие макету After Effects.
DOM renderer опирается на CSS-рендеринг и системные шрифты, что делает его наиболее зависимым от окружения.
Основная проблема заключается в том, что Lottie не гарантирует наличие исходного шрифта. Поэтому совпадение визуального результата зависит от механизма font matching браузера.
Если шрифт, указанный в JSON, отсутствует в системе или не загружен через CSS, происходит fallback:
Это приводит к критическим визуальным расхождениям, особенно в анимациях, где текст участвует в трансформациях, масках или path morphing.
Типичный сценарий:
lottie-web позволяет переопределять обработку шрифтов через
FontManager.
Внутренний механизм:
fontManager.addChars() — добавление символовfontManager.setFonts() — регистрация шрифтовfontManager.loadWebFont() — подключение
веб-шрифтовФактически это слой абстракции между JSON Lottie и реальными font-face в браузере.
Пример логики сопоставления:
fFamily)Lottie может представлять текст не как строку, а как набор глифов. Это особенно важно при экспорте через Bodymovin с включённой опцией “Glyphs”.
В этом случае структура включает:
chars — массив символовchars[].ch — символchars[].data — векторное представление глифаchars[].w — ширина символаТакой подход полностью избавляет от зависимости от шрифтов в браузере, так как текст превращается в векторные формы.
Минусом является увеличение размера JSON и невозможность редактирования текста на лету.
Текстовые слои поддерживают стандартные трансформации:
position)scale)rotation)anchorPoint)Однако важной особенностью является то, что трансформации могут применяться как к слою целиком, так и к отдельным символам.
При включённых text animators из After Effects:
t.aLottie поддерживает результат экспорта text animators из After Effects, включая:
В JSON это выражается через блок:
t.a — массив аниматоров текстаt.a[].s — параметры селектораt.a[].a — анимационные свойстваТипичные анимируемые параметры:
Каждый символ текста рассматривается как независимая сущность, что позволяет имитировать эффекты типа typewriter, wave, scatter.
Ключевые текстовые параметры напрямую влияют на геометрию композиции:
ls (letterSpacing) — расстояние между символамиlh (lineHeight) — высота строкиj (justification) — выравниваниеЭти параметры пересчитываются на этапе рендеринга, а не заранее, что означает динамическое изменение layout при каждом кадре анимации.
Особенно критично это при анимации ls, когда текст
“разъезжается” или “сжимается” в реальном времени.
Для корректного отображения текстов Lottie в браузере требуется синхронизация JSON и CSS font-face.
Основная проблема — несоответствие имен:
Roboto-BoldRoboto BoldRoboto:700Из-за этого font matching часто требует ручной нормализации.
В lottie-web шрифты могут быть подгружены заранее через CSS:
@font-faceПосле загрузки браузер сам становится источником рендеринга текста.
Текстовая система Lottie имеет ряд архитектурных ограничений:
При конвертации в shapes ограничения исчезают, но теряется редактируемость текста.
Один из способов устранить проблемы со шрифтами — преобразование текста в векторные контуры на этапе экспорта.
В этом случае:
Такая модель используется в случаях, где визуальная идентичность важнее гибкости.
Текстовые слои в Lottie зависят от:
SVG-рендер сохраняет масштабируемость через vector-based text, тогда как Canvas может rasterize текст, особенно при сложных анимациях.
При изменении масштаба композиции возможны:
Unicode-символы обрабатываются по-разному в зависимости от режима:
charsОсобенно проблемными являются:
Оптимизация текстовой части Lottie обычно включает:
letterSpacing и
fontSizeНа уровне runtime lottie-web может кешировать glyphs и font metrics, снижая нагрузку на повторный рендер кадров, где текст не меняется.