Estou tentando criar muitas imagens de caracteres únicos usando convert
. O objetivo é fornecer a um especialista em plásticos imagens para imprimir nas tampas das teclas do teclado.
A documentação do ImageMagick sugere algo como isto:
printf "\u2318" | convert -size 100x100 label:@- -font unifont-Medium command.png
ou
echo ⌘ | convert -size 100x100 label:@- -font unifont-Medium command.png
ou
convert -size 100x100 label:'⌘' -font unifont-Medium command.png
que supostamente imprime o símbolo do local de interesse , mas produz um ponto de interrogação.
Confirmei (usando charmap
) que o conjunto de unifont-Medium
fontes realmente inclui esse glifo. Eu sei que outras fontes no meu sistema também podem fornecer esse glifo, porque eu pude vê-lo antes de instalar o unifont, mas não consegui descobrir qual é o nome deles.
Também tentei usar o LaTeX (por exemplo, o TexLive com todos os extras e o utf8x
pacote), mas nenhum dos caracteres especiais é suportado.
Há muitas perguntas no fórum sobre como imprimir caracteres chineses com imagemagick e outros caracteres especiais ... o seguinte funciona para mim:
convert -background lightblue -fill blue -pointsize 32 \
label:' é è à ù ç Ö ÿ ‘ ’ “ ” ° ² ³ € x ÷ ' label_i8n.gif
mas simplesmente não funciona para os caracteres UTF-8 que são realmente importantes para mim.
Como posso converter caracteres unicode arbitrários em imagens?
UPDATE : Eu desisti, parece um bug. Em vez disso, criei vários scripts para gerar e renderizar SVG, de código aberto aqui: kinesis-dvorak
fonte
Respostas:
Eu tentei os mesmos comandos e obtive os mesmos resultados.
Mudar para o unicode da letra G funciona bem:
Eu postaria essa pergunta no site do ImageMagick Discourse para ver por que isso está ocorrendo. Posso ajudar se você não souber como fazer isso ou prosseguir.
Conversão de depuração
Você pode adicionar a
-debug annotate
opção para ver o queconvert
está acontecendo .Exemplo
ATUALIZAÇÃO # 1 - Depurando ainda mais
Esta questão estava me irritando, então acho que finalmente entendi. O problema é a seleção da fonte e não é possível exibir esse glifo específico.
Primeiro, você pode usar este comando para ver em quais fontes você está disponível
convert
. Então, vamos começar por aí.O exemplo acima mostra uma amostra, cada fonte tem linhas semelhantes às acima. Aliás, executar este comando mostra que temos várias centenas de fontes:
Em seguida, executaremos a tarefa de codificar nosso personagem,
\u2318
usando todas as fontes que temos. Isso parece complicado, mas é bastante trivial com alguns liners bem pensados via Bash.Esse trecho usará um loop for para percorrer cada fonte, executando uma versão modificada do seu
convert
comando.Agora, examinamos os resultados. Muitas das fontes não podem exibir esse glifo específico, mas várias podem, o que parece indicar que não é necessariamente um bug no ImageMagick, mas uma limitação das próprias fontes. Aqui está uma lista das fontes que eu tinha que poderiam exibir esse glifo.
Examinei visualmente todos os ~ 260
.gif
arquivos resultantes para determinar quais funcionavam e quais não funcionavam. Aqui está uma amostra de alguns dos que funcionaram apenas para que você possa vê-los.Referências
fonte
-font DejaVu-Sans-Bold
ajudou a marcar uma imagem com a caveira pirata:perl -e 'binmode(STDOUT, ":utf8");print "Skull: \x{2620}";' |convert picture_orig.jpg -background none -fill red -pointsize 90 -font DejaVu-Sans-Bold label:@- -flatten picture_tagged.jpg
obrigado pela sua excelente ajuda!