Преобразование SVG с пользовательскими шрифтами в PNG с использованием ImageMagick
==================================================================================

Я конвертирую SVG в PNG, используя ImageMagick, и все работает как шарм, пока не попробую добавить пользовательские шрифты, используя @ font-face, а затем в файл SVG. В батике это работало нормально, но теперь в ImageMagick я просто не могу заставить его работать.

Я могу поменять шрифты на шрифты, перечисленные в «конвертировать список шрифтов», но мне, вероятно, придется часто менять шрифты, поэтому я хочу как-то указать на файл шрифта при конвертации, вместо этого использование font-face или другого решения не имеет значения.

Файлы SVG также могут содержать несколько семейств шрифтов, и моя установка ImageMagick включает делегат rsvg.

Есть идеи? Спасибо!

`rsvg-convert` (программа командной строки), предоставляемая`librsvg2` пакет.

У меня та же проблема с ImageMagick на Amazon Linux (но не на моем рабочем столе Ubuntu). Я думаю, что обработка SVG ImageMagick довольно плохая. Он не распознает свойство стиля «display: none» правильно.



ариантов сделать преобразование (см.`man inkscape`) и с помощью параметров --verb и --select можно даже выполнять действия так же, как вы выполняете их из GUI.

Это также довольно быстро при конвертации, как отметил Хэлфер. Однако обратите внимание, что его рендерер предназначен для интерактивного отображения, а не однопроходного статического отображения, которое делает rsvg, поэтому rsvg может быть быстрее в некоторых случаях. Кроме того, установка Inkscape на веб-серверах иногда может быть проблематичной просто из-за большого числа зависимостей, в которые входит это приложение с графическим интерфейсом.

Когда мы добавили эти параметры командной строки в Inkscape, это было отчасти потому, что в rsvg отсутствовала поддержка многих функций SVG, в том числе шрифтов. С тех пор rsvg улучшился, и я думаю, что теперь он должен поддерживать замену шрифтов через свойство font-face. Наиболее распространенными проблемами являются наличие шрифтов, установленных в местах, которые rsvg не смотрит (возможно, проприетарные шрифты хранятся по-другому в вашем дистрибутиве?)

Удачи, дайте нам знать, если вы разберетесь.