TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #450 11.1K
Прочитал недавно в полезняшках — про кириллические символы, ну и пошел экспериментировать, но немного в другом векторе. Раскроем так сказать тему сисек.

Сегодня займемся поиском шрифтов в Linux, которые поддерживают русскую букву «А». И посмотрим какие из них могут использоваться совместно с утилитой convert.

Чо еще в субботу делать 🍷 Завтра пауза с постами, приведу к нам сюда еще единомышленников.

Для начала нужно узнать какие вообще шрифты в системе поддерживают этот символ. Для этого используем утилиту «fc-list» из пакета «fontconfig».

Для поиска возьмем код символа «0410» в utf-8. Он соответствует кириллической букве «А».

Также можно указать диапазон :charset=0410-044f (охватывает все заглавные и строчные буквы русского алфавита от А до Я) ну или язык :lang=ru.

✔️ Поехали! Выводим все шрифты, которые поддерживают кодовую точку «0410».

fc-list ':charset=0410' --format '%{file}\n'


Есть нюанс. В список могут попасть шрифты, которые будут содержать кодовые точки, но у них не будет изображений символов.

Далее сопоставляем найденные шрифты, с теми которые поддерживает утилита convert.

Утилита convert является частью пакета программного обеспечения ImageMagick. Это мощный инструмент для создания, редактирования, преобразования и отображения растровых изображений.


fc-list ':charset=0410' --format '%{file}\n' | grep -wof - <(convert -list font)


Чо тут происходит. Мы отдаём через pipe результаты отработки команды fc-list на стандартный ввод grep.

w = шаблон, соответствует слову
o = выводим только совпадения, а не всю строку
f = файл строки в качестве шаблона поиска

Конструкция <(convert -list font) это подстановка процессов. Доступна в системах, поддерживающих именованные каналы (FIFO) или метод именования открытых файлов через /dev/fd.

Она имеет вид: <(список) или >(список)

Запускается процесс список и его входной или выходной поток связывается с именованным каналом FIFO или одним из файлов в /dev/fd.

Имя этого файла передается в качестве аргумента текущей команде как результат подстановки.

Если использовать >(список), запись в файл будет давать входные данные процессу список.

Если используется <(список), файл, переданный в качестве аргумента, необходимо читать для получения результатов работы процесса список.

Получается в качестве аргумента команда grep получит файл. Содержимым которого будет результат работы команды convert -list font.

Проверяем:

echo <(convert -list font)
cat <(convert -list font)


В итоге получаем нужный список шрифтов.

  Font: URWGothic-Book
family: URW Gothic
style: Normal
stretch: Normal
weight: 400
glyphs: URWGothic-Book.otf
Font: URWGothic-BookOblique
family: URW Gothic
style: Oblique
stretch: Normal
weight: 400
glyphs: URWGothic-BookOblique.otf


Ну а дальше можем заряжать все это в bash скрипт и гордится, какие мы с тобой охуенные.

Для примера давай сгенерим кучу изображений с русской буквой «А» используя найденные шрифты.

#!/bin/bash  

code=0410
char=$(printf '%b' '\U'$code)
fc-list ':charset='$code --format '%{file}\n' |\
grep -wof - <(convert -list font) | while read line
do
name=${line##*/}
name=${name%.*}
convert -font "$line" -pointsize 48 label:"$char" ./${name}.png
done


После запуска скрипта, в каталоге появится портянка файлов с изображениями, учти этот момент, чтобы не засрать себе поапочку. Лучше сразу в tmp это делай.

У меня всё, не смею тебя больше отвлекать. Изучай. Увидимся!

tags: #bash #linux
—
🔔 @bashdays
More from @bashdays
  1. Sep 30, 2026↗️ Для всех, кто строит 15 октября Cloud․ru соберет инженеров, которые строят и эксплуатир…
  2. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  3. Sep 24, 2026Post #1565
  4. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  5. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  6. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →