ImageMagickの「変換」コマンドはフォントを使用できません!


10
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

@ terdon、Ubuntuでは、これは一般的な問題です。説明は見つかりませんでした。
Jacob Vlijm

@JacobVlijmおそらく、フォントキャッシュ内のフォントの名前に関するものです。おそらく小文字が必要arialか、名前が少し異なります。msttcorefontsインストールも必要だと思います。
terdon 2015

1
@terdon私がそれに遭遇したとき(Partoの何かだった: askubuntu.com/questions/552456/…)私はすべてを試しました:大文字/小文字、すべてのタイプのフォントも運がありませんでした。一部の投稿(AUではない)で、絶対パスを使用するよう提案されました。理由を理解する満足感なしに働いた。
Jacob Vlijm

回答:


12

Arialはフリーフォントではありません。LinuxやUbuntuなどのオープンソースプラットフォームでの使用条件により、インストールの一部として配布することは不可能です。解放などのフリー/オープンな代替手段の1つを使用する必要があります。

で使用しているフォントを一覧表示できます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

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」ではなく「Arial-Regular」を使用する必要があることを理解しています。回答を更新してください!
PHP学習者2015

そのリストは空です
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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.