J'essaie de créer de nombreuses images à un seul caractère en utilisant convert
. Le but est de fournir à un spécialiste des plastiques des images à imprimer sur les touches du clavier.
La documentation ImageMagick suggère quelque chose comme ceci:
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
qui est censé imprimer le symbole du lieu d'intérêt , mais il produit à la place un point d'interrogation.
J'ai confirmé (en utilisant charmap
) que le jeu de unifont-Medium
polices inclut réellement ce glyphe. Je sais que d'autres polices sur mon système peuvent également fournir ce glyphe, car je pouvais le voir avant d'installer unifont, mais je n'ai pas pu déterminer leur nom.
J'ai également essayé d'utiliser LaTeX (par exemple TexLive avec tous les extras et le utf8x
package) mais aucun des caractères spéciaux n'est pris en charge.
Il y a beaucoup de questions sur le forum sur l'impression de caractères chinois avec imagemagick et d'autres caractères spéciaux ... ce qui suit fonctionne pour moi:
convert -background lightblue -fill blue -pointsize 32 \
label:' é è à ù ç Ö ÿ ‘ ’ “ ” ° ² ³ € x ÷ ' label_i8n.gif
mais cela ne fonctionne tout simplement pas pour les personnages UTF-8 qui sont réellement importants pour moi.
Comment convertir des caractères Unicode arbitraires en images?
MISE À JOUR : J'ai abandonné, ressemble à un bug. Au lieu de cela, j'ai créé un tas de scripts pour générer et rendre SVG, open source ici: kinesis-dvorak
la source
Réponses:
J'ai essayé les mêmes commandes et obtenu les mêmes résultats.
Le passage à l'unicode pour la lettre G fonctionne bien cependant:
Je posterais cette question sur le site ImageMagick Discourse pour voir pourquoi cela se produit. Je peux vous aider si vous ne savez pas comment procéder ou procéder.
Débogage de conversion
Vous pouvez ajouter le
-debug annotate
commutateur pour voir ce quiconvert
se passe.Exemple
MISE À JOUR # 1 - Débogage supplémentaire
Ce problème m'énervait donc je pense que je l'ai enfin compris. Le problème est la sélection de la police et le fait de ne pas pouvoir afficher ce glyphe particulier.
Tout d'abord, vous pouvez utiliser cette commande pour voir les polices disponibles
convert
. Commençons donc par là.Ce qui précède montre un exemple, chaque police a des lignes similaires à celles ci-dessus. Par ailleurs, l'exécution de cette commande montre que nous avons plusieurs centaines de polices:
Ensuite, nous allons passer par la tâche d'encoder notre personnage, en
\u2318
utilisant toutes les polices que nous avons. Cela semble compliqué mais est assez trivial avec certains doublures bien pensées via Bash.Cet extrait utilisera une boucle for pour parcourir chaque police, exécutant une version modifiée de votre
convert
commande.Maintenant, nous regardons les résultats. De nombreuses polices ne pouvaient pas afficher ce glyphe particulier, mais plusieurs le pouvaient, ce qui semblerait indiquer qu'il ne s'agit pas nécessairement d'un bogue dans ImageMagick, mais plutôt d'une limitation des polices elles-mêmes. Voici une liste des polices que j'avais qui pouvaient afficher ce glyphe.
J'ai parcouru visuellement l'ensemble des ~ 260
.gif
fichiers résultants pour déterminer ceux qui fonctionnaient et ceux qui ne fonctionnaient pas. Voici un échantillon de quelques-uns de ceux qui ont fonctionné juste pour que vous puissiez les voir.Références
la source
-font DejaVu-Sans-Bold
aidé à marquer une image avec le crâne de pirate: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
merci pour votre superbe aide!