Table of Contents
Custom fonts for Ucglib
This is how I built custom fonts for Ucglib/ Ucglib_Arduino on Linux.
Ucglib uses BDF fonts as a source. The basic process to convert a typical font file for use in Ucglib is:
- Use
bdconf
to convert the BDF format to C. - Add the new code to the appropriate Ucglib file.
Details are provided below.
Requirements
Getting otf2bdf and fontforge
otf2bdf
, gbdfed
and fontforge
are available in many Linux distributions.
Building bdfconv
You will probably have to build bdfconv
yourself. Download the Ucglib repository, move into tools/font/bdfconv
and
$ make
This will build a bdfconv
executable. Put that executable or a symbolic link to it into your bin
directory.
The process
Convert OTF or TTF to BDF
Using otf2bdf
:
$ otf2bdf -v -n -r 72 -p 71 -l '32 48_57 65_90' -c M -o filename.bdf filename.otf
gbdfed
also can import and convert fonts, but the monospace/proportional setting seems to be wonky. fontforge
may be another option.
View the result using gbdfed
or fontforge
.
Once the font is in BDF format, you can use fontforge
to edit it, which might include removing unused characters or tweaking bitmaps.
Convert the BDF file to C using bdfconv
$ bdfconv -v -b 2 -f 0 -n fontname -d image.tga -o filename.c filename.bdf
Note: There seems to be an upper limit to the size of the font. What is it?
Add new code to Ucglib
- Paste the content of the new C file to
src/clib/ucg_pixel_font_data.c
— making sure to remove the redundant#include "ucg.h"
- Add an
extern
entry for the above variable tosrc/clib/ucg.h