ImageMagick的“转换”命令不能使用字体!


11
convert -size 300x50 xc:none -font Arial -pointsize 20 -gravity center -draw "fill white text 1,1 \"$1\" text 0,0 \"$1\" fill black text -1,-1 \"$1\"" $WATERMARK_FILE

上面的命令导致以下错误:

convert.im6: unable to read font `Arial' @ warning/annotate.c/RenderType/853.

我在网上搜索,发现许多用户看到此错误,但没有找到任何解决方案。有人可以帮忙吗?

注意1: Arial字体已安装在我的系统上:

$ fc-list | grep -i arial
/usr/share/fonts/truetype/msttcorefonts/Arial_Italic.ttf: Arial:style=Italic,Cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,Kursywa,Itálico,Курсив,İtalik,Poševno,nghiêng,Etzana
/usr/share/fonts/truetype/msttcorefonts/ariblk.ttf: Arial Black:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/truetype/msttcorefonts/Arial.ttf: Arial:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,thường,Arrunta
/usr/share/fonts/truetype/msttcorefonts/arialbd.ttf: Arial:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,đậm,Lodia
/usr/share/fonts/truetype/msttcorefonts/Arial_Bold_Italic.ttf: Arial:style=Bold Italic,Negreta cursiva,tučné kurzíva,fed kursiv,Fett Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,Krepko poševno,nghiêng đậm,Lodi etzana
/usr/share/fonts/truetype/msttcorefonts/arialbi.ttf: Arial:style=Bold Italic,Negreta cursiva,tučné kurzíva,fed kursiv,Fett Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,Krepko poševno,nghiêng đậm,Lodi etzana
/usr/share/fonts/truetype/msttcorefonts/Arial_Black.ttf: Arial Black:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/truetype/msttcorefonts/Arial_Bold.ttf: Arial:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,đậm,Lodia
/usr/share/fonts/truetype/msttcorefonts/ariali.ttf: Arial:style=Italic,Cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,Kursywa,Itálico,Курсив,İtalik,Poševno,nghiêng,Etzana

注意2: 更改字体名称(arial而不是Arial)的大小写无济于事。

注意3:将绝对字体文件路径与完整的字体文件名(filename.fileextension)一起使用可消除错误:

convert -size 300x50 xc:none -font "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf" -pointsize 20 -gravity center -draw "fill white text 1,1 \"$1\" text 0,0 \"$1\" fill black text -1,-1 \"$1\"" $WATERMARK_FILE

在发布答案之前:我通过使用相关字体的绝对路径解决了该问题。不知道为什么。让我知道它是否有效:)
Jacob Vlijm

编辑您的问题,然后发布的输出fc-list | grep -i arial。您显示的命令对我来说没有任何错误。您安装了Arial吗?
terdon 2015年

@terdon,在Ubuntu上,这是一个常见问题。虽然没有找到解释。
Jacob Vlijm 2015年

@JacobVlijm大概是关于字体缓存中字体名称的东西。可能需要小写arial或名称略有不同。msttcorefonts我认为您还需要安装。
terdon

1
@terdon当我碰到它时(Parto需要一些帮助: askubuntu.com/questions/552456/…),我尝试了所有方法:大写/小写,也包括所有没有运气的字体。在某些帖子(不是AU)上,我遇到了使用绝对路径的建议。工作,没有满意的理解为什么。
Jacob Vlijm 2015年

Answers:


12

Arial不是免费字体。它在Linux和Ubuntu等开放源代码平台上的使用条款使其无法作为安装的一部分进行分发。您应该使用自由/开放替代方案之一,例如Liberation。

您可以列出使用的字体convert -list font。例如:

$ convert -list font|grep Liberation-Sans
Font: Liberation-Sans-Bold
Font: Liberation-Sans-Bold-Italic
Font: Liberation-Sans-Italic
Font: Liberation-Sans-Narrow-Bold
Font: Liberation-Sans-Narrow-Bold-Italic
Font: Liberation-Sans-Narrow-Italic
Font: Liberation-Sans-Narrow-Regular
Font: Liberation-Sans-Regular

我可以向您保证,这与之无关。如果使用绝对路径,则所有字体均有效。你试过了吗?
Jacob Vlijm 2015年

3
亲爱的朋友,它与字体许可或版权无关。它与我系统中的字体名称有关。您的回答引导我使用$ convert -list font | grep "Font:" | grep Arial命令,结果为:Font: Arial-Black-Regular Font: Arial-Bold Font: Arial-Bold-Italic Font: Arial-Italic Font: Arial-Regular。因此,我知道必须使用“ Arial-Regular”而不是“ Arial”作为字体名称。请更新您的答案!
PHP学习者

该列表是空的
theonlygusti

3

我的Macbook今天遇到了同样的问题。原因很简单。

convert仅使用已知字体。该命令列出了所有要转换的已知字体。

convert -list font

我想要的字体是~/Library/Fonts。转换未列出。

我按照Mark Setchell的指示进行操作,并且能够生成我的报告type.xml

我的字体在type.xml中的条目

<type format="ttf"
  name="MyriadPro"
  fullname="MyriadPro-Regular"
  family="Myriad Pro" 
  glyphs="/Users/vinh/Library/Fonts/myriadpro-regular.ttf"/> 

我可以使用名称或绝对路径生成图像。

convert -size 300x50 xc:none -font "MyriadPro" \
  -pointsize 20 -kerning 1 -gravity center \
  -fill black -annotate 0x0+0+0 "mimacom" \
  -fill white -annotate 0x0+2+2 "mimacom" mimacom.png
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.