为什么ImageMagick的字体列表是空的?

31
我想使用ImageMagick给图片添加一些文字,但是我发现它总是提示我指定的字体不存在。仔细阅读手册后,我注意到可以使用convert -list font命令输出所有可用字体,但是尝试了之后发现可用字体列表为空。
这是我得到的结果:
shell$ convert -list font
shell$ 

感谢任何形式的小费。


1
你使用的是哪个即时通讯软件版本? - Mark Setchell
1
官方网站最新版本:ImageMagick-6.8.9 - AGamePlayer
1
也许你可以在这里看一下:http://martin-thoma.com/add-a-new-font-to-imagemagick/ - Mark Setchell
1
谢谢MarkSetchell,但我甚至无法通过第一行。 sudo updatedb 返回 updatedb:未找到命令 - AGamePlayer
1
你使用的是哪个操作系统? - Mark Setchell
2个回答

63

我刚刚成功地告诉ImageMagick关于我OSX系统上的字体,就像这样:

# Make a new directory for ImageMagick local settings and cd into it
mkdir ~/.magick
cd ~/.magick

# Grab script to find all fonts on system and store them in a config file
curl -L http://www.imagemagick.org/Usage/scripts/imagick_type_gen > type_gen

# Run script, telling it where my fonts are and create "type.xml" file with list  
find /System/Library/Fonts /Library/Fonts ~/Library/Fonts -name "*.[to]tf" | perl type_gen -f - > type.xml

# Go to ImageMagick config folder - see note at end to find correct folder
cd /usr/local/Cellar/imagemagick/6.8.9-1/etc/ImageMagick-6

# Edit system config file called "type.xml" and add line near end to tell IM to look at local file we made in earlier step
<typemap>
<include file="type-ghostscript.xml" />
<include file="~/.magick/type.xml" />                       ### THIS LINE ADDED ### 
</typemap>

如何找到正确的type.xml文件所在的文件夹

type.xml文件所在的文件夹可能因系统和版本而异。最近,用户配置文件夹似乎是~/.config/ImageMagick,但我知道的最好方法是运行以下命令以查看ImageMagick正在查找的位置:

convert -debug configure -list font 2>&1 | grep -E "Searching|Loading"

Searching for configure file: "/usr/local/Cellar/imagemagick/7.0.11-6/share/ImageMagick-7/type.xml"
Searching for configure file: "/usr/local/Cellar/imagemagick/7.0.11-6/lib/ImageMagick//config-Q16HDRI/type.xml"
Searching for configure file: "/usr/local/Cellar/imagemagick/7.0.11-6/etc/ImageMagick-7/type.xml"
Searching for configure file: "/usr/local/Cellar/imagemagick/7.0.11-6/share/doc/ImageMagick-7/type.xml"
Searching for configure file: "/Users/username/.config/ImageMagick/type.xml"
Loading type configure file "/usr/local/Cellar/imagemagick/7.0.11-6/etc/ImageMagick-7/type.xml" ...
Loading type configure file "/usr/local/Cellar/imagemagick/7.0.11-6/etc/ImageMagick-7/type-ghostscript.xml" ...
Loading type configure file "/Users/username/.config/ImageMagick/type.xml" ...

因此,有许多地方可以插入字体。一般来说,如果您选择一个以/etc/usr/local开头的文件夹,则字体将对所有用户和您的网络服务器中的脚本可用 - 如果您需要这样。另一方面,如果您只是单个用户,您可能更喜欢将字体配置文件保留在您的登录目录中,例如~/.config/ImageMagick/type.xml


1
谢谢。我卡在了这个“#进入ImageMagick配置文件夹”的步骤。我的硬盘上没有/usr/local/Cellar/ - AGamePlayer
1
我终于成功找到了包文件夹中的 etc 文件夹。但在运行 convert 命令后,我得到了这个错误:convert: delegate library support not built-in '/Library/Fonts/Microsoft/Arial.ttf' (Freetype) @ warning/annotate.c/RenderFreetype/1535.顺便提一下,我现在可以在运行 convert -list font 后看到字体信息。 - AGamePlayer
6
谢谢!我在~/.config/ImageMagick创建了type.xml文件,系统自动检测到了它! - fnurl
2
我使用Homebrew安装了我的ImageMagick,它包含了所有系统字体。然而,convert -list fonts显示它只查找了/etc/Image-Magick.../type-apple.xml而没有查找type.xml(我们将创建的文件添加到typemap中的位置)。我不得不手动将新的type.xml复制并粘贴到type-apple.xml中才能使其正常工作。非常麻烦。 - jessi
4
表现良好,但我必须设置绝对路径。无法工作: <include file="~/.magick/type.xml" /> ### 添加了这一行 ###可工作: <include file="/Users/mark/.magick/type.xml" /> ### 添加了这一行 ###使用ImageMagick 7.0.9-5版本。 - La Muerte Peluda
显示剩余7条评论

10

通过MacOs Catalina上的ImageMagick 7.0.10,我完成了以下操作,这些操作解决了问题。

  • 编辑 /usr/local/Cellar/imagemagick/7.0.10-7/etc/ImageMagick-7/type.xml 文件,将 type-ghostscript 替换为 type-apple
  • 编辑 /usr/local/Cellar/imagemagick/7.0.10-7/etc/ImageMagick-7/type-apple.xml 文件,在所有字形路径前面添加 "/System/Library/Fonts/Supplemental"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接