diff --git a/ExternalApps/RadioSet/main/Source/RadioSet.cpp b/ExternalApps/RadioSet/main/Source/RadioSet.cpp index b2952ed5..c5e66558 100644 --- a/ExternalApps/RadioSet/main/Source/RadioSet.cpp +++ b/ExternalApps/RadioSet/main/Source/RadioSet.cpp @@ -17,6 +17,8 @@ void scrollbar_highlight(lv_event_t * e) { void RadioSet::onShow(AppHandle appHandle, lv_obj_t* parent) { + lvglMutex = tt_mutex_alloc(MUTEX_TYPE_RECURSIVE); + lv_obj_remove_flag(parent, LV_OBJ_FLAG_SCROLLABLE); lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_COLUMN); lv_obj_set_style_pad_row(parent, 0, LV_STATE_DEFAULT); @@ -26,7 +28,7 @@ void RadioSet::onShow(AppHandle appHandle, lv_obj_t* parent) { uiDropDownMenu = lv_dropdown_create(toolbar); - lv_dropdown_set_options(uiDropDownMenu, LV_SYMBOL_ENVELOPE " Terminal\n" LV_SYMBOL_SETTINGS " Settings"); + lv_dropdown_set_options(uiDropDownMenu, LV_SYMBOL_ENVELOPE " Terminal\n" LV_SYMBOL_SETTINGS " Packet\n" LV_SYMBOL_SETTINGS " Modems"); lv_dropdown_set_text(uiDropDownMenu, "Menu"); lv_dropdown_set_symbol(uiDropDownMenu, LV_SYMBOL_DOWN); lv_dropdown_set_selected_highlight(uiDropDownMenu, true); @@ -46,12 +48,12 @@ void RadioSet::onShow(AppHandle appHandle, lv_obj_t* parent) { lv_obj_set_style_border_width(wrapper, 0, 0); lv_obj_remove_flag(wrapper, LV_OBJ_FLAG_SCROLLABLE); - termView = new TermView(wrapper); + termView = new TermView(lvglMutex, wrapper); settingsView = new SettingsView(wrapper); auto presetMtEu868LongFast = new Preset("MT EU868 LongFast", MODULATION_LORA); presetMtEu868LongFast->addParameter(RADIO_FREQUENCY, 869.525); - presetMtEu868LongFast->addParameter(RADIO_POWER, 22.0); + presetMtEu868LongFast->addParameter(RADIO_POWER, /*22.0*/ 0); presetMtEu868LongFast->addParameter(RADIO_BOOSTEDGAIN, true); presetMtEu868LongFast->addParameter(RADIO_BANDWIDTH, 250.0); presetMtEu868LongFast->addParameter(RADIO_SPREADFACTOR, 11); @@ -75,7 +77,7 @@ void RadioSet::onShow(AppHandle appHandle, lv_obj_t* parent) { case 0: self->showView(View::Terminal); break; - case 1: + case 2: self->showView(View::Settings); break; default: @@ -95,6 +97,7 @@ RadioSet::~RadioSet() { } void RadioSet::showView(View view) { + tt_mutex_lock(lvglMutex, portMAX_DELAY); termView->setVisible(false); settingsView->setVisible(false); switch (view) { @@ -107,6 +110,7 @@ void RadioSet::showView(View view) { default: break; } + tt_mutex_unlock(lvglMutex); } diff --git a/ExternalApps/RadioSet/main/Source/RadioSet.h b/ExternalApps/RadioSet/main/Source/RadioSet.h index d8c62131..965218ee 100644 --- a/ExternalApps/RadioSet/main/Source/RadioSet.h +++ b/ExternalApps/RadioSet/main/Source/RadioSet.h @@ -13,6 +13,7 @@ class RadioSet { Settings }; + MutexHandle lvglMutex; lv_obj_t* mainView = nullptr; lv_obj_t* uiDropDownMenu = nullptr; lv_obj_t* progressBar = nullptr; diff --git a/ExternalApps/RadioSet/main/Source/SettingsView.cpp b/ExternalApps/RadioSet/main/Source/SettingsView.cpp index 6842cbbe..d0355bbe 100644 --- a/ExternalApps/RadioSet/main/Source/SettingsView.cpp +++ b/ExternalApps/RadioSet/main/Source/SettingsView.cpp @@ -880,6 +880,7 @@ void SettingsView::initUi(lv_obj_t *parent) { lv_obj_align(mainPanel, LV_ALIGN_TOP_MID, 0, 0); lv_obj_set_style_border_width(mainPanel, 0, 0); lv_obj_set_style_pad_all(mainPanel, 0, 0); + make_scrollable(mainPanel); deviceForm = initDeviceForm(mainPanel); } diff --git a/ExternalApps/RadioSet/main/Source/Utils.cpp b/ExternalApps/RadioSet/main/Source/Utils.cpp index 881f8db2..b19cb27c 100644 --- a/ExternalApps/RadioSet/main/Source/Utils.cpp +++ b/ExternalApps/RadioSet/main/Source/Utils.cpp @@ -80,6 +80,25 @@ char *const toString(RadioParameter p) { return "Unknown"; } +char *const toString(RadioTxState state) { + switch (state) { + case RADIO_TX_QUEUED: + return "QUEUED"; + case RADIO_TX_PENDING_TRANSMIT: + return "TRANSMIT"; + case RADIO_TX_TRANSMITTED: + return "SENT"; + case RADIO_TX_TIMEOUT: + return "TIMEOUT"; + case RADIO_TX_ERROR: + return "ERROR"; + default: + break; + } + crash("Unknown parameter passed."); + return "Unknown"; +} + void clownvomit(lv_obj_t *obj) { static auto rng = []() { static int color = 0xCCC0FE; @@ -91,7 +110,8 @@ void clownvomit(lv_obj_t *obj) { const int darken = 0x0E0E0E; const int lighten = 0xFEFEFE; - lv_obj_set_style_bg_color(obj, lv_color_hex(rng() & darken), 0); + auto bg = lv_color_darken(lv_color_hex(rng()), 100); + lv_obj_set_style_bg_color(obj, bg, 0); uint32_t i; for(i = 0; i < lv_obj_get_child_count(obj); i++) { @@ -104,3 +124,43 @@ void clownvomit(lv_obj_t *obj) { clownvomit(child); } } + + +static void apply_scroll_styles(lv_obj_t* obj) { + static bool init = false; + static lv_style_t style_scroll_focus; + static lv_style_t style_scrolling; + + if (!init) { + // Style which applies if scrollbar is focused + lv_style_init(&style_scroll_focus); + lv_style_set_bg_color(&style_scroll_focus, lv_color_make(0x40,0xA0,0xFF)); + lv_style_set_bg_opa(&style_scroll_focus, LV_OPA_COVER); + lv_style_set_border_width(&style_scroll_focus, 1); + lv_style_set_border_color(&style_scroll_focus, lv_theme_get_color_primary(nullptr)); + + // Style which applies if scrollbar is clicked enough that it defocuses + lv_style_init(&style_scrolling); + lv_style_set_bg_color(&style_scrolling, lv_color_make(0x40,0xA0,0xFF)); + lv_style_set_bg_opa(&style_scrolling, LV_OPA_COVER); + lv_style_set_border_width(&style_scrolling, 1); + auto lightprimary = lv_color_lighten(lv_theme_get_color_primary(nullptr), 50); + lv_style_set_border_color(&style_scrolling, lightprimary); + + init = true; + } + lv_obj_add_style(obj, &style_scroll_focus, (lv_style_selector_t)(LV_PART_SCROLLBAR | LV_STATE_FOCUSED)); + lv_obj_add_style(obj, &style_scrolling, (lv_style_selector_t)(LV_PART_SCROLLBAR | LV_STATE_PRESSED)); +} + +void make_scrollable(lv_obj_t* obj) { + // Make the object interactive, i.e focusable + lv_obj_add_flag(obj, (lv_obj_flag_t)(LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLL_ON_FOCUS)); + + // Add to default group to get it into the focus list + auto* group = lv_group_get_default(); + lv_group_add_obj(group, obj); + + // Apply style to scrollbar to make it visible if focused + apply_scroll_styles(obj); +} diff --git a/ExternalApps/RadioSet/main/Source/Utils.h b/ExternalApps/RadioSet/main/Source/Utils.h index b707e17d..ee629d50 100644 --- a/ExternalApps/RadioSet/main/Source/Utils.h +++ b/ExternalApps/RadioSet/main/Source/Utils.h @@ -23,7 +23,10 @@ bool isPrintable(const uint8_t* data, size_t size); char *const toString(Modulation m); char *const toString(RadioParameter p); +char *const toString(RadioTxState state); // Debug function which colors all children randomly // TODO: Remove before flight void clownvomit(lv_obj_t *obj); + +void make_scrollable(lv_obj_t* obj); diff --git a/ExternalApps/RadioSet/main/Source/lv_font_ptmono_12.c b/ExternalApps/RadioSet/main/Source/lv_font_ptmono_12.c new file mode 100644 index 00000000..88587aa0 --- /dev/null +++ b/ExternalApps/RadioSet/main/Source/lv_font_ptmono_12.c @@ -0,0 +1,1089 @@ +/******************************************************************************* + * Size: 12 px + * Bpp: 2 + * Opts: --bpp 2 --size 12 --no-compress --stride 1 --align 1 --font PTMono-Regular.ttf --range 32-255 --format lvgl -o lv_font_ptmono_12.c + ******************************************************************************/ + +#ifdef __has_include + #if __has_include("lvgl.h") + #ifndef LV_LVGL_H_INCLUDE_SIMPLE + #define LV_LVGL_H_INCLUDE_SIMPLE + #endif + #endif +#endif + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE + #include "lvgl.h" +#else + #include "lvgl/lvgl.h" +#endif + + + +#ifndef LV_FONT_PTMONO_12 +#define LV_FONT_PTMONO_12 1 +#endif + +#if LV_FONT_PTMONO_12 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + 0x30, 0xc3, 0xc, 0x30, 0x81, 0xc, + + /* U+0022 "\"" */ + 0x32, 0x48, 0x82, 0x20, 0x44, + + /* U+0023 "#" */ + 0x5, 0x20, 0x20, 0xc2, 0xff, 0x82, 0x24, 0x7f, + 0xf0, 0x83, 0x2, 0x4, 0x0, + + /* U+0024 "$" */ + 0x4, 0x0, 0xc0, 0x3f, 0x49, 0x80, 0x98, 0x3, + 0xc0, 0xf, 0x40, 0x8c, 0x8, 0xcb, 0xf0, 0xc, + 0x0, + + /* U+0025 "%" */ + 0x0, 0x0, 0xf0, 0x88, 0x99, 0x26, 0x70, 0x2a, + 0x40, 0xa, 0x90, 0x98, 0xc2, 0x23, 0x20, 0xb4, + 0x0, 0x0, + + /* U+0026 "&" */ + 0x1f, 0x40, 0x93, 0x1, 0xa0, 0xb, 0x40, 0x63, + 0xa, 0x43, 0x96, 0x7, 0xb, 0xe2, + + /* U+0027 "'" */ + 0xcc, 0xc4, + + /* U+0028 "(" */ + 0x0, 0x0, 0x78, 0x28, 0x3, 0x0, 0x50, 0x9, + 0x0, 0x90, 0x9, 0x0, 0x70, 0x3, 0x40, 0xa, + 0x40, 0x4, + + /* U+0029 ")" */ + 0x0, 0x7, 0xc0, 0x7, 0x0, 0x18, 0x0, 0xc0, + 0xc, 0x0, 0xc0, 0xc, 0x1, 0x80, 0x30, 0x2d, + 0x1, 0x0, + + /* U+002A "*" */ + 0x0, 0x0, 0x33, 0x0, 0x74, 0xe, 0xe9, 0x9, + 0x80, 0x22, 0x0, + + /* U+002B "+" */ + 0x0, 0x0, 0xc, 0x0, 0x30, 0x1f, 0xfe, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x0, + + /* U+002C "," */ + 0x10, 0xd1, 0x44, + + /* U+002D "-" */ + 0x7f, 0x80, + + /* U+002E "." */ + 0x10, 0xd0, + + /* U+002F "/" */ + 0x0, 0x0, 0xc, 0x1, 0x40, 0x30, 0x6, 0x0, + 0xc0, 0x8, 0x2, 0x0, 0x20, 0x9, 0x0, 0x40, + 0x0, + + /* U+0030 "0" */ + 0xf, 0xd0, 0xc0, 0xc3, 0x7, 0x58, 0x69, 0x6a, + 0x14, 0xd0, 0x93, 0x43, 0x3, 0xf0, + + /* U+0031 "1" */ + 0xd, 0xa, 0x90, 0x9, 0x0, 0x90, 0x9, 0x0, + 0x90, 0x9, 0x7, 0xfc, + + /* U+0032 "2" */ + 0x1f, 0xd0, 0x0, 0xc0, 0x3, 0x0, 0x18, 0x0, + 0xc0, 0x8, 0x1, 0x80, 0xf, 0xfc, + + /* U+0033 "3" */ + 0xff, 0xc0, 0x30, 0x8, 0x2, 0xe0, 0x1, 0xc0, + 0xc, 0x1, 0xcb, 0xe0, + + /* U+0034 "4" */ + 0x0, 0xd0, 0xb, 0x40, 0x69, 0x3, 0x24, 0x30, + 0x91, 0xff, 0xe0, 0x9, 0x0, 0x24, + + /* U+0035 "5" */ + 0x7f, 0x86, 0x0, 0x60, 0x7, 0xe0, 0x1, 0xc0, + 0xc, 0x1, 0xcb, 0xe0, + + /* U+0036 "6" */ + 0x0, 0x0, 0xe, 0x0, 0xc0, 0x9, 0x0, 0x3b, + 0xd0, 0xc0, 0xc2, 0x2, 0x4c, 0xc, 0xb, 0xd0, + + /* U+0037 "7" */ + 0x3f, 0xf0, 0x0, 0x80, 0x8, 0x0, 0x20, 0x2, + 0x0, 0x8, 0x0, 0x80, 0x6, 0x0, + + /* U+0038 "8" */ + 0xb, 0xd0, 0xc0, 0xc3, 0x43, 0x3, 0xb0, 0x19, + 0xa0, 0xc0, 0xc3, 0x3, 0x7, 0xf4, + + /* U+0039 "9" */ + 0xb, 0xd0, 0xc0, 0xc3, 0x2, 0x4c, 0x9, 0xb, + 0xb4, 0x0, 0xc0, 0x9, 0x2, 0xd0, 0x4, 0x0, + + /* U+003A ":" */ + 0x34, 0x40, 0x0, 0x10, 0xd0, + + /* U+003B ";" */ + 0x34, 0x40, 0x0, 0x10, 0xd1, 0x44, + + /* U+003C "<" */ + 0x0, 0x0, 0x1, 0xd0, 0x28, 0x7, 0x40, 0x34, + 0x0, 0x2d, 0x0, 0xa, 0x0, 0x0, + + /* U+003D "=" */ + 0x3f, 0xf4, 0x0, 0x3, 0xff, 0x40, + + /* U+003E ">" */ + 0x0, 0x0, 0xd0, 0x0, 0xb0, 0x0, 0x28, 0x0, + 0x74, 0xe, 0x2, 0xc0, 0x4, 0x0, + + /* U+003F "?" */ + 0x1f, 0xd0, 0x40, 0xc0, 0x3, 0x0, 0x28, 0x2, + 0x40, 0x8, 0x0, 0x0, 0x1, 0xc0, + + /* U+0040 "@" */ + 0x7, 0xd0, 0x24, 0x30, 0x60, 0x24, 0x96, 0xb4, + 0x8c, 0x24, 0x9c, 0x34, 0x6b, 0xac, 0x34, 0x0, + 0xb, 0xe4, + + /* U+0041 "A" */ + 0x3, 0x40, 0xa, 0x80, 0xc, 0xc0, 0xc, 0x90, + 0x24, 0x70, 0x3f, 0xf0, 0x60, 0x24, 0x90, 0xc, + + /* U+0042 "B" */ + 0xbf, 0x8c, 0xc, 0xc0, 0xcf, 0xf4, 0xc0, 0xdc, + 0x9, 0xc0, 0xcb, 0xf4, + + /* U+0043 "C" */ + 0xb, 0xf4, 0xa0, 0x93, 0x0, 0xc, 0x0, 0x30, + 0x0, 0xc0, 0x2, 0xc1, 0x82, 0xfd, + + /* U+0044 "D" */ + 0x3f, 0x80, 0xc1, 0xc3, 0x2, 0x4c, 0x6, 0x30, + 0x18, 0xc0, 0x93, 0x7, 0xf, 0xe0, + + /* U+0045 "E" */ + 0xbf, 0xc9, 0x0, 0x90, 0xb, 0xfc, 0x90, 0x9, + 0x0, 0x90, 0xb, 0xfc, + + /* U+0046 "F" */ + 0xbf, 0xc9, 0x0, 0x90, 0xb, 0xfc, 0x90, 0x9, + 0x0, 0x90, 0x9, 0x0, + + /* U+0047 "G" */ + 0xb, 0xf0, 0xa0, 0xc3, 0x0, 0x18, 0x0, 0x60, + 0xf4, 0xc0, 0x52, 0x81, 0x42, 0xfc, + + /* U+0048 "H" */ + 0x60, 0x25, 0x80, 0x96, 0x2, 0x5f, 0xfd, 0x60, + 0x25, 0x80, 0x96, 0x2, 0x58, 0x9, + + /* U+0049 "I" */ + 0x3f, 0xf4, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0xf, 0xfd, + + /* U+004A "J" */ + 0xbf, 0xc0, 0x30, 0xc, 0x3, 0x0, 0xc0, 0x30, + 0x2a, 0xf8, + + /* U+004B "K" */ + 0xc0, 0xd3, 0x9, 0xc, 0xa0, 0x3f, 0x0, 0xca, + 0x3, 0xd, 0xc, 0xc, 0x30, 0x1c, + + /* U+004C "L" */ + 0xc0, 0xc, 0x0, 0xc0, 0xc, 0x0, 0xc0, 0xc, + 0x5, 0xc0, 0x9f, 0xfd, + + /* U+004D "M" */ + 0x70, 0x25, 0xe1, 0xd6, 0xde, 0x58, 0xd9, 0x61, + 0x25, 0x80, 0x96, 0x2, 0x58, 0x9, + + /* U+004E "N" */ + 0x30, 0x24, 0xe0, 0x93, 0xc2, 0x4d, 0xc9, 0x32, + 0xa4, 0xc3, 0x93, 0x7, 0x4c, 0x9, + + /* U+004F "O" */ + 0xf, 0xd0, 0xd0, 0xc3, 0x2, 0x58, 0x6, 0x60, + 0x19, 0xc0, 0x93, 0x43, 0x3, 0xf4, + + /* U+0050 "P" */ + 0xbf, 0x4c, 0xd, 0xc0, 0x9c, 0xc, 0xfe, 0x4c, + 0x0, 0xc0, 0xc, 0x0, + + /* U+0051 "Q" */ + 0xf, 0xd0, 0xd0, 0xc3, 0x2, 0x58, 0x6, 0x60, + 0x19, 0xc0, 0x93, 0x3, 0x7, 0xb8, 0x3, 0x40, + 0x7, 0xc0, + + /* U+0052 "R" */ + 0xbf, 0xc, 0x1c, 0xc0, 0xcc, 0x1c, 0xff, 0xc, + 0x30, 0xc1, 0xcc, 0xa, + + /* U+0053 "S" */ + 0xf, 0xf0, 0xc0, 0xc3, 0x40, 0x3, 0x80, 0x1, + 0xe0, 0x40, 0x93, 0x3, 0xb, 0xf4, + + /* U+0054 "T" */ + 0xbf, 0xfa, 0x4c, 0x20, 0x30, 0x0, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x3, 0xf4, + + /* U+0055 "U" */ + 0x60, 0x15, 0x80, 0x56, 0x1, 0x58, 0x5, 0x60, + 0x15, 0xc0, 0x93, 0x3, 0x7, 0xf4, + + /* U+0056 "V" */ + 0x90, 0xc, 0x70, 0x18, 0x30, 0x30, 0x24, 0x30, + 0xc, 0x50, 0xc, 0xc0, 0x6, 0x80, 0x3, 0x40, + + /* U+0057 "W" */ + 0x80, 0xc, 0x90, 0xc, 0x63, 0x18, 0x23, 0x54, + 0x36, 0xa4, 0x38, 0xe0, 0x3c, 0xb0, 0x28, 0x70, + + /* U+0058 "X" */ + 0x30, 0x28, 0xa1, 0xc0, 0xdc, 0x1, 0xd0, 0x7, + 0x80, 0x33, 0x42, 0x43, 0x18, 0xa, + + /* U+0059 "Y" */ + 0xa0, 0x1c, 0x30, 0x30, 0x1c, 0x60, 0xd, 0xc0, + 0x3, 0x40, 0x3, 0x0, 0x3, 0x0, 0x3, 0x0, + + /* U+005A "Z" */ + 0x7f, 0xf8, 0x0, 0xc0, 0xd, 0x0, 0xa0, 0x7, + 0x0, 0x30, 0x3, 0x40, 0x1f, 0xfd, + + /* U+005B "[" */ + 0x3f, 0xd2, 0x0, 0x20, 0x2, 0x0, 0x20, 0x2, + 0x0, 0x20, 0x2, 0x0, 0x20, 0x2, 0x0, 0x3f, + 0xd0, + + /* U+005C "\\" */ + 0x0, 0x0, 0xc0, 0x1, 0x80, 0x3, 0x0, 0x6, + 0x0, 0xc, 0x0, 0x14, 0x0, 0x30, 0x0, 0x90, + 0x0, 0xc0, 0x1, 0x0, + + /* U+005D "]" */ + 0x3f, 0xd0, 0x9, 0x0, 0x90, 0x9, 0x0, 0x90, + 0x9, 0x0, 0x90, 0x9, 0x0, 0x90, 0x9, 0x3f, + 0xd0, + + /* U+005E "^" */ + 0x3, 0x0, 0x1a, 0x0, 0xc9, 0x9, 0xc, 0x60, + 0x18, + + /* U+005F "_" */ + 0x7f, 0xf4, + + /* U+0060 "`" */ + 0x70, 0x80, + + /* U+0061 "a" */ + 0x1f, 0xc0, 0x1, 0x81, 0xae, 0xc, 0x8, 0x30, + 0xa0, 0x79, 0xd0, + + /* U+0062 "b" */ + 0xf0, 0x0, 0xc0, 0x3, 0xbd, 0xd, 0xc, 0x30, + 0x24, 0xc0, 0x93, 0x3, 0xb, 0xf4, + + /* U+0063 "c" */ + 0xb, 0xe0, 0xd0, 0x83, 0x0, 0xc, 0x0, 0x34, + 0x0, 0x2f, 0x80, + + /* U+0064 "d" */ + 0x0, 0xb0, 0x0, 0x30, 0xb, 0xf0, 0x30, 0x30, + 0x20, 0x30, 0x60, 0x30, 0x30, 0x30, 0x1e, 0xac, + + /* U+0065 "e" */ + 0xa, 0xd0, 0xc0, 0x83, 0xff, 0x4c, 0x0, 0x34, + 0x10, 0x3f, 0x80, + + /* U+0066 "f" */ + 0xf, 0xc1, 0x80, 0xbf, 0x82, 0x40, 0x24, 0x2, + 0x40, 0x24, 0xb, 0xf8, + + /* U+0067 "g" */ + 0xb, 0xf0, 0xd0, 0x93, 0x2, 0x4c, 0x9, 0x30, + 0x34, 0x7e, 0xd0, 0x3, 0x7, 0xf4, + + /* U+0068 "h" */ + 0xb0, 0x0, 0xc0, 0x3, 0xae, 0xd, 0xc, 0x30, + 0x24, 0xc0, 0x93, 0x2, 0x4c, 0x9, + + /* U+0069 "i" */ + 0xd, 0x0, 0x40, 0xbd, 0x0, 0x90, 0x9, 0x0, + 0x90, 0x9, 0xb, 0xfd, + + /* U+006A "j" */ + 0x1, 0xc0, 0x4, 0x2f, 0xc0, 0xc, 0x0, 0xc0, + 0xc, 0x0, 0xc0, 0xc, 0x0, 0xc2, 0xf4, + + /* U+006B "k" */ + 0xb0, 0x0, 0x80, 0x2, 0x6, 0x8, 0x60, 0x2f, + 0x0, 0x8a, 0x2, 0x9, 0x8, 0xe, + + /* U+006C "l" */ + 0x3c, 0x0, 0xc0, 0xc, 0x0, 0xc0, 0xc, 0x0, + 0xc0, 0xc, 0x0, 0xbc, + + /* U+006D "m" */ + 0xaa, 0xb6, 0x8c, 0x29, 0x30, 0xa4, 0xc2, 0x93, + 0xa, 0x4c, 0x20, + + /* U+006E "n" */ + 0xb7, 0xe0, 0xd0, 0xc3, 0x2, 0x4c, 0x9, 0x30, + 0x24, 0xc0, 0x90, + + /* U+006F "o" */ + 0xf, 0xd0, 0xc0, 0xc2, 0x2, 0x4c, 0x9, 0x30, + 0x30, 0x3f, 0x40, + + /* U+0070 "p" */ + 0xba, 0xe0, 0xd0, 0x93, 0x1, 0x8c, 0x6, 0x30, + 0x30, 0xff, 0x43, 0x0, 0xc, 0x0, + + /* U+0071 "q" */ + 0xb, 0xf0, 0xc0, 0xc3, 0x3, 0xc, 0xc, 0x30, + 0x30, 0x7e, 0xc0, 0x3, 0x0, 0xc, + + /* U+0072 "r" */ + 0x3d, 0xb4, 0x28, 0x60, 0x90, 0x2, 0x40, 0x9, + 0x0, 0xff, 0x80, + + /* U+0073 "s" */ + 0x3f, 0x89, 0x0, 0x79, 0x0, 0x6c, 0x40, 0xc7, + 0xf4, + + /* U+0074 "t" */ + 0x0, 0x0, 0x20, 0x7, 0xfe, 0x2, 0x0, 0x8, + 0x0, 0x20, 0x0, 0xc0, 0x1, 0xf8, + + /* U+0075 "u" */ + 0xb0, 0xb0, 0xc0, 0xc3, 0x3, 0xc, 0xc, 0x30, + 0x70, 0x7e, 0xa0, + + /* U+0076 "v" */ + 0x70, 0x24, 0xc0, 0xc1, 0x86, 0x3, 0x20, 0xa, + 0xc0, 0xd, 0x0, + + /* U+0077 "w" */ + 0xc0, 0xc, 0x92, 0xc, 0x63, 0x58, 0x39, 0xd4, + 0x3c, 0xb0, 0x28, 0x70, + + /* U+0078 "x" */ + 0x34, 0x30, 0x32, 0x40, 0x78, 0x1, 0xe0, 0x1c, + 0x90, 0xc0, 0xd0, + + /* U+0079 "y" */ + 0x30, 0x14, 0xc0, 0xc1, 0x83, 0x3, 0x18, 0x9, + 0x80, 0xf, 0x0, 0x14, 0x7, 0x80, + + /* U+007A "z" */ + 0xff, 0xc0, 0x28, 0x6, 0x1, 0x80, 0x60, 0xf, + 0xfc, + + /* U+007B "{" */ + 0x2, 0xf0, 0x18, 0x0, 0x60, 0x1, 0x80, 0xc, + 0x0, 0xd0, 0x0, 0xc0, 0x1, 0x80, 0x6, 0x0, + 0x1c, 0x0, 0x2f, 0x0, + + /* U+007C "|" */ + 0xcc, 0xcc, 0xcc, 0xcc, 0xc4, + + /* U+007D "}" */ + 0x3f, 0x0, 0x9, 0x0, 0x18, 0x0, 0x60, 0x0, + 0xc0, 0x1, 0xc0, 0xc, 0x0, 0x60, 0x1, 0x80, + 0x9, 0x3, 0xe0, 0x0, + + /* U+007E "~" */ + 0x1e, 0x10, 0x47, 0x80, + + /* U+00A0 " " */ + + /* U+00A1 "¡" */ + 0x30, 0x42, 0xc, 0x30, 0xc3, 0xc, + + /* U+00A2 "¢" */ + 0x0, 0x0, 0x50, 0x2f, 0xca, 0x50, 0xc5, 0xc, + 0x50, 0xa5, 0x2, 0xfc, 0x5, 0x0, 0x0, + + /* U+00A3 "£" */ + 0xb, 0xe0, 0xa0, 0x2, 0x80, 0xf, 0xe0, 0xd, + 0x0, 0x24, 0x0, 0xc0, 0xf, 0xfc, + + /* U+00A4 "¤" */ + 0x20, 0x14, 0xbf, 0x81, 0x86, 0x6, 0x18, 0x2b, + 0xb0, 0x40, 0x50, + + /* U+00A5 "¥" */ + 0x70, 0x18, 0xd0, 0xc0, 0xc9, 0x2, 0xb0, 0xb, + 0xd0, 0xc, 0x0, 0xb9, 0x0, 0xc0, + + /* U+00A6 "¦" */ + 0xcc, 0xcc, 0x0, 0xcc, 0xcc, + + /* U+00A7 "§" */ + 0x2f, 0x4c, 0x3, 0xd2, 0x46, 0xa1, 0x87, 0xc0, + 0x24, 0xfc, + + /* U+00A8 "¨" */ + 0x0, 0x1c, 0xa0, 0x0, + + /* U+00A9 "©" */ + 0xa, 0x80, 0x99, 0x85, 0xc0, 0x97, 0x2, 0x26, + 0x60, 0x2a, 0x0, + + /* U+00AA "ª" */ + 0x1a, 0x6, 0xd3, 0x24, 0xa9, + + /* U+00AB "«" */ + 0x0, 0x0, 0x24, 0x91, 0xc6, 0xc, 0x30, 0x34, + 0xc0, 0x30, 0xc0, 0x11, 0x0, + + /* U+00AC "¬" */ + 0xff, 0xc0, 0x8, 0x0, 0x40, + + /* U+00AD "­" */ + 0xfc, + + /* U+00AE "®" */ + 0xa, 0x80, 0x80, 0x85, 0x64, 0xa2, 0x92, 0x58, + 0x88, 0xc0, 0x80, 0xa8, 0x0, + + /* U+00AF "¯" */ + 0x2a, 0x40, + + /* U+00B0 "°" */ + 0x1a, 0xc, 0x83, 0x20, 0x68, + + /* U+00B1 "±" */ + 0xc, 0x0, 0xc0, 0xff, 0xc0, 0xc0, 0x4, 0xf, + 0xfc, + + /* U+00B2 "²" */ + 0x2e, 0x0, 0x90, 0x30, 0x60, 0xbf, 0x40, + + /* U+00B3 "³" */ + 0x2b, 0xc0, 0x20, 0x6, 0x80, 0x8, 0x2f, 0x80, + + /* U+00B4 "´" */ + 0x31, 0x40, + + /* U+00B5 "µ" */ + 0xc0, 0xcc, 0xc, 0xc0, 0xcc, 0xc, 0xc1, 0xcf, + 0xee, 0xc0, 0xc, 0x0, + + /* U+00B6 "¶" */ + 0x2c, 0xdf, 0x3b, 0xcd, 0xf3, 0x1c, 0xc3, 0x30, + 0xcc, 0x33, 0xc, 0xc1, 0x10, + + /* U+00B7 "·" */ + 0x10, 0xd0, + + /* U+00B8 "¸" */ + 0x20, 0x92, 0x0, + + /* U+00B9 "¹" */ + 0x1c, 0x16, 0x0, 0x80, 0x20, 0x6f, 0x80, + + /* U+00BA "º" */ + 0x1a, 0x8, 0x92, 0x14, 0xa8, + + /* U+00BB "»" */ + 0x0, 0x0, 0xc2, 0x2, 0x89, 0x2, 0x4d, 0xc, + 0x30, 0xd3, 0x41, 0x4, 0x0, + + /* U+00BC "¼" */ + 0x0, 0x0, 0x90, 0x81, 0x48, 0x5, 0x20, 0x16, + 0x30, 0x59, 0xc0, 0x5a, 0x2, 0x6d, 0x14, 0x20, + 0x0, 0x0, + + /* U+00BD "½" */ + 0x0, 0x0, 0x91, 0x46, 0x48, 0x5, 0x10, 0x16, + 0x64, 0x58, 0x20, 0x81, 0x42, 0x8, 0x10, 0xa4, + + /* U+00BE "¾" */ + 0x68, 0x20, 0x81, 0x42, 0x88, 0x2, 0x5c, 0x66, + 0x70, 0x16, 0x80, 0x9b, 0x41, 0x8, 0x0, 0x0, + + /* U+00BF "¿" */ + 0x2, 0x80, 0x0, 0x0, 0x14, 0x0, 0xc0, 0x18, + 0x0, 0xc0, 0x3, 0x41, 0x3, 0xf8, + + /* U+00C0 "À" */ + 0xa, 0x0, 0x0, 0x0, 0x3, 0x40, 0xa, 0x80, + 0xc, 0xc0, 0xc, 0x90, 0x24, 0x70, 0x3f, 0xf0, + 0x60, 0x24, 0x90, 0xc, + + /* U+00C1 "Á" */ + 0x2, 0x80, 0x0, 0x0, 0x3, 0x40, 0xa, 0x80, + 0xc, 0xc0, 0xc, 0x90, 0x24, 0x70, 0x3f, 0xf0, + 0x60, 0x24, 0x90, 0xc, + + /* U+00C2 "Â" */ + 0xa, 0x80, 0x0, 0x0, 0x3, 0x40, 0xa, 0x80, + 0xc, 0xc0, 0xc, 0x90, 0x24, 0x70, 0x3f, 0xf0, + 0x60, 0x24, 0x90, 0xc, + + /* U+00C3 "Ã" */ + 0xb, 0xd0, 0x0, 0x0, 0x3, 0x40, 0xa, 0x80, + 0xc, 0xc0, 0xc, 0x90, 0x24, 0x70, 0x3f, 0xf0, + 0x60, 0x24, 0x90, 0xc, + + /* U+00C4 "Ä" */ + 0x1c, 0xa0, 0x0, 0x0, 0x3, 0x40, 0xa, 0x80, + 0xc, 0xc0, 0xc, 0x90, 0x24, 0x70, 0x3f, 0xf0, + 0x60, 0x24, 0x90, 0xc, + + /* U+00C5 "Å" */ + 0x2, 0x40, 0x8, 0x80, 0x3, 0x0, 0x3, 0x40, + 0xa, 0xc0, 0xc, 0xc0, 0x18, 0x60, 0x3f, 0xf0, + 0x30, 0x24, 0x90, 0xc, + + /* U+00C6 "Æ" */ + 0x2, 0xf8, 0xe, 0x0, 0xa8, 0x3, 0x7e, 0x19, + 0x80, 0xbe, 0x3, 0x18, 0x24, 0x7e, + + /* U+00C7 "Ç" */ + 0xb, 0xf4, 0xa0, 0x93, 0x0, 0xc, 0x0, 0x30, + 0x0, 0xc0, 0x2, 0xc1, 0x82, 0xfd, 0x0, 0xc0, + 0x2, 0x0, + + /* U+00C8 "È" */ + 0x18, 0x0, 0x0, 0xbf, 0xc9, 0x0, 0x90, 0xb, + 0xfc, 0x90, 0x9, 0x0, 0x90, 0xb, 0xfc, + + /* U+00C9 "É" */ + 0x6, 0x0, 0x0, 0xbf, 0xc9, 0x0, 0x90, 0xb, + 0xfc, 0x90, 0x9, 0x0, 0x90, 0xb, 0xfc, + + /* U+00CA "Ê" */ + 0x1a, 0x0, 0x0, 0xbf, 0xc9, 0x0, 0x90, 0xb, + 0xfc, 0x90, 0x9, 0x0, 0x90, 0xb, 0xfc, + + /* U+00CB "Ë" */ + 0x31, 0x80, 0x0, 0xbf, 0xc9, 0x0, 0x90, 0xb, + 0xfc, 0x90, 0x9, 0x0, 0x90, 0xb, 0xfc, + + /* U+00CC "Ì" */ + 0x6, 0x0, 0x0, 0x3, 0xff, 0x40, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, + 0xff, 0xd0, + + /* U+00CD "Í" */ + 0x2, 0x80, 0x0, 0x3, 0xff, 0x40, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, + 0xff, 0xd0, + + /* U+00CE "Î" */ + 0xa, 0x80, 0x0, 0x3, 0xff, 0x40, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, + 0xff, 0xd0, + + /* U+00CF "Ï" */ + 0x1c, 0xa0, 0x0, 0x3, 0xff, 0x40, 0xc0, 0x3, + 0x0, 0xc, 0x0, 0x30, 0x0, 0xc0, 0x3, 0x0, + 0xff, 0xd0, + + /* U+00D0 "Ð" */ + 0x3f, 0xd0, 0xc0, 0xd3, 0x1, 0xee, 0x83, 0x30, + 0xc, 0xc0, 0x73, 0x3, 0x4f, 0xf4, + + /* U+00D1 "Ñ" */ + 0xb, 0xd0, 0x0, 0x3, 0x2, 0x4e, 0x9, 0x3c, + 0x24, 0xdc, 0x93, 0x2a, 0x4c, 0x39, 0x30, 0x74, + 0xc0, 0x90, + + /* U+00D2 "Ò" */ + 0x8, 0x0, 0x1c, 0x0, 0x0, 0x3, 0xf4, 0x34, + 0x30, 0xc0, 0x96, 0x1, 0x98, 0x6, 0x70, 0x24, + 0xd0, 0xc0, 0xfd, 0x0, + + /* U+00D3 "Ó" */ + 0x0, 0x50, 0x6, 0x0, 0x0, 0x3, 0xf4, 0x34, + 0x30, 0xc0, 0x96, 0x1, 0x98, 0x6, 0x70, 0x24, + 0xd0, 0xc0, 0xfd, 0x0, + + /* U+00D4 "Ô" */ + 0x1, 0x0, 0x37, 0x0, 0x0, 0x3, 0xf4, 0x34, + 0x30, 0xc0, 0x96, 0x1, 0x98, 0x6, 0x70, 0x24, + 0xd0, 0xc0, 0xfd, 0x0, + + /* U+00D5 "Õ" */ + 0xb, 0xd0, 0x0, 0x0, 0xfd, 0xd, 0xc, 0x30, + 0x25, 0x80, 0x66, 0x1, 0x9c, 0x9, 0x34, 0x30, + 0x3f, 0x40, + + /* U+00D6 "Ö" */ + 0x1c, 0x90, 0x0, 0x0, 0xfd, 0xd, 0xc, 0x30, + 0x25, 0x80, 0x66, 0x1, 0x9c, 0x9, 0x34, 0x30, + 0x3f, 0x40, + + /* U+00D7 "×" */ + 0x0, 0x18, 0x52, 0xe0, 0x78, 0x62, 0x40, 0x0, + + /* U+00D8 "Ø" */ + 0x0, 0x0, 0x1f, 0xe8, 0x30, 0x34, 0x90, 0xac, + 0xd1, 0x4c, 0xd6, 0xc, 0xac, 0x1c, 0x34, 0x34, + 0x6f, 0xd0, + + /* U+00D9 "Ù" */ + 0x4, 0x0, 0xc, 0x0, 0x0, 0x18, 0x5, 0x60, + 0x15, 0x80, 0x56, 0x1, 0x58, 0x5, 0x70, 0x24, + 0xc0, 0xc1, 0xfd, 0x0, + + /* U+00DA "Ú" */ + 0x0, 0x50, 0xa, 0x0, 0x0, 0x18, 0x5, 0x60, + 0x15, 0x80, 0x56, 0x1, 0x58, 0x5, 0x70, 0x24, + 0xc0, 0xc1, 0xfd, 0x0, + + /* U+00DB "Û" */ + 0x1, 0x0, 0x37, 0x0, 0x0, 0x18, 0x5, 0x60, + 0x15, 0x80, 0x56, 0x1, 0x58, 0x5, 0x70, 0x24, + 0xc0, 0xc1, 0xfd, 0x0, + + /* U+00DC "Ü" */ + 0x1c, 0xa0, 0x0, 0x6, 0x1, 0x58, 0x5, 0x60, + 0x15, 0x80, 0x56, 0x1, 0x5c, 0x9, 0x30, 0x30, + 0x7f, 0x40, + + /* U+00DD "Ý" */ + 0x1, 0x80, 0x0, 0x0, 0xa0, 0x1c, 0x30, 0x30, + 0x1c, 0x60, 0xd, 0xc0, 0x3, 0x40, 0x3, 0x0, + 0x3, 0x0, 0x3, 0x0, + + /* U+00DE "Þ" */ + 0xc0, 0xf, 0xf4, 0xc0, 0xdc, 0xa, 0xc0, 0xdf, + 0xe4, 0xc0, 0xc, 0x0, + + /* U+00DF "ß" */ + 0xf, 0xc0, 0xa1, 0x87, 0x49, 0x9, 0x90, 0x25, + 0xd0, 0x90, 0xa2, 0x41, 0x89, 0xa8, + + /* U+00E0 "à" */ + 0x7, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x18, 0x1a, + 0xe0, 0xc0, 0x83, 0xa, 0x7, 0x9d, + + /* U+00E1 "á" */ + 0x2, 0x40, 0x4, 0x1, 0xfc, 0x0, 0x18, 0x1a, + 0xe0, 0xc0, 0x83, 0xa, 0x7, 0x9d, + + /* U+00E2 "â" */ + 0x1, 0x0, 0x1a, 0x0, 0x44, 0x7, 0xf0, 0x0, + 0x60, 0x6b, 0x83, 0x2, 0xc, 0x28, 0x1e, 0x74, + + /* U+00E3 "ã" */ + 0xb, 0xc0, 0x0, 0x1, 0xfc, 0x0, 0x18, 0x1a, + 0xe0, 0xc0, 0x83, 0xa, 0x7, 0x9d, + + /* U+00E4 "ä" */ + 0x18, 0x90, 0x0, 0x1, 0xfc, 0x0, 0x18, 0x1a, + 0xe0, 0xc0, 0x83, 0xa, 0x7, 0x9d, + + /* U+00E5 "å" */ + 0x2, 0x40, 0x22, 0x0, 0x24, 0x7, 0xf0, 0x0, + 0x60, 0x6b, 0x83, 0x2, 0xc, 0x28, 0x1e, 0x74, + + /* U+00E6 "æ" */ + 0x2e, 0xf4, 0xc, 0x32, 0xff, 0xa4, 0xc0, 0x93, + 0x40, 0xe7, 0xd0, + + /* U+00E7 "ç" */ + 0xb, 0xe0, 0xd0, 0x83, 0x0, 0xc, 0x0, 0x34, + 0x0, 0x3f, 0x80, 0x24, 0x0, 0xa0, + + /* U+00E8 "è" */ + 0x3, 0x0, 0x0, 0x0, 0xad, 0xc, 0x8, 0x3f, + 0xf4, 0xc0, 0x3, 0x41, 0x3, 0xf8, + + /* U+00E9 "é" */ + 0x2, 0x80, 0x4, 0x0, 0xad, 0xc, 0x8, 0x3f, + 0xf4, 0xc0, 0x3, 0x41, 0x3, 0xf8, + + /* U+00EA "ê" */ + 0x1, 0x0, 0x1a, 0x0, 0x44, 0x2, 0xb4, 0x30, + 0x20, 0xff, 0xd3, 0x0, 0xd, 0x4, 0xf, 0xe0, + + /* U+00EB "ë" */ + 0xc, 0x60, 0x0, 0x0, 0xad, 0xc, 0x8, 0x3f, + 0xf4, 0xc0, 0x3, 0x41, 0x3, 0xf8, + + /* U+00EC "ì" */ + 0xc, 0x0, 0x0, 0x3f, 0x0, 0x30, 0x3, 0x0, + 0x30, 0x3, 0x3, 0xfe, + + /* U+00ED "í" */ + 0x9, 0x0, 0x0, 0xbd, 0x0, 0x90, 0x9, 0x0, + 0x90, 0x9, 0xb, 0xfd, + + /* U+00EE "î" */ + 0x4, 0x2, 0xa0, 0x11, 0xb, 0xd0, 0x9, 0x0, + 0x90, 0x9, 0x0, 0x90, 0xbf, 0xd0, + + /* U+00EF "ï" */ + 0x72, 0x40, 0x0, 0xbd, 0x0, 0x90, 0x9, 0x0, + 0x90, 0x9, 0xb, 0xfd, + + /* U+00F0 "ð" */ + 0x0, 0x0, 0xf, 0x0, 0x16, 0x3, 0xfc, 0x30, + 0x29, 0x80, 0x66, 0x1, 0x4c, 0xc, 0xf, 0xd0, + + /* U+00F1 "ñ" */ + 0xb, 0xc0, 0x0, 0xb, 0x7e, 0xd, 0xc, 0x30, + 0x24, 0xc0, 0x93, 0x2, 0x4c, 0x9, + + /* U+00F2 "ò" */ + 0xa, 0x0, 0x4, 0x0, 0xfd, 0xc, 0xc, 0x20, + 0x24, 0xc0, 0x93, 0x3, 0x3, 0xf4, + + /* U+00F3 "ó" */ + 0x1, 0x80, 0x4, 0x0, 0xfd, 0xc, 0xc, 0x20, + 0x24, 0xc0, 0x93, 0x3, 0x3, 0xf4, + + /* U+00F4 "ô" */ + 0x1, 0x0, 0x1a, 0x0, 0x44, 0x3, 0xf4, 0x30, + 0x30, 0x80, 0x93, 0x2, 0x4c, 0xc, 0xf, 0xd0, + + /* U+00F5 "õ" */ + 0xb, 0xc0, 0x0, 0x0, 0xfd, 0xc, 0xc, 0x20, + 0x24, 0xc0, 0x93, 0x3, 0x3, 0xf4, + + /* U+00F6 "ö" */ + 0x1c, 0x90, 0x0, 0x0, 0xfd, 0xc, 0xc, 0x20, + 0x24, 0xc0, 0x93, 0x3, 0x3, 0xf4, + + /* U+00F7 "÷" */ + 0x3, 0x40, 0x4, 0x0, 0x0, 0xf, 0xfd, 0x1, + 0x0, 0xd, 0x0, + + /* U+00F8 "ø" */ + 0x0, 0x0, 0x3f, 0x83, 0xb, 0x8, 0x99, 0x36, + 0x24, 0xf0, 0xc2, 0xfd, 0x0, 0x0, + + /* U+00F9 "ù" */ + 0x9, 0x0, 0x4, 0xb, 0xb, 0xc, 0xc, 0x30, + 0x30, 0xc0, 0xc3, 0x7, 0x7, 0xea, + + /* U+00FA "ú" */ + 0x3, 0x0, 0x0, 0xb, 0xb, 0xc, 0xc, 0x30, + 0x30, 0xc0, 0xc3, 0x7, 0x7, 0xea, + + /* U+00FB "û" */ + 0x1, 0x0, 0x1a, 0x0, 0x44, 0x2c, 0x2c, 0x30, + 0x30, 0xc0, 0xc3, 0x3, 0xc, 0x1c, 0x1f, 0xa8, + + /* U+00FC "ü" */ + 0x18, 0x90, 0x0, 0xb, 0xb, 0xc, 0xc, 0x30, + 0x30, 0xc0, 0xc3, 0x7, 0x7, 0xea, + + /* U+00FD "ý" */ + 0x0, 0xc0, 0x0, 0x3, 0x1, 0x4c, 0xc, 0x18, + 0x30, 0x31, 0x80, 0x98, 0x0, 0xf0, 0x1, 0x40, + 0x78, 0x0, + + /* U+00FE "þ" */ + 0xb0, 0x0, 0xc0, 0x3, 0x7e, 0xe, 0x9, 0x30, + 0x18, 0xc0, 0x63, 0x3, 0xf, 0xf4, 0x30, 0x0, + 0xc0, 0x0, + + /* U+00FF "ÿ" */ + 0xc, 0x60, 0x0, 0x3, 0x1, 0x4c, 0xc, 0x18, + 0x30, 0x31, 0x80, 0x98, 0x0, 0xf0, 0x1, 0x40, + 0x78, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 115, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 115, .box_w = 3, .box_h = 8, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 6, .adv_w = 115, .box_w = 5, .box_h = 4, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 11, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 24, .adv_w = 115, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 41, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 59, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 73, .adv_w = 115, .box_w = 2, .box_h = 4, .ofs_x = 3, .ofs_y = 4}, + {.bitmap_index = 75, .adv_w = 115, .box_w = 6, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 93, .adv_w = 115, .box_w = 6, .box_h = 12, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 111, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 122, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 135, .adv_w = 115, .box_w = 3, .box_h = 4, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 138, .adv_w = 115, .box_w = 5, .box_h = 1, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 140, .adv_w = 115, .box_w = 3, .box_h = 2, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 142, .adv_w = 115, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 159, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 173, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 185, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 199, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 211, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 225, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 237, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 253, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 267, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 281, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 297, .adv_w = 115, .box_w = 3, .box_h = 6, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 302, .adv_w = 115, .box_w = 3, .box_h = 8, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 308, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 322, .adv_w = 115, .box_w = 7, .box_h = 3, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 328, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 342, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 356, .adv_w = 115, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 374, .adv_w = 115, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 390, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 402, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 416, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 430, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 442, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 454, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 468, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 482, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 496, .adv_w = 115, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 506, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 520, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 532, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 546, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 560, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 574, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 586, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 604, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 616, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 630, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 644, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 658, .adv_w = 115, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 674, .adv_w = 115, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 690, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 704, .adv_w = 115, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 720, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 734, .adv_w = 115, .box_w = 6, .box_h = 11, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 751, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 771, .adv_w = 115, .box_w = 6, .box_h = 11, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 788, .adv_w = 115, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 797, .adv_w = 115, .box_w = 7, .box_h = 1, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 799, .adv_w = 115, .box_w = 3, .box_h = 2, .ofs_x = 2, .ofs_y = 7}, + {.bitmap_index = 801, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 812, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 826, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 837, .adv_w = 115, .box_w = 8, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 853, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 864, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 876, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 890, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 904, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 916, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 931, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 945, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 957, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 968, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 979, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 990, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1004, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1018, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1029, .adv_w = 115, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1038, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1052, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1063, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1074, .adv_w = 115, .box_w = 8, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1086, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1097, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1111, .adv_w = 115, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1120, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 1140, .adv_w = 115, .box_w = 2, .box_h = 10, .ofs_x = 3, .ofs_y = -2}, + {.bitmap_index = 1145, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 1165, .adv_w = 115, .box_w = 7, .box_h = 2, .ofs_x = 0, .ofs_y = 3}, + {.bitmap_index = 1169, .adv_w = 115, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1169, .adv_w = 115, .box_w = 3, .box_h = 8, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 1175, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1190, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1204, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 1215, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1229, .adv_w = 115, .box_w = 2, .box_h = 10, .ofs_x = 3, .ofs_y = -2}, + {.bitmap_index = 1234, .adv_w = 115, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1244, .adv_w = 115, .box_w = 5, .box_h = 3, .ofs_x = 1, .ofs_y = 6}, + {.bitmap_index = 1248, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1259, .adv_w = 115, .box_w = 5, .box_h = 4, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1264, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1277, .adv_w = 115, .box_w = 6, .box_h = 3, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 1282, .adv_w = 115, .box_w = 4, .box_h = 1, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 1283, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 1296, .adv_w = 115, .box_w = 5, .box_h = 1, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 1298, .adv_w = 115, .box_w = 5, .box_h = 4, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1303, .adv_w = 115, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 1312, .adv_w = 115, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1319, .adv_w = 115, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 5}, + {.bitmap_index = 1327, .adv_w = 115, .box_w = 3, .box_h = 2, .ofs_x = 2, .ofs_y = 7}, + {.bitmap_index = 1329, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1341, .adv_w = 115, .box_w = 5, .box_h = 10, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1354, .adv_w = 115, .box_w = 3, .box_h = 2, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 1356, .adv_w = 115, .box_w = 3, .box_h = 3, .ofs_x = 2, .ofs_y = -3}, + {.bitmap_index = 1359, .adv_w = 115, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1366, .adv_w = 115, .box_w = 5, .box_h = 4, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1371, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1384, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1402, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1418, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 1434, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1448, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1468, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1488, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1508, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1528, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1548, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1568, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1582, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 1600, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1615, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1630, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1645, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1660, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1678, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1696, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1714, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1732, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1746, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1764, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1784, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1804, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1824, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1842, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1860, .adv_w = 115, .box_w = 5, .box_h = 6, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 1868, .adv_w = 115, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1886, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1906, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1926, .adv_w = 115, .box_w = 7, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1946, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1964, .adv_w = 115, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1984, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1996, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2010, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2024, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2038, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2054, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2068, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2082, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2098, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2109, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2123, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2137, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2151, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2167, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2181, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2193, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2205, .adv_w = 115, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2219, .adv_w = 115, .box_w = 6, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2231, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2247, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2261, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2275, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2289, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2305, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2319, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2333, .adv_w = 115, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 2344, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2358, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2372, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2386, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2402, .adv_w = 115, .box_w = 7, .box_h = 8, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2416, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2434, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2452, .adv_w = 115, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + + + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 95, .glyph_id_start = 1, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + }, + { + .range_start = 160, .range_length = 96, .glyph_id_start = 96, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR == 8 +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +#endif + +#if LVGL_VERSION_MAJOR >= 8 +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 0, +#if LVGL_VERSION_MAJOR == 8 + .cache = &cache +#endif + +}; + + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t lv_font_ptmono_12 = { +#else +lv_font_t lv_font_ptmono_12 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 14, /*The maximum line height required by the font*/ + .base_line = 3, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = -1, + .underline_thickness = 1, +#endif + .static_bitmap = 0, + .dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9 + .fallback = NULL, +#endif + .user_data = NULL, +}; + + + +#endif /*#if LV_FONT_PTMONO_12*/ diff --git a/ExternalApps/RadioSet/main/Source/lv_font_unscii_8.c b/ExternalApps/RadioSet/main/Source/lv_font_unscii_8.c new file mode 100644 index 00000000..64bdc868 --- /dev/null +++ b/ExternalApps/RadioSet/main/Source/lv_font_unscii_8.c @@ -0,0 +1,466 @@ +/******************************************************************************* + * Size: 8 px + * Bpp: 1 + * Opts: --no-compress --no-prefilter --bpp 1 --size 8 --font unscii-8.ttf -r 0x20-0x7F --format lvgl -o lv_font_unscii_8.c --force-fast-kern-format + ******************************************************************************/ + +#include "lvgl.h" + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0xff, 0xcc, + + /* U+0022 "\"" */ + 0xcf, 0x3c, 0xc0, + + /* U+0023 "#" */ + 0x6c, 0xdb, 0xfb, 0x6f, 0xed, 0x9b, 0x0, + + /* U+0024 "$" */ + 0x31, 0xfc, 0x1e, 0xf, 0xe3, 0x0, + + /* U+0025 "%" */ + 0xc7, 0x98, 0x61, 0x86, 0x78, 0xc0, + + /* U+0026 "&" */ + 0x38, 0xd8, 0xe3, 0xbd, 0xd9, 0x9d, 0x80, + + /* U+0027 "'" */ + 0x6f, 0x0, + + /* U+0028 "(" */ + 0x36, 0xcc, 0xc6, 0x30, + + /* U+0029 ")" */ + 0xc6, 0x33, 0x36, 0xc0, + + /* U+002A "*" */ + 0x66, 0x3c, 0xff, 0x3c, 0x66, + + /* U+002B "+" */ + 0x30, 0xcf, 0xcc, 0x30, + + /* U+002C "," */ + 0x6f, 0x0, + + /* U+002D "-" */ + 0xfc, + + /* U+002E "." */ + 0xf0, + + /* U+002F "/" */ + 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, + + /* U+0030 "0" */ + 0x7b, 0x3d, 0xfb, 0xcf, 0x37, 0x80, + + /* U+0031 "1" */ + 0x31, 0xc3, 0xc, 0x30, 0xcf, 0xc0, + + /* U+0032 "2" */ + 0x7b, 0x31, 0x8c, 0x63, 0xf, 0xc0, + + /* U+0033 "3" */ + 0x7b, 0x30, 0xce, 0xf, 0x37, 0x80, + + /* U+0034 "4" */ + 0x1c, 0x79, 0xb6, 0x6f, 0xe1, 0x83, 0x0, + + /* U+0035 "5" */ + 0xff, 0xf, 0x83, 0xf, 0x37, 0x80, + + /* U+0036 "6" */ + 0x39, 0x8c, 0x3e, 0xcf, 0x37, 0x80, + + /* U+0037 "7" */ + 0xfc, 0x30, 0xc6, 0x30, 0xc3, 0x0, + + /* U+0038 "8" */ + 0x7b, 0x3c, 0xde, 0xcf, 0x37, 0x80, + + /* U+0039 "9" */ + 0x7b, 0x3c, 0xdf, 0xc, 0x67, 0x0, + + /* U+003A ":" */ + 0xf0, 0xf0, + + /* U+003B ";" */ + 0x6c, 0x6, 0xf0, + + /* U+003C "<" */ + 0x19, 0x99, 0x86, 0x18, 0x60, + + /* U+003D "=" */ + 0xfc, 0xf, 0xc0, + + /* U+003E ">" */ + 0xc3, 0xc, 0x33, 0x33, 0x0, + + /* U+003F "?" */ + 0x7b, 0x30, 0xc6, 0x30, 0x3, 0x0, + + /* U+0040 "@" */ + 0x7d, 0x8f, 0x7e, 0xfd, 0xf8, 0x1f, 0x0, + + /* U+0041 "A" */ + 0x31, 0xec, 0xf3, 0xff, 0x3c, 0xc0, + + /* U+0042 "B" */ + 0xfb, 0x3c, 0xfe, 0xcf, 0x3f, 0x80, + + /* U+0043 "C" */ + 0x7b, 0x3c, 0x30, 0xc3, 0x37, 0x80, + + /* U+0044 "D" */ + 0xf3, 0x6c, 0xf3, 0xcf, 0x6f, 0x0, + + /* U+0045 "E" */ + 0xff, 0xc, 0x3e, 0xc3, 0xf, 0xc0, + + /* U+0046 "F" */ + 0xff, 0xc, 0x3e, 0xc3, 0xc, 0x0, + + /* U+0047 "G" */ + 0x7b, 0x3c, 0x37, 0xcf, 0x37, 0xc0, + + /* U+0048 "H" */ + 0xcf, 0x3c, 0xff, 0xcf, 0x3c, 0xc0, + + /* U+0049 "I" */ + 0xfc, 0xc3, 0xc, 0x30, 0xcf, 0xc0, + + /* U+004A "J" */ + 0xc, 0x30, 0xc3, 0xf, 0x37, 0x80, + + /* U+004B "K" */ + 0xc7, 0x9b, 0x67, 0x8d, 0x99, 0xb1, 0x80, + + /* U+004C "L" */ + 0xc3, 0xc, 0x30, 0xc3, 0xf, 0xc0, + + /* U+004D "M" */ + 0xc7, 0xdf, 0xfe, 0xbc, 0x78, 0xf1, 0x80, + + /* U+004E "N" */ + 0xc7, 0xcf, 0xde, 0xfc, 0xf8, 0xf1, 0x80, + + /* U+004F "O" */ + 0x7b, 0x3c, 0xf3, 0xcf, 0x37, 0x80, + + /* U+0050 "P" */ + 0xfb, 0x3c, 0xfe, 0xc3, 0xc, 0x0, + + /* U+0051 "Q" */ + 0x7b, 0x3c, 0xf3, 0xcf, 0x66, 0xc0, + + /* U+0052 "R" */ + 0xfb, 0x3c, 0xfe, 0xdb, 0x3c, 0xc0, + + /* U+0053 "S" */ + 0x7b, 0x3c, 0x1e, 0xf, 0x37, 0x80, + + /* U+0054 "T" */ + 0xfc, 0xc3, 0xc, 0x30, 0xc3, 0x0, + + /* U+0055 "U" */ + 0xcf, 0x3c, 0xf3, 0xcf, 0x37, 0x80, + + /* U+0056 "V" */ + 0xcf, 0x3c, 0xf3, 0xcd, 0xe3, 0x0, + + /* U+0057 "W" */ + 0xc7, 0x8f, 0x1e, 0xbf, 0xfd, 0xf1, 0x80, + + /* U+0058 "X" */ + 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, + + /* U+0059 "Y" */ + 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, + + /* U+005A "Z" */ + 0xfc, 0x31, 0x8c, 0x63, 0xf, 0xc0, + + /* U+005B "[" */ + 0xfc, 0xcc, 0xcc, 0xf0, + + /* U+005C "\\" */ + 0xc0, 0x60, 0x30, 0x18, 0xc, 0x6, 0x3, + + /* U+005D "]" */ + 0xf3, 0x33, 0x33, 0xf0, + + /* U+005E "^" */ + 0x10, 0x71, 0xb6, 0x30, + + /* U+005F "_" */ + 0xff, + + /* U+0060 "`" */ + 0xc6, 0x30, + + /* U+0061 "a" */ + 0x78, 0x37, 0xf3, 0x7c, + + /* U+0062 "b" */ + 0xc3, 0xf, 0xb3, 0xcf, 0x3f, 0x80, + + /* U+0063 "c" */ + 0x7e, 0x31, 0x87, 0x80, + + /* U+0064 "d" */ + 0xc, 0x37, 0xf3, 0xcf, 0x37, 0xc0, + + /* U+0065 "e" */ + 0x7b, 0x3f, 0xf0, 0x78, + + /* U+0066 "f" */ + 0x3b, 0x3e, 0xc6, 0x31, 0x80, + + /* U+0067 "g" */ + 0x7f, 0x3c, 0xdf, 0xf, 0xe0, + + /* U+0068 "h" */ + 0xc3, 0xf, 0xb3, 0xcf, 0x3c, 0xc0, + + /* U+0069 "i" */ + 0x60, 0x38, 0xc6, 0x31, 0xe0, + + /* U+006A "j" */ + 0x18, 0x6, 0x31, 0x8c, 0x7e, + + /* U+006B "k" */ + 0xc3, 0xc, 0xf6, 0xf3, 0x6c, 0xc0, + + /* U+006C "l" */ + 0xe3, 0x18, 0xc6, 0x31, 0xe0, + + /* U+006D "m" */ + 0xcd, 0xff, 0x5e, 0xbc, 0x60, + + /* U+006E "n" */ + 0xfb, 0x3c, 0xf3, 0xcc, + + /* U+006F "o" */ + 0x7b, 0x3c, 0xf3, 0x78, + + /* U+0070 "p" */ + 0xfb, 0x3c, 0xfe, 0xc3, 0x0, + + /* U+0071 "q" */ + 0x7f, 0x3c, 0xdf, 0xc, 0x30, + + /* U+0072 "r" */ + 0xfb, 0x3c, 0x30, 0xc0, + + /* U+0073 "s" */ + 0x7f, 0x7, 0x83, 0xf8, + + /* U+0074 "t" */ + 0x61, 0x8f, 0xd8, 0x61, 0x83, 0xc0, + + /* U+0075 "u" */ + 0xcf, 0x3c, 0xf3, 0x7c, + + /* U+0076 "v" */ + 0xcf, 0x3c, 0xde, 0x30, + + /* U+0077 "w" */ + 0xc7, 0x8f, 0x5b, 0xe6, 0xc0, + + /* U+0078 "x" */ + 0xc6, 0xd8, 0xe3, 0x6c, 0x60, + + /* U+0079 "y" */ + 0xcf, 0x3c, 0xdf, 0xd, 0xe0, + + /* U+007A "z" */ + 0xfc, 0x63, 0x18, 0xfc, + + /* U+007B "{" */ + 0x1c, 0xc3, 0x38, 0x30, 0xc1, 0xc0, + + /* U+007C "|" */ + 0xff, 0xfc, + + /* U+007D "}" */ + 0xe0, 0xc3, 0x7, 0x30, 0xce, 0x0, + + /* U+007E "~" */ + 0x77, 0xb8, + + /* U+007F "" */ + 0xc1, 0x42, 0xbd, 0x2c, 0x40, 0x81, 0x0 +}; + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 128, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 8}, + {.bitmap_index = 1, .adv_w = 128, .box_w = 2, .box_h = 7, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 3, .adv_w = 128, .box_w = 6, .box_h = 3, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 6, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 13, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 19, .adv_w = 128, .box_w = 7, .box_h = 6, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 25, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 32, .adv_w = 128, .box_w = 3, .box_h = 3, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 34, .adv_w = 128, .box_w = 4, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 38, .adv_w = 128, .box_w = 4, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 42, .adv_w = 128, .box_w = 8, .box_h = 5, .ofs_x = 0, .ofs_y = 2}, + {.bitmap_index = 47, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 51, .adv_w = 128, .box_w = 3, .box_h = 3, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 53, .adv_w = 128, .box_w = 6, .box_h = 1, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 54, .adv_w = 128, .box_w = 2, .box_h = 2, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 55, .adv_w = 128, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 62, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 68, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 74, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 80, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 86, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 93, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 99, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 105, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 111, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 117, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 123, .adv_w = 128, .box_w = 2, .box_h = 6, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 125, .adv_w = 128, .box_w = 3, .box_h = 7, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 128, .adv_w = 128, .box_w = 5, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 133, .adv_w = 128, .box_w = 6, .box_h = 3, .ofs_x = 1, .ofs_y = 3}, + {.bitmap_index = 136, .adv_w = 128, .box_w = 5, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 141, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 147, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 154, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 160, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 166, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 172, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 178, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 184, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 190, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 196, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 202, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 208, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 214, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 221, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 227, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 234, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 241, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 247, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 253, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 259, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 265, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 271, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 277, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 283, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 289, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 296, .adv_w = 128, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 303, .adv_w = 128, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 310, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 316, .adv_w = 128, .box_w = 4, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 320, .adv_w = 128, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 327, .adv_w = 128, .box_w = 4, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 331, .adv_w = 128, .box_w = 7, .box_h = 4, .ofs_x = 0, .ofs_y = 4}, + {.bitmap_index = 335, .adv_w = 128, .box_w = 8, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 336, .adv_w = 128, .box_w = 4, .box_h = 3, .ofs_x = 3, .ofs_y = 5}, + {.bitmap_index = 338, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 342, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 348, .adv_w = 128, .box_w = 5, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 352, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 358, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 362, .adv_w = 128, .box_w = 5, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 367, .adv_w = 128, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 372, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 378, .adv_w = 128, .box_w = 5, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 383, .adv_w = 128, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 388, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 394, .adv_w = 128, .box_w = 5, .box_h = 7, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 399, .adv_w = 128, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 404, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 408, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 412, .adv_w = 128, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 417, .adv_w = 128, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 422, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 426, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 430, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 436, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 440, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 444, .adv_w = 128, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 449, .adv_w = 128, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 454, .adv_w = 128, .box_w = 6, .box_h = 6, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 459, .adv_w = 128, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 463, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 469, .adv_w = 128, .box_w = 2, .box_h = 7, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 471, .adv_w = 128, .box_w = 6, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 477, .adv_w = 128, .box_w = 7, .box_h = 2, .ofs_x = 0, .ofs_y = 6}, + {.bitmap_index = 479, .adv_w = 128, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = { + { + .range_start = 32, .range_length = 96, .glyph_id_start = 1, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LVGL_VERSION_MAJOR >= 8 +/*Store all the custom data of the font*/ + +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 1, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, + +}; + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LVGL_VERSION_MAJOR >= 8 +const lv_font_t lv_font_unscii_8 = { +#else +lv_font_t lv_font_unscii_8 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 9, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8 + .underline_position = 0, + .underline_thickness = 0, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; +