Руководства
30 августа 2026 г.

Как перенести иконки в Figma: спрайты, иконочные шрифты, CSS-маски

Приходит всё, кроме иконок. Пустые квадраты, чёрные пятна или ничего.

Вы переносите страницу в Figma, и приходит всё, кроме иконок. Там, где были стрелки, лупа и значки внешних ссылок, — пустые квадраты, чёрные пятна или вообще ничего.

Это не один баг. В вебе иконки рисуют четырьмя совершенно разными способами, и каждый ломается по-своему. Понимание того, с каким вы имеете дело, сразу говорит, чинится это или нет и как именно.

Четыре способа, которыми сайты рисуют иконки, и типичный сбой каждого: встроенный SVG выживает, спрайты приходят пустыми коробками, иконочные шрифты — квадратами без глифа, CSS-маски — сплошными цветными квадратами.
Одна страница, четыре способа рисовать иконки. Слева в паре то, что показывает браузер; справа то, что выдаёт конвертер, не знающий этот способ.

Четыре вида иконок и способ, которым каждый подводит

1. Встроенный SVG

Лёгкий случай. Иконка написана прямо в HTML как элемент <svg> с путями внутри. Любой конвертер, читающий DOM, видит геометрию и отдаёт Figma вектор.

Когда это ломается, обычно конвертер что-то сплющил: ссылку <use> на символ, объявленный в другом месте, CSS-filter, или заливку currentColor, которая осталась без цвета за пределами своего каскада.

2. SVG-спрайты

В одном файле лежат все иконки в виде <symbol>, а в каждом месте, где иконка появляется, стоит только ссылка.

<svg class="icon"><use href="/icons.svg#chevron-down" /></svg>

В вебе экономно, для наивного конвертера — невидимо. В элементе внутри DOM нет никаких путей. Прочитайте буквально — получите пустой <svg>, и поэтому спрайты так часто приходят пустыми коробками правильного размера.

Чтобы их разрешить, нужно пройти по ссылке, забрать файл спрайта, найти символ по id и подставить геометрию. А если спрайт лежит на другом источнике, сам этот запрос ещё должен быть разрешён.

3. Иконочные шрифты

Иконка — это символ в шрифте. Font Awesome, Material Icons и любой внутренний иконочный шрифт устроены так: элемент с классом, псевдоэлемент ::before и свойство content с кодовой точкой из области частного использования Unicode.

.fa-search::before { content: "\f002"; }

Ломается две вещи. Во-первых, иконка живёт в псевдоэлементе, а его в DOM нет: сколько ни обходи дерево элементов, там его не будет. Во-вторых, если конвертер всё же захватит её как текст, в Figma она придёт буквальным символом, и без установленного иконочного шрифта Figma нарисует то, что есть в запасе: пустую коробку или случайный глиф.

Отсюда и классический симптом: импортированная страница, усыпанная маленькими прямоугольниками там, где должны быть иконки.

4. Иконки на CSS-масках

Заслуживают отдельного раздела: способ встречается всё чаще и подводит так, что это выглядит успехом. У элемента вообще нет содержимого — есть цвет фона и маска.

.icon {
  background-color: currentColor;
  -webkit-mask-image: url(/icons/search.svg);
  mask-size: contain;
}

Форма живёт в изображении маски, цвет — на элементе. Конвертер, читающий фон, получает сплошной прямоугольник цвета иконки. Поэтому такие приходят чёрными или цветными квадратами, а не пустотой: цвет верный, форма исчезла.

Документационные сайты на VitePress пользуются этим приёмом активно. Так мы с ним и столкнулись: нам сообщили, что на одном сайте документации все иконки импортировались чёрными квадратами.

Почему конвертеры их теряют

Потому что покрыть все четыре — это делать четыре разные вещи, и три из них требуют большего, чем чтение DOM.

Конвертер, который просто обходит DOM и копирует найденное, справится с первым случаем и молча провалит остальные. Это обычное поведение, а не редкость.

Как понять, что у вас

Откройте страницу, правой кнопкой по иконке, «Просмотреть код». Тридцати секунд хватит.

Что видно в инспектореВидКак обычно ломается
<svg> с <path> внутриВстроенный SVGОбычно нормально
<svg> с <use href="…#id">СпрайтПустая коробка
<i> или <span> с иконочным классом и без потомковИконочный шрифтПрямоугольник отсутствующего глифа
Элемент с mask-image в вычисленных стиляхCSS-маскаКвадрат сплошного цвета

Что Snapture делает с каждым

Обрабатываются все четыре, и стоит сказать конкретно, потому что «мы поддерживаем иконки» говорит любой инструмент.

В измерениях, опубликованных на странице измерений, главная Linear дала 215 векторных узлов, а Stripe — 153. Большая часть этого — работа с иконками, и именно здесь проходит граница между файлом, который можно править, и файлом с дырами.

Быстрая проверка для любого конвертера. Найдите страницу с иконочным шрифтом или CSS-масками — большинство документационных сайтов на VitePress или Docusaurus подойдут — и импортируйте её. Если иконки вернулись прямоугольниками или цветными квадратами, инструмент читает DOM и на этом останавливается.

Если в файле иконки уже сломаны

Растрированный чёрный квадрат не чинится: сведений о форме в файле никогда не было. Переимпортируйте инструментом, который разрешает именно ваш случай.

Единственное исключение — иконочные шрифты. Если иконки пришли текстовыми символами и шрифт у вас установлен, у вас Figma нарисует их правильно, но у любого, кто откроет файл без этого шрифта, всё сломается. Лучше всё-таки переимпортировать, чем отдавать файл, который работает только у вас.

Попробуйте на своих страницах Пять бесплатных захватов со всеми функциями. Без карты и без аккаунта.

English · 한국어 · 日本語 · 简体中文 · 繁體中文 · Español · Português · Français · Deutsch · Русский · Italiano · Bahasa Indonesia

Читайте также

Почему автолейаут ломается при импорте в Figma
Главная Руководства Что получается Поддержка