Il comando "converti" di ImageMagick non può usare i caratteri!


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

Sopra i risultati del comando seguente errore:

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

Ho cercato sul web e ho scoperto che molti utenti hanno visto questo errore, ma non hanno trovato alcuna soluzione. Qualcuno può aiutare?

NOTA 1: il carattere Arial è installato sul mio sistema:

$ 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

NOTA 2: la modifica del caso nel nome del carattere ( arialanziché Arial) non aiuta.

NOTA 3: L' uso del percorso assoluto del file del carattere con il nome completo del file del carattere ( filename.fileextension) rimuove l'errore:

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

Prima di pubblicare una risposta: l'ho risolto utilizzando il percorso assoluto del carattere in questione. Non so perché, però. Fammi sapere se funziona :)
Jacob Vlijm,

Si prega di modificare la tua domanda e inviare l'output di fc-list | grep -i arial. Il comando che mostri ha funzionato per me senza errori. Hai installato Arial?
terdon,

@terdon, su Ubuntu, questo è un problema comune. Non ho mai trovato una spiegazione però.
Jacob Vlijm,

Presumibilmente @JacobVlijm, si tratta quindi del nome del carattere nella cache dei caratteri. Forse ha bisogno di lettere minuscole arialo il nome è leggermente diverso. Devi anche avere msttcorefontsinstallato, credo.
terdon,

1
@terdon Quando mi sono imbattuto (era qualcosa per Parto: askubuntu.com/questions/552456/… ) ho provato di tutto: maiuscolo / minuscolo, anche tutti i tipi di caratteri senza fortuna. In alcuni post (non in AU) mi sono imbattuto nel suggerimento di utilizzare percorsi assoluti. Ha funzionato, senza la soddisfazione di capire il perché.
Jacob Vlijm,

Risposte:


12

Arial non è un carattere gratuito. I suoi termini di utilizzo su piattaforme open source come Linux e Ubuntu rendono impossibile la distribuzione come parte di un'installazione. Dovresti usare una delle alternative libere / aperte come la Liberazione.

Puoi elencare i caratteri che hai con convert -list font. Per esempio:

$ 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

Posso assicurarti che non c'entra niente. Tutti i caratteri funzionano se vengono utilizzati percorsi assoluti. Hai provato?
Jacob Vlijm,

3
Caro meuh, non è correlato alla licenza dei caratteri o al copyright. È solo correlato al nome del font nel mio sistema. La tua risposta mi ha guidato per usare $ convert -list font | grep "Font:" | grep Arialil comando ed è risultato: Font: Arial-Black-Regular Font: Arial-Bold Font: Arial-Bold-Italic Font: Arial-Italic Font: Arial-Regular. Quindi capisco che devo usare "Arial-Regular" invece di "Arial" come nome del font. Aggiorna la tua risposta!
PHP Learner,

L'elenco è vuoto
theonlygusti il

3

Ho avuto lo stesso problema con il mio Macbook oggi. La causa è semplice.

convert utilizza solo caratteri noti. Tutti i caratteri noti da convertire sono elencati con questo comando.

convert -list font

Il mio carattere desiderato era in ~/Library/Fonts. convert non lo ha elencato.

Ho seguito le istruzioni di Mark Setchell e sono stato in grado di generare il mio type.xml.

La voce per il mio carattere in type.xml

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

Posso usare il nome o il percorso assoluto per generare la mia immagine.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.