from PIL import Image, ImageDraw, ImageFont # Настройки font_size = 20 # Размер шрифта chars_per_row = 352 # Количество символов в строке grid_size = font_size + 2 # Размер ячейки (с отступами) font_path = "/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf" # Путь к шрифту # Диапазоны символов ascii_range = range(32, 128) # ASCII символы cyrillic_range = range(0x0400, 0x0500) # Кириллица (U+0400 - U+04FF) # Объединённый диапазон символов all_chars = list(ascii_range) + list(cyrillic_range) # Вычисление размеров изображения rows = (len(all_chars) + chars_per_row - 1) // chars_per_row output_size = (chars_per_row * grid_size, rows * grid_size) # Создание изображения image = Image.new("1", output_size, color=1) # Монохромное изображение (1 бит на пиксель) draw = ImageDraw.Draw(image) font = ImageFont.truetype(font_path, font_size) # Рисование символов for idx, char_code in enumerate(all_chars): x = (idx % chars_per_row) * grid_size y = (idx // chars_per_row) * grid_size draw.text((x + 1, y + 1), chr(char_code), font=font, fill=0) # Сохранение в BMP image.save("font_grid_with_cyrillic.bmp") print("Шрифт с кириллицей сохранён в font_grid_with_cyrillic.bmp")