Une font alternative pour MicroPython

Bonjour à tous,

Si vous utilisez régulièrement MicroPython avec des afficheurs graphiques, vous n'aurez certainement pas manqué d'être déçu par la Font par défaut utilisée par MicroPython.

Il y a bien entendu des solutions:

  1. Utilliser SMALL-FONT (l'objet de ce billet)
  2. Utiliser le projet FreeType-Generator et des fichiers de Fonts binaires transférés sur la plateforme MicroPython.
  3. Recompiler MicroPython avec une Font alternative (mais c'est une tâche ardue).

SMALL-FONT

Le projet MicroPython SMALL-FONT  permet d'utiliser une Font moins "grasse" que celle proposée par défaut avec MicroPython.

Source: SMALL-FONT pour MicroPython
 

Small-Font utilise la classe FontDrawer définie dans sfont.py . La classe FontDrawer (de sfont.py) embarque les données binaires de la Small font et manipule le FrameBuffer du pilote de votre afficheur pour dessiner le texte à afficher.

Cette solution simple fonctionne donc avec tous les pilotes d'affichage bâti sur la classe FrameBuffer (comme le recommande MicroPython). Et cela sans priver l'utilisateur des fonctionnalités habituelles de son pilote.

Voici comment utiliser le SMALL-FONT avec un écran OLED 128x32 et le pilote MicroPython SSD1306 officiel.

from machine import Pin, I2C
import time
import ssd1306
from sfont import FontDrawer

# Créer le bus I2C
i2c = I2C( sda=Pin(23), scl=Pin(22) ) # ESP32

# Créer le pilote MicroPython
lcd = ssd1306.SSD1306_I2C( 128, 32, i2c )
# Créer le SMALL-FONT FontDrawer pour afficher le
# texte compacte. Le FrameBuffer du pilote est passé
# en premier argument (SSD1306_I2C dérive de FrameBuffer)
fd = FontDrawer( lcd, font_color=1, bgcolor=0 )

# Affichage avec la font MicroPython
lcd.text( "MicroPython! <3", 0, 0 )

# Dessiner une ligne horizontale
# méthode standard de FrameBuffer
lcd.hline( 0, 16, 128, 1 ) #x,y, width, color

# Affiche un texte SMALL-FONT en utilisant
# la classe FontDrawer
fd.text( "MicroPython! <3", 0, 20 )

lcd.show()  # Afficher sur l'OLED!

Intéressant n'est-ce pas!

Ressource

Aucun commentaire