Der ImageMagick-Befehl "convert" kann keine Schriftarten verwenden!

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

Der obige Befehl führt zu folgendem Fehler:

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

Ich habe im Internet gesucht und festgestellt, dass viele Benutzer diesen Fehler gesehen haben, aber keine Lösung gefunden haben. Kann jemand helfen?

HINWEIS 1: Die Schriftart Arial ist auf meinem System installiert:

$ 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

HINWEIS 2: Das Ändern der Groß- und Kleinschreibung des Schriftnamens ( arialanstelle von Arial) hilft nicht.

HINWEIS 3: Wenn Sie den Pfad der absoluten Schriftdatei mit dem vollständigen Namen der Schriftdatei ( filename.fileextension) verwenden, wird der Fehler behoben:

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
PHP-Lernender
quelle
Vor dem Posten als Antwort: Ich habe es gelöst, indem ich den absoluten Pfad zur fraglichen Schriftart verwendet habe. Ich weiß nicht warum. Lassen Sie mich wissen, ob es funktioniert :)
Jacob Vlijm
Bitte bearbeiten Sie Ihre Frage und veröffentlichen Sie die Ausgabe von fc-list | grep -i arial. Der Befehl, den Sie anzeigen, hat bei mir fehlerfrei funktioniert. Haben Sie Arial installiert?
Terdon
@terdon, unter Ubuntu ist dies ein häufiges Problem. Ich habe jedoch nie eine Erklärung gefunden.
Jacob Vlijm
@JacobVlijm vermutlich geht es dann um den Namen der Schriftart im Font-Cache. Vielleicht braucht es Kleinbuchstaben arialoder der Name ist etwas anders. Sie müssen auch die msttcorefontsinstalliert haben, denke ich.
Terdon
1
@terdon Als ich darauf stieß (war etwas für Parto: askubuntu.com/questions/552456/… ), habe ich alles versucht: Groß- / Kleinbuchstaben, auch alle Arten von Schriftarten ohne Glück. Bei einigen Posts (nicht AU) bin ich auf den Vorschlag gestoßen, absolute Pfade zu verwenden. Arbeitete, ohne die Befriedigung zu verstehen, warum.
Jacob Vlijm

Antworten:

12

Arial ist keine kostenlose Schriftart. Die Nutzungsbedingungen auf Open Source-Plattformen wie Linux und Ubuntu machen eine Verteilung als Teil einer Installation unmöglich. Sie sollten eine der freien / offenen Alternativen wie Befreiung verwenden.

Sie können die Schriftarten auflisten, mit denen Sie arbeiten convert -list font. Z.B:

$ 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
meuh
quelle
Ich kann Ihnen versichern, das hat nichts damit zu tun. Alle Schriftarten funktionieren, wenn absolute Pfade verwendet werden. Hast du versucht?
Jacob Vlijm
3
Sehr geehrte Damen und Herren, es hat nichts mit der Schriftlizenz oder dem Urheberrecht zu tun. Es hängt nur mit dem Schriftnamen in meinem System zusammen. Ihre Antwort führte mich dazu, den $ convert -list font | grep "Font:" | grep ArialBefehl zu verwenden, und es ergab sich : Font: Arial-Black-Regular Font: Arial-Bold Font: Arial-Bold-Italic Font: Arial-Italic Font: Arial-Regular. Daher verstehe ich, dass ich "Arial-Regular" anstelle von "Arial" als Schriftnamen verwenden muss. Bitte aktualisieren Sie Ihre Antwort!
PHP Learner
Diese Liste ist leer
theonlygusti
3

Ich habe heute das gleiche Problem mit meinem Macbook. Die Ursache dafür ist einfach.

convert verwendet nur bekannte Schriftarten. Alle bekannten zu konvertierenden Schriftarten werden mit diesem Befehl aufgelistet.

convert -list font

Meine gewünschte Schriftart war in ~/Library/Fonts. konvertieren hat es nicht aufgelistet.

Ich folgte den Anweisungen von Mark Setchell und war in der Lage, meine zu generieren type.xml.

Der Eintrag für meine Schriftart in type.xml

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

Ich kann den Namen oder den absoluten Pfad verwenden, um mein Bild zu generieren.

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
cinhtau
quelle