Я пытаюсь создать много односимвольных изображений, используя convert
. Цель состоит в том, чтобы предоставить специалисту по пластике изображения для печати на клавишных клавиатурах.
Документация ImageMagick предлагает что-то вроде этого:
printf "\u2318" | convert -size 100x100 label:@- -font unifont-Medium command.png
или
echo ⌘ | convert -size 100x100 label:@- -font unifont-Medium command.png
или
convert -size 100x100 label:'⌘' -font unifont-Medium command.png
который должен печатать символ места интереса , но вместо этого он создает знак вопроса.
Я подтвердил (используя charmap
), что unifont-Medium
набор шрифтов фактически включает этот глиф. Я знаю, что другие шрифты в моей системе также могут предоставить этот глиф, потому что я мог видеть его до установки unifont, но я не смог понять, как их зовут.
Я также пытался использовать LaTeX (например, TexLive со всеми дополнениями и utf8x
пакетом), но ни один из специальных символов не поддерживается.
На форуме много вопросов о печати китайских иероглифов с помощью imagemagick и других специальных символов ... мне подходит следующее:
convert -background lightblue -fill blue -pointsize 32 \
label:' é è à ù ç Ö ÿ ‘ ’ “ ” ° ² ³ € x ÷ ' label_i8n.gif
но это не работает для символов UTF-8, которые на самом деле важны для меня.
Как я могу конвертировать произвольные символы Юникода в изображения?
ОБНОВЛЕНИЕ : я сдался, похоже на ошибку. Вместо этого я создал несколько скриптов для генерации и рендеринга SVG, с открытым исходным кодом здесь: kinesis-dvorak
источник
Ответы:
Я попробовал те же команды и получил те же результаты.
Переход на юникод для буквы G работает нормально, хотя:
Я хотел бы опубликовать этот вопрос на сайте Дискурса ImageMagick, чтобы понять, почему это происходит. Я могу помочь, если вы не уверены, как это сделать или продолжить.
Отладка конвертировать
Вы можете добавить
-debug annotate
переключатель, чтобы увидеть, чтоconvert
до.пример
ОБНОВЛЕНИЕ № 1 - Отладка дальше
Эта проблема раздражала меня, поэтому я, наконец, понял это. Проблема заключается в выборе шрифта, и он не может отображать этот конкретный глиф.
Прежде всего вы можете использовать эту команду, чтобы увидеть, какие шрифты у вас есть в наличии
convert
. Итак, начнем там.Выше показан пример, каждый шрифт имеет строки, похожие на выше. Кстати, выполнение этой команды показывает, что у нас есть несколько сотен шрифтов:
Далее мы собираемся выполнить задачу кодирования нашего персонажа,
\u2318
используя каждый шрифт, который у нас есть. Это звучит сложно, но довольно тривиально с некоторыми хорошо продуманными вкладышами через Bash.Этот фрагмент будет использовать цикл for для прохождения каждого шрифта, запустив измененную версию вашей
convert
команды.Сейчас мы смотрим результаты. Многие из шрифтов не могли отображать этот конкретный глиф, но некоторые могли, что, по-видимому, указывает на то, что это не обязательно ошибка в ImageMagick, а скорее ограничение самих шрифтов. Вот список шрифтов, которые у меня были, которые могли отображать этот глиф.
Я визуально просмотрел все ~ 260 полученных
.gif
файлов, чтобы определить, что сработало, а что нет. Вот несколько примеров из тех, которые сработали, чтобы вы могли их увидеть.Ссылки
источник
-font DejaVu-Sans-Bold
помогло пометить изображение пиратским черепом: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
спасибо за превосходную помощь!