Анимированный SVG
Изображение SVG, которое анимируется само, записывается как любое изображение:

Что читается
Анимации, записанные в самом файле SVG: SMIL (animate, animateTransform, animateMotion, animateColor, set, с begin, dur, repeatCount, fill, calcMode, keyTimes и keySplines) и CSS (@keyframes со свойствами animation, transform-origin и transform-box). То, что не распознано, например событие вроде begin="click", пропускается и сообщается предупреждением: ничто не отбрасывается молча.
Что показывает каждый вывод
- HTML: браузер сам воспроизводит анимации.
- PowerPoint (
--pptx) и OpenDocument (--odp): каждый анимированный элемент — отдельная фигура, а его анимации стартуют вместе со слайдом: движение, вращение и масштаб, прозрачность, переход между двумя цветами. Движение элемента дискретизируется в собственные моменты анимации, поэтому ускорения, несколько ключевых кадров и вращение вокруг другой точки точны. Повторы (в том числеindefinite), задержки и обратные ходы переносятся. - Кадры: когда анимацию нельзя выразить так (контур, который деформируется, линия, которая рисуется, наклон), всё изображение рендерится в собственные моменты анимации и встраивается как анимированный GIF, который воспроизводят PowerPoint и Impress. Это ограничено: 12 кадров в секунду, не более 240 кадров, 16 миллионов пикселей на все кадры вместе.
- PDF (
--pdf) и изображения (--images): они не могут анимироваться. Рисунок показан в начальном состоянии, без JavaScript и безRichMedia, а одно предупреждение называет анимированные изображения.
Каждое анимированное изображение получает одну строку предупреждения с кодом svg-animation, которая говорит, как оно перенесено: нативно или кадрами и почему.
Поддержка по выводам
| Возможность | HTML | PowerPoint | OpenDocument | PDF и изображения |
|---|---|---|---|---|
| Сдвиг, движение по контуру | воспроизводится | нативно | нативно | начальное состояние |
| Вращение и масштаб вокруг любой точки | воспроизводится | нативно | нативно | начальное состояние |
| Радиус круга, размер прямоугольника (без обводки) | воспроизводится | нативно | нативно | начальное состояние |
| Прозрачность элемента из одной фигуры | воспроизводится | нативно | нативно | начальное состояние |
| Цвет заливки или обводки, от одного цвета к другому | воспроизводится | нативно | нативно | начальное состояние |
| Повторы, задержки, обратные ходы, удержание в конце | воспроизводится | нативно | нативно | начальное состояние |
| Ускорения, несколько ключевых кадров | воспроизводится | нативно (с выборкой) | нативно (с выборкой) | начальное состояние |
| Шаги, дискретные изменения | воспроизводится | кадры | кадры | начальное состояние |
| Деформация контура, сдвиг штрихов, атрибуты положения и размера, градиенты | воспроизводится | кадры | кадры | начальное состояние |
| Наклон, отражение, несколько часов у одного элемента, вложенные анимированные элементы | воспроизводится | кадры | кадры | начальное состояние |
| События | воспроизводится | не переносится (предупреждение) | не переносится (предупреждение) | начальное состояние |
Локальные файлы
Локальное изображение читается только с --allow-local-files, из папки презентации, как в marp-cli. Без этого параметра изображение остаётся вне экспорта, а сборка сообщает об этом через local-file-blocked, называя файл, его слайды и параметр. Файл, которого нет, сообщается как local-file-missing.
Ограничения
SVG — недоверенные входные данные, поэтому он ограничен: 8 МиБ SVG, 50 000 элементов, 2 000 анимаций, 256 ключевых кадров одной анимации, 60 секунд временной шкалы и 240 кадров. Рисунок, выходящий за границу, отклоняется с предупреждением, а сборка продолжается.
Что проверено
LibreOffice Impress (macOS) открывает файлы PowerPoint и OpenDocument и сохраняет каждую анимацию при повторном сохранении в обоих форматах. Keynote (macOS) импортирует фигуры и анимированный GIF; его анимации не проверялись. PowerPoint: пока не проверено.
Created on by tannevaled
Modified on by tannevaled