Estoy tratando de crear muchas imágenes de un solo personaje usando convert
. El propósito es proporcionar a un especialista en plásticos imágenes para imprimir en las teclas del teclado.
La documentación de ImageMagick sugiere algo como esto:
printf "\u2318" | convert -size 100x100 label:@- -font unifont-Medium command.png
o
echo ⌘ | convert -size 100x100 label:@- -font unifont-Medium command.png
o
convert -size 100x100 label:'⌘' -font unifont-Medium command.png
que se supone que imprime el símbolo del lugar de interés , pero en cambio produce un signo de interrogación.
He confirmado (usando charmap
) que el conjunto de unifont-Medium
fuentes realmente incluye este glifo. Sé que otras fuentes en mi sistema también pueden proporcionar este glifo, porque pude verlo antes de instalar unifont, pero no he podido averiguar cuál es su nombre.
También intenté usar LaTeX (por ejemplo, TexLive con todos los extras y el utf8x
paquete) pero ninguno de los caracteres especiales son compatibles.
Hay muchas preguntas en el foro sobre la impresión de caracteres chinos con imagemagick y otros caracteres especiales ... lo siguiente me funciona:
convert -background lightblue -fill blue -pointsize 32 \
label:' é è à ù ç Ö ÿ ‘ ’ “ ” ° ² ³ € x ÷ ' label_i8n.gif
pero simplemente no funciona para los personajes UTF-8 que realmente son importantes para mí.
¿Cómo puedo convertir caracteres Unicode arbitrarios en imágenes?
ACTUALIZACIÓN : me di por vencido, parece un error. En cambio, creé un montón de scripts para generar y renderizar SVG, de código abierto aquí: kinesis-dvorak
fuente
Respuestas:
Intenté los mismos comandos y obtuve los mismos resultados.
Sin embargo, cambiar al Unicode para la letra G funciona bien:
Publicaría esta pregunta en el sitio del Discurso de ImageMagick para ver por qué ocurre esto. Puedo ayudarlo si no está seguro de cómo hacer esto o proceder.
Conversión de depuración
Puede agregar el
-debug annotate
interruptor para ver quéconvert
está haciendo.Ejemplo
ACTUALIZACIÓN # 1 - Depuración adicional
Este problema me estaba molestando, así que creo que finalmente lo he resuelto. El problema es la selección de la fuente, y no poder mostrar ese glifo en particular.
En primer lugar, puede usar este comando para ver qué fuentes tiene disponibles
convert
. Entonces, comencemos allí.Lo anterior muestra una muestra, cada fuente tiene líneas similares a las anteriores. Por cierto, ejecutar este comando muestra que tenemos varios cientos de fuentes:
A continuación, vamos a pasar por la tarea de codificar nuestro personaje,
\u2318
usando cada fuente que tengamos. Esto suena complicado pero es bastante trivial con algunos liners bien pensados a través de Bash.Este fragmento utilizará un bucle for para ejecutar cada fuente, ejecutando una versión modificada de su
convert
comando.Ahora miramos a través de los resultados. Muchas de las fuentes no podían mostrar este glifo en particular, pero varias sí, lo que parece indicar que no es necesariamente un error en ImageMagick, sino una limitación de las fuentes mismas. Aquí hay una lista de las fuentes que tenía que podrían mostrar este glifo.
Revisé visualmente los ~ 260
.gif
archivos resultantes para determinar cuál funcionó y cuál no. Aquí hay una muestra de algunos de los que funcionaron para que pueda verlos.Referencias
fuente
-font DejaVu-Sans-Bold
ayudó a etiquetar una imagen con el cráneo 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
gracias por su excelente ayuda!