MicroPython - Générateur de font FreeType-Generator et FontDrawer
Ce week-end fût l'occasion de se pencher sur le projet MicroPython "FreeType Generator" permettant de générer des fichiers de fonts pour MicroContrôleur... ainsi que FontDrawer permettant d'exploiter les font sous MicroPython
ft-generator.py
Le script ft-generator.py pour Python 3 permet transforme une font TrueType en fichier binaire compacte qui pourra être exploité sur une plateforme MicroPython.
Le projet inclus déjà plusieurs fichiers binaires prêt à l'emploi.
La partie la plus intéressante du projet c'est FontDrawer
FontDrawer
FontDrawer (sous projet) est une classe MicroPython qui exploite un fichier de font binaire pour dessiner des chaînes de caractères sur un écran TFT / LCD.
FontDrawer dessines les caractères dans un FrameBuffer... il est donc compatible avec la plupart des afficheurs puisque MicroPython recommande de dériver les pilotes d'écran graphique de la classe FrameBuffer.
Le code d'exemple ci-dessous utilisant un écran OLED 128*4 démontre à quel point il est simple de charger la font d'écrire du texte dans le FrameBuffer.
from machine import I2C from SSD1306 import SSD1306_I2C from fdrawer import FontDrawer i2c = I2C( 1, freq=2000000 ) lcd = SSD1306_I2C( width=128, height=64, i2c=i2c, addr=0x3c, external_vcc=True ) lcd.rect( 0, 0, 128, 64, 1 ) lcd.show() fd = FontDrawer( frame_buffer=lcd, font_name = 'vera_m15' ) fd.print_str( "Font Demo", 2, 2 ) fd.print_char( "#", 100, 2 ) fd.print_str( fd.font_name, 2, 18 ) lcd.show()
Ce qui produit le résultat suivant:
Source: FreeType Generator |
Lorsque le FontDrawer est instancié, il est nécessaire de lui passer le FrameBuffer de l'afficheur en paramètre AINSI que le nom du fichier de Font à charger depuis le système de fichier.
Le fichier de Font, vera_m15.bin, est ouvert pour en extraire les données utiles et les charger en mémoire. Charger les données binaires évite la coûteuse phase de parsing d'un script python (par exemple, lorsque la Font est définie sous forme de données dans un script python).
Note: les développements doivent encore avancer, ne fut-ce que pour dessiner correctement les espaces dans le texte (pas grand chose, ce sera vite fait).
Documentation
Le projet est, pour l'instant, documenté en anglais dans le dépôt GitHub.
Il est accompagné d'exemples, description technique, photo d'exemple et autre information utiles.
- Documentation FreeType-Generator
- Classe FontDrawer (sous projet FreeType-Generator).
Bonne découvertes
Dominique
Écrire un commentaire