【问题标题】:ImageMagick convert SVG using my true type font (Magick++)ImageMagick 使用我的真实字体转换 SVG (Magick++)
【发布时间】:2012-08-21 09:05:18
【问题描述】:

我正在使用ImageMagickMagick++ API。我不知道如何使用我的字体将渲染 svg 设置为光栅。 this is my svg.

目标是实现类比

convert.exe -font C:\Fonts\RoadSymbols.ttf C:\ua_03.svg C:\1.png

但使用Magick++ API。

我尝试这样设置字体:

Magick::Image svgImage("C:\\ua_03.svg");
svgImage.magick("png");
svgImage.font("@C:\\Fonts\\RoadSymbols.ttf");
svgImage.write("C:\\1.png");

但我没有得到所需的结果。

有什么想法吗?

【问题讨论】:

  • 为什么字体路径中有@符号?
  • 这里imagemagick.org/Magick++/Image.html 在函数 void font(string ) 处表示,如果字体是完全限定的 X 服务器字体名称,则该字体是从 X 服务器获取的。要使用 TrueType 字体,请在 TrueType 文件名前加上 @。否则,请指定 Postscript 字体名称(例如“helvetica”)。
  • 但我也试过没有它
  • 没有双斜线?
  • 抱歉,打错了。它不适用于双斜杠

标签: c++ c svg imagemagick imagemagick-convert


【解决方案1】:

首先使用命令行列出 ImageMagick 已知的所有字体:

 convert.exe -list font

你会看到这样的东西:

Path: /opt/local/etc/ImageMagick/type-ghostscript.xml
Font: AvantGarde-Book
  family: AvantGarde
  style: Normal
  stretch: Normal
  weight: 400
  glyphs: /opt/local/share/fonts/urw-fonts/a010013l.pfb
Font: AvantGarde-BookOblique
  family: AvantGarde
  style: Oblique
  stretch: Normal
  weight: 400
  glyphs: /opt/local/share/fonts/urw-fonts/a010033l.pfb
Font: AvantGarde-Demi
  family: AvantGarde
  style: Normal
  stretch: Normal
  weight: 600
  glyphs: /opt/local/share/fonts/urw-fonts/a010015l.pfb
Font: AvantGarde-DemiOblique
  family: AvantGarde
  style: Oblique
  stretch: Normal
  weight: 600
  glyphs: /opt/local/share/fonts/urw-fonts/a010035l.pfb
[...]

然后,当要从该列表中选择一种字体供 ImageMagick 浏览时,您可以选择:

  • (a) ...或者使用出现在Font:标签后面的字体名称,

  • (b) ...或使用实际字体文件的完整路径(出现在glyphs: 标签后面。

不要尝试在 ImageMagick 中仅使用 family: 名称...

如果字体名称或路径包含任何空格,请务必使用引号!

【讨论】:

  • 好的,谢谢您的回答。但是如何在代码中指定字体文件路径呢?为什么它不起作用?我很有趣,因为 convert.exe -font C:\Fonts\RoadSymbols.ttf C:\ua_03.svg C:\1.png 工作正常
  • 您应该check this 并测试您的 Magick++ 是否支持 SVG 处理...
  • 当然支持。它转换 svg 但使用默认字体。由于 convert.exe 实用程序支持指定真字体,因此我建议 ImageMagick Magick++ 或 Wand 或 Core 也支持它
  • @dmigous:我不确定 Magick++/Wand/Core 是否确实将 complete IM 功能包装到他们的 API 中...... IM 有时使用 external 某些处理步骤的“委托”——这些可能不适用于 API。
猜你喜欢
  • 2011-05-10
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 2017-01-02
  • 1970-01-01
  • 2017-04-05
相关资源
最近更新 更多