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.