Этот репозиторий определяет метод создания и развертывания шрифтов для использования с драйверами отображения микропитона. Утилита для ПК видит отраслевые стандартные файлы шрифтов в виде растрового изображения в виде Python Sourcecode. Модуль MicropyThon позволяет отображать такие файлы на устройствах с подходящими драйверами устройства. К ним относятся OLED -дисплеи с использованием чипа SSD1306 и официального драйвера устройства. Совместимые драйверы для различных технологий отображения доступны в рамках репозитория Nano-Gui.
Платформы для микропитонов обычно имеют ограниченную оперативную память, но более многочисленное хранилище в виде флэш -памяти. Файлы шрифтов имеют тенденцию быть относительно большими. Обычная техника рендеринга строк на устройство включает в себя загрузку всего шрифта в ОЗУ. Это быстро, но интенсивно. Альтернатива хранения шрифта в качестве файла случайного доступа и загрузки отдельных глифов в ОЗУ по требованию слишком медленная для разумной производительности на большинстве отображающих устройств.
Эта альтернатива реализует шрифт в качестве исходного файла Python, при этом данные объявляются как bytes -объекты. Такой файл может быть заморожен в качестве Bytecode: это включает в себя создание прошивки из источника с файлом Python в определенном каталоге. При импорте очень мало оперативной памяти используется, но данные могут быть быстро доступны. Обратите внимание, что использование замороженного байт -кода является совершенно необязательным: файлы шрифтов могут быть импортированы обычным способом, если использование RAM не является проблемой.
Результирующий файл используется с двумя разновидностями драйверов отображения устройств:
framebuffer .Это включает в себя четыре компонента, ссылки на документы ниже:
Writer . Эта утилита командной строки записана в Python 3 и работает на ПК. Чтобы преобразовать масштабируемый шрифт в Python, утилита приобретает ввод файла шрифта в форме ttf или otf вместе с высотой в пикселях и выводит исходный файл Python, содержащий шрифт как растровый карту. Поддерживается фиксированное и переменное визуализацию. У дизайна есть следующие цели:
Первый достигается путем предоставления аппаратных аргументов в утилиту. Они определяют горизонтальное или вертикальное отображение и порядок битов для данных шрифта.
Второй достигается с помощью Freetype и привязки Freetype Python. Его использование задокументировано здесь. Это также подробно описывает измерения использования оперативной памяти при импорте шрифтов, хранящихся как замороженный байт -код.
Преобразование масштабируемых файлов ttf или otf Программно работает лучше всего для больших шрифтов. Для небольших шрифтов лучше всего использовать вручную растрованные файлы шрифтов. Они теперь поддерживаются: файлы шрифтов bdf или pcf могут быть преобразованы в Python Source в том же формате, что и файлы, происходящие из масштабируемых шрифтов. См. Также Micropeezfonts, которые включают совместимые небольшие шрифты (в examples/fonts ).
Кернинг не поддерживается. Шрифты - один бит на пиксель. Цветные дисплеи поддерживаются классом CWriter , который добавляет информацию о цвете на этапе рендеринга. Это предполагает, что все пиксели персонажа окрашены одинаково.
По умолчанию утилита font_to_py.py создает набор символов ASCII от chr(32) до chr(126) включительно. Параметры командной строки Включите изменение набора символов, чтобы включить произвольные символы Unicode. Могут быть указаны альтернативные наборы, например, для неанглийских языков. Эффективная поддержка теперь предоставляется для разреженных наборов символов.
Файл шрифта импортируется обычным способом, например, import font14 . Файлы шрифтов Python содержат следующие функции. Эти возвратные значения, определенные аргументами, которые были предоставлены для font_to_py.py :
height возвращает высоту в пикселях.
max_width возвращает максимальную ширину глифа в пикселях.
baseline смещение от вершины глифа до базовой линии.
hmap возвращает True если шрифт горизонтально отображен.
reverse возврат True если было указано изменение бита.
monospaced возвращает True если был указан моносированный рендеринг.
min_ch возвращает порядковое значение самого низкого символа в файле.
max_ch возвращает порядковое значение самого высокого символа в файле.
Глифы возвращаются с функцией get_ch . Его аргумент - символ Unicode, и он возвращает следующие значения:
memoryview , содержащий байты глифа. Утилита font_to_py.py позволяет указать глиф по умолчанию (обычно ? ). При вызове с неопределенным персонажем этот глиф будет возвращен.
Функции min_ch и max_ch в основном имеют отношение к смежным наборам символов.
Весь код выпускается по лицензии MIT.