Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
November 5, 2019 12:10
March 26, 2023 11:29
March 26, 2023 11:29
March 26, 2023 11:29
March 26, 2023 11:29
March 23, 2023 12:52
September 8, 2022 04:33
September 8, 2022 04:33
February 1, 2019 15:22

Support development of IconFontCppHeaders through GitHub Sponsors or Patreon

Become a Patron


C and C++ headers, C# and Python classes and Go package for icon fonts Font Awesome, Fork Awesome, Google Material Design icons, Kenney game icons, Fontaudio and Codicons.

A set of header files and classes for using icon fonts in C, C++, C#, Python and Go, along with the python generator used to create the files.

Each header contains defines for one font, with each icon code point defined as ICON_*, along with the min, max and max 16 bit code points for font loading purposes. The min excludes the ASCII characters code points. The max 16 bit is for use with libraries that only support 16 bit code points, for example Dear ImGui.

In addition the python script can be used to convert ttf font files to C and C++ headers. Each ttf icon font file is converted to a C and C++ header file containing a single array of bytes. To enable conversion, run the script with 'ttf2headerC = True'.

Icon Fonts

Font Awesome

Font Awesome 4

Font Awesome 5 free

Font Awesome 5 pro

Font Awesome 6 free

Font Awesome 6 pro

Fork Awesome

Google Material Design icons

Kenney Game icons and expansion



Ionicons and webfont Material Design Icons

  • Unsupported as of 29 Apr 2020. See Issue #16.

Notes about Font Awesome 5 and 6

Codepoints grouping

Font Awesome 5 and 6 split the different styles of icons into different font files with identical codepoints for light, regular and solid styles, and a different set of codepoints for brands. We have put the brands into a separate header file.

Generating Pro header files (Font Awesome 5)

Download the Font Awesome Pro Web package from To generate the headers, drop icons.yml in the same directory as before running the script. The file icons.yml is under ..\fontawesome-pro-n.n.n-web\metadata\icons.yml where n.n.n is the version number.

Icon files:

  • ..\fontawesome-pro-n.n.n-web\metadata\icons.yml
  • ..\fontawesome-pro-n.n.n-web\webfonts\fa-brands-400.ttf
  • ..\fontawesome-pro-n.n.n-web\webfonts\fa-light-300.ttf
  • ..\fontawesome-pro-n.n.n-web\webfonts\fa-regular-400.ttf
  • ..\fontawesome-pro-n.n.n-web\webfonts\fa-solid-900.ttf

Example Code

Using Dear ImGui as an example UI library:

#include "IconsFontAwesome5.h"

ImGuiIO& io = ImGui::GetIO();
float baseFontSize = 13.0f; // 13.0f is the size of the default font. Change to the font size you use.
float iconFontSize = baseFontSize * 2.0f / 3.0f; // FontAwesome fonts need to have their sizes reduced by 2.0f/3.0f in order to align correctly

// merge in icons from Font Awesome
static const ImWchar icons_ranges[] = { ICON_MIN_FA, ICON_MAX_16_FA, 0 };
ImFontConfig icons_config; 
icons_config.MergeMode = true; 
icons_config.PixelSnapH = true; 
icons_config.GlyphMinAdvanceX = iconFontSize;
io.Fonts->AddFontFromFileTTF( FONT_ICON_FILE_NAME_FAS, iconFontSize, &icons_config, icons_ranges );
// use FONT_ICON_FILE_NAME_FAR if you want regular instead of solid

// in an imgui window somewhere...
ImGui::Text( ICON_FA_PAINT_BRUSH "  Paint" ); // use string literal concatenation
// outputs a paint brush icon and 'Paint' as a string.

Projects using the font icon header files


Voxel editor and 6 degree of freedom FPS game with editable environments. The voxel editor's UI uses Dear ImGui with Font Awesome icon fonts.

Screenshot of the the game Avoyd's Voxel Editor UI using an IconFontCppHeaders header file for Font Awesome with Dear ImGui


Cross-platform rendering library


Real time 3D strange attractors scout

Screenshot of glChAoS.P UI using IconFontCppHeaders header file for Font Awesome with Dear ImGui


Cross platform C++ audio plug-in framework

Lumix Engine

3D C++ open source game engine

Screenshot of Lumix Engine editor using IconFontCppHeaders header file for Font Awesome with Dear ImGui

Tracy Profiler

Real time, nanosecond resolution, remote telemetry frame profiler for games and other applications.

New features in Tracy Profiler v0.6

Visual 6502 Remix

Transistor level 6502 Hardware Simulation

Related Tools


Create font subsets


Development - Juliette Foucaut - @juliettef
Requirements - Doug Binks - @dougbinks
None language implementation and refactoring - Leonard Ritter - @paniq
Suggestion to add a define for the ttf file name - Sean Barrett - @nothings
Initial Font Awesome 5 implementation - Codecat - @codecat
Suggestion to add Fork Awesome - Julien Deswaef - @xuv
Suggestion to add Ionicons - Omar Cornut - @ocornut
C# language implementation - Rokas Kupstys - @rokups
Suggestion to add Material Design Icons - Gustav Madeso - @madeso
Fontaudio implementation - Oli Larkin - @olilarkin
Initial ttf to C and C++ headers conversion implementation - Charles Mailly - @Caerind
Python language implementation - Hang Yu - @yhyu13
Go language implementation - Matt Pharr - @mpp
Codicons implementation - Robert Ryan - @rtryan98