/fontedit

A desktop app to import, edit and export fonts as byte arrays for use in embedded systems

Primary LanguageC++GNU General Public License v3.0GPL-3.0

FontEdit

FontEdit is a desktop application that allows you to convert general-purpose fixed-width desktop fonts to byte array representation that's suitable for use in embedded systems displays.

It's written in C++ with Qt UI and was tested on Windows, Linux and MacOS.

Read more about it in the blog post.

FontEdit

Features

With FontEdit you can:

  • import fonts from the operating system - to load a custom font, you should first register it in your OS,
  • edit individual font glyphs after importing - automatic import is a best-effort operation and although the font should be usable right after importing, you might want to tweak it so that it looks better,
  • add new glyphs to a font document - either by copying an existing glyph, starting from scratch or adding a glyph from a character you input (useful for adding non-ASCII characters to your font),
  • export the font as source code (in a form of byte array) suitable for Arduino, C/C++ or Python,
  • save your progress to a file - the font document file is cross-platform so you can e.g. import and edit it on MacOS and then move to RPi and export the code from there,
  • as of 1.1.0 you can do partial exports, i.e. export only a bunch of font characters that you really need for your application (read more in this blog post).

Font Editor

You can edit font glyphs with a minimal editor that's controlled with a mouse and keyboard. Click and drag the mouse to set pixels (making them black), hold Alt or Ctrl (⌘) to erase. Use touchpad scroll (mouse wheel) with Ctrl (⌘) to zoom the editor canvas.

You can also reset the current glyph or the whole font to their initial state (from latest save). The editor supports Undo/Redo for most operations.

Source Code Export

The font data can be exported to:

  • a C file (also suitable for use with C++),
  • an Arduino-specific C file (using PROGMEM),
  • a Python list or bytes object (both compatible with Python 2.x/3.x and MicroPython).

You can switch between MSB and LSB mode, invert all the bits, and conditionally include line spacings in font definition (not recommended unless you have a very good reason for it). The tab size can be configured.

Getting FontEdit

Packages

The Releases GitHub page contains packages for:

  • Ubuntu/Debian (amd64),
  • Raspbian Buster (armhf),
  • MacOS,
  • Windows.

Building from source

Prerequisites:

  • Qt (tested with >= 5.9)
  • cmake (3.9 or newer)
  • C++ compiler that supports C++17

Follow these steps to build the app from the source code:

  1. Clone the Git repository:

    $ git clone https://github.com/ayoy/fontedit
    $ cd fontedit
    
  2. Check out Git submodules:

    $ git submodule update --init
    
  3. Build with CMake:

    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_BUILD_TYPE=Release ..
    $ make
    
  4. (Optionally) Install on Linux with: make install or create a dmg image on MacOS with make dmg.

Bugs, ideas, improvements

Please report bugs and feature requests via GitHub Issues or as a pull request.

License

© 2020 Dominik Kapusta

This app is distributed in accordance with GPL v3. See LICENSE for details. The app uses icons from www.flaticon.com made by Smashicons, Freepik and Pixel perfect.