@bjorn-mozyakin

Как можно определить высоту/ширину svg-спрайта и записать ее в файл (через CLI под Mac или Linux)?

Вообще пытаюсь создать svg-спрайт с помощью npm-пакета svg-sprite. В итоге получаю примерно такой спрайт (для 2-х картинок):
…
<svg viewBox="0 0 <b>108 54</b>" …>
  <svg height="54" width="54" viewBox="-2 -2 54 54" …>
    <path d=“…”>
   </svg>
  <svg height="54" width="54" viewBox="-2 -2 54 54" …>
    <path d=“…”>
  </svg>
</svg>

Для определения размера выходного спрайта в CLI использую команду identify из утилиты ImageMagick. Например, так

identify -format '%w' icons-test.svg

или сразу пишу в файл

echo "\$spriteWidth = $(identify -format ‘%w’ icons-test.svg)px" >> styles.styl

Проблема в том, что в итоге в файл записывается ширина не всего спрайта (108), а только последнего изображения, входящего в него (54).

Подскажите, что делаю не так, как поправить? Либо посоветуйте альтернативный способ решения задачи.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@bjorn-mozyakin Автор вопроса
Предположительно, imagemagick-овский SVG-декодер не понимает некоторые внутренние SVG теги.
Посоветовали предварительно сконвертировать файл в другой формат, например так:
convert icons-test.svg mvg:- | identify -format '%w' mv

Для меня это сработало. Иногда, правда, выдаются ошибки вроде таких:
identify: non-conforming drawing primitive definition 64' @ error/draw.c/RenderMVGContent/4361.

Но все равно ширина/высота определяются верно.

Так что отмечу, как решение. Но если кто-то знает, чем вызваны/как избавиться от ошибок - пишите. Или если кто-то знает альтернативные способы решения - тоже.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы