# Creating Custom Symbol Fonts for Adafruit GFX Library

## Overview

In this tutorial we will show you how to create custom symbol fonts for the Adafruit GFX library.

The Adafruit GFX library has a number of custom fonts ranging in size from 9-24 points. There is a mono space font similar to Courier, a Sans Serif similar to Arial or Helvetica, and a Serif font similar to Times. There are also bold, oblique, and bold oblique versions of each of these. But these fonts only cover the standard ASCII character set from 32-126 printable characters. There are no special symbols such as arrows, card suits, or other dingbats that you would find in your usual symbol type fonts.

There is the ability to create a font in the proper format using a font conversion tool provided with the library. But it is a commandline utility that needs to be recompiled for your particular variety of Linux. For a Mac or PC user, compiling a utility and running it from a commandline is a hurdle many people (including myself) don't care to tackle. Even though I have several Raspberry Pi units sitting around that is still beyond my particular skill set.

Even if I could compile and run the utility, I would have to search for a type font to be converted that contained the symbols I wanted. It might even require converting multiple fonts just to gather up everything I wanted.

I needed to create a custom symbol font that would display media controls such as rewind, fast-forward, play, pause, stop as well as arrow keys in eight directions and some other custom designs such as a Bluetooth or a power button. So I developed a technique described here to layout the bitmaps for these custom symbols and manually put together a custom symbol font.

I created these special symbols for an assistive technology device that I call my "Ultimate Remote". It allows me to operate TV, cable, Blu-ray and other devices via infrared remote signals as well as make a Bluetooth connection to my iPhone for switch control. I can operate these devices with just three pushbuttons. I will be documenting that device very soon, but we wanted to show how I created these custom symbols. Here is a screen grab of the cable TV controls page on my remote. It shows items like fast-forward and rewind and other typical media controls symbols.

![](https://cdn-learn.adafruit.com/assets/assets/000/078/220/medium800/arduino_compatibles_ur_cable.jpg?1563290614)

Here are some more screen grabs showing a mouse control page and another page which implements an entire board including function keys along the bottom of the screen.

![](https://cdn-learn.adafruit.com/assets/assets/000/078/221/medium800/arduino_compatibles_ur_mouse.jpg?1563290715)

![](https://cdn-learn.adafruit.com/assets/assets/000/078/222/medium800/arduino_compatibles_hb_keyboard.jpg?1563290740)

I will describe the system I used and provide you with the sample sketch so that you could use my custom symbols or adapt symbols of your own.

This learning guide presumes that you are somewhat familiar with the Adafruit GFX library and how to use custom fonts with that library. You can find more information on the library and the text capabilities at [the learning guide found here](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). It also presumes some understanding of hexadecimal notation and how to turn a string of bits into a hex value.

- [Next Page](https://learn.adafruit.com/creating-custom-symbol-font-for-adafruit-gfx-library/hardware-and-software-requirements.md)

## Featured Products

### TFT FeatherWing - 2.4" 320x240 Touchscreen For All Feathers

[TFT FeatherWing - 2.4" 320x240 Touchscreen For All Feathers](https://www.adafruit.com/product/3315)
A Feather board without ambition is a Feather board without FeatherWings! Spice up your Feather project with a beautiful 2.4" touchscreen display shield with built in microSD card socket. This TFT display is 2.4" diagonal with a bright 4 white-LED backlight. You get&nbsp; 240x320...

In Stock
[Buy Now](https://www.adafruit.com/product/3315)
[Related Guides to the Product](https://learn.adafruit.com/products/3315/guides)
### Adafruit TFT FeatherWing - 3.5" 480x320 Touchscreen for Feathers

[Adafruit TFT FeatherWing - 3.5" 480x320 Touchscreen for Feathers](https://www.adafruit.com/product/3651)
Spice up your Feather project with a beautiful 3.5" touchscreen display shield with built in microSD card socket. This TFT display is 3.5" diagonal with a bright 6 white-LED backlight. You get a massive 480x320 pixels with individual 16-bit color pixel control. It has way more...

In Stock
[Buy Now](https://www.adafruit.com/product/3651)
[Related Guides to the Product](https://learn.adafruit.com/products/3651/guides)
### Adafruit PyGamer for MakeCode Arcade, CircuitPython or Arduino

[Adafruit PyGamer for MakeCode Arcade, CircuitPython or Arduino](https://www.adafruit.com/product/4242)
What&nbsp;fits in your pocket, is fully Open Source, and can run CircuitPython, MakeCode Arcade or Arduino games you write yourself? That's right, it's the **Adafruit PyGamer!** We wanted to make an entry-level gaming handheld for DIY gaming, and maybe a little...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4242)
[Related Guides to the Product](https://learn.adafruit.com/products/4242/guides)
### Adafruit HalloWing M0 Express

[Adafruit HalloWing M0 Express](https://www.adafruit.com/product/3900)
[This is Hallowing..this is Hallowing... Hallowing! Hallowing!&nbsp;](https://www.youtube.com/watch?v=kGiYxCUAhks&t=39s)

Are you the kind of person who doesn't like taking down the skeletons and spiders until after January? Well, we've got the development board for...

In Stock
[Buy Now](https://www.adafruit.com/product/3900)
[Related Guides to the Product](https://learn.adafruit.com/products/3900/guides)

## Related Guides

- [Adafruit 2.4" TFT FeatherWing](https://learn.adafruit.com/adafruit-2-4-tft-touch-screen-featherwing.md)
- [Adafruit 3.5" 480x320 TFT FeatherWing](https://learn.adafruit.com/adafruit-3-5-tft-featherwing.md)
- [Adafruit Hallowing M0](https://learn.adafruit.com/adafruit-hallowing.md)
- [Introducing Adafruit PyGamer](https://learn.adafruit.com/adafruit-pygamer.md)
- [Trash Panda: The Game](https://learn.adafruit.com/trash-panda-the-game.md)
- [Custom Color Palettes for MakeCode Arcade Games](https://learn.adafruit.com/custom-color-palettes-for-makecode-arcade-games.md)
- [Hallowing M0 Spirit Board](https://learn.adafruit.com/hallowing-spirit-board.md)
- [Creating Your First Tilemap Game with CircuitPython](https://learn.adafruit.com/creating-your-first-tilemap-game-with-circuitpython.md)
- [Making oscilloscope images with DACs](https://learn.adafruit.com/dac-oscilloscope-images.md)
- [CircuitPython Display_Text Library](https://learn.adafruit.com/circuitpython-display-text-library.md)
- [EYE SHOOTOUT: Contrasting Open Source and Big Retail Electronics](https://learn.adafruit.com/eye-shootout-contrasting-open-source-and-big-retail-electronics.md)
- [HalloWing Lightsabers](https://learn.adafruit.com/hallowing-lightsaber.md)
- [GPS Tour Guide](https://learn.adafruit.com/gps-tour-guide.md)
- [ESP32-S3 BLE iOS Media Controller](https://learn.adafruit.com/esp32-s3-ble-ios-media-controller.md)
- [Use circup to easily keep your CircuitPython libraries up to date](https://learn.adafruit.com/keep-your-circuitpython-libraries-on-devices-up-to-date-with-circup.md)
- [CircuitPython Display Support Using displayio](https://learn.adafruit.com/circuitpython-display-support-using-displayio.md)
- [PyGamer MP3 Player with CircuitPython](https://learn.adafruit.com/pygamer-mp3-player-with-circuitpython.md)
- [CircuitPython Hardware: ILI9341 TFT & FeatherWing](https://learn.adafruit.com/micropython-hardware-ili9341-tft-and-featherwing.md)
