Meet FontEdit – The Custom Font Editor for LCD, LED and E-Paper Displays
Fonts sourcing/creation, usage and management, are some of the major challenges firmware developers face with projects where the display (TFTs, Epaper displays, etc.), is a critical element of the project’s performance. From access to clear and good looking fonts to managing the size of the font files when running on MCUs with limited memory, is an issue that cost developers tons of time during product development, but all of that is about to change thanks to Fontedit.
Developed by Dominik Kapusta, as a personal solution to the challenges with fonts for an E-paper display based project, Fontsedit is a software that provides embedded software developers with an easy way to import, preview, edit and export a font for use in embedded systems’ displays.
It is capable of opening any general-purpose fixed-width desktop font and gives users the freedom to use custom fonts (although, for now, it has to be a font registered in your operating system). The software automatically imports font glyphs for characters in the ASCII printable range (32…126 or 0x20…0x7e), and list all the available glyphs with an edit view that allows users to fine-tune individual glyphs.
Font glyphs can be edited by interacting with the editor using the mouse and the keyboard. For example, Clicking and dragging the mouse can be used to set pixels (making them black), while holding Alt or Ctrl (⌘) can be used to erase. The touchpad scroll (or mouse wheel) with Ctrl (⌘) can be used to zoom (in or out) the editor canvas.
Asides editing existing imported font glyphs, new glyphs can also be added to existing font documents by copying an existing glyph, starting from scratch with a blank canvas, or adding a glyph from a character you put in (useful for adding non-ASCII characters to your font).
Once the font edit/creation is completed, it can be exported either as a C file (also suitable for C++), an Arduino-specific C file (using
PROGMEM), or as a Python list or bytes object (both compatible with Python 2.x/3.x and MicroPython). The export screen allows users to switch between MSB and LSB mode, invert all the bits, and conditionally include line spacings in font definition.
The software is written in C++17 with UI in Qt and it has been tested on MacOS, Linux (Ubuntu 18.04 and 19.10), Windows 10, and Raspbian Buster, so it’s pretty flexible and works with most Operating systems.
Dominik has reiterated his desire to continue improving the tool and users/community folks who are interested in contributing to the project can report bugs and request features via GitHub Issues or as a pull request.