ImageMagick "convert" 命令不能使用字体!

PHP*_*ner 15 fonts imagemagick convert-command

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
Run Code Online (Sandbox Code Playgroud)

以上命令导致以下错误:

convert.im6: unable to read font `Arial' @ warning/annotate.c/RenderType/853.
Run Code Online (Sandbox Code Playgroud)

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

注 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
Run Code Online (Sandbox Code Playgroud)

注意 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
Run Code Online (Sandbox Code Playgroud)

meu*_*euh 14

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
Run Code Online (Sandbox Code Playgroud)

  • 亲爱的 meuh,它与字体许可或版权无关。它只与我系统中的字体名称有关。您的回答引导我使用`$ convert -list font | grep "字体:" | grep Arial` 命令,结果为:`字体:Arial-Black-Regular 字体:Arial-Bold 字体:Arial-Bold-Italic 字体:Arial-Italic 字体:Arial-Regular`。因此我明白我必须使用“Arial-Regular”而不是“Arial”作为字体名称。请更新您的答案! (3认同)

小智 6

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

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

convert -list font
Run Code Online (Sandbox Code Playgroud)

我想要的字体是~/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"/> 
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)