Я ничего не знаю о azure платформе, но я могу поделиться некоторыми взглядами на процесс SVG в ImageMagick. Это больше скучный комментарий, чем ответ
ImageMagick (из которых Magick.net
располагается поверх) выполняет задачи с растровыми изображениями, поэтому любой векторный ввод должен быть "декодирован""в растровое изображение, прежде чем будут сделаны какие-либо дополнительные работы.Для SVG-изображений мне известны три способа, которыми ImageMagick может рендерить векторную графику в аутентифицированные пиксели.
- Использовать примитивный внутренний кодировщик MSVG для рисования каждой фигуры.
- Пропустить процесс рендерингадо
librsvg
, если скомпилировано с поддержкой библиотеки делегатов.(Обычно в системах * NIX) - Вызов внешнего приложения командной строки.Идентичны предложениям, указанным в предоставленных вами ссылках.
Если бы я наметил это, я бы подумал, что это будет выглядеть примерно так:
![SVG delegate map](https://i.stack.imgur.com/RQSrd.png)
Шрифты SVG с MSVG (опция # 1)
Я полагаю, что это вариант, о котором вы спрашиваете, так как это будет конфигурация по умолчанию для установки ImageMagick.Для отображения шрифта в системе должна быть найдена гарнитура, поддерживаемая freetype (файлы .ttf
или .otf
).Встраиваемые шрифты обычно представляют собой файлы формата base64 ttf, вложенные в соответствии с @font-face
CSS at-rule .Если это так, вы должны быть в состоянии предварительно обработать документ, извлечь файл шрифта в локальную / временную файловую систему и назначить его с MagickReadSettings.FontFamily
перед чтением документа SVG.Хотя я не уверен, что это будет работать с несколькими шрифтами.
Шрифты SVG с RSVG (опция # 2)
librsvg
предлагает гораздо больше поддержки спецификаций SVG, чем внутреннийрендер, но также обеспечивает более ограниченный подход для внешних ресурсов.Есть также открытый выпуск с добавлением поддержки к @font-face
, так что вы все равно можете быть вынуждены использовать опцию № 1.
Внешняя командная строка (опция # 3)
Это будет ваш лучший вариант.Файл Delegate.xml ImageMagick может быть изменен для вызова других утилит. Inkscape , например, может вызываться ImageMagick по следующему правилу ..
<delegate decode="svg" command="inkscape.exe -e %o %i"/>
Хотя я не уверен, является ли Inkscape хорошим примером, так как поддержка шрифтов CSS по-прежнемуперечислены в список пожеланий .
TL; DR
... конвертировать SVG в PNG с помощью ImageMagick.NET, где SVG имеетпользовательские встроенные шрифты?
All-n-all, сводится к правильному инструменту для правильной работы .Если ваш единственный вариант использования - конвертация SVG + CSS в PNG, и у вас нет дополнительных задач по обработке растра, прямая утилита, такая как batik
, более подходит, чем ImageMagick.Нравится вам это или нет, но лучше всего установить JRE для запуска файла JAR.Magick.net
само по себе не соответствует вашим требованиям.