Scaled Text

The framebuf module built into micropython only supports an 8x8 font, which can be rather small. While it's possible to use another extension (eg. X-GLCD Font) to load and use larger fonts, you'll need a font file for every font size, and the extension will consume additional memory.
The Scaled Text extension allows you to draw larger fonts by scaling the built-in 8x8 font. You can scale it to any size, without requiring any added font files. The drawback is that the text will look blocky at larger sizes.
The scaled text extension can work with the SSD-1306, ILI9341, or ST7789 displays.
Wiring
In the below example, we are using the SSD1306, but other types of displays can also be used.

Code
This code will draw text on screen at two different sizes.
Blocks

Python
import machine
import ssd1306
import scaled_text
i2c0 = machine.I2C(0, freq=100000)
ssd1306_i2c = ssd1306.SSD1306_I2C(128, 64, i2c0, 60)
ssd1306_i2c.init_display()
text_scaler = scaled_text.ScaledText(ssd1306_i2c, fb_type=scaled_text.SSD1306)
ssd1306_i2c.fill(0)
text_scaler.text('Hello', 0, 0, 1, scale=2)
text_scaler.text('World', 0, 20, 1, scale=4)
ssd1306_i2c.show()
Results
You should see "Hello" printed in 2x sized font, and "World" in 4x sized font.
class ScaledText - draw text with scaled version of the built-in font
Constructors
scaled_text.ScaledText(fb, fb_type=SSD1306)
Creates an ScaledText object.
The arguments are:
-
fbAn object representing the screen device. -
fb_typeThe type of screen device, which can be one of the following:-
scaled_text.SSD1306For SSD1306 and SH1106. -
scaled_text.ILI9341For ILI9341 display (used in the ESP32 CYD). -
scaled_text.ST7789For ST7789 display.
-
Returns an ScaledText object.
Methods
ScaledText.text(s, x, y, c=1, scale=2, background=None):
Draws the specified text.
Depending on your display device, you may need to perform a show() after drawing the text.
The arguments are:
-
sA string representing the text to draw. -
x/yAn integer representing the x and y position to draw the text. -
cAn integer representing the color to draw. -
scaleAn integer representing how much to scale the font (ie.2will double the font size). -
backgroundAn integer representing the background color. If None, the background will not be filled.
Returns None.