首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >imagemagick.net嵌入式字体

imagemagick.net嵌入式字体
EN

Stack Overflow用户
提问于 2018-10-03 20:11:12
回答 1查看 659关注 0票数 0

有没有人对如何使用ImageMagick.NET将SVG转换为PNG有经验或见解,其中SVG有定制的嵌入式字体?

我已经看过类似员额了,但是我对ImageMagick.net特别感兴趣,我想避免从命令行调用任何东西。我目前使用Batik,但是我想将它移到Azure,并且我不想通过启动JVM来执行JAR文件。

此外,我的问题是,我得到的SVG从另一方和大多数字体是不免费的,所以我不能只是预装所有潜在的字体。

非常感谢你的洞察力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-04 18:02:47

我什么都不知道

azure平台,但我可以分享一些关于ImageMagick内部SVG过程的见解。这与其说是回答,不如说是冗长的评论。

ImageMagick ( Magick.net设置在此之上)对光栅图像执行任务,因此任何矢量输入都必须“解码”为光栅图像,然后才能完成任何其他工作。对于SVG图像,我知道ImageMagick可以将矢量图形呈现为经过验证的像素的三种方法。

  1. 使用原始内部MSVG编码器绘制每个形状。
  2. 如果使用委托库支持编译,则将呈现工作传递给librsvg。(通常在*NIX系统上)
  3. 调用外部命令行应用程序。与您提供的链接中引用的建议相同。

如果我把它画出来,我会想象它会是这样的。

带有MSVG的SVG字体(选项1)

我相信这是您询问的选项,因为它将是必须ImageMagick安装的默认配置。要呈现字体,必须在系统上找到字体,并由freetype (.ttf.otf文件)支持。嵌入式字体通常是在base64 CSS 在先下内联附加的@font-face ttf文件。如果这是真的,您应该能够对文档进行预处理,将字体文件解压缩到本地/临时文件系统,并在读取SVG文档之前将其分配给MagickReadSettings.FontFamily。虽然我不确定这是否适用于多种字体。

带有RSVG的SVG字体(选项2)

librsvg为SVG规范提供了比内部呈现器更多的支持,但也为外部资源提供了更严格的方法。还有一个公开发行,它增加了对@font-face的支持,所以您可能不得不做选项1。

外部命令-行(选项3)

这是你最好的选择。ImageMagick的delegate.xml文件可以修改为调用其他实用程序。例如,Inkscape可以通过以下规则由ImageMagick调用。

代码语言:javascript
复制
<delegate decode="svg" command="inkscape.exe -e %o %i"/>

虽然我不确定inkscape是否是一个很好的例子,因为愿望清单上仍然列出了对CSS字体的支持。

TL;博士

..。使用ImageMagick.NET将SVG转换为PNG,其中SVG有自定义的嵌入式字体?

总之,它归结为正确的工具,为正确的工作。如果您唯一的用例是将SVG+CSS转换为PNG,并且没有额外的光栅操作任务,那么像batik这样的直接实用程序比ImageMagick更合适。不管你喜欢与否,安装一个JRE来执行JAR文件可能是最好的选择。Magick.net本身并不满足您的要求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52634959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档