micropython-font-to-py/icon_fonts/README.md

1.7 KiB

Icon Fonts

It is possible to display icons by incorporating their images in a font file. There are .ttf and .otf files available which can be converted to Python using font_to_py.py. I have not had much success with these. I also wanted to create my own icons. I also experimented with using a font editor to modify an existing font. I found the font editor unintuitive and hard to use.

The solution offered here uses the Linux bitmap editor plus a utility to convert a set of its output files to a Python font file. The image below shows typical usage.

Image

The bitmap editor

This is documented in the man pages, but it is easy and intuitive to use. To generate (say) 19x19 icons, issue

$ bitmap -size 19x19

Save each bitmap under a different name: I use a .c extension as they are C source files.

You need to create an additional icon to provide the output under error conditions, i.e. if an attempt is made to display a glyph not in the font.

The file list

Create a text file listing the bitmap filenames, one filename per line. The icon to be used as the default (error) image should be first. Subsequent icons will be assigned to characters "A", "B", "C"...

Creating the Python font

Assuming a file list my_file_list.txt, the following will create my_font.py. It requires Python 3.8 or later. The font_to_py.py file should be in the same directory.

$ ./c_to_python_font.py my_file_list.txt my_font.py

Using the font

The following will print icon[2] where icon[0] is the default and icon[1] is associated with "A".

# Instantiate the ssd display object
import my_font
import CWriter
wri = CWriter(ssd, my_font)
wri.printstring("B")