O comando “converter” do ImageMagick não pode usar fontes!


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

O comando acima resulta no seguinte erro:

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

Pesquisei na web e descobri que muitos usuários viram esse erro, mas não encontraram nenhuma solução. Alguém pode ajudar?

NOTA 1: A fonte Arial está instalada no meu 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: Alterar a caixa em nome da fonte (em arialvez de Arial) não ajuda.

NOTA 3: Usar o caminho absoluto do arquivo de fonte com o nome completo do arquivo de fonte ( filename.fileextension) remove o erro:

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

Antes de postar como resposta: eu o resolvi usando o caminho absoluto para a fonte em questão. Não sei por que embora. Deixe-me saber se ele funciona :)
Jacob Vlijm

Por favor edite sua pergunta e postar a saída fc-list | grep -i arial. O comando que você mostra funcionou para mim sem erros. Você tem o Arial instalado?
terdon

@terdon, no Ubuntu, este é um problema comum. Mas nunca encontrei uma explicação.
Jacob Vlijm 13/09/2015

@JacobVlijm presumivelmente, é algo sobre o nome da fonte no cache de fontes então. Talvez precise de letras minúsculas arialou o nome seja um pouco diferente. Você também precisa ter o msttcorefontsinstalado, eu acho.
terdon

1
@terdon Quando o encontrei (era algo para o Parto: askubuntu.com/questions/552456/… ), tentei de tudo: maiúsculas / minúsculas, também todos os tipos de fontes sem sorte. Em algum post (não na AU), me deparei com a sugestão de usar caminhos absolutos. Trabalhou, sem a satisfação de entender o porquê.
Jacob Vlijm 13/09/2015

Respostas:


12

Arial não é uma fonte livre. Seus termos de uso em plataformas de código aberto como Linux e Ubuntu tornam impossível distribuir como parte de uma instalação. Você deve usar uma das alternativas gratuitas / abertas , como Liberation.

Você pode listar as fontes que você possui convert -list font. Por exemplo:

$ 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 garantir, não tem nada a ver com isso. Todas as fontes funcionam se caminhos absolutos forem usados. Você tentou?
Jacob Vlijm

3
Caro meuh, não está relacionado à licença de fonte ou direitos autorais. Está relacionado apenas ao nome da fonte no meu sistema. Sua resposta me guiado para usar $ convert -list font | grep "Font:" | grep Arialcomando e resultou: Font: Arial-Black-Regular Font: Arial-Bold Font: Arial-Bold-Italic Font: Arial-Italic Font: Arial-Regular. Portanto, entendo que devo usar "Arial-Regular" em vez de "Arial" como nome da fonte. Atualize sua resposta!
PHP Learner

Essa lista está vazia
theonlygusti 27/02

3

Eu tenho o mesmo problema com o meu Macbook hoje. A causa disso é simples.

O convert usa apenas fontes conhecidas. Todas as fontes conhecidas para converter são listadas com este comando.

convert -list font

Minha fonte desejada foi em ~/Library/Fonts. O convert não o listou.

Eu segui as instruções de Mark Setchell e foi capaz de gerar o meu type.xml.

A entrada para minha fonte em type.xml

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

Eu posso usar o nome ou o caminho absoluto para gerar minha imagem.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.