Векторная графика
Формат SVG: спецификация и направления
Направления в обе стороны: из SVG и в SVG, с параметрами каждого преобразования.
Спецификация SVG
| Полное имя | Scalable Vector Graphics |
|---|---|
| Разработчик спецификации | W3C |
| Год публикации | 2001 |
| Расширение | .svg |
| MIME-тип | image/svg+xml |
| Тип содержимого | Текстовое |
| Модель сжатия | Без потерь |
| Альфа-канал | Есть |
| Многостраничность | Не предусмотрена |
| Тип графики | векторная, разметка XML |
| Масштабирование | без потери качества |
| Возможности | прозрачность, градиенты, фильтры, анимация, CSS |
| Размер | единицы килобайт для иконок |
| Осторожно | файл может содержать скрипты |
| Читающие программы | любой браузер, Inkscape, Adobe Illustrator, Figma, CorelDRAW, текстовый редактор |
| Документ спецификации | Открыть спецификацию |
SVG → другие форматы
| Направление | Что получится | Точность |
|---|---|---|
| .svg.png | Конвертация SVG в PNG | близкая |
| .svg.jpg | Конвертация SVG в JPG | близкая |
| .svg.pdf | Конвертация SVG в PDF | близкая |
| .svg.ico | Конвертация SVG в ICO | близкая |
| .svg.webp | Конвертация SVG в WebP | близкая |
| .svg.eps | Конвертация SVG в EPS | приблизительная |
Другие форматы → SVG
| Направление | Что получится | Точность |
|---|---|---|
| .png.svg | Конвертация PNG в SVG | приблизительная |
| .jpg.svg | Конвертация JPG в SVG | приблизительная |
| .ai.svg | Конвертация AI в SVG | приблизительная |
| .eps.svg | Конвертация EPS в SVG | близкая |
| .cdr.svg | Конвертация CDR в SVG | приблизительная |
| .pdf.svg | Конвертация PDF в SVG | близкая |
| .dxf.svg | Конвертация DXF в SVG | приблизительная |
Спецификация SVG
SVG — это XML-документ, описывающий геометрию: контуры кривыми Безье, примитивы, градиенты, обводки, группы и трансформации. Пиксельного размера у файла нет — есть система координат и атрибут viewBox, задающий видимую область. Отсюда и масштабируемость, и требование указывать размер при растеризации.
Отсутствие viewBox — самая частая техническая ошибка в присланных файлах: без него браузер не знает пропорций области и не может вписать изображение в контейнер, поэтому картинка либо обрезается, либо занимает фиксированные width и height из корневого элемента. Второй источник проблем — текст, оставленный текстом: элемент text ссылается на семейство шрифтов по имени, и при отсутствии гарнитуры на устройстве подставляется системная, что меняет ширину строки и ломает композицию. Решение одно — перевод текста в контуры.
Не всё, что выглядит вектором в редакторе, экспортируется вектором. Тени, размытия и сложные режимы наложения из Illustrator и Figma реализуются фильтрами SVG, которые растеризуются при отрисовке, либо вставляются готовыми растровыми фрагментами в base64 — файл раздувается и перестаёт масштабироваться без потерь. Отдельно стоит помнить, что SVG допускает элементы script и внешние ссылки, поэтому файлы из непроверенных источников перед публикацией очищают.
При растеризации в PNG или JPEG задаётся целевая ширина в пикселях, и качество результата зависит только от неё: иконка, описанная как 24 × 24 единицы, отрисуется в любом размере без ступенек. Рабочие величины: 512 либо 1024 пикселя под веб-логотип и от 2048 — под печать и крупноформатные носители. Обратная операция, трассировка растра в кривые, корректно работает на контрастных двухцветных изображениях; фотография распадается на тысячи контуров и даёт файл тяжелее исходного.
Форматы того же класса
Остальные записи класса «Векторная графика». Для каждой заведена своя страница с полным перечнем направлений: и от SVG, и к нему.
Вопросы по формату SVG
Почему при открытии SVG изображение занимает весь экран или, наоборот, крошечное?
Корневой элемент не содержит viewBox либо содержит его без width и height. В первом случае масштабирование невозможно, и применяются собственные размеры содержимого, во втором изображение растягивается на весь доступный контейнер. Корректная запись задаёт viewBox с координатами области и, при необходимости, размеры по умолчанию.
Как переносится прозрачность при растеризации?
В PNG и WebP альфа-канал сохраняется полностью, включая полупрозрачные заливки и мягкие края обводок. В JPEG альфа-канала нет, поэтому прозрачные области заливаются подложкой; цвет подложки задаётся в параметрах направления. Градиент с переменной прозрачностью в JPEG превращается в градиент по цвету подложки.
Что происходит при конвертации SVG в EPS для типографии?
Геометрия переносится в модель PostScript: контуры, заливки и обводки имеют прямые соответствия. Расходятся возможности: прозрачность и градиентная прозрачность в PostScript Level 2 не описываются и уплощаются, фильтры растеризуются, а цвет остаётся в RGB — перевод в CMYK выполняется уже в допечатной подготовке под конкретный профиль печати.