UI: support embedded ttf fonts for imgui

master
Martin Gerhardy 2020-09-24 19:16:14 +02:00
parent 0dcfe29fe9
commit c77c255563
10 changed files with 1426 additions and 9 deletions

View File

@ -112,6 +112,7 @@ update-backward:
update-dearimgui:
$(call UPDATE_GIT,imgui,https://github.com/ocornut/imgui.git -b tables)
cp $(UPDATEDIR)/imgui.sync/im*.h $(UPDATEDIR)/imgui.sync/im*.cpp $(UPDATEDIR)/imgui.sync/misc/cpp/* contrib/libs/dearimgui/dearimgui
cp $(UPDATEDIR)/imgui.sync/misc/fonts/binary_to_compressed_c.cpp tools/binary_to_compressed_c
mv contrib/libs/dearimgui/dearimgui/imgui_demo.cpp src/tests/testimgui/Demo.cpp
sed -i 's/"imgui.h"/"ui\/imgui\/IMGUI.h"/g' src/tests/testimgui/Demo.cpp

Binary file not shown.

3
data/imgui/LICENSE.md Normal file
View File

@ -0,0 +1,3 @@
# fa-solid-900
https://github.com/FortAwesome/Font-Awesome

BIN
data/imgui/fa-solid-900.ttf Normal file

Binary file not shown.

View File

@ -1,3 +1,5 @@
set(LIB imgui)
set(SRCS
IMGUIApp.cpp IMGUIApp.h
Console.cpp Console.h
@ -5,6 +7,30 @@ set(SRCS
IMGUIInternal.h
IMGUIAddons.h
)
set(LIB imgui)
set(GEN_DIR ${GENERATE_DIR}/${LIB})
file(MAKE_DIRECTORY ${GEN_DIR})
macro(imgui_build_font NAME TTF_FILE)
set(OUTPUT_FILE ${GEN_DIR}/${NAME}.h)
set(INPUT_FILE ${ROOT_DIR}/data/${LIB}/${TTF_FILE})
add_custom_command(
OUTPUT ${OUTPUT_FILE}
COMMAND
binary_to_compressed_c
${INPUT_FILE}
${NAME} > ${OUTPUT_FILE}
DEPENDS ${INPUT_FILE} binary_to_compressed_c
WORKING_DIRECTORY ${GEN_DIR}
COMMENT "Generate header for ${TTF_FILE} in ${GEN_DIR}"
VERBATIM
)
list(APPEND SRCS ${OUTPUT_FILE})
engine_mark_as_generated(${OUTPUT_FILE})
endmacro()
imgui_build_font(FontAwesomeSolid fa-solid-900.ttf)
imgui_build_font(ArimoRegular Arimo-Regular.ttf)
engine_add_module(TARGET ${LIB} SRCS ${SRCS} DEPENDENCIES render app dearimgui)
target_include_directories(${LIB} PUBLIC .)
target_include_directories(${LIB} PUBLIC . ${GEN_DIR})

View File

@ -22,6 +22,9 @@
#include <SDL.h>
#include <SDL_syswm.h>
#include <thread>
#include "FontAwesomeSolid.h"
#include "ArimoRegular.h"
#include "IconsFontAwesome5.h"
namespace ui {
namespace imgui {
@ -199,14 +202,25 @@ app::AppState IMGUIApp::onInit() {
io.LogFilename = _writePathLog.c_str();
io.DisplaySize = ImVec2((float)_frameBufferDimension.x, (float)_frameBufferDimension.y);
//io.DisplayFramebufferScale = ImVec2(_dpiHorizontalFactor, _dpiVerticalFactor);
ImFontConfig fontCfg;
fontCfg.SizePixels = 15.0f * _dpiFactor;
_defaultFont = io.Fonts->AddFontDefault(&fontCfg);
ImFontConfig bigFontCfg;
bigFontCfg.SizePixels = 25.0f * _dpiFactor;
_bigFont = io.Fonts->AddFontDefault(&bigFontCfg);
fontCfg.MergeMode = true;
static const ImWchar rangesBasic[] = {
0x0020, 0x00FF, // Basic Latin + Latin Supplement
0x03BC, 0x03BC, // micro
0x03C3, 0x03C3, // small sigma
0x2013, 0x2013, // en dash
0x2264, 0x2264, // less-than or equal to
0,
};
io.Fonts->AddFontFromMemoryCompressedTTF(ArimoRegular_compressed_data, ArimoRegular_compressed_size,
15.0f * _dpiFactor, nullptr, rangesBasic);
static const ImWchar rangesIcons[] = {ICON_MIN_FA, ICON_MAX_FA, 0};
io.Fonts->AddFontFromMemoryCompressedTTF(FontAwesomeSolid_compressed_data, FontAwesomeSolid_compressed_size,
14.0f * _dpiFactor, &fontCfg, rangesIcons);
_bigFont = io.Fonts->AddFontFromMemoryCompressedTTF(ArimoRegular_compressed_data, ArimoRegular_compressed_size,
20.0f * _dpiFactor);
_defaultFont = io.Fonts->AddFontFromMemoryCompressedTTF(ArimoRegular_compressed_data, ArimoRegular_compressed_size,
15.0f * _dpiFactor);
ImGui::StyleColorsDark();
ImGuiStyle &style = ImGui::GetStyle();

View File

@ -0,0 +1,982 @@
// Copyright (c) 2017 Juliette Foucaut and Doug Binks
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for language C89
// from https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/metadata/icons.yml
// for use with https://github.com/FortAwesome/Font-Awesome/blob/master/webfonts/fa-solid-900.ttf, https://github.com/FortAwesome/Font-Awesome/blob/master/webfonts/fa-regular-400.ttf,
#pragma once
#define ICON_MIN_FA 0xf000
#define ICON_MAX_FA 0xf897
#define ICON_FA_CLOUD_SHOWERS_HEAVY "\xEF\x9D\x80"
#define ICON_FA_CHEVRON_CIRCLE_RIGHT "\xEF\x84\xB8"
#define ICON_FA_DHARMACHAKRA "\xEF\x99\x95"
#define ICON_FA_BROADCAST_TOWER "\xEF\x94\x99"
#define ICON_FA_EXTERNAL_LINK_SQUARE_ALT "\xEF\x8D\xA0"
#define ICON_FA_SMOKING "\xEF\x92\x8D"
#define ICON_FA_PENCIL_ALT "\xEF\x8C\x83"
#define ICON_FA_CHESS_BISHOP "\xEF\x90\xBA"
#define ICON_FA_ICONS "\xEF\xA1\xAD"
#define ICON_FA_TV "\xEF\x89\xAC"
#define ICON_FA_CROP_ALT "\xEF\x95\xA5"
#define ICON_FA_LIST "\xEF\x80\xBA"
#define ICON_FA_BATTERY_QUARTER "\xEF\x89\x83"
#define ICON_FA_TH "\xEF\x80\x8A"
#define ICON_FA_RECYCLE "\xEF\x86\xB8"
#define ICON_FA_SMILE "\xEF\x84\x98"
#define ICON_FA_FAX "\xEF\x86\xAC"
#define ICON_FA_DRAFTING_COMPASS "\xEF\x95\xA8"
#define ICON_FA_USER_INJURED "\xEF\x9C\xA8"
#define ICON_FA_SCREWDRIVER "\xEF\x95\x8A"
#define ICON_FA_CROSSHAIRS "\xEF\x81\x9B"
#define ICON_FA_HAND_PEACE "\xEF\x89\x9B"
#define ICON_FA_FAN "\xEF\xA1\xA3"
#define ICON_FA_GOPURAM "\xEF\x99\xA4"
#define ICON_FA_CARET_UP "\xEF\x83\x98"
#define ICON_FA_SCHOOL "\xEF\x95\x89"
#define ICON_FA_FILE_PDF "\xEF\x87\x81"
#define ICON_FA_USERS_COG "\xEF\x94\x89"
#define ICON_FA_BALANCE_SCALE "\xEF\x89\x8E"
#define ICON_FA_UPLOAD "\xEF\x82\x93"
#define ICON_FA_LAPTOP_MEDICAL "\xEF\xA0\x92"
#define ICON_FA_VENUS "\xEF\x88\xA1"
#define ICON_FA_HEADING "\xEF\x87\x9C"
#define ICON_FA_ARROW_DOWN "\xEF\x81\xA3"
#define ICON_FA_BICYCLE "\xEF\x88\x86"
#define ICON_FA_TIRED "\xEF\x97\x88"
#define ICON_FA_COMMENT_MEDICAL "\xEF\x9F\xB5"
#define ICON_FA_BACON "\xEF\x9F\xA5"
#define ICON_FA_SYNC "\xEF\x80\xA1"
#define ICON_FA_PAPER_PLANE "\xEF\x87\x98"
#define ICON_FA_VOLLEYBALL_BALL "\xEF\x91\x9F"
#define ICON_FA_RIBBON "\xEF\x93\x96"
#define ICON_FA_SQUARE_ROOT_ALT "\xEF\x9A\x98"
#define ICON_FA_SUN "\xEF\x86\x85"
#define ICON_FA_FILE_POWERPOINT "\xEF\x87\x84"
#define ICON_FA_MICROCHIP "\xEF\x8B\x9B"
#define ICON_FA_TRASH_RESTORE_ALT "\xEF\xA0\xAA"
#define ICON_FA_GRADUATION_CAP "\xEF\x86\x9D"
#define ICON_FA_INFO_CIRCLE "\xEF\x81\x9A"
#define ICON_FA_TAGS "\xEF\x80\xAC"
#define ICON_FA_HAND_PAPER "\xEF\x89\x96"
#define ICON_FA_EQUALS "\xEF\x94\xAC"
#define ICON_FA_DIRECTIONS "\xEF\x97\xAB"
#define ICON_FA_FILE_INVOICE "\xEF\x95\xB0"
#define ICON_FA_SEARCH "\xEF\x80\x82"
#define ICON_FA_BIBLE "\xEF\x99\x87"
#define ICON_FA_DUMBBELL "\xEF\x91\x8B"
#define ICON_FA_WEIGHT_HANGING "\xEF\x97\x8D"
#define ICON_FA_CALENDAR_TIMES "\xEF\x89\xB3"
#define ICON_FA_GREATER_THAN_EQUAL "\xEF\x94\xB2"
#define ICON_FA_SLIDERS_H "\xEF\x87\x9E"
#define ICON_FA_EYE_SLASH "\xEF\x81\xB0"
#define ICON_FA_BIRTHDAY_CAKE "\xEF\x87\xBD"
#define ICON_FA_FEATHER_ALT "\xEF\x95\xAB"
#define ICON_FA_DNA "\xEF\x91\xB1"
#define ICON_FA_BASEBALL_BALL "\xEF\x90\xB3"
#define ICON_FA_HOSPITAL "\xEF\x83\xB8"
#define ICON_FA_COINS "\xEF\x94\x9E"
#define ICON_FA_TEMPERATURE_HIGH "\xEF\x9D\xA9"
#define ICON_FA_FONT_AWESOME_LOGO_FULL "\xEF\x93\xA6"
#define ICON_FA_PASSPORT "\xEF\x96\xAB"
#define ICON_FA_SHOPPING_CART "\xEF\x81\xBA"
#define ICON_FA_AWARD "\xEF\x95\x99"
#define ICON_FA_WINDOW_RESTORE "\xEF\x8B\x92"
#define ICON_FA_PHONE "\xEF\x82\x95"
#define ICON_FA_FLAG "\xEF\x80\xA4"
#define ICON_FA_FILE_INVOICE_DOLLAR "\xEF\x95\xB1"
#define ICON_FA_DICE_D6 "\xEF\x9B\x91"
#define ICON_FA_OUTDENT "\xEF\x80\xBB"
#define ICON_FA_LONG_ARROW_ALT_RIGHT "\xEF\x8C\x8B"
#define ICON_FA_PIZZA_SLICE "\xEF\xA0\x98"
#define ICON_FA_ADDRESS_CARD "\xEF\x8A\xBB"
#define ICON_FA_PARAGRAPH "\xEF\x87\x9D"
#define ICON_FA_MALE "\xEF\x86\x83"
#define ICON_FA_HISTORY "\xEF\x87\x9A"
#define ICON_FA_USER_TIE "\xEF\x94\x88"
#define ICON_FA_SEARCH_PLUS "\xEF\x80\x8E"
#define ICON_FA_LIFE_RING "\xEF\x87\x8D"
#define ICON_FA_STEP_FORWARD "\xEF\x81\x91"
#define ICON_FA_MOUSE_POINTER "\xEF\x89\x85"
#define ICON_FA_ALIGN_JUSTIFY "\xEF\x80\xB9"
#define ICON_FA_TOILET_PAPER "\xEF\x9C\x9E"
#define ICON_FA_BATTERY_THREE_QUARTERS "\xEF\x89\x81"
#define ICON_FA_OBJECT_UNGROUP "\xEF\x89\x88"
#define ICON_FA_BRIEFCASE "\xEF\x82\xB1"
#define ICON_FA_OIL_CAN "\xEF\x98\x93"
#define ICON_FA_THERMOMETER_FULL "\xEF\x8B\x87"
#define ICON_FA_SNOWBOARDING "\xEF\x9F\x8E"
#define ICON_FA_UNLINK "\xEF\x84\xA7"
#define ICON_FA_WINDOW_MAXIMIZE "\xEF\x8B\x90"
#define ICON_FA_YEN_SIGN "\xEF\x85\x97"
#define ICON_FA_SHARE_ALT_SQUARE "\xEF\x87\xA1"
#define ICON_FA_STEP_BACKWARD "\xEF\x81\x88"
#define ICON_FA_DRAGON "\xEF\x9B\x95"
#define ICON_FA_MICROPHONE_SLASH "\xEF\x84\xB1"
#define ICON_FA_USER_PLUS "\xEF\x88\xB4"
#define ICON_FA_WRENCH "\xEF\x82\xAD"
#define ICON_FA_AMBULANCE "\xEF\x83\xB9"
#define ICON_FA_ETHERNET "\xEF\x9E\x96"
#define ICON_FA_EGG "\xEF\x9F\xBB"
#define ICON_FA_WIND "\xEF\x9C\xAE"
#define ICON_FA_UNIVERSAL_ACCESS "\xEF\x8A\x9A"
#define ICON_FA_BURN "\xEF\x91\xAA"
#define ICON_FA_RADIATION "\xEF\x9E\xB9"
#define ICON_FA_DICE_ONE "\xEF\x94\xA5"
#define ICON_FA_KEYBOARD "\xEF\x84\x9C"
#define ICON_FA_CHECK_DOUBLE "\xEF\x95\xA0"
#define ICON_FA_HEADPHONES_ALT "\xEF\x96\x8F"
#define ICON_FA_BATTERY_HALF "\xEF\x89\x82"
#define ICON_FA_PROJECT_DIAGRAM "\xEF\x95\x82"
#define ICON_FA_PRAY "\xEF\x9A\x83"
#define ICON_FA_PHONE_ALT "\xEF\xA1\xB9"
#define ICON_FA_BABY_CARRIAGE "\xEF\x9D\xBD"
#define ICON_FA_TH_LIST "\xEF\x80\x8B"
#define ICON_FA_GRIN_TEARS "\xEF\x96\x88"
#define ICON_FA_SORT_AMOUNT_UP "\xEF\x85\xA1"
#define ICON_FA_COFFEE "\xEF\x83\xB4"
#define ICON_FA_TABLET_ALT "\xEF\x8F\xBA"
#define ICON_FA_GRIN_BEAM_SWEAT "\xEF\x96\x83"
#define ICON_FA_HAND_POINT_RIGHT "\xEF\x82\xA4"
#define ICON_FA_GRIN_STARS "\xEF\x96\x87"
#define ICON_FA_CHARGING_STATION "\xEF\x97\xA7"
#define ICON_FA_VOTE_YEA "\xEF\x9D\xB2"
#define ICON_FA_VOLUME_OFF "\xEF\x80\xA6"
#define ICON_FA_SAD_TEAR "\xEF\x96\xB4"
#define ICON_FA_CARET_RIGHT "\xEF\x83\x9A"
#define ICON_FA_BONG "\xEF\x95\x9C"
#define ICON_FA_BONE "\xEF\x97\x97"
#define ICON_FA_WEIGHT "\xEF\x92\x96"
#define ICON_FA_CARET_SQUARE_RIGHT "\xEF\x85\x92"
#define ICON_FA_FISH "\xEF\x95\xB8"
#define ICON_FA_SPIDER "\xEF\x9C\x97"
#define ICON_FA_QRCODE "\xEF\x80\xA9"
#define ICON_FA_SPINNER "\xEF\x84\x90"
#define ICON_FA_ELLIPSIS_H "\xEF\x85\x81"
#define ICON_FA_RUPEE_SIGN "\xEF\x85\x96"
#define ICON_FA_ASSISTIVE_LISTENING_SYSTEMS "\xEF\x8A\xA2"
#define ICON_FA_SMS "\xEF\x9F\x8D"
#define ICON_FA_POUND_SIGN "\xEF\x85\x94"
#define ICON_FA_HAND_POINT_DOWN "\xEF\x82\xA7"
#define ICON_FA_ADJUST "\xEF\x81\x82"
#define ICON_FA_PRINT "\xEF\x80\xAF"
#define ICON_FA_SURPRISE "\xEF\x97\x82"
#define ICON_FA_SORT_NUMERIC_UP "\xEF\x85\xA3"
#define ICON_FA_VIDEO_SLASH "\xEF\x93\xA2"
#define ICON_FA_SUBWAY "\xEF\x88\xB9"
#define ICON_FA_SORT_AMOUNT_DOWN "\xEF\x85\xA0"
#define ICON_FA_WINE_BOTTLE "\xEF\x9C\xAF"
#define ICON_FA_BOOK_READER "\xEF\x97\x9A"
#define ICON_FA_COOKIE "\xEF\x95\xA3"
#define ICON_FA_MONEY_BILL "\xEF\x83\x96"
#define ICON_FA_CHEVRON_DOWN "\xEF\x81\xB8"
#define ICON_FA_CAR_SIDE "\xEF\x97\xA4"
#define ICON_FA_FILTER "\xEF\x82\xB0"
#define ICON_FA_FOLDER_OPEN "\xEF\x81\xBC"
#define ICON_FA_SIGNATURE "\xEF\x96\xB7"
#define ICON_FA_HEARTBEAT "\xEF\x88\x9E"
#define ICON_FA_THUMBTACK "\xEF\x82\x8D"
#define ICON_FA_USER "\xEF\x80\x87"
#define ICON_FA_LAUGH_WINK "\xEF\x96\x9C"
#define ICON_FA_BREAD_SLICE "\xEF\x9F\xAC"
#define ICON_FA_TEXT_HEIGHT "\xEF\x80\xB4"
#define ICON_FA_VOLUME_MUTE "\xEF\x9A\xA9"
#define ICON_FA_GRIN_TONGUE "\xEF\x96\x89"
#define ICON_FA_CAMPGROUND "\xEF\x9A\xBB"
#define ICON_FA_MERCURY "\xEF\x88\xA3"
#define ICON_FA_USER_ASTRONAUT "\xEF\x93\xBB"
#define ICON_FA_HORSE "\xEF\x9B\xB0"
#define ICON_FA_SORT_DOWN "\xEF\x83\x9D"
#define ICON_FA_PERCENTAGE "\xEF\x95\x81"
#define ICON_FA_AIR_FRESHENER "\xEF\x97\x90"
#define ICON_FA_STORE "\xEF\x95\x8E"
#define ICON_FA_COMMENT_DOTS "\xEF\x92\xAD"
#define ICON_FA_SMILE_WINK "\xEF\x93\x9A"
#define ICON_FA_HOTEL "\xEF\x96\x94"
#define ICON_FA_PEPPER_HOT "\xEF\xA0\x96"
#define ICON_FA_CUBES "\xEF\x86\xB3"
#define ICON_FA_DUMPSTER_FIRE "\xEF\x9E\x94"
#define ICON_FA_CLOUD_SUN_RAIN "\xEF\x9D\x83"
#define ICON_FA_GLOBE_ASIA "\xEF\x95\xBE"
#define ICON_FA_VIAL "\xEF\x92\x92"
#define ICON_FA_STROOPWAFEL "\xEF\x95\x91"
#define ICON_FA_CALENDAR_MINUS "\xEF\x89\xB2"
#define ICON_FA_TREE "\xEF\x86\xBB"
#define ICON_FA_SHOWER "\xEF\x8B\x8C"
#define ICON_FA_DRUM_STEELPAN "\xEF\x95\xAA"
#define ICON_FA_FILE_UPLOAD "\xEF\x95\xB4"
#define ICON_FA_MEDKIT "\xEF\x83\xBA"
#define ICON_FA_MINUS "\xEF\x81\xA8"
#define ICON_FA_SHEKEL_SIGN "\xEF\x88\x8B"
#define ICON_FA_USER_NINJA "\xEF\x94\x84"
#define ICON_FA_KAABA "\xEF\x99\xAB"
#define ICON_FA_BELL_SLASH "\xEF\x87\xB6"
#define ICON_FA_SPELL_CHECK "\xEF\xA2\x91"
#define ICON_FA_MAIL_BULK "\xEF\x99\xB4"
#define ICON_FA_MOUNTAIN "\xEF\x9B\xBC"
#define ICON_FA_COUCH "\xEF\x92\xB8"
#define ICON_FA_CHESS "\xEF\x90\xB9"
#define ICON_FA_FILE_EXPORT "\xEF\x95\xAE"
#define ICON_FA_SIGN_LANGUAGE "\xEF\x8A\xA7"
#define ICON_FA_SNOWFLAKE "\xEF\x8B\x9C"
#define ICON_FA_PLAY "\xEF\x81\x8B"
#define ICON_FA_HEADSET "\xEF\x96\x90"
#define ICON_FA_CHART_BAR "\xEF\x82\x80"
#define ICON_FA_WAVE_SQUARE "\xEF\xA0\xBE"
#define ICON_FA_CHART_AREA "\xEF\x87\xBE"
#define ICON_FA_EURO_SIGN "\xEF\x85\x93"
#define ICON_FA_CHESS_KING "\xEF\x90\xBF"
#define ICON_FA_MOBILE "\xEF\x84\x8B"
#define ICON_FA_CLOCK "\xEF\x80\x97"
#define ICON_FA_BOX_OPEN "\xEF\x92\x9E"
#define ICON_FA_DOG "\xEF\x9B\x93"
#define ICON_FA_FUTBOL "\xEF\x87\xA3"
#define ICON_FA_LIRA_SIGN "\xEF\x86\x95"
#define ICON_FA_LIGHTBULB "\xEF\x83\xAB"
#define ICON_FA_BOMB "\xEF\x87\xA2"
#define ICON_FA_MITTEN "\xEF\x9E\xB5"
#define ICON_FA_TRUCK_MONSTER "\xEF\x98\xBB"
#define ICON_FA_RANDOM "\xEF\x81\xB4"
#define ICON_FA_CHESS_ROOK "\xEF\x91\x87"
#define ICON_FA_FIRE_EXTINGUISHER "\xEF\x84\xB4"
#define ICON_FA_ARROWS_ALT_V "\xEF\x8C\xB8"
#define ICON_FA_ICICLES "\xEF\x9E\xAD"
#define ICON_FA_FONT "\xEF\x80\xB1"
#define ICON_FA_CAMERA_RETRO "\xEF\x82\x83"
#define ICON_FA_BLENDER "\xEF\x94\x97"
#define ICON_FA_THUMBS_DOWN "\xEF\x85\xA5"
#define ICON_FA_ROCKET "\xEF\x84\xB5"
#define ICON_FA_COPYRIGHT "\xEF\x87\xB9"
#define ICON_FA_TRAM "\xEF\x9F\x9A"
#define ICON_FA_JEDI "\xEF\x99\xA9"
#define ICON_FA_HOCKEY_PUCK "\xEF\x91\x93"
#define ICON_FA_STOP_CIRCLE "\xEF\x8A\x8D"
#define ICON_FA_BEZIER_CURVE "\xEF\x95\x9B"
#define ICON_FA_FOLDER "\xEF\x81\xBB"
#define ICON_FA_CALENDAR_CHECK "\xEF\x89\xB4"
#define ICON_FA_YIN_YANG "\xEF\x9A\xAD"
#define ICON_FA_COLUMNS "\xEF\x83\x9B"
#define ICON_FA_GLASS_CHEERS "\xEF\x9E\x9F"
#define ICON_FA_GRIN_WINK "\xEF\x96\x8C"
#define ICON_FA_STOP "\xEF\x81\x8D"
#define ICON_FA_MONEY_CHECK_ALT "\xEF\x94\xBD"
#define ICON_FA_COMPASS "\xEF\x85\x8E"
#define ICON_FA_TOOLBOX "\xEF\x95\x92"
#define ICON_FA_LIST_OL "\xEF\x83\x8B"
#define ICON_FA_WINE_GLASS "\xEF\x93\xA3"
#define ICON_FA_HORSE_HEAD "\xEF\x9E\xAB"
#define ICON_FA_USER_ALT_SLASH "\xEF\x93\xBA"
#define ICON_FA_USER_TAG "\xEF\x94\x87"
#define ICON_FA_MICROSCOPE "\xEF\x98\x90"
#define ICON_FA_BRUSH "\xEF\x95\x9D"
#define ICON_FA_BAN "\xEF\x81\x9E"
#define ICON_FA_BARS "\xEF\x83\x89"
#define ICON_FA_CAR_CRASH "\xEF\x97\xA1"
#define ICON_FA_ARROW_ALT_CIRCLE_DOWN "\xEF\x8D\x98"
#define ICON_FA_MONEY_BILL_ALT "\xEF\x8F\x91"
#define ICON_FA_JOURNAL_WHILLS "\xEF\x99\xAA"
#define ICON_FA_CHALKBOARD_TEACHER "\xEF\x94\x9C"
#define ICON_FA_PORTRAIT "\xEF\x8F\xA0"
#define ICON_FA_BALANCE_SCALE_LEFT "\xEF\x94\x95"
#define ICON_FA_HAMMER "\xEF\x9B\xA3"
#define ICON_FA_RETWEET "\xEF\x81\xB9"
#define ICON_FA_HOURGLASS "\xEF\x89\x94"
#define ICON_FA_BORDER_NONE "\xEF\xA1\x90"
#define ICON_FA_FILE_ALT "\xEF\x85\x9C"
#define ICON_FA_SUBSCRIPT "\xEF\x84\xAC"
#define ICON_FA_DONATE "\xEF\x92\xB9"
#define ICON_FA_GLASS_MARTINI_ALT "\xEF\x95\xBB"
#define ICON_FA_CODE_BRANCH "\xEF\x84\xA6"
#define ICON_FA_MEH "\xEF\x84\x9A"
#define ICON_FA_LIST_ALT "\xEF\x80\xA2"
#define ICON_FA_USER_COG "\xEF\x93\xBE"
#define ICON_FA_PRESCRIPTION "\xEF\x96\xB1"
#define ICON_FA_TABLET "\xEF\x84\x8A"
#define ICON_FA_LAUGH_SQUINT "\xEF\x96\x9B"
#define ICON_FA_CREDIT_CARD "\xEF\x82\x9D"
#define ICON_FA_ARCHWAY "\xEF\x95\x97"
#define ICON_FA_HARD_HAT "\xEF\xA0\x87"
#define ICON_FA_TRAFFIC_LIGHT "\xEF\x98\xB7"
#define ICON_FA_COG "\xEF\x80\x93"
#define ICON_FA_HANUKIAH "\xEF\x9B\xA6"
#define ICON_FA_SHUTTLE_VAN "\xEF\x96\xB6"
#define ICON_FA_MONEY_CHECK "\xEF\x94\xBC"
#define ICON_FA_BELL "\xEF\x83\xB3"
#define ICON_FA_CALENDAR_DAY "\xEF\x9E\x83"
#define ICON_FA_TINT_SLASH "\xEF\x97\x87"
#define ICON_FA_PLANE_DEPARTURE "\xEF\x96\xB0"
#define ICON_FA_USER_CHECK "\xEF\x93\xBC"
#define ICON_FA_CHURCH "\xEF\x94\x9D"
#define ICON_FA_SEARCH_MINUS "\xEF\x80\x90"
#define ICON_FA_SHIPPING_FAST "\xEF\x92\x8B"
#define ICON_FA_TINT "\xEF\x81\x83"
#define ICON_FA_ALIGN_RIGHT "\xEF\x80\xB8"
#define ICON_FA_QUOTE_RIGHT "\xEF\x84\x8E"
#define ICON_FA_BEER "\xEF\x83\xBC"
#define ICON_FA_GRIN_ALT "\xEF\x96\x81"
#define ICON_FA_SORT_NUMERIC_DOWN "\xEF\x85\xA2"
#define ICON_FA_FIRE "\xEF\x81\xAD"
#define ICON_FA_FAST_FORWARD "\xEF\x81\x90"
#define ICON_FA_MAP_MARKED_ALT "\xEF\x96\xA0"
#define ICON_FA_CHILD "\xEF\x86\xAE"
#define ICON_FA_KISS_BEAM "\xEF\x96\x97"
#define ICON_FA_TRUCK_LOADING "\xEF\x93\x9E"
#define ICON_FA_EXPAND_ARROWS_ALT "\xEF\x8C\x9E"
#define ICON_FA_CARET_SQUARE_DOWN "\xEF\x85\x90"
#define ICON_FA_CRUTCH "\xEF\x9F\xB7"
#define ICON_FA_OBJECT_GROUP "\xEF\x89\x87"
#define ICON_FA_BIKING "\xEF\xA1\x8A"
#define ICON_FA_ANCHOR "\xEF\x84\xBD"
#define ICON_FA_HAND_POINT_LEFT "\xEF\x82\xA5"
#define ICON_FA_USER_TIMES "\xEF\x88\xB5"
#define ICON_FA_CALCULATOR "\xEF\x87\xAC"
#define ICON_FA_DIZZY "\xEF\x95\xA7"
#define ICON_FA_KISS_WINK_HEART "\xEF\x96\x98"
#define ICON_FA_FILE_MEDICAL "\xEF\x91\xB7"
#define ICON_FA_SWIMMING_POOL "\xEF\x97\x85"
#define ICON_FA_VR_CARDBOARD "\xEF\x9C\xA9"
#define ICON_FA_USER_FRIENDS "\xEF\x94\x80"
#define ICON_FA_FAST_BACKWARD "\xEF\x81\x89"
#define ICON_FA_SATELLITE "\xEF\x9E\xBF"
#define ICON_FA_MINUS_CIRCLE "\xEF\x81\x96"
#define ICON_FA_CHESS_PAWN "\xEF\x91\x83"
#define ICON_FA_DATABASE "\xEF\x87\x80"
#define ICON_FA_LANDMARK "\xEF\x99\xAF"
#define ICON_FA_SWATCHBOOK "\xEF\x97\x83"
#define ICON_FA_HOTDOG "\xEF\xA0\x8F"
#define ICON_FA_SNOWMAN "\xEF\x9F\x90"
#define ICON_FA_LAPTOP "\xEF\x84\x89"
#define ICON_FA_TORAH "\xEF\x9A\xA0"
#define ICON_FA_FROWN_OPEN "\xEF\x95\xBA"
#define ICON_FA_REDO_ALT "\xEF\x8B\xB9"
#define ICON_FA_AD "\xEF\x99\x81"
#define ICON_FA_USER_CIRCLE "\xEF\x8A\xBD"
#define ICON_FA_DIVIDE "\xEF\x94\xA9"
#define ICON_FA_HANDSHAKE "\xEF\x8A\xB5"
#define ICON_FA_CUT "\xEF\x83\x84"
#define ICON_FA_GAMEPAD "\xEF\x84\x9B"
#define ICON_FA_STREET_VIEW "\xEF\x88\x9D"
#define ICON_FA_GREATER_THAN "\xEF\x94\xB1"
#define ICON_FA_PASTAFARIANISM "\xEF\x99\xBB"
#define ICON_FA_MINUS_SQUARE "\xEF\x85\x86"
#define ICON_FA_SAVE "\xEF\x83\x87"
#define ICON_FA_COMMENT_DOLLAR "\xEF\x99\x91"
#define ICON_FA_TRASH_ALT "\xEF\x8B\xAD"
#define ICON_FA_PUZZLE_PIECE "\xEF\x84\xAE"
#define ICON_FA_SORT_ALPHA_UP_ALT "\xEF\xA2\x82"
#define ICON_FA_MENORAH "\xEF\x99\xB6"
#define ICON_FA_CLOUD_SUN "\xEF\x9B\x84"
#define ICON_FA_USER_EDIT "\xEF\x93\xBF"
#define ICON_FA_THEATER_MASKS "\xEF\x98\xB0"
#define ICON_FA_FILE_MEDICAL_ALT "\xEF\x91\xB8"
#define ICON_FA_BOXES "\xEF\x91\xA8"
#define ICON_FA_THERMOMETER_EMPTY "\xEF\x8B\x8B"
#define ICON_FA_EXCLAMATION_TRIANGLE "\xEF\x81\xB1"
#define ICON_FA_GIFT "\xEF\x81\xAB"
#define ICON_FA_COGS "\xEF\x82\x85"
#define ICON_FA_SIGNAL "\xEF\x80\x92"
#define ICON_FA_SHAPES "\xEF\x98\x9F"
#define ICON_FA_CLOUD_RAIN "\xEF\x9C\xBD"
#define ICON_FA_LESS_THAN_EQUAL "\xEF\x94\xB7"
#define ICON_FA_CHEVRON_CIRCLE_LEFT "\xEF\x84\xB7"
#define ICON_FA_MORTAR_PESTLE "\xEF\x96\xA7"
#define ICON_FA_SITEMAP "\xEF\x83\xA8"
#define ICON_FA_BUS_ALT "\xEF\x95\x9E"
#define ICON_FA_FILE_CODE "\xEF\x87\x89"
#define ICON_FA_BATTERY_FULL "\xEF\x89\x80"
#define ICON_FA_CROWN "\xEF\x94\xA1"
#define ICON_FA_EXCHANGE_ALT "\xEF\x8D\xA2"
#define ICON_FA_TRANSGENDER_ALT "\xEF\x88\xA5"
#define ICON_FA_STAR_OF_DAVID "\xEF\x9A\x9A"
#define ICON_FA_CASH_REGISTER "\xEF\x9E\x88"
#define ICON_FA_TOOLS "\xEF\x9F\x99"
#define ICON_FA_EXCLAMATION_CIRCLE "\xEF\x81\xAA"
#define ICON_FA_COMMENTS "\xEF\x82\x86"
#define ICON_FA_BRIEFCASE_MEDICAL "\xEF\x91\xA9"
#define ICON_FA_COMMENTS_DOLLAR "\xEF\x99\x93"
#define ICON_FA_BACKSPACE "\xEF\x95\x9A"
#define ICON_FA_SLASH "\xEF\x9C\x95"
#define ICON_FA_HOT_TUB "\xEF\x96\x93"
#define ICON_FA_SUITCASE_ROLLING "\xEF\x97\x81"
#define ICON_FA_BOLD "\xEF\x80\xB2"
#define ICON_FA_HANDS_HELPING "\xEF\x93\x84"
#define ICON_FA_SLEIGH "\xEF\x9F\x8C"
#define ICON_FA_BOLT "\xEF\x83\xA7"
#define ICON_FA_THERMOMETER_QUARTER "\xEF\x8B\x8A"
#define ICON_FA_TROPHY "\xEF\x82\x91"
#define ICON_FA_USER_ALT "\xEF\x90\x86"
#define ICON_FA_BRAILLE "\xEF\x8A\xA1"
#define ICON_FA_PLUS "\xEF\x81\xA7"
#define ICON_FA_LIST_UL "\xEF\x83\x8A"
#define ICON_FA_SMOKING_BAN "\xEF\x95\x8D"
#define ICON_FA_BOOK "\xEF\x80\xAD"
#define ICON_FA_VOLUME_DOWN "\xEF\x80\xA7"
#define ICON_FA_QUESTION_CIRCLE "\xEF\x81\x99"
#define ICON_FA_CARROT "\xEF\x9E\x87"
#define ICON_FA_BATH "\xEF\x8B\x8D"
#define ICON_FA_GAVEL "\xEF\x83\xA3"
#define ICON_FA_CANDY_CANE "\xEF\x9E\x86"
#define ICON_FA_NETWORK_WIRED "\xEF\x9B\xBF"
#define ICON_FA_CARET_SQUARE_LEFT "\xEF\x86\x91"
#define ICON_FA_PLANE_ARRIVAL "\xEF\x96\xAF"
#define ICON_FA_SHARE_SQUARE "\xEF\x85\x8D"
#define ICON_FA_MEDAL "\xEF\x96\xA2"
#define ICON_FA_THERMOMETER_HALF "\xEF\x8B\x89"
#define ICON_FA_QUESTION "\xEF\x84\xA8"
#define ICON_FA_CAR_BATTERY "\xEF\x97\x9F"
#define ICON_FA_DOOR_CLOSED "\xEF\x94\xAA"
#define ICON_FA_USER_MINUS "\xEF\x94\x83"
#define ICON_FA_MUSIC "\xEF\x80\x81"
#define ICON_FA_HOUSE_DAMAGE "\xEF\x9B\xB1"
#define ICON_FA_CHEVRON_RIGHT "\xEF\x81\x94"
#define ICON_FA_GRIP_HORIZONTAL "\xEF\x96\x8D"
#define ICON_FA_DICE_FOUR "\xEF\x94\xA4"
#define ICON_FA_DEAF "\xEF\x8A\xA4"
#define ICON_FA_MEH_BLANK "\xEF\x96\xA4"
#define ICON_FA_WINDOW_CLOSE "\xEF\x90\x90"
#define ICON_FA_LINK "\xEF\x83\x81"
#define ICON_FA_ATOM "\xEF\x97\x92"
#define ICON_FA_LESS_THAN "\xEF\x94\xB6"
#define ICON_FA_OTTER "\xEF\x9C\x80"
#define ICON_FA_DICE_TWO "\xEF\x94\xA8"
#define ICON_FA_SORT_ALPHA_DOWN_ALT "\xEF\xA2\x81"
#define ICON_FA_EJECT "\xEF\x81\x92"
#define ICON_FA_SKULL "\xEF\x95\x8C"
#define ICON_FA_GRIP_LINES "\xEF\x9E\xA4"
#define ICON_FA_SORT_AMOUNT_DOWN_ALT "\xEF\xA2\x84"
#define ICON_FA_HOSPITAL_SYMBOL "\xEF\x91\xBE"
#define ICON_FA_X_RAY "\xEF\x92\x97"
#define ICON_FA_ARROW_UP "\xEF\x81\xA2"
#define ICON_FA_MONEY_BILL_WAVE "\xEF\x94\xBA"
#define ICON_FA_DOT_CIRCLE "\xEF\x86\x92"
#define ICON_FA_IMAGES "\xEF\x8C\x82"
#define ICON_FA_STAR_HALF "\xEF\x82\x89"
#define ICON_FA_SPLOTCH "\xEF\x96\xBC"
#define ICON_FA_STAR_HALF_ALT "\xEF\x97\x80"
#define ICON_FA_SHIP "\xEF\x88\x9A"
#define ICON_FA_BOOK_DEAD "\xEF\x9A\xB7"
#define ICON_FA_CHECK "\xEF\x80\x8C"
#define ICON_FA_RAINBOW "\xEF\x9D\x9B"
#define ICON_FA_POWER_OFF "\xEF\x80\x91"
#define ICON_FA_LEMON "\xEF\x82\x94"
#define ICON_FA_GLOBE_AMERICAS "\xEF\x95\xBD"
#define ICON_FA_PEACE "\xEF\x99\xBC"
#define ICON_FA_THERMOMETER_THREE_QUARTERS "\xEF\x8B\x88"
#define ICON_FA_WAREHOUSE "\xEF\x92\x94"
#define ICON_FA_TRANSGENDER "\xEF\x88\xA4"
#define ICON_FA_PLUS_SQUARE "\xEF\x83\xBE"
#define ICON_FA_BULLSEYE "\xEF\x85\x80"
#define ICON_FA_COOKIE_BITE "\xEF\x95\xA4"
#define ICON_FA_USERS "\xEF\x83\x80"
#define ICON_FA_DRUMSTICK_BITE "\xEF\x9B\x97"
#define ICON_FA_ASTERISK "\xEF\x81\xA9"
#define ICON_FA_PLUS_CIRCLE "\xEF\x81\x95"
#define ICON_FA_CART_ARROW_DOWN "\xEF\x88\x98"
#define ICON_FA_LEAF "\xEF\x81\xAC"
#define ICON_FA_FLUSHED "\xEF\x95\xB9"
#define ICON_FA_STORE_ALT "\xEF\x95\x8F"
#define ICON_FA_PEOPLE_CARRY "\xEF\x93\x8E"
#define ICON_FA_CHESS_BOARD "\xEF\x90\xBC"
#define ICON_FA_LONG_ARROW_ALT_DOWN "\xEF\x8C\x89"
#define ICON_FA_SAD_CRY "\xEF\x96\xB3"
#define ICON_FA_DIGITAL_TACHOGRAPH "\xEF\x95\xA6"
#define ICON_FA_ANGLE_DOUBLE_DOWN "\xEF\x84\x83"
#define ICON_FA_FILE_EXCEL "\xEF\x87\x83"
#define ICON_FA_TEETH "\xEF\x98\xAE"
#define ICON_FA_HAND_SCISSORS "\xEF\x89\x97"
#define ICON_FA_STETHOSCOPE "\xEF\x83\xB1"
#define ICON_FA_BACKWARD "\xEF\x81\x8A"
#define ICON_FA_SCROLL "\xEF\x9C\x8E"
#define ICON_FA_IGLOO "\xEF\x9E\xAE"
#define ICON_FA_NOTES_MEDICAL "\xEF\x92\x81"
#define ICON_FA_CODE "\xEF\x84\xA1"
#define ICON_FA_SORT_NUMERIC_UP_ALT "\xEF\xA2\x87"
#define ICON_FA_NOT_EQUAL "\xEF\x94\xBE"
#define ICON_FA_SKIING "\xEF\x9F\x89"
#define ICON_FA_CHAIR "\xEF\x9B\x80"
#define ICON_FA_HAND_LIZARD "\xEF\x89\x98"
#define ICON_FA_QUIDDITCH "\xEF\x91\x98"
#define ICON_FA_ANGLE_DOUBLE_LEFT "\xEF\x84\x80"
#define ICON_FA_MOSQUE "\xEF\x99\xB8"
#define ICON_FA_PEN "\xEF\x8C\x84"
#define ICON_FA_HRYVNIA "\xEF\x9B\xB2"
#define ICON_FA_ANGLE_LEFT "\xEF\x84\x84"
#define ICON_FA_ATLAS "\xEF\x95\x98"
#define ICON_FA_PIGGY_BANK "\xEF\x93\x93"
#define ICON_FA_DOLLY_FLATBED "\xEF\x91\xB4"
#define ICON_FA_ARROWS_ALT_H "\xEF\x8C\xB7"
#define ICON_FA_PEN_ALT "\xEF\x8C\x85"
#define ICON_FA_PRAYING_HANDS "\xEF\x9A\x84"
#define ICON_FA_VOLUME_UP "\xEF\x80\xA8"
#define ICON_FA_CLIPBOARD_LIST "\xEF\x91\xAD"
#define ICON_FA_BORDER_ALL "\xEF\xA1\x8C"
#define ICON_FA_MAGIC "\xEF\x83\x90"
#define ICON_FA_FOLDER_MINUS "\xEF\x99\x9D"
#define ICON_FA_DEMOCRAT "\xEF\x9D\x87"
#define ICON_FA_MAGNET "\xEF\x81\xB6"
#define ICON_FA_VIHARA "\xEF\x9A\xA7"
#define ICON_FA_GRIMACE "\xEF\x95\xBF"
#define ICON_FA_CHECK_CIRCLE "\xEF\x81\x98"
#define ICON_FA_SEARCH_DOLLAR "\xEF\x9A\x88"
#define ICON_FA_LONG_ARROW_ALT_LEFT "\xEF\x8C\x8A"
#define ICON_FA_FILE_PRESCRIPTION "\xEF\x95\xB2"
#define ICON_FA_CROW "\xEF\x94\xA0"
#define ICON_FA_EYE_DROPPER "\xEF\x87\xBB"
#define ICON_FA_CROP "\xEF\x84\xA5"
#define ICON_FA_SIGN "\xEF\x93\x99"
#define ICON_FA_ARROW_CIRCLE_DOWN "\xEF\x82\xAB"
#define ICON_FA_VIDEO "\xEF\x80\xBD"
#define ICON_FA_DOWNLOAD "\xEF\x80\x99"
#define ICON_FA_CARET_DOWN "\xEF\x83\x97"
#define ICON_FA_CHEVRON_LEFT "\xEF\x81\x93"
#define ICON_FA_GLOBE_AFRICA "\xEF\x95\xBC"
#define ICON_FA_HAMSA "\xEF\x99\xA5"
#define ICON_FA_CART_PLUS "\xEF\x88\x97"
#define ICON_FA_CLIPBOARD "\xEF\x8C\xA8"
#define ICON_FA_SHOE_PRINTS "\xEF\x95\x8B"
#define ICON_FA_PHONE_SLASH "\xEF\x8F\x9D"
#define ICON_FA_REPLY "\xEF\x8F\xA5"
#define ICON_FA_HOURGLASS_HALF "\xEF\x89\x92"
#define ICON_FA_LONG_ARROW_ALT_UP "\xEF\x8C\x8C"
#define ICON_FA_CHESS_KNIGHT "\xEF\x91\x81"
#define ICON_FA_BARCODE "\xEF\x80\xAA"
#define ICON_FA_DRAW_POLYGON "\xEF\x97\xAE"
#define ICON_FA_WATER "\xEF\x9D\xB3"
#define ICON_FA_WINE_GLASS_ALT "\xEF\x97\x8E"
#define ICON_FA_PHONE_VOLUME "\xEF\x8A\xA0"
#define ICON_FA_GLASS_WHISKEY "\xEF\x9E\xA0"
#define ICON_FA_BOX "\xEF\x91\xA6"
#define ICON_FA_DIAGNOSES "\xEF\x91\xB0"
#define ICON_FA_FILE_IMAGE "\xEF\x87\x85"
#define ICON_FA_VENUS_MARS "\xEF\x88\xA8"
#define ICON_FA_TASKS "\xEF\x82\xAE"
#define ICON_FA_HIKING "\xEF\x9B\xAC"
#define ICON_FA_VECTOR_SQUARE "\xEF\x97\x8B"
#define ICON_FA_QUOTE_LEFT "\xEF\x84\x8D"
#define ICON_FA_MOBILE_ALT "\xEF\x8F\x8D"
#define ICON_FA_USER_SHIELD "\xEF\x94\x85"
#define ICON_FA_BLOG "\xEF\x9E\x81"
#define ICON_FA_MARKER "\xEF\x96\xA1"
#define ICON_FA_HAMBURGER "\xEF\xA0\x85"
#define ICON_FA_REDO "\xEF\x80\x9E"
#define ICON_FA_CLOUD "\xEF\x83\x82"
#define ICON_FA_HAND_HOLDING_USD "\xEF\x93\x80"
#define ICON_FA_CERTIFICATE "\xEF\x82\xA3"
#define ICON_FA_ANGRY "\xEF\x95\x96"
#define ICON_FA_FROG "\xEF\x94\xAE"
#define ICON_FA_CAMERA "\xEF\x80\xB0"
#define ICON_FA_DICE_THREE "\xEF\x94\xA7"
#define ICON_FA_MEMORY "\xEF\x94\xB8"
#define ICON_FA_PEN_SQUARE "\xEF\x85\x8B"
#define ICON_FA_SORT "\xEF\x83\x9C"
#define ICON_FA_PLUG "\xEF\x87\xA6"
#define ICON_FA_SHARE "\xEF\x81\xA4"
#define ICON_FA_ENVELOPE "\xEF\x83\xA0"
#define ICON_FA_LAYER_GROUP "\xEF\x97\xBD"
#define ICON_FA_TRAIN "\xEF\x88\xB8"
#define ICON_FA_BULLHORN "\xEF\x82\xA1"
#define ICON_FA_BABY "\xEF\x9D\xBC"
#define ICON_FA_CONCIERGE_BELL "\xEF\x95\xA2"
#define ICON_FA_CIRCLE "\xEF\x84\x91"
#define ICON_FA_I_CURSOR "\xEF\x89\x86"
#define ICON_FA_CAR "\xEF\x86\xB9"
#define ICON_FA_CAT "\xEF\x9A\xBE"
#define ICON_FA_WALLET "\xEF\x95\x95"
#define ICON_FA_BOOK_MEDICAL "\xEF\x9F\xA6"
#define ICON_FA_H_SQUARE "\xEF\x83\xBD"
#define ICON_FA_HEART "\xEF\x80\x84"
#define ICON_FA_LOCK_OPEN "\xEF\x8F\x81"
#define ICON_FA_STREAM "\xEF\x95\x90"
#define ICON_FA_LOCK "\xEF\x80\xA3"
#define ICON_FA_PARACHUTE_BOX "\xEF\x93\x8D"
#define ICON_FA_TAG "\xEF\x80\xAB"
#define ICON_FA_SMILE_BEAM "\xEF\x96\xB8"
#define ICON_FA_USER_NURSE "\xEF\xA0\xAF"
#define ICON_FA_MICROPHONE_ALT "\xEF\x8F\x89"
#define ICON_FA_SPA "\xEF\x96\xBB"
#define ICON_FA_CHEVRON_CIRCLE_DOWN "\xEF\x84\xBA"
#define ICON_FA_FOLDER_PLUS "\xEF\x99\x9E"
#define ICON_FA_TICKET_ALT "\xEF\x8F\xBF"
#define ICON_FA_BOOK_OPEN "\xEF\x94\x98"
#define ICON_FA_MAP "\xEF\x89\xB9"
#define ICON_FA_COCKTAIL "\xEF\x95\xA1"
#define ICON_FA_CLONE "\xEF\x89\x8D"
#define ICON_FA_ID_CARD_ALT "\xEF\x91\xBF"
#define ICON_FA_CHECK_SQUARE "\xEF\x85\x8A"
#define ICON_FA_CHART_LINE "\xEF\x88\x81"
#define ICON_FA_POO_STORM "\xEF\x9D\x9A"
#define ICON_FA_DOVE "\xEF\x92\xBA"
#define ICON_FA_MARS_STROKE "\xEF\x88\xA9"
#define ICON_FA_ENVELOPE_OPEN "\xEF\x8A\xB6"
#define ICON_FA_WHEELCHAIR "\xEF\x86\x93"
#define ICON_FA_ROBOT "\xEF\x95\x84"
#define ICON_FA_UNDO_ALT "\xEF\x8B\xAA"
#define ICON_FA_CLOUD_MEATBALL "\xEF\x9C\xBB"
#define ICON_FA_TRUCK "\xEF\x83\x91"
#define ICON_FA_FLASK "\xEF\x83\x83"
#define ICON_FA_WON_SIGN "\xEF\x85\x99"
#define ICON_FA_SUPERSCRIPT "\xEF\x84\xAB"
#define ICON_FA_TTY "\xEF\x87\xA4"
#define ICON_FA_USER_MD "\xEF\x83\xB0"
#define ICON_FA_BRAIN "\xEF\x97\x9C"
#define ICON_FA_TABLETS "\xEF\x92\x90"
#define ICON_FA_MOTORCYCLE "\xEF\x88\x9C"
#define ICON_FA_PHONE_SQUARE_ALT "\xEF\xA1\xBB"
#define ICON_FA_ANGLE_UP "\xEF\x84\x86"
#define ICON_FA_BROOM "\xEF\x94\x9A"
#define ICON_FA_DICE_D20 "\xEF\x9B\x8F"
#define ICON_FA_LEVEL_DOWN_ALT "\xEF\x8E\xBE"
#define ICON_FA_PAPERCLIP "\xEF\x83\x86"
#define ICON_FA_USER_CLOCK "\xEF\x93\xBD"
#define ICON_FA_MUG_HOT "\xEF\x9E\xB6"
#define ICON_FA_SORT_ALPHA_UP "\xEF\x85\x9E"
#define ICON_FA_AUDIO_DESCRIPTION "\xEF\x8A\x9E"
#define ICON_FA_FILE_CSV "\xEF\x9B\x9D"
#define ICON_FA_FILE_DOWNLOAD "\xEF\x95\xAD"
#define ICON_FA_SYNC_ALT "\xEF\x8B\xB1"
#define ICON_FA_ANGLE_DOUBLE_UP "\xEF\x84\x82"
#define ICON_FA_HANDS "\xEF\x93\x82"
#define ICON_FA_REPUBLICAN "\xEF\x9D\x9E"
#define ICON_FA_UNIVERSITY "\xEF\x86\x9C"
#define ICON_FA_KHANDA "\xEF\x99\xAD"
#define ICON_FA_GLASSES "\xEF\x94\xB0"
#define ICON_FA_SQUARE "\xEF\x83\x88"
#define ICON_FA_GRIN_SQUINT "\xEF\x96\x85"
#define ICON_FA_CLOSED_CAPTIONING "\xEF\x88\x8A"
#define ICON_FA_RECEIPT "\xEF\x95\x83"
#define ICON_FA_STRIKETHROUGH "\xEF\x83\x8C"
#define ICON_FA_UNLOCK "\xEF\x82\x9C"
#define ICON_FA_ARROW_LEFT "\xEF\x81\xA0"
#define ICON_FA_DICE_SIX "\xEF\x94\xA6"
#define ICON_FA_GRIP_VERTICAL "\xEF\x96\x8E"
#define ICON_FA_PILLS "\xEF\x92\x84"
#define ICON_FA_EXCLAMATION "\xEF\x84\xAA"
#define ICON_FA_PERSON_BOOTH "\xEF\x9D\x96"
#define ICON_FA_CALENDAR_PLUS "\xEF\x89\xB1"
#define ICON_FA_SMOG "\xEF\x9D\x9F"
#define ICON_FA_LOCATION_ARROW "\xEF\x84\xA4"
#define ICON_FA_UMBRELLA "\xEF\x83\xA9"
#define ICON_FA_QURAN "\xEF\x9A\x87"
#define ICON_FA_UNDO "\xEF\x83\xA2"
#define ICON_FA_DUMPSTER "\xEF\x9E\x93"
#define ICON_FA_FUNNEL_DOLLAR "\xEF\x99\xA2"
#define ICON_FA_INDENT "\xEF\x80\xBC"
#define ICON_FA_LANGUAGE "\xEF\x86\xAB"
#define ICON_FA_ARROW_ALT_CIRCLE_UP "\xEF\x8D\x9B"
#define ICON_FA_ROUTE "\xEF\x93\x97"
#define ICON_FA_HEADPHONES "\xEF\x80\xA5"
#define ICON_FA_TIMES "\xEF\x80\x8D"
#define ICON_FA_CLINIC_MEDICAL "\xEF\x9F\xB2"
#define ICON_FA_PLANE "\xEF\x81\xB2"
#define ICON_FA_TORII_GATE "\xEF\x9A\xA1"
#define ICON_FA_LEVEL_UP_ALT "\xEF\x8E\xBF"
#define ICON_FA_BLIND "\xEF\x8A\x9D"
#define ICON_FA_CHEESE "\xEF\x9F\xAF"
#define ICON_FA_PHONE_SQUARE "\xEF\x82\x98"
#define ICON_FA_SHOPPING_BASKET "\xEF\x8A\x91"
#define ICON_FA_ICE_CREAM "\xEF\xA0\x90"
#define ICON_FA_RING "\xEF\x9C\x8B"
#define ICON_FA_CITY "\xEF\x99\x8F"
#define ICON_FA_TEXT_WIDTH "\xEF\x80\xB5"
#define ICON_FA_RSS_SQUARE "\xEF\x85\x83"
#define ICON_FA_PAINT_BRUSH "\xEF\x87\xBC"
#define ICON_FA_BOOKMARK "\xEF\x80\xAE"
#define ICON_FA_PHOTO_VIDEO "\xEF\xA1\xBC"
#define ICON_FA_SIM_CARD "\xEF\x9F\x84"
#define ICON_FA_CLOUD_UPLOAD_ALT "\xEF\x8E\x82"
#define ICON_FA_COMPACT_DISC "\xEF\x94\x9F"
#define ICON_FA_SORT_UP "\xEF\x83\x9E"
#define ICON_FA_SIGN_OUT_ALT "\xEF\x8B\xB5"
#define ICON_FA_SIGN_IN_ALT "\xEF\x8B\xB6"
#define ICON_FA_FORWARD "\xEF\x81\x8E"
#define ICON_FA_SHARE_ALT "\xEF\x87\xA0"
#define ICON_FA_COPY "\xEF\x83\x85"
#define ICON_FA_RSS "\xEF\x82\x9E"
#define ICON_FA_PEN_FANCY "\xEF\x96\xAC"
#define ICON_FA_BIOHAZARD "\xEF\x9E\x80"
#define ICON_FA_BED "\xEF\x88\xB6"
#define ICON_FA_INFO "\xEF\x84\xA9"
#define ICON_FA_TOGGLE_OFF "\xEF\x88\x84"
#define ICON_FA_MAP_MARKER_ALT "\xEF\x8F\x85"
#define ICON_FA_TRACTOR "\xEF\x9C\xA2"
#define ICON_FA_CLOUD_DOWNLOAD_ALT "\xEF\x8E\x81"
#define ICON_FA_ID_BADGE "\xEF\x8B\x81"
#define ICON_FA_SORT_NUMERIC_DOWN_ALT "\xEF\xA2\x86"
#define ICON_FA_RULER_HORIZONTAL "\xEF\x95\x87"
#define ICON_FA_PAINT_ROLLER "\xEF\x96\xAA"
#define ICON_FA_HAT_WIZARD "\xEF\x9B\xA8"
#define ICON_FA_MAP_SIGNS "\xEF\x89\xB7"
#define ICON_FA_MICROPHONE "\xEF\x84\xB0"
#define ICON_FA_FOOTBALL_BALL "\xEF\x91\x8E"
#define ICON_FA_ALLERGIES "\xEF\x91\xA1"
#define ICON_FA_ID_CARD "\xEF\x8B\x82"
#define ICON_FA_USER_LOCK "\xEF\x94\x82"
#define ICON_FA_PLAY_CIRCLE "\xEF\x85\x84"
#define ICON_FA_REMOVE_FORMAT "\xEF\xA1\xBD"
#define ICON_FA_THERMOMETER "\xEF\x92\x91"
#define ICON_FA_REGISTERED "\xEF\x89\x9D"
#define ICON_FA_DOLLAR_SIGN "\xEF\x85\x95"
#define ICON_FA_DUNGEON "\xEF\x9B\x99"
#define ICON_FA_COMPRESS "\xEF\x81\xA6"
#define ICON_FA_SEARCH_LOCATION "\xEF\x9A\x89"
#define ICON_FA_UTENSILS "\xEF\x8B\xA7"
#define ICON_FA_BLENDER_PHONE "\xEF\x9A\xB6"
#define ICON_FA_ANGLE_RIGHT "\xEF\x84\x85"
#define ICON_FA_CHESS_QUEEN "\xEF\x91\x85"
#define ICON_FA_PAGER "\xEF\xA0\x95"
#define ICON_FA_SORT_AMOUNT_UP_ALT "\xEF\xA2\x85"
#define ICON_FA_CLIPBOARD_CHECK "\xEF\x91\xAC"
#define ICON_FA_HOURGLASS_END "\xEF\x89\x93"
#define ICON_FA_TOOTH "\xEF\x97\x89"
#define ICON_FA_BUSINESS_TIME "\xEF\x99\x8A"
#define ICON_FA_PLACE_OF_WORSHIP "\xEF\x99\xBF"
#define ICON_FA_GRIN_TONGUE_SQUINT "\xEF\x96\x8A"
#define ICON_FA_MEH_ROLLING_EYES "\xEF\x96\xA5"
#define ICON_FA_WALKING "\xEF\x95\x94"
#define ICON_FA_EDIT "\xEF\x81\x84"
#define ICON_FA_CARET_LEFT "\xEF\x83\x99"
#define ICON_FA_PAUSE "\xEF\x81\x8C"
#define ICON_FA_DICE "\xEF\x94\xA2"
#define ICON_FA_RUBLE_SIGN "\xEF\x85\x98"
#define ICON_FA_TERMINAL "\xEF\x84\xA0"
#define ICON_FA_RULER_VERTICAL "\xEF\x95\x88"
#define ICON_FA_HAND_POINTER "\xEF\x89\x9A"
#define ICON_FA_TAPE "\xEF\x93\x9B"
#define ICON_FA_SHOPPING_BAG "\xEF\x8A\x90"
#define ICON_FA_SKIING_NORDIC "\xEF\x9F\x8A"
#define ICON_FA_FIST_RAISED "\xEF\x9B\x9E"
#define ICON_FA_CUBE "\xEF\x86\xB2"
#define ICON_FA_CAPSULES "\xEF\x91\xAB"
#define ICON_FA_KIWI_BIRD "\xEF\x94\xB5"
#define ICON_FA_CHEVRON_CIRCLE_UP "\xEF\x84\xB9"
#define ICON_FA_MARS_STROKE_V "\xEF\x88\xAA"
#define ICON_FA_FILE_ARCHIVE "\xEF\x87\x86"
#define ICON_FA_JOINT "\xEF\x96\x95"
#define ICON_FA_MARS_STROKE_H "\xEF\x88\xAB"
#define ICON_FA_ADDRESS_BOOK "\xEF\x8A\xB9"
#define ICON_FA_PROCEDURES "\xEF\x92\x87"
#define ICON_FA_GEM "\xEF\x8E\xA5"
#define ICON_FA_RULER_COMBINED "\xEF\x95\x86"
#define ICON_FA_ALIGN_LEFT "\xEF\x80\xB6"
#define ICON_FA_STAR_AND_CRESCENT "\xEF\x9A\x99"
#define ICON_FA_FIGHTER_JET "\xEF\x83\xBB"
#define ICON_FA_SPACE_SHUTTLE "\xEF\x86\x97"
#define ICON_FA_MAP_PIN "\xEF\x89\xB6"
#define ICON_FA_GLOBE "\xEF\x82\xAC"
#define ICON_FA_ALIGN_CENTER "\xEF\x80\xB7"
#define ICON_FA_SORT_ALPHA_DOWN "\xEF\x85\x9D"
#define ICON_FA_PARKING "\xEF\x95\x80"
#define ICON_FA_CALENDAR "\xEF\x84\xB3"
#define ICON_FA_PALETTE "\xEF\x94\xBF"
#define ICON_FA_GLASS_MARTINI "\xEF\x80\x80"
#define ICON_FA_TIMES_CIRCLE "\xEF\x81\x97"
#define ICON_FA_EYE "\xEF\x81\xAE"
#define ICON_FA_MONUMENT "\xEF\x96\xA6"
#define ICON_FA_TRASH_RESTORE "\xEF\xA0\xA9"
#define ICON_FA_GUITAR "\xEF\x9E\xA6"
#define ICON_FA_GRIN_BEAM "\xEF\x96\x82"
#define ICON_FA_KEY "\xEF\x82\x84"
#define ICON_FA_FIRST_AID "\xEF\x91\xB9"
#define ICON_FA_UMBRELLA_BEACH "\xEF\x97\x8A"
#define ICON_FA_DRUM "\xEF\x95\xA9"
#define ICON_FA_FILE_CONTRACT "\xEF\x95\xAC"
#define ICON_FA_VOICEMAIL "\xEF\xA2\x97"
#define ICON_FA_RESTROOM "\xEF\x9E\xBD"
#define ICON_FA_UNLOCK_ALT "\xEF\x84\xBE"
#define ICON_FA_MICROPHONE_ALT_SLASH "\xEF\x94\xB9"
#define ICON_FA_USER_SECRET "\xEF\x88\x9B"
#define ICON_FA_ARROW_RIGHT "\xEF\x81\xA1"
#define ICON_FA_FILE_VIDEO "\xEF\x87\x88"
#define ICON_FA_ARROW_ALT_CIRCLE_RIGHT "\xEF\x8D\x9A"
#define ICON_FA_CALENDAR_WEEK "\xEF\x9E\x84"
#define ICON_FA_USER_GRADUATE "\xEF\x94\x81"
#define ICON_FA_HAND_MIDDLE_FINGER "\xEF\xA0\x86"
#define ICON_FA_POO "\xEF\x8B\xBE"
#define ICON_FA_LAUGH "\xEF\x96\x99"
#define ICON_FA_TABLE "\xEF\x83\x8E"
#define ICON_FA_POLL "\xEF\x9A\x81"
#define ICON_FA_CAR_ALT "\xEF\x97\x9E"
#define ICON_FA_THUMBS_UP "\xEF\x85\xA4"
#define ICON_FA_SWIMMER "\xEF\x97\x84"
#define ICON_FA_TRADEMARK "\xEF\x89\x9C"
#define ICON_FA_CLOUD_MOON_RAIN "\xEF\x9C\xBC"
#define ICON_FA_VIALS "\xEF\x92\x93"
#define ICON_FA_ERASER "\xEF\x84\xAD"
#define ICON_FA_MARS "\xEF\x88\xA2"
#define ICON_FA_HELICOPTER "\xEF\x94\xB3"
#define ICON_FA_FEATHER "\xEF\x94\xAD"
#define ICON_FA_SQUARE_FULL "\xEF\x91\x9C"
#define ICON_FA_DOLLY "\xEF\x91\xB2"
#define ICON_FA_HAND_HOLDING "\xEF\x92\xBD"
#define ICON_FA_HOURGLASS_START "\xEF\x89\x91"
#define ICON_FA_GRIN_HEARTS "\xEF\x96\x84"
#define ICON_FA_VENUS_DOUBLE "\xEF\x88\xA6"
#define ICON_FA_HASHTAG "\xEF\x8A\x92"
#define ICON_FA_FINGERPRINT "\xEF\x95\xB7"
#define ICON_FA_SEEDLING "\xEF\x93\x98"
#define ICON_FA_HAYKAL "\xEF\x99\xA6"
#define ICON_FA_TSHIRT "\xEF\x95\x93"
#define ICON_FA_PENCIL_RULER "\xEF\x96\xAE"
#define ICON_FA_HDD "\xEF\x82\xA0"
#define ICON_FA_NEWSPAPER "\xEF\x87\xAA"
#define ICON_FA_HOSPITAL_ALT "\xEF\x91\xBD"
#define ICON_FA_USER_SLASH "\xEF\x94\x86"
#define ICON_FA_FILE_WORD "\xEF\x87\x82"
#define ICON_FA_ENVELOPE_SQUARE "\xEF\x86\x99"
#define ICON_FA_GENDERLESS "\xEF\x88\xAD"
#define ICON_FA_DICE_FIVE "\xEF\x94\xA3"
#define ICON_FA_SYNAGOGUE "\xEF\x9A\x9B"
#define ICON_FA_PAW "\xEF\x86\xB0"
#define ICON_FA_HAND_HOLDING_HEART "\xEF\x92\xBE"
#define ICON_FA_CROSS "\xEF\x99\x94"
#define ICON_FA_ARCHIVE "\xEF\x86\x87"
#define ICON_FA_SOLAR_PANEL "\xEF\x96\xBA"
#define ICON_FA_INFINITY "\xEF\x94\xB4"
#define ICON_FA_ANKH "\xEF\x99\x84"
#define ICON_FA_MAP_MARKER "\xEF\x81\x81"
#define ICON_FA_CALENDAR_ALT "\xEF\x81\xB3"
#define ICON_FA_AMERICAN_SIGN_LANGUAGE_INTERPRETING "\xEF\x8A\xA3"
#define ICON_FA_BINOCULARS "\xEF\x87\xA5"
#define ICON_FA_STICKY_NOTE "\xEF\x89\x89"
#define ICON_FA_RUNNING "\xEF\x9C\x8C"
#define ICON_FA_PEN_NIB "\xEF\x96\xAD"
#define ICON_FA_MAP_MARKED "\xEF\x96\x9F"
#define ICON_FA_EXPAND "\xEF\x81\xA5"
#define ICON_FA_TRUCK_PICKUP "\xEF\x98\xBC"
#define ICON_FA_HOLLY_BERRY "\xEF\x9E\xAA"
#define ICON_FA_PRESCRIPTION_BOTTLE "\xEF\x92\x85"
#define ICON_FA_LAPTOP_CODE "\xEF\x97\xBC"
#define ICON_FA_GOLF_BALL "\xEF\x91\x90"
#define ICON_FA_SKULL_CROSSBONES "\xEF\x9C\x94"
#define ICON_FA_TAXI "\xEF\x86\xBA"
#define ICON_FA_COMMENT "\xEF\x81\xB5"
#define ICON_FA_KISS "\xEF\x96\x96"
#define ICON_FA_HIPPO "\xEF\x9B\xAD"
#define ICON_FA_ARROWS_ALT "\xEF\x82\xB2"
#define ICON_FA_UNDERLINE "\xEF\x83\x8D"
#define ICON_FA_ARROW_CIRCLE_UP "\xEF\x82\xAA"
#define ICON_FA_BASKETBALL_BALL "\xEF\x90\xB4"
#define ICON_FA_DESKTOP "\xEF\x84\x88"
#define ICON_FA_PALLET "\xEF\x92\x82"
#define ICON_FA_TOGGLE_ON "\xEF\x88\x85"
#define ICON_FA_STOPWATCH "\xEF\x8B\xB2"
#define ICON_FA_ARROW_ALT_CIRCLE_LEFT "\xEF\x8D\x99"
#define ICON_FA_GAS_PUMP "\xEF\x94\xAF"
#define ICON_FA_EXTERNAL_LINK_ALT "\xEF\x8D\x9D"
#define ICON_FA_FROWN "\xEF\x84\x99"
#define ICON_FA_RULER "\xEF\x95\x85"
#define ICON_FA_FLAG_USA "\xEF\x9D\x8D"
#define ICON_FA_GRIN "\xEF\x96\x80"
#define ICON_FA_ARROW_CIRCLE_LEFT "\xEF\x82\xA8"
#define ICON_FA_HIGHLIGHTER "\xEF\x96\x91"
#define ICON_FA_POLL_H "\xEF\x9A\x82"
#define ICON_FA_SERVER "\xEF\x88\xB3"
#define ICON_FA_BATTERY_EMPTY "\xEF\x89\x84"
#define ICON_FA_SPRAY_CAN "\xEF\x96\xBD"
#define ICON_FA_BOWLING_BALL "\xEF\x90\xB6"
#define ICON_FA_GRIP_LINES_VERTICAL "\xEF\x9E\xA5"
#define ICON_FA_GLOBE_EUROPE "\xEF\x9E\xA2"
#define ICON_FA_WINDOW_MINIMIZE "\xEF\x8B\x91"
#define ICON_FA_MARS_DOUBLE "\xEF\x88\xA7"
#define ICON_FA_PAUSE_CIRCLE "\xEF\x8A\x8B"
#define ICON_FA_HOME "\xEF\x80\x95"
#define ICON_FA_COMMENT_ALT "\xEF\x89\xBA"
#define ICON_FA_UTENSIL_SPOON "\xEF\x8B\xA5"
#define ICON_FA_APPLE_ALT "\xEF\x97\x91"
#define ICON_FA_MOON "\xEF\x86\x86"
#define ICON_FA_CANNABIS "\xEF\x95\x9F"
#define ICON_FA_LAUGH_BEAM "\xEF\x96\x9A"
#define ICON_FA_TEETH_OPEN "\xEF\x98\xAF"
#define ICON_FA_CHART_PIE "\xEF\x88\x80"
#define ICON_FA_SOCKS "\xEF\x9A\x96"
#define ICON_FA_SD_CARD "\xEF\x9F\x82"
#define ICON_FA_ARROW_CIRCLE_RIGHT "\xEF\x82\xA9"
#define ICON_FA_PASTE "\xEF\x83\xAA"
#define ICON_FA_OM "\xEF\x99\xB9"
#define ICON_FA_LUGGAGE_CART "\xEF\x96\x9D"
#define ICON_FA_INDUSTRY "\xEF\x89\xB5"
#define ICON_FA_STAMP "\xEF\x96\xBF"
#define ICON_FA_RADIATION_ALT "\xEF\x9E\xBA"
#define ICON_FA_COMPRESS_ARROWS_ALT "\xEF\x9E\x8C"
#define ICON_FA_ROAD "\xEF\x80\x98"
#define ICON_FA_IMAGE "\xEF\x80\xBE"
#define ICON_FA_BALANCE_SCALE_RIGHT "\xEF\x94\x96"
#define ICON_FA_ANGLE_DOUBLE_RIGHT "\xEF\x84\x81"
#define ICON_FA_CLOUD_MOON "\xEF\x9B\x83"
#define ICON_FA_DOOR_OPEN "\xEF\x94\xAB"
#define ICON_FA_GRIN_TONGUE_WINK "\xEF\x96\x8B"
#define ICON_FA_REPLY_ALL "\xEF\x84\xA2"
#define ICON_FA_TEMPERATURE_LOW "\xEF\x9D\xAB"
#define ICON_FA_INBOX "\xEF\x80\x9C"
#define ICON_FA_FEMALE "\xEF\x86\x82"
#define ICON_FA_SYRINGE "\xEF\x92\x8E"
#define ICON_FA_CIRCLE_NOTCH "\xEF\x87\x8E"
#define ICON_FA_ELLIPSIS_V "\xEF\x85\x82"
#define ICON_FA_SNOWPLOW "\xEF\x9F\x92"
#define ICON_FA_TABLE_TENNIS "\xEF\x91\x9D"
#define ICON_FA_LOW_VISION "\xEF\x8A\xA8"
#define ICON_FA_FILE_IMPORT "\xEF\x95\xAF"
#define ICON_FA_ITALIC "\xEF\x80\xB3"
#define ICON_FA_FILE_SIGNATURE "\xEF\x95\xB3"
#define ICON_FA_CHALKBOARD "\xEF\x94\x9B"
#define ICON_FA_GHOST "\xEF\x9B\xA2"
#define ICON_FA_TACHOMETER_ALT "\xEF\x8F\xBD"
#define ICON_FA_BUS "\xEF\x88\x87"
#define ICON_FA_ANGLE_DOWN "\xEF\x84\x87"
#define ICON_FA_HAND_ROCK "\xEF\x89\x95"
#define ICON_FA_BORDER_STYLE "\xEF\xA1\x93"
#define ICON_FA_STAR_OF_LIFE "\xEF\x98\xA1"
#define ICON_FA_PODCAST "\xEF\x8B\x8E"
#define ICON_FA_TRUCK_MOVING "\xEF\x93\x9F"
#define ICON_FA_BUG "\xEF\x86\x88"
#define ICON_FA_SHIELD_ALT "\xEF\x8F\xAD"
#define ICON_FA_FILL_DRIP "\xEF\x95\xB6"
#define ICON_FA_COMMENT_SLASH "\xEF\x92\xB3"
#define ICON_FA_SUITCASE "\xEF\x83\xB2"
#define ICON_FA_SKATING "\xEF\x9F\x85"
#define ICON_FA_TOILET "\xEF\x9F\x98"
#define ICON_FA_ENVELOPE_OPEN_TEXT "\xEF\x99\x98"
#define ICON_FA_HEART_BROKEN "\xEF\x9E\xA9"
#define ICON_FA_CARET_SQUARE_UP "\xEF\x85\x91"
#define ICON_FA_TH_LARGE "\xEF\x80\x89"
#define ICON_FA_AT "\xEF\x87\xBA"
#define ICON_FA_FILE "\xEF\x85\x9B"
#define ICON_FA_TENGE "\xEF\x9F\x97"
#define ICON_FA_FLAG_CHECKERED "\xEF\x84\x9E"
#define ICON_FA_FILM "\xEF\x80\x88"
#define ICON_FA_FILL "\xEF\x95\xB5"
#define ICON_FA_GRIN_SQUINT_TEARS "\xEF\x96\x86"
#define ICON_FA_PERCENT "\xEF\x8A\x95"
#define ICON_FA_METEOR "\xEF\x9D\x93"
#define ICON_FA_TRASH "\xEF\x87\xB8"
#define ICON_FA_FILE_AUDIO "\xEF\x87\x87"
#define ICON_FA_SATELLITE_DISH "\xEF\x9F\x80"
#define ICON_FA_POOP "\xEF\x98\x99"
#define ICON_FA_STAR "\xEF\x80\x85"
#define ICON_FA_GIFTS "\xEF\x9E\x9C"
#define ICON_FA_FIRE_ALT "\xEF\x9F\xA4"
#define ICON_FA_BUILDING "\xEF\x86\xAD"
#define ICON_FA_PRESCRIPTION_BOTTLE_ALT "\xEF\x92\x86"
#define ICON_FA_MONEY_BILL_WAVE_ALT "\xEF\x94\xBB"
#define ICON_FA_NEUTER "\xEF\x88\xAC"
#define ICON_FA_BAND_AID "\xEF\x91\xA2"
#define ICON_FA_WIFI "\xEF\x87\xAB"
#define ICON_FA_MASK "\xEF\x9B\xBA"
#define ICON_FA_CHEVRON_UP "\xEF\x81\xB7"
#define ICON_FA_HAND_SPOCK "\xEF\x89\x99"
#define ICON_FA_HAND_POINT_UP "\xEF\x82\xA6"

View File

@ -1 +1,2 @@
add_subdirectory(binary_to_compressed_c)
add_subdirectory(glslang)

View File

@ -0,0 +1,6 @@
project(binary_to_compressed_c)
set(SRCS
binary_to_compressed_c.cpp
)
engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS})

View File

@ -0,0 +1,384 @@
// dear imgui
// (binary_to_compressed_c.cpp)
// Helper tool to turn a file into a C array, if you want to embed font data in your source code.
// The data is first compressed with stb_compress() to reduce source code size,
// then encoded in Base85 to fit in a string so we can fit roughly 4 bytes of compressed data into 5 bytes of source code (suggested by @mmalex)
// (If we used 32-bit constants it would require take 11 bytes of source code to encode 4 bytes, and be endianness dependent)
// Note that even with compression, the output array is likely to be bigger than the binary file..
// Load compressed TTF fonts with ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF()
// Build with, e.g:
// # cl.exe binary_to_compressed_c.cpp
// # gcc binary_to_compressed_c.cpp
// You can also find a precompiled Windows binary in the binary/demo package available from https://github.com/ocornut/imgui
// Usage:
// binary_to_compressed_c.exe [-base85] [-nocompress] <inputfile> <symbolname>
// Usage example:
// # binary_to_compressed_c.exe myfont.ttf MyFont > myfont.cpp
// # binary_to_compressed_c.exe -base85 myfont.ttf MyFont > myfont.cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
// stb_compress* from stb.h - declaration
typedef unsigned int stb_uint;
typedef unsigned char stb_uchar;
stb_uint stb_compress(stb_uchar* out, stb_uchar* in, stb_uint len);
static bool binary_to_compressed_c(const char* filename, const char* symbol, bool use_base85_encoding, bool use_compression);
int main(int argc, char** argv)
{
if (argc < 3)
{
printf("Syntax: %s [-base85] [-nocompress] <inputfile> <symbolname>\n", argv[0]);
return 0;
}
int argn = 1;
bool use_base85_encoding = false;
bool use_compression = true;
if (argv[argn][0] == '-')
{
if (strcmp(argv[argn], "-base85") == 0) { use_base85_encoding = true; argn++; }
else if (strcmp(argv[argn], "-nocompress") == 0) { use_compression = false; argn++; }
else
{
fprintf(stderr, "Unknown argument: '%s'\n", argv[argn]);
return 1;
}
}
bool ret = binary_to_compressed_c(argv[argn], argv[argn + 1], use_base85_encoding, use_compression);
if (!ret)
fprintf(stderr, "Error opening or reading file: '%s'\n", argv[argn]);
return ret ? 0 : 1;
}
char Encode85Byte(unsigned int x)
{
x = (x % 85) + 35;
return (x >= '\\') ? x + 1 : x;
}
bool binary_to_compressed_c(const char* filename, const char* symbol, bool use_base85_encoding, bool use_compression)
{
// Read file
FILE* f = fopen(filename, "rb");
if (!f) return false;
int data_sz;
if (fseek(f, 0, SEEK_END) || (data_sz = (int)ftell(f)) == -1 || fseek(f, 0, SEEK_SET)) { fclose(f); return false; }
char* data = new char[data_sz + 4];
if (fread(data, 1, data_sz, f) != (size_t)data_sz) { fclose(f); delete[] data; return false; }
memset((void*)(((char*)data) + data_sz), 0, 4);
fclose(f);
// Compress
int maxlen = data_sz + 512 + (data_sz >> 2) + sizeof(int); // total guess
char* compressed = use_compression ? new char[maxlen] : data;
int compressed_sz = use_compression ? stb_compress((stb_uchar*)compressed, (stb_uchar*)data, data_sz) : data_sz;
if (use_compression)
memset(compressed + compressed_sz, 0, maxlen - compressed_sz);
// Output as Base85 encoded
FILE* out = stdout;
fprintf(out, "// File: '%s' (%d bytes)\n", filename, (int)data_sz);
fprintf(out, "// Exported using binary_to_compressed_c.cpp\n");
const char* compressed_str = use_compression ? "compressed_" : "";
if (use_base85_encoding)
{
fprintf(out, "static const char %s_%sdata_base85[%d+1] =\n \"", symbol, compressed_str, (int)((compressed_sz + 3) / 4)*5);
char prev_c = 0;
for (int src_i = 0; src_i < compressed_sz; src_i += 4)
{
// This is made a little more complicated by the fact that ??X sequences are interpreted as trigraphs by old C/C++ compilers. So we need to escape pairs of ??.
unsigned int d = *(unsigned int*)(compressed + src_i);
for (unsigned int n5 = 0; n5 < 5; n5++, d /= 85)
{
char c = Encode85Byte(d);
fprintf(out, (c == '?' && prev_c == '?') ? "\\%c" : "%c", c);
prev_c = c;
}
if ((src_i % 112) == 112 - 4)
fprintf(out, "\"\n \"");
}
fprintf(out, "\";\n\n");
}
else
{
fprintf(out, "static const unsigned int %s_%ssize = %d;\n", symbol, compressed_str, (int)compressed_sz);
fprintf(out, "static const unsigned int %s_%sdata[%d/4] =\n{", symbol, compressed_str, (int)((compressed_sz + 3) / 4)*4);
int column = 0;
for (int i = 0; i < compressed_sz; i += 4)
{
unsigned int d = *(unsigned int*)(compressed + i);
if ((column++ % 12) == 0)
fprintf(out, "\n 0x%08x, ", d);
else
fprintf(out, "0x%08x, ", d);
}
fprintf(out, "\n};\n\n");
}
// Cleanup
delete[] data;
if (use_compression)
delete[] compressed;
return true;
}
// stb_compress* from stb.h - definition
//////////////////// compressor ///////////////////////
static stb_uint stb_adler32(stb_uint adler32, stb_uchar *buffer, stb_uint buflen)
{
const unsigned long ADLER_MOD = 65521;
unsigned long s1 = adler32 & 0xffff, s2 = adler32 >> 16;
unsigned long blocklen, i;
blocklen = buflen % 5552;
while (buflen) {
for (i=0; i + 7 < blocklen; i += 8) {
s1 += buffer[0], s2 += s1;
s1 += buffer[1], s2 += s1;
s1 += buffer[2], s2 += s1;
s1 += buffer[3], s2 += s1;
s1 += buffer[4], s2 += s1;
s1 += buffer[5], s2 += s1;
s1 += buffer[6], s2 += s1;
s1 += buffer[7], s2 += s1;
buffer += 8;
}
for (; i < blocklen; ++i)
s1 += *buffer++, s2 += s1;
s1 %= ADLER_MOD, s2 %= ADLER_MOD;
buflen -= blocklen;
blocklen = 5552;
}
return (s2 << 16) + s1;
}
static unsigned int stb_matchlen(stb_uchar *m1, stb_uchar *m2, stb_uint maxlen)
{
stb_uint i;
for (i=0; i < maxlen; ++i)
if (m1[i] != m2[i]) return i;
return i;
}
// simple implementation that just takes the source data in a big block
static stb_uchar *stb__out;
static FILE *stb__outfile;
static stb_uint stb__outbytes;
static void stb__write(unsigned char v)
{
fputc(v, stb__outfile);
++stb__outbytes;
}
//#define stb_out(v) (stb__out ? *stb__out++ = (stb_uchar) (v) : stb__write((stb_uchar) (v)))
#define stb_out(v) do { if (stb__out) *stb__out++ = (stb_uchar) (v); else stb__write((stb_uchar) (v)); } while (0)
static void stb_out2(stb_uint v) { stb_out(v >> 8); stb_out(v); }
static void stb_out3(stb_uint v) { stb_out(v >> 16); stb_out(v >> 8); stb_out(v); }
static void stb_out4(stb_uint v) { stb_out(v >> 24); stb_out(v >> 16); stb_out(v >> 8 ); stb_out(v); }
static void outliterals(stb_uchar *in, int numlit)
{
while (numlit > 65536) {
outliterals(in,65536);
in += 65536;
numlit -= 65536;
}
if (numlit == 0) ;
else if (numlit <= 32) stb_out (0x000020 + numlit-1);
else if (numlit <= 2048) stb_out2(0x000800 + numlit-1);
else /* numlit <= 65536) */ stb_out3(0x070000 + numlit-1);
if (stb__out) {
memcpy(stb__out,in,numlit);
stb__out += numlit;
} else
fwrite(in, 1, numlit, stb__outfile);
}
static int stb__window = 0x40000; // 256K
static int stb_not_crap(int best, int dist)
{
return ((best > 2 && dist <= 0x00100)
|| (best > 5 && dist <= 0x04000)
|| (best > 7 && dist <= 0x80000));
}
static stb_uint stb__hashsize = 32768;
// note that you can play with the hashing functions all you
// want without needing to change the decompressor
#define stb__hc(q,h,c) (((h) << 7) + ((h) >> 25) + q[c])
#define stb__hc2(q,h,c,d) (((h) << 14) + ((h) >> 18) + (q[c] << 7) + q[d])
#define stb__hc3(q,c,d,e) ((q[c] << 14) + (q[d] << 7) + q[e])
static unsigned int stb__running_adler;
static int stb_compress_chunk(stb_uchar *history,
stb_uchar *start,
stb_uchar *end,
int length,
int *pending_literals,
stb_uchar **chash,
stb_uint mask)
{
(void)history;
int window = stb__window;
stb_uint match_max;
stb_uchar *lit_start = start - *pending_literals;
stb_uchar *q = start;
#define STB__SCRAMBLE(h) (((h) + ((h) >> 16)) & mask)
// stop short of the end so we don't scan off the end doing
// the hashing; this means we won't compress the last few bytes
// unless they were part of something longer
while (q < start+length && q+12 < end) {
int m;
stb_uint h1,h2,h3,h4, h;
stb_uchar *t;
int best = 2, dist=0;
if (q+65536 > end)
match_max = end-q;
else
match_max = 65536;
#define stb__nc(b,d) ((d) <= window && ((b) > 9 || stb_not_crap(b,d)))
#define STB__TRY(t,p) /* avoid retrying a match we already tried */ \
if (p ? dist != q-t : 1) \
if ((m = stb_matchlen(t, q, match_max)) > best) \
if (stb__nc(m,q-(t))) \
best = m, dist = q - (t)
// rather than search for all matches, only try 4 candidate locations,
// chosen based on 4 different hash functions of different lengths.
// this strategy is inspired by LZO; hashing is unrolled here using the
// 'hc' macro
h = stb__hc3(q,0, 1, 2); h1 = STB__SCRAMBLE(h);
t = chash[h1]; if (t) STB__TRY(t,0);
h = stb__hc2(q,h, 3, 4); h2 = STB__SCRAMBLE(h);
h = stb__hc2(q,h, 5, 6); t = chash[h2]; if (t) STB__TRY(t,1);
h = stb__hc2(q,h, 7, 8); h3 = STB__SCRAMBLE(h);
h = stb__hc2(q,h, 9,10); t = chash[h3]; if (t) STB__TRY(t,1);
h = stb__hc2(q,h,11,12); h4 = STB__SCRAMBLE(h);
t = chash[h4]; if (t) STB__TRY(t,1);
// because we use a shared hash table, can only update it
// _after_ we've probed all of them
chash[h1] = chash[h2] = chash[h3] = chash[h4] = q;
if (best > 2)
assert(dist > 0);
// see if our best match qualifies
if (best < 3) { // fast path literals
++q;
} else if (best > 2 && best <= 0x80 && dist <= 0x100) {
outliterals(lit_start, q-lit_start); lit_start = (q += best);
stb_out(0x80 + best-1);
stb_out(dist-1);
} else if (best > 5 && best <= 0x100 && dist <= 0x4000) {
outliterals(lit_start, q-lit_start); lit_start = (q += best);
stb_out2(0x4000 + dist-1);
stb_out(best-1);
} else if (best > 7 && best <= 0x100 && dist <= 0x80000) {
outliterals(lit_start, q-lit_start); lit_start = (q += best);
stb_out3(0x180000 + dist-1);
stb_out(best-1);
} else if (best > 8 && best <= 0x10000 && dist <= 0x80000) {
outliterals(lit_start, q-lit_start); lit_start = (q += best);
stb_out3(0x100000 + dist-1);
stb_out2(best-1);
} else if (best > 9 && dist <= 0x1000000) {
if (best > 65536) best = 65536;
outliterals(lit_start, q-lit_start); lit_start = (q += best);
if (best <= 0x100) {
stb_out(0x06);
stb_out3(dist-1);
stb_out(best-1);
} else {
stb_out(0x04);
stb_out3(dist-1);
stb_out2(best-1);
}
} else { // fallback literals if no match was a balanced tradeoff
++q;
}
}
// if we didn't get all the way, add the rest to literals
if (q-start < length)
q = start+length;
// the literals are everything from lit_start to q
*pending_literals = (q - lit_start);
stb__running_adler = stb_adler32(stb__running_adler, start, q - start);
return q - start;
}
static int stb_compress_inner(stb_uchar *input, stb_uint length)
{
int literals = 0;
stb_uint len,i;
stb_uchar **chash;
chash = (stb_uchar**) malloc(stb__hashsize * sizeof(stb_uchar*));
if (chash == NULL) return 0; // failure
for (i=0; i < stb__hashsize; ++i)
chash[i] = NULL;
// stream signature
stb_out(0x57); stb_out(0xbc);
stb_out2(0);
stb_out4(0); // 64-bit length requires 32-bit leading 0
stb_out4(length);
stb_out4(stb__window);
stb__running_adler = 1;
len = stb_compress_chunk(input, input, input+length, length, &literals, chash, stb__hashsize-1);
assert(len == length);
outliterals(input+length - literals, literals);
free(chash);
stb_out2(0x05fa); // end opcode
stb_out4(stb__running_adler);
return 1; // success
}
stb_uint stb_compress(stb_uchar *out, stb_uchar *input, stb_uint length)
{
stb__out = out;
stb__outfile = NULL;
stb_compress_inner(input, length);
return stb__out - out;
}