让ImageMagick识别字体

15

我一直在Ubuntu 9.10上使用ImageMagick进行图像生成。我想让它识别字体,以便我可以按其“昵称”调用它。

我可以通过输入以下命令找到ImageMagick识别的字体列表:

identify -list font

在那个列表中我看到了Times-Bold。因此

convert -font Times-Bold label:abcdef times.gif

将生成一个带有Times New Roman Bold字体的gif文件。

我知道我可以传递字体路径而不是它的昵称,但我需要能够使用它的昵称,这样在从一台系统移动到另一台系统时就会减少错误。我特别想让这个字体工作,它是一种名为Segoe UI的TrueType字体,详情请参见Segoe UI

我已经在我的系统中安装了Segoe UI,如果我传递字体路径,它可以工作。但我想能够使用类似于下面这样的东西:

convert -font Segoe-UI label:abcdef segoe.gif

谢谢!

1个回答

19
据我所记,identify使用名为type.xml的配置文件来按名称查找字体。您可以在系统级别更改imagemagick自己的此文件副本,或在用户级别添加额外的字体。

有一个名为imagick_type_gen的脚本,它将使用“locate”数据库在您的系统上查找字体并生成其中一个这些配置文件,然后您可以使用它来配置imagemagick; 对于普通用户,我认为这应该放在~/.magick/type.xml中,尽管您可以将其放在系统级别的某个位置。这通常是我过去使用的方法

因此,基本上我认为您需要配置系统type.xml文件或添加用户级别的文件。只要您在移动到新系统时能够这样做,无论哪个用户将运行imagemagick,您都应该至少能够避免更改代码,如果字体路径不同。


2
太好了。谢谢Matt!对于那些半新手来说,我通过输入“./path/to/imagick_type_gen”来执行脚本。在此之前,我确保它是可执行的,方法是“sudo chmod +x /path/to/imagick_type_gen”。 - Ramon Tayag
我也有两种字体:Segoe UI Bold 和 Segoe UI。我在使用 RMagick 程序时传递了一个“bold”参数,但它并没有变成粗体。我的做法是编辑文件,将所有指向 seguibd.ttf 文件(这是 Segoe UI 的粗体版本)的东西都改为我想要的昵称的字体系列。不确定这是否是最好的方式,但它起作用了。 - Ramon Tayag
1
在Debian中(2014年),我使用convert -list font而不是identify -list Type来获取可用字体列表。太棒了,感谢您的回答和博客文章。 - Krista K

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