Este repositorio define un método para crear e implementar fuentes para usar con controladores de pantalla de Micrypthon. Una utilidad de PC representa los archivos de fuentes estándar de la industria como un mapa de bits en forma de Python Sourcecode. Un módulo de Micopython permite que dichos archivos se muestren en dispositivos con controladores de dispositivos adecuados. Estos incluyen pantallas OLED utilizando el chip SSD1306 y el controlador de dispositivo oficial. Los controladores compatibles para una variedad de tecnologías de visualización están disponibles como parte del repositorio nano-GUI.
Las plataformas de micrypthon generalmente tienen RAM limitada, pero un almacenamiento más abundante en forma de memoria flash. Los archivos de fuentes tienden a ser relativamente grandes. La técnica convencional de representar cadenas a un dispositivo implica cargar toda la fuente en RAM. Esto es rápido pero intensivo en RAM. La alternativa de almacenar la fuente como un archivo de acceso aleatorio y cargar glifos individuales en RAM a pedido es demasiado lenta para un rendimiento razonable en la mayoría de los dispositivos de visualización.
Esta alternativa implementa una fuente como un archivo fuente de Python, con los datos declarados como objetos bytes . Tal archivo puede congelarse como bytecode: esto implica construir el firmware desde la fuente con el archivo de Python en un directorio específico. En la importación se usa muy poca RAM, sin embargo, se puede acceder rápidamente a los datos. Tenga en cuenta que el uso de bytecode congelado es completamente opcional: los archivos de fuentes pueden importarse de manera normal si el uso de RAM no es un problema.
El archivo resultante se puede usar con dos variedades de controladores de dispositivos de pantalla:
framebuffer .Esto comprende cuatro componentes, enlaces a los documentos a continuación:
Writer . Esta utilidad de línea de comando está escrita en Python 3 y se ejecuta en una PC. Para convertir una fuente escalable a Python, la utilidad toma la entrada un archivo de fuente en forma ttf o otf junto con una altura en píxeles y emite un archivo fuente de Python que contiene la fuente como un mapa de bits. Se admite la representación de tono fija y variable. El diseño tiene los siguientes objetivos:
El primero se logra suministrando argumentos específicos de hardware a la utilidad. Estos definen el mapeo horizontal o vertical y el orden de bits para los datos de fuentes.
El segundo se logra mediante el uso de Freetype y FreeType Python Bindings. Su uso está documentado aquí. Esto también detalla las mediciones del uso de RAM al importar fuentes almacenadas como bytecodo congelado.
La conversión de archivos ttf o otf escalables funciona programáticamente mejor para fuentes más grandes. Para fuentes pequeñas, es mejor usar archivos de fuentes de mapa de bits diseñados a mano. Estos ahora son compatibles: los archivos de fuentes bdf o pcf pueden convertirse en fuente de Python en el mismo formato que los archivos que se originan en fuentes escalables. Consulte también Micropyezfonts que incluye fuentes pequeñas compatibles (en examples/fonts ).
Kerning no es compatible. Las fuentes son un bit por píxel. Las pantallas de color son compatibles con la clase CWriter que agrega información de color en la etapa de renderizado. Esto supone que todos los píxeles de un personaje están coloreados de manera idéntica.
Por defecto, la utilidad font_to_py.py produce el conjunto de caracteres ASCII de chr(32) a chr(126) inclusive. Las opciones de línea de comandos habilitan el conjunto de caracteres que se modificará para incluir caracteres unicode arbitrarios. Se pueden especificar conjuntos alternativos, como para idiomas que no son de inglés. El soporte eficiente ahora se proporciona para conjuntos de caracteres dispersos.
Un archivo de fuentes se importa de la manera habitual, por ejemplo, import font14 . Los archivos de fuentes de Python contienen las siguientes funciones. Estos valores de retorno definidos por los argumentos que se proporcionaron a font_to_py.py :
height devuelve la altura en píxeles.
max_width Devuelve el ancho máximo de un glifo en píxeles.
Compensación baseline desde la parte superior del glifo hasta la línea de base.
hmap devuelve True si la fuente se asigna horizontalmente.
reverse Devuelve True si se especificó la reversión de bits.
Los retornos monospaced True si se especificó la representación monoespaciada.
min_ch devuelve el valor ordinal del carácter más bajo en el archivo.
max_ch Devuelve el valor ordinal del carácter más alto en el archivo.
Los glifos se devuelven con la función get_ch . Su argumento es un carácter unicode y devuelve los siguientes valores:
memoryview que contiene los bytes glifos. La utilidad font_to_py.py permite especificar un glifo predeterminado (¿típicamente ? ). Si se llama con un personaje indefinido, este glifo será devuelto.
Las funciones min_ch y max_ch son principalmente relevantes para conjuntos de caracteres contiguos.
Todo el código se publica bajo la licencia MIT.