Font rendering

From uGFX Wiki
Revision as of 12:53, 19 October 2014 by Tectu (Talk | contribs)

Jump to: navigation, search

µGFX comes with a built-in support of mcufont. The author of the mcufont project provides a re-licensed version of his works to the µGFX projects.

Feature

The µGFX font rendering engine provides the following features:

  • unicode
  • anti-aliasing
  • kerning
  • .ttf and .bdf support

For information about cyrillic font support, see Cyrillic.

Fonts

Every font that's available in a .ttf or .bdf format can be displayed through µGFX. However, we added a bunch of fonts in different sizes and versions which should cover most use cases. Use the Font name as the parameter of the gdispOpenFont() routine.

Font Font name
DejaVu Sans 10 DejaVuSans10
DejaVu Sans 12 DejaVuSans12
DejaVu Sans 12 Bold DejaVuSansBold12
DejaVu Sans 12 Anti-Aliased DejaVuSans12_aa
DejaVu Sans 12 Anti-Aliased Bold DejaVuSansBold12_aa
DejaVu Sans 16 DejaVuSans16
DejaVu Sans 16 Anti-Aliased DejaVuSans16_aa
DejaVu Sans 24 DejaVuSans24
DejaVu Sans 24 Anti-Aliased DejaVuSans24_aa
DejaVu Sans 32 DejaVuSans32
DejaVu Sans 32 Anti-Aliased DejaVuSans32_aa
Fixed 10x20 fixed_10x20
Fixed 7x14 fixed_7x14
Fixed 5x8 fixed_5x8
UI1 UI1
UI1 Double UI1 Double
UI1 Narrow UI1 Narrow
UI2 UI2
UI2 Double UI2 Double
UI2 Narrow UI2 Narrow
Large numbers LargeNumbers

Note that each of these fonts has to be enabled in your configuration file.

The UI fonts are created by the µGFX developers to provide a default font. The UI fonts stand under the GFX license and should therefore be used in preference to other fonts if suitable. The other fonts are under their own respective licenses.

Usage

Before you can use a font, you first have to open it by calling gdispOpenFont().

font_t font = gdispOpenFont("DejaVuSans32_aa");

Note: When the font name specified could not be found, the last enabled font in the configuration file will be used.

You should call gdispCloseFont() to release any allocated resources if you don't need a font any longer:

gdispCloseFont(font);

After opening a font, the font variable can now be passed to any API call that takes a font parameter. You may read through the API reference to get a list of all font rendering routines.

Adding fonts

The following step-by-step guide will lead you through the process of adding a custom *.ttf font. This guide works for every font, not only ASCII but also cyrillic and any other unicode compatible ones.

1. Acquire a font

First of all, you'll need a font in the *.ttf source. You can find plenty of these using google. Please notice their licenses.

2. Convert the font

The next step is to convert the font into a format that can be understood by the µGFX decoder. This can be done very easily using our online converter. The converter allows you to set the font size, enable or disable anti-aliasing and filter for certain glyphs. Filtering un-needed glyphs is essential to keep the font size low. This table might help you choose the correct glyph range. A click on the button «Get .c file» will offer you a C file to download after a few moments. Please click that button just once. It can take up to a minute to convert a larger font.

3. Implement the font

Place the downloaded c file inside your project directory and name it userfonts.h. Alternatively write a userfonts.h file that includes each of your downloaded font c files. In your gfxconf.h, enable the following settings:

#define GDISP_NEED_TEXT			TRUE
#define GDISP_NEED_UTF8			TRUE
#define GDISP_NEED_ANTIALIAS		TRUE   // if wanted
#define GDISP_NEED_TEXT_KERNING		TRUE   // if wanted
#define GDISP_INCLUDE_USER_FONTS	TRUE

4. Open the font

You can now open and use this font as any other one. If you're curious about the parameter of gdispOpenFont(), you can either use the full_name or the short_name field that can be found in the struct at the very bottom of the C file (first and second entry). Please note that you need to configure your text editor to operate in UTF-8 mode, when you want to display those fonts successfully.

For a more detailed guide on how to add your own font, see Cyrillic.