В основе текстового вывода в Lottie лежат текстовые слои, экспортируемые из Adobe After Effects через Bodymovin. Каждый текстовый слой в итоговом JSON описывается набором параметров, которые определяют не только содержимое строки, но и способ её рендеринга, включая переносы, выравнивание, межстрочные интервалы и привязку к ограничивающей области.
Ключевая структура текстового слоя обычно находится в поле
t:
{
"ty": "tp",
"t": {
"d": {
"k": [
{
"s": {
"sz": [300, 100],
"ps": [0, 0],
"t": "Первая строка\nВторая строка"
}
}
]
}
}
}
Поле t.d.k[0].s.t содержит сам текст, где символ
переноса строки кодируется как \n. Именно этот механизм
является базовым способом формирования многострочного текста в
Lottie.
\nМногострочность в Lottie не является результатом «умного» текстового движка в браузере. Это заранее заложенная структура из After Effects.
Основной способ задать перенос строки:
"Hello\nWorld"
При этом важно учитывать:
\n не интерпретируется как HTML<br> или аналогичные тегиПример многострочного текста:
"t": "Lottie Web\nMultiline Text\nRendering"
Результат всегда будет разбит на строки строго по \n,
без дополнительной логики переразбиения.
В After Effects текст может быть двух типов:
Для многострочного форматирования принципиально важен второй тип.
В Lottie это отражается через свойства bounding box:
"sz": [400, 200]
Где:
sz[0] — ширина областиsz[1] — высота областиПри использовании Paragraph Text переносы могут быть частично автоматическими ещё на этапе экспорта, но в Lottie Web:
Таким образом, многострочность всегда «запечена» в JSON.
Lottie поддерживает параметры выравнивания, которые особенно важны для многострочных текстов.
Основные варианты:
В JSON это может отражаться через параметры параграфа:
"j": 0
Где значение определяет alignment:
0 — left1 — right2 — centerПри многострочном тексте выравнивание применяется к каждой строке независимо, а не ко всему блоку как единому HTML-элементу.
Пример:
"t": "Line 1\nLine 2\nLine 3"
Каждая строка будет выровнена согласно параметру j, без
дополнительной логики «блочного контейнера».
Многострочный текст в Lottie зависит от параметра leading (межстрочный интервал), который наследуется из After Effects.
Он может быть представлен как часть стиля текста:
"lh": 48
или внутри текстового стиля:
lh — line heightls — letter spacing (tracking)Особенности:
Это означает, что визуальная плотность многострочного блока всегда фиксирована.
Внутри Lottie текст часто не хранится как одна строка. Он может быть разбит на несколько текстовых элементов:
"t": {
"d": {
"k": [
{
"s": {
"t": "Line 1"
}
},
{
"s": {
"t": "Line 2"
}
}
]
}
}
В таких случаях:
Это важно для сложных титров и кинетической типографики.
Рендерер Lottie Web может работать в трёх режимах:
Поведение многострочного текста различается.
<text> и
<tspan><tspan>Одной из ключевых проблем Lottie является отсутствие полноценного reflow-механизма.
При изменении:
происходит следующее:
Типичный сценарий:
"Очень длинный заголовок\nв две строки"
При уменьшении ширины контейнера:
Lottie Web не поддерживает:
Всё многострочное поведение определяется только:
\nПри ручной генерации или модификации JSON чаще всего используется явное кодирование строк:
{
"t": "Заголовок\nПодзаголовок\nОписание"
}
Для более управляемого варианта применяются массивы строк (на уровне логики генерации):
[
"Заголовок",
"Подзаголовок",
"Описание"
]
которые затем объединяются:
textArray.join("\n")
Lottie Web позволяет загружать анимации и изменять текстовые поля через API рендерера (в зависимости от реализации и версии):
Пример подхода:
const text = "Первая строка\nВторая строка\nТретья строка";
Передача без предварительного парсинга:
На практике часто возникают типичные проблемы:
1. Потеря переносов
\n на пробел при сериализации JSON2. Сломанная типографика
3. Съезд строк
4. Обрезание текста
Многострочный текст сильно зависит от шрифтовых метрик.
Если шрифт в браузере отличается от оригинального:
Lottie не включает полноценную систему font fallback синхронизации с After Effects, поэтому визуальная идентичность достигается только при точном совпадении шрифтов.
Многострочный текст в Lottie Web строится на трёх фундаментальных принципах:
\nЭта модель делает рендеринг предсказуемым, но ограничивает гибкость при работе с адаптивными интерфейсами и динамическим контентом