From 324e4d969e955f09084fd5308bb3081a4b7243bf Mon Sep 17 00:00:00 2001 From: KemoNine Date: Tue, 8 Sep 2020 22:49:16 -0400 Subject: [PATCH] Add basic config ui mock up for rpi, UI now flip/flops between config screen and output screen whenever a key is pressed --- serial_debugger.ino | 13 ++ serial_debugger.prj | Bin 2487 -> 6687 bytes serial_debugger_GSLC.h | 91 +++++++++++- src/guislice/NotoMono12pt7b.h | 265 ++++++++++++++++++++++++++++++++++ 4 files changed, 365 insertions(+), 4 deletions(-) create mode 100644 src/guislice/NotoMono12pt7b.h diff --git a/serial_debugger.ino b/serial_debugger.ino index f2d6703..8eb47e4 100644 --- a/serial_debugger.ino +++ b/serial_debugger.ino @@ -84,6 +84,10 @@ void processRingBuffer(); // Save some element references for direct access // gslc_tsElemRef* m_pElemBatteryLevel= NULL; +gslc_tsElemRef* m_pElemRd1152 = NULL; +gslc_tsElemRef* m_pElemRd96 = NULL; +gslc_tsElemRef* m_pElemRdUART0 = NULL; +gslc_tsElemRef* m_pElemRdUART5 = NULL; gslc_tsElemRef* m_pElemStatusText = NULL; gslc_tsElemRef* m_pElemText = NULL; // @@ -193,6 +197,15 @@ void handlerKeyboard() { // Add key code to display ring buffer *if* it's pressed ; no need for other events presently if (key.state == BBQ10Keyboard::StatePress) { + + + if (gslc_GetPageCur(&m_gui) == E_PG_MAIN) { + gslc_SetPageCur(&m_gui,E_CONF_RPI); + } + else { + gslc_SetPageCur(&m_gui,E_PG_MAIN); + } + char output[28]; snprintf(output, 28, "key: '%c' (dec %d, hex %02x)", key.key, key.key, key.key); textChanged = true; diff --git a/serial_debugger.prj b/serial_debugger.prj index 3a4a042a61256b523986c7312f5fc7350ffc97b4..1aab61fbc0113f5dbea35de411618ac7957b93a0 100644 GIT binary patch literal 6687 zcmd5=&9B>7756LC&I}0D8H8A%N-Vmo+SvK%yl7O3>#rnk?8J_Jlemj2pU!)6^3ue4 zaUK!^A;E$L8`!a60lVQ(VS~gTu|X_A?2r)BaPB?ViPL#g4Fik5Mb(_#dwkCC{Lb$j z=aaulcN6KJQhFj6EAXH8AeuZZ?(UvRlJsFBy{onC$Fi&>();c8)#YTAJcR!XYcY{N zFkZI3mSt%E%U0WOw44rnTQi);3cK^}U_IVmEUyyjy=J51gYkU3mcIF-c{#WqJc$R( z=t(D8Uo4}KfAWc}fvfBl<({^+OY zccin1boY7?Zzt(mx_><9Y!}1H`X`_K^1;`B@u!~&&u8B|xGim7Nk5Rj4o~|B*tAyj zaY>QkQQzP$2D{{mb`@W(&wl&uAK(9ZX?sVyYfAT~gLpL?WDjggcSf5;`VLR109Ohl zcBQ~Cc2fQ~BSf%a*H|ssvmU^A__2EWv6y|t!hLkW z1*#y5d48|~TZD~!d6<0!=$IP@=lEbNqU}@o+r0zde1#q1|1dX#QHgYa-I9sg8ySTE zJ$sfBk?{@~R(olahLcF|Fm@*Q{(W-1)$<+1&W$Mn&fSOg?qoL{7 z^XHtKQAE7K!YuYXl}*1}SvKeKc3h*&u-E96UupAdxmItH1|h*5QVVCpI*ljw1~F=@ z*?3`Whc$B>?klZvSGfp#&ueQd7;6NqQyK9M)(8xXBRzeiEedctJPZ z|J>{}ePd_Woju_4stwxDWH+7zWwo~WvQ<1OT^zB`X#X~A09BC}r zJ&J0vS+?EF8%KdyOb_x7A(l~XHtV>DxNJhK%MoBvlT-9jWIn2w+{Z-~eZ|hM-*w`a zvLRYG+=oT0*zcxF2z()NQtR%(_Y&*MV^>qim!n)D?Q=4!tGir{_BQ6>=ku_aShpIh z8_^3t7$Q>W%EX!?yE>r-8!Y7o1-hISs=zMBN6argdCaiGaBOF!2U%nSZxjKdUC9N6kwe|DuZO4gdZb6?W4)##p8+ps`w@v6td=T|xq*Hz z5C_bou>>w=+ULLK`@n_#nKAl`o;_m|6z1|*jh9->F<*M^Mm87k*Yk5xV?AJcFmt>T z%mtOj#{1$h>++g#GBX$sJ&#sR-=I#9ou7x6r&K$E5l^WR2ViG4$mZ(Js04GZdotIo z;nIu4BHbI?=h3P?QD--i24l-2gbE#gv4K0P(AAR| zW#k>_LKcUTn=fknWL^u5adt-e{%$cnKhY4TMU|Wu0mtfYsn2Sb>4y&3sZOWggBbzw zj+XN%sLdm{Slxz;c$wqw4)ptfnVnhBplkGe$vGdHvC3g$?Zic0Xy7DHv(Kx>uyA7fSeWEVdTvV_6x!uPn zMC+HB?j|<+s4^edee`jSzAS%KGcQ9w8G@cIMhln$xJy7D*3gSL%(vhV*O!Y)op&86 z?DPWRJ<0k8^58LB*tftU_IK3T{28%(WM|ms^%*}N?>`H*m>l;@>}QT=%zDk8+jvF? z4#3_hdPwn1&_1EBIFB^cdMn3S@*HibsanFHspqv%#k)Grn>OzOzTIbpWlT%O;yjR2AM(A7N_k=H;7i!3D zb+NO+CJTRhp-{kmh~Lu$mZ*yhw4uI<{Kbx;=5&kKS_MpNe70z==zpg3>0w`|2JKTF z{j2D|!Tpo`YymytyXK0=D(Yop94WWGhA+1@(O-wvH7KcZ*ma}kUWIoEI_G!ah%Jx* z8qZ-}>saeC+5~P`moD0>7$2U)XJ}Y|3(p}=8rIJOz1I|L7S`fxcS&KFuWpY##eQZy z)#>S({H~xMcZCk@LYy~Z4w`wMUfsgoAmc7_guic?XhUpu#9IfQ(HF{eWYA66RXU-` zcRB@dZMd@4?rQ9P;HW>EX=&6b^Y;fhGw>A0c9q%Gm1m|aCz=oc4-_winKXqtPyKnO zdAr2EA(?LS4V$!qiaS1=^SW62+!|=&oh#FZ!))gDyp_8wk6>;EK7X%aGj;|19CreN zCx4bskK9I#7`L5ZVa^BLsy6O<@~~K*+gN9&CGDe@SVm9m!Q2-)+2zDO7IW^jkh5sZ z@Wk!x%i>>sQGupW`*-iyc>%51MG7j`SK<3!{-R? zc)RfXqJ4YZ0h;-~ZTZ*}Cm23QzG!(|GaL4a=vC~)7TQ{%3C$s`?!0aq52-cJe7Ezw z({V<(@lHW#`0HB8Yv^LV1m0LzG23zW82CPV`|RO;&veRyeCt81f+nj5=jIp0O#Fty ze6;eI^=^#R@$uQ%yJ{W#JU`R52yMtcfe~^q(>*qKy1BWdAN>la2wfbqtJ~=Q9bhbCq*2Kmh>D*axow diff --git a/serial_debugger_GSLC.h b/serial_debugger_GSLC.h index 2a290d6..0675780 100644 --- a/serial_debugger_GSLC.h +++ b/serial_debugger_GSLC.h @@ -21,6 +21,7 @@ // Include any extended elements // // Include extended elements +#include "src/guislice/XCheckbox.h" #include "src/guislice/XProgress.h" #include "src/guislice/XTextbox.h" // @@ -34,6 +35,7 @@ #error Project tab->Target Platform should be tft_espi #endif #include +#include "src/guislice/NotoMono12pt7b.h" #include "src/guislice/NotoMono8pt7b.h" // @@ -47,10 +49,14 @@ // Enumerations for pages, elements, fonts, images // ------------------------------------------------ // -enum {E_PG_MAIN}; -enum {E_ELEM_BATT_LEVEL,E_ELEM_STATUS,E_ELEM_TEXT}; +enum {E_PG_MAIN,E_CONF_RPI}; +enum {E_ELEM_BATT_LEVEL,E_ELEM_CONFIG_RPI_TITLE,E_ELEM_RD96 + ,E_ELEM_RD_1152,E_ELEM_RD_UART0,E_ELEM_RD_UART5,E_ELEM_STATUS + ,E_ELEM_TEXT,E_ELEM_TEXT3,E_ELEM_TEXT4,E_ELEM_TX96,E_ELEM_TX_1152 + ,E_ELEM_TX_UART1,E_ELEM_TX_UART5}; +enum {E_GRP_SPD,E_GRP_UART}; // Must use separate enum for fonts with MAX_FONT at end to use gslc_FontSet. -enum {E_AO_NOTOMONO8PT7B,MAX_FONT}; +enum {E_AO_NOTOMONO12PT7B,E_AO_NOTOMONO8PT7B,MAX_FONT}; // // ------------------------------------------------ @@ -61,10 +67,13 @@ enum {E_AO_NOTOMONO8PT7B,MAX_FONT}; // Define the maximum number of elements and pages // ------------------------------------------------ // -#define MAX_PAGE 1 +#define MAX_PAGE 2 #define MAX_ELEM_PG_MAIN 3 // # Elems total on page #define MAX_ELEM_PG_MAIN_RAM MAX_ELEM_PG_MAIN // # Elems in RAM + +#define MAX_ELEM_CONF_RPI 11 // # Elems total on page +#define MAX_ELEM_CONF_RPI_RAM MAX_ELEM_CONF_RPI // # Elems in RAM // // ------------------------------------------------ @@ -78,9 +87,15 @@ gslc_tsPage m_asPage[MAX_PAGE]; // gslc_tsElem m_asPage1Elem[MAX_ELEM_PG_MAIN_RAM]; gslc_tsElemRef m_asPage1ElemRef[MAX_ELEM_PG_MAIN]; +gslc_tsElem m_asPage2Elem[MAX_ELEM_CONF_RPI_RAM]; +gslc_tsElemRef m_asPage2ElemRef[MAX_ELEM_CONF_RPI]; gslc_tsXProgress m_sXBarGauge1; gslc_tsXTextbox m_sTextbox1; char m_acTextboxBuf1[952]; // NRows=17 NCols=56 +gslc_tsXCheckbox m_asXRadio1; +gslc_tsXCheckbox m_asXRadio2; +gslc_tsXCheckbox m_asXRadio3; +gslc_tsXCheckbox m_asXRadio4; #define MAX_STR 100 @@ -93,6 +108,10 @@ char m_acTextboxBuf1[952]; // NRows=17 NCols=56 // Element References for direct access // extern gslc_tsElemRef* m_pElemBatteryLevel; +extern gslc_tsElemRef* m_pElemRd1152; +extern gslc_tsElemRef* m_pElemRd96; +extern gslc_tsElemRef* m_pElemRdUART0; +extern gslc_tsElemRef* m_pElemRdUART5; extern gslc_tsElemRef* m_pElemStatusText; extern gslc_tsElemRef* m_pElemText; extern gslc_tsElemRef* m_pTextSlider; @@ -126,11 +145,13 @@ void InitGUIslice_gen() // Load Fonts // ------------------------------------------------ // + if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO12PT7B,GSLC_FONTREF_PTR,&NotoMono12pt7b,1)) { return; } if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO8PT7B,GSLC_FONTREF_PTR,&NotoMono8pt7b,1)) { return; } // // gslc_PageAdd(&m_gui,E_PG_MAIN,m_asPage1Elem,MAX_ELEM_PG_MAIN_RAM,m_asPage1ElemRef,MAX_ELEM_PG_MAIN); + gslc_PageAdd(&m_gui,E_CONF_RPI,m_asPage2Elem,MAX_ELEM_CONF_RPI_RAM,m_asPage2ElemRef,MAX_ELEM_CONF_RPI); // NOTE: The current page defaults to the first page added. Here we explicitly // ensure that the main page is the correct page no matter the add order. @@ -162,6 +183,68 @@ void InitGUIslice_gen() gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3); gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_GRAY,GSLC_COL_BLACK,GSLC_COL_BLACK); m_pElemText = pElemRef; + + // ----------------------------------- + // PAGE: E_CONF_RPI + + + // Create E_ELEM_CONFIG_RPI_TITLE text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_CONFIG_RPI_TITLE,E_CONF_RPI,(gslc_tsRect){2,2,316,32}, + (char*)"Raspberry Pi Config",0,E_AO_NOTOMONO12PT7B); + gslc_ElemSetTxtAlign(&m_gui,pElemRef,GSLC_ALIGN_MID_MID); + gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GREEN); + + // Create E_ELEM_TEXT3 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TEXT3,E_CONF_RPI,(gslc_tsRect){2,40,40,21}, + (char*)"UART",0,E_AO_NOTOMONO8PT7B); + + // Create E_ELEM_TEXT4 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TEXT4,E_CONF_RPI,(gslc_tsRect){2,120,120,21}, + (char*)"Speed / Baud",0,E_AO_NOTOMONO8PT7B); + + // Create radio button E_ELEM_RD_UART5 + pElemRef = gslc_ElemXCheckboxCreate(&m_gui,E_ELEM_RD_UART5,E_CONF_RPI,&m_asXRadio1, + (gslc_tsRect){160,80,20,20},true,GSLCX_CHECKBOX_STYLE_ROUND,GSLC_COL_YELLOW,false); + gslc_ElemSetGroup(&m_gui,pElemRef,E_GRP_UART); + m_pElemRdUART5 = pElemRef; + + // Create radio button E_ELEM_RD_UART0 + pElemRef = gslc_ElemXCheckboxCreate(&m_gui,E_ELEM_RD_UART0,E_CONF_RPI,&m_asXRadio2, + (gslc_tsRect){10,80,20,20},true,GSLCX_CHECKBOX_STYLE_ROUND,GSLC_COL_YELLOW,true); + gslc_ElemSetGroup(&m_gui,pElemRef,E_GRP_UART); + m_pElemRdUART0 = pElemRef; + + // Create E_ELEM_TX_UART1 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TX_UART1,E_CONF_RPI,(gslc_tsRect){40,80,50,21}, + (char*)"UART0",0,E_AO_NOTOMONO8PT7B); + gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3); + + // Create E_ELEM_TX_UART5 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TX_UART5,E_CONF_RPI,(gslc_tsRect){190,80,50,21}, + (char*)"UART5",0,E_AO_NOTOMONO8PT7B); + gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3); + + // Create radio button E_ELEM_RD96 + pElemRef = gslc_ElemXCheckboxCreate(&m_gui,E_ELEM_RD96,E_CONF_RPI,&m_asXRadio3, + (gslc_tsRect){160,160,20,20},true,GSLCX_CHECKBOX_STYLE_ROUND,GSLC_COL_YELLOW,false); + gslc_ElemSetGroup(&m_gui,pElemRef,E_GRP_SPD); + m_pElemRd96 = pElemRef; + + // Create radio button E_ELEM_RD_1152 + pElemRef = gslc_ElemXCheckboxCreate(&m_gui,E_ELEM_RD_1152,E_CONF_RPI,&m_asXRadio4, + (gslc_tsRect){10,160,20,20},true,GSLCX_CHECKBOX_STYLE_ROUND,GSLC_COL_YELLOW,true); + gslc_ElemSetGroup(&m_gui,pElemRef,E_GRP_SPD); + m_pElemRd1152 = pElemRef; + + // Create E_ELEM_TX_1152 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TX_1152,E_CONF_RPI,(gslc_tsRect){40,160,60,21}, + (char*)"115200",0,E_AO_NOTOMONO8PT7B); + gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3); + + // Create E_ELEM_TX96 text label + pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TX96,E_CONF_RPI,(gslc_tsRect){190,160,40,21}, + (char*)"9600",0,E_AO_NOTOMONO8PT7B); + gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3); // // diff --git a/src/guislice/NotoMono12pt7b.h b/src/guislice/NotoMono12pt7b.h new file mode 100644 index 0000000..4374483 --- /dev/null +++ b/src/guislice/NotoMono12pt7b.h @@ -0,0 +1,265 @@ +const uint8_t NotoMono12pt7bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFF, 0xD2, 0x49, 0x20, 0x3F, 0xE0, 0xE7, 0xE7, 0xE7, 0xE7, + 0xC6, 0xC6, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x10, 0xC0, 0x84, 0x3F, 0xFD, + 0xFF, 0xE3, 0x18, 0x18, 0xC0, 0xC6, 0x3F, 0xFD, 0xFF, 0xE1, 0x08, 0x18, + 0xC0, 0xC6, 0x06, 0x30, 0x31, 0x80, 0x0C, 0x03, 0x03, 0xF9, 0xFE, 0xEC, + 0x33, 0x0C, 0xC3, 0xB0, 0x7C, 0x0F, 0xC0, 0xF8, 0x37, 0x0C, 0xC3, 0x38, + 0xDF, 0xFE, 0x7E, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x33, 0x63, 0x31, 0x99, + 0x8D, 0x8C, 0x6C, 0x63, 0xC1, 0xB6, 0x07, 0x60, 0x02, 0x00, 0x37, 0x03, + 0x6C, 0x1E, 0x31, 0xB1, 0x8D, 0x8C, 0xCC, 0x66, 0x36, 0x60, 0xE0, 0x1E, + 0x01, 0xF8, 0x18, 0x60, 0xC3, 0x06, 0x18, 0x39, 0x80, 0xDC, 0x03, 0xC0, + 0x3C, 0x03, 0xF1, 0xB9, 0xCD, 0x87, 0xCC, 0x1E, 0x60, 0x63, 0x87, 0x8F, + 0xEE, 0x3E, 0x38, 0xFF, 0xFD, 0x80, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x60, + 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, + 0x18, 0x0C, 0x06, 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x07, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x30, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x7F, 0xFF, 0xFF, 0x0F, 0x00, 0xF0, + 0x19, 0x83, 0x9C, 0x10, 0x80, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, 0x77, 0x66, 0xCC, + 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x01, 0x80, + 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x30, 0x0C, 0x06, 0x01, 0x80, + 0xC0, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x6E, 0x0F, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3E, 0x0E, 0xC1, 0x9C, 0x71, 0xFC, + 0x1F, 0x00, 0x0C, 0xF7, 0xFB, 0x4C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x1F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x01, 0x80, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, 0x07, + 0xFF, 0xFF, 0xE0, 0x3E, 0x3F, 0xC4, 0x38, 0x06, 0x01, 0x80, 0xE0, 0x70, + 0xF0, 0x3F, 0x00, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x78, 0x1B, 0xFE, 0x7E, + 0x00, 0x03, 0x80, 0x38, 0x07, 0x80, 0x58, 0x0D, 0x81, 0x98, 0x19, 0x83, + 0x18, 0x31, 0x86, 0x18, 0xC1, 0x8F, 0xFF, 0xFF, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x7F, 0x9F, 0xEC, 0x03, 0x00, 0xC0, 0x30, 0x0F, 0xE3, + 0xFE, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x78, 0x1B, 0xFC, 0x7E, + 0x00, 0x07, 0xC3, 0xF8, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x33, 0xC6, 0xFE, + 0xE0, 0xDC, 0x0F, 0x01, 0xE0, 0x3C, 0x06, 0xC1, 0xDC, 0x31, 0xFE, 0x1F, + 0x00, 0xFF, 0xFF, 0xFC, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x18, + 0x03, 0x00, 0xE0, 0x18, 0x07, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, 0x38, + 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, 0x0C, 0xE1, 0x8E, 0x60, 0xF8, + 0x1F, 0x0E, 0x39, 0x83, 0x60, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0xFE, 0x1F, + 0x00, 0x1F, 0x0F, 0xF1, 0x87, 0x70, 0x6C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0x60, 0xEF, 0xEC, 0x79, 0x80, 0x70, 0x0C, 0x03, 0x80, 0xE3, 0xF8, 0x7C, + 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x77, 0x70, 0x00, 0x00, 0x00, 0x77, + 0x66, 0xCC, 0x00, 0x40, 0x70, 0x78, 0x78, 0x38, 0x38, 0x0E, 0x00, 0xE0, + 0x0E, 0x01, 0xE0, 0x1C, 0x01, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x3F, + 0xFF, 0xFC, 0x80, 0x38, 0x07, 0x80, 0x70, 0x07, 0x00, 0x70, 0x1C, 0x1C, + 0x1C, 0x1E, 0x0E, 0x02, 0x00, 0x3F, 0x3F, 0xE4, 0x1C, 0x03, 0x00, 0xC0, + 0x30, 0x18, 0x0E, 0x06, 0x03, 0x00, 0xC0, 0x60, 0x00, 0x00, 0x01, 0xC0, + 0x70, 0x1C, 0x00, 0x07, 0xC0, 0x7F, 0xC3, 0x03, 0x18, 0x06, 0x60, 0x09, + 0x1F, 0x3C, 0xFC, 0xF6, 0x33, 0xD8, 0xCF, 0x63, 0x3D, 0x8C, 0xF6, 0x33, + 0xCF, 0xFB, 0x3C, 0xC6, 0x00, 0x18, 0x00, 0x30, 0x00, 0x7F, 0xC0, 0x7E, + 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x0C, 0xC0, 0x33, 0x00, + 0xCC, 0x06, 0x18, 0x18, 0x60, 0x61, 0x83, 0xFF, 0x0F, 0xFC, 0x30, 0x31, + 0x80, 0x66, 0x01, 0x98, 0x06, 0xC0, 0x0C, 0xFF, 0x8F, 0xFE, 0xC0, 0x7C, + 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0xEF, 0xF8, 0xFF, 0xCC, 0x0E, 0xC0, 0x7C, + 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0xEF, 0xFE, 0xFF, 0x80, 0x07, 0xE1, 0xFF, + 0x38, 0x27, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0xFF, 0x07, 0xE0, 0xFE, + 0x0F, 0xF8, 0xC1, 0xCC, 0x0E, 0xC0, 0x6C, 0x07, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, 0x0E, 0xC1, 0xCF, 0xF8, 0xFE, + 0x00, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, + 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, 0xF0, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0xC3, 0xFC, + 0xE1, 0x38, 0x06, 0x01, 0xC0, 0x30, 0x06, 0x1F, 0xC3, 0xF8, 0x0F, 0x01, + 0xF0, 0x36, 0x06, 0xC0, 0xDC, 0x19, 0xFF, 0x0F, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x60, 0xFF, 0xFF, 0xC6, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, + 0xC0, 0x61, 0xFF, 0xFF, 0x80, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x70, 0x3B, + 0xFC, 0xFE, 0x00, 0xC0, 0x78, 0x1B, 0x06, 0x61, 0x8C, 0x61, 0x9C, 0x33, + 0x06, 0xC0, 0xFC, 0x1D, 0x83, 0x18, 0x63, 0x8C, 0x31, 0x83, 0x30, 0x76, + 0x06, 0xC0, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, + 0xC0, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x17, 0xA2, 0xF4, 0x5E, 0x8B, + 0xD1, 0x7A, 0x6F, 0x29, 0xE5, 0x3C, 0xA7, 0x94, 0xF3, 0x9E, 0x23, 0xC4, + 0x60, 0xE0, 0x7C, 0x0F, 0xC1, 0xF8, 0x3D, 0x07, 0xB0, 0xF2, 0x1E, 0x63, + 0xC4, 0x78, 0xCF, 0x09, 0xE1, 0xBC, 0x17, 0x83, 0xF0, 0x7E, 0x07, 0xC0, + 0xE0, 0x1F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x6E, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0xE0, 0x66, 0x06, 0x70, 0xE3, + 0xFC, 0x1F, 0x00, 0xFF, 0x1F, 0xFB, 0x07, 0x60, 0x7C, 0x07, 0x80, 0xF0, + 0x1E, 0x07, 0xC1, 0xDF, 0xF3, 0xF8, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x00, 0x1F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x6E, 0x07, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0xE0, 0x76, 0x06, + 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0x18, 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x02, + 0xFE, 0x1F, 0xF3, 0x07, 0x60, 0xEC, 0x0D, 0x81, 0xB0, 0x76, 0x1C, 0xFF, + 0x1F, 0xC3, 0x18, 0x61, 0x8C, 0x39, 0x83, 0x30, 0x76, 0x06, 0xC0, 0x60, + 0x1F, 0x9F, 0xFE, 0x0B, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0xF0, 0x1F, 0x01, + 0xE0, 0x1C, 0x03, 0x00, 0xC0, 0x38, 0x1F, 0xFE, 0x7E, 0x00, 0xFF, 0xFF, + 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xC1, 0xDC, 0x73, 0xFE, 0x1F, 0x00, + 0xC0, 0x1D, 0x80, 0x66, 0x01, 0x98, 0x06, 0x30, 0x30, 0xC0, 0xC3, 0x03, + 0x06, 0x18, 0x18, 0x60, 0x61, 0x80, 0xCC, 0x03, 0x30, 0x0C, 0xC0, 0x1E, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0x00, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0x60, 0x09, 0x8C, 0x66, 0x31, 0x99, 0xE6, 0x67, 0x99, 0x92, 0x66, + 0xC9, 0x9B, 0x36, 0x2C, 0xD0, 0xA1, 0x42, 0x87, 0x0E, 0x1C, 0x30, 0x30, + 0xE0, 0x76, 0x06, 0x70, 0xE3, 0x0C, 0x19, 0x81, 0x98, 0x0F, 0x00, 0xF0, + 0x06, 0x00, 0xF0, 0x0F, 0x01, 0x98, 0x39, 0xC3, 0x0C, 0x70, 0xE6, 0x06, + 0xE0, 0x70, 0xC0, 0x36, 0x06, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x19, + 0x80, 0xF0, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x07, + 0x00, 0x60, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFC, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x3F, 0xFC, 0xC0, 0x18, + 0x06, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, + 0x18, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0xC0, 0xFF, 0xF0, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xFF, 0xFC, + 0x06, 0x00, 0x60, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x08, 0x30, 0xC3, 0x0C, + 0x60, 0x66, 0x06, 0xC0, 0x30, 0xFF, 0xFC, 0xE3, 0x0C, 0x30, 0x3F, 0x1F, + 0xE0, 0x1C, 0x03, 0x00, 0xC7, 0xF7, 0xEF, 0x83, 0xC0, 0xF0, 0x7E, 0x1D, + 0xFF, 0x3C, 0xC0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x9E, 0x3F, + 0xE7, 0x06, 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3F, + 0x06, 0xFF, 0x99, 0xE0, 0x1F, 0x8F, 0xF7, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x38, 0x07, 0x00, 0xFF, 0x1F, 0x80, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x07, 0xE0, 0xF8, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x07, 0x3F, 0xE3, 0xCC, 0x0F, 0x83, + 0xFC, 0x70, 0x66, 0x03, 0xC0, 0x3F, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x70, 0x03, 0xFE, 0x0F, 0xC0, 0x03, 0xF0, 0x7F, 0x0E, 0x00, 0xC0, + 0x0C, 0x0F, 0xFE, 0xFF, 0xE0, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1F, 0xF9, 0xFF, + 0x1C, 0x38, 0xC0, 0xC6, 0x06, 0x30, 0x30, 0xFF, 0x03, 0xF0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x3F, 0x83, 0xFE, 0x30, 0x1B, 0x00, 0xD8, 0x06, 0xE0, + 0x73, 0xFF, 0x0F, 0xE0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x33, 0xCF, + 0xFB, 0x87, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x00, 0x1F, 0x03, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x7F, + 0xBF, 0xF0, 0x03, 0x07, 0x03, 0x00, 0x00, 0x7F, 0x1F, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, + 0xFE, 0xFC, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x7C, 0x3B, 0x1C, + 0xCE, 0x33, 0x0D, 0x83, 0xE0, 0xEC, 0x31, 0x8C, 0x63, 0x0C, 0xC1, 0xB0, + 0x70, 0x7C, 0x0F, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x7F, 0xBF, 0xF0, + 0xDC, 0xEF, 0xFF, 0xE7, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x30, 0xCF, 0x3F, 0xEE, 0x1F, + 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, + 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xCF, 0x1F, 0xF3, + 0x83, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1F, 0x83, + 0x7F, 0xCC, 0xF1, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x00, + 0x1E, 0x67, 0xED, 0x83, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0x83, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0xCF, 0xEF, 0xFC, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x80, + 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x00, 0x3F, 0x9F, 0xFC, 0x03, 0x00, 0xE0, + 0x1F, 0x01, 0xF0, 0x0E, 0x01, 0xC0, 0x38, 0x1F, 0xFE, 0x7F, 0x00, 0x08, + 0x06, 0x01, 0x83, 0xFF, 0xFF, 0xC6, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x07, 0x00, 0xFC, 0x1F, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7E, 0x1D, 0xFF, 0x3C, 0xC0, + 0xC0, 0x36, 0x06, 0x60, 0x66, 0x06, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x98, + 0x19, 0x80, 0x98, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0xC3, 0x0F, 0x0C, 0x3C, + 0x78, 0x91, 0xE2, 0x65, 0x99, 0x92, 0x66, 0xCD, 0x8B, 0x34, 0x2C, 0xD0, + 0xA1, 0x42, 0x85, 0x0E, 0x1C, 0x10, 0x60, 0x60, 0x67, 0x0E, 0x30, 0xC1, + 0x98, 0x1F, 0x80, 0xF0, 0x06, 0x00, 0xF0, 0x1F, 0x81, 0x98, 0x30, 0xC6, + 0x06, 0xE0, 0x70, 0xC0, 0x36, 0x06, 0x60, 0x66, 0x06, 0x30, 0xC3, 0x0C, + 0x19, 0xC1, 0x98, 0x19, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x1C, 0x0F, 0x80, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x03, 0xFF, 0xFF, + 0xC0, 0x03, 0x83, 0xC3, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x7C, + 0x3E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x80, 0xF0, + 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x78, 0x0E, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x1C, 0x07, 0xC3, 0xE3, 0x81, 0x80, 0xC0, 0x60, + 0x30, 0x18, 0x0C, 0x0E, 0x1E, 0x0E, 0x00, 0x78, 0x7F, 0xF8, 0x78 }; + +const GFXglyph NotoMono12pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 14, 0, 0 }, // 0x20 ' ' + { 1, 3, 17, 14, 6, -16 }, // 0x21 '!' + { 8, 8, 6, 14, 3, -16 }, // 0x22 '"' + { 14, 13, 17, 14, 0, -16 }, // 0x23 '#' + { 42, 10, 20, 14, 2, -17 }, // 0x24 '$' + { 67, 13, 17, 14, 0, -16 }, // 0x25 '%' + { 95, 13, 17, 14, 1, -16 }, // 0x26 '&' + { 123, 3, 6, 14, 5, -16 }, // 0x27 ''' + { 126, 8, 21, 14, 3, -16 }, // 0x28 '(' + { 147, 8, 21, 14, 3, -16 }, // 0x29 ')' + { 168, 12, 11, 14, 1, -17 }, // 0x2A '*' + { 185, 11, 11, 14, 1, -13 }, // 0x2B '+' + { 201, 4, 6, 14, 4, -2 }, // 0x2C ',' + { 204, 8, 2, 14, 3, -6 }, // 0x2D '-' + { 206, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 208, 10, 17, 14, 2, -16 }, // 0x2F '/' + { 230, 11, 17, 14, 1, -16 }, // 0x30 '0' + { 254, 6, 17, 14, 3, -16 }, // 0x31 '1' + { 267, 11, 17, 14, 2, -16 }, // 0x32 '2' + { 291, 10, 17, 14, 2, -16 }, // 0x33 '3' + { 313, 12, 17, 14, 1, -16 }, // 0x34 '4' + { 339, 10, 17, 14, 2, -16 }, // 0x35 '5' + { 361, 11, 17, 14, 1, -16 }, // 0x36 '6' + { 385, 11, 17, 14, 1, -16 }, // 0x37 '7' + { 409, 11, 17, 14, 1, -16 }, // 0x38 '8' + { 433, 11, 17, 14, 1, -16 }, // 0x39 '9' + { 457, 3, 13, 14, 5, -12 }, // 0x3A ':' + { 462, 4, 16, 14, 4, -12 }, // 0x3B ';' + { 470, 10, 12, 14, 2, -13 }, // 0x3C '<' + { 485, 10, 7, 14, 2, -11 }, // 0x3D '=' + { 494, 10, 12, 14, 2, -13 }, // 0x3E '>' + { 509, 10, 17, 14, 2, -16 }, // 0x3F '?' + { 531, 14, 19, 14, 0, -16 }, // 0x40 '@' + { 565, 14, 17, 14, 0, -16 }, // 0x41 'A' + { 595, 12, 17, 14, 1, -16 }, // 0x42 'B' + { 621, 12, 17, 14, 1, -16 }, // 0x43 'C' + { 647, 12, 17, 14, 1, -16 }, // 0x44 'D' + { 673, 10, 17, 14, 2, -16 }, // 0x45 'E' + { 695, 10, 17, 14, 2, -16 }, // 0x46 'F' + { 717, 11, 17, 14, 1, -16 }, // 0x47 'G' + { 741, 11, 17, 14, 1, -16 }, // 0x48 'H' + { 765, 9, 17, 14, 3, -16 }, // 0x49 'I' + { 785, 10, 17, 14, 1, -16 }, // 0x4A 'J' + { 807, 11, 17, 14, 2, -16 }, // 0x4B 'K' + { 831, 10, 17, 14, 2, -16 }, // 0x4C 'L' + { 853, 11, 17, 14, 1, -16 }, // 0x4D 'M' + { 877, 11, 17, 14, 1, -16 }, // 0x4E 'N' + { 901, 12, 17, 14, 1, -16 }, // 0x4F 'O' + { 927, 11, 17, 14, 2, -16 }, // 0x50 'P' + { 951, 12, 22, 14, 1, -16 }, // 0x51 'Q' + { 984, 11, 17, 14, 2, -16 }, // 0x52 'R' + { 1008, 10, 17, 14, 2, -16 }, // 0x53 'S' + { 1030, 12, 17, 14, 1, -16 }, // 0x54 'T' + { 1056, 11, 17, 14, 1, -16 }, // 0x55 'U' + { 1080, 14, 17, 14, 0, -16 }, // 0x56 'V' + { 1110, 14, 17, 14, 0, -16 }, // 0x57 'W' + { 1140, 12, 17, 14, 1, -16 }, // 0x58 'X' + { 1166, 12, 17, 14, 1, -16 }, // 0x59 'Y' + { 1192, 12, 17, 14, 1, -16 }, // 0x5A 'Z' + { 1218, 6, 21, 14, 5, -16 }, // 0x5B '[' + { 1234, 10, 17, 14, 2, -16 }, // 0x5C '\' + { 1256, 6, 21, 14, 2, -16 }, // 0x5D ']' + { 1272, 12, 11, 14, 1, -16 }, // 0x5E '^' + { 1289, 14, 1, 14, 0, 3 }, // 0x5F '_' + { 1291, 5, 4, 14, 4, -18 }, // 0x60 '`' + { 1294, 10, 13, 14, 2, -12 }, // 0x61 'a' + { 1311, 11, 18, 14, 2, -17 }, // 0x62 'b' + { 1336, 10, 13, 14, 2, -12 }, // 0x63 'c' + { 1353, 11, 18, 14, 1, -17 }, // 0x64 'd' + { 1378, 12, 13, 14, 1, -12 }, // 0x65 'e' + { 1398, 12, 18, 14, 1, -17 }, // 0x66 'f' + { 1425, 13, 19, 14, 1, -12 }, // 0x67 'g' + { 1456, 10, 18, 14, 2, -17 }, // 0x68 'h' + { 1479, 10, 18, 14, 2, -17 }, // 0x69 'i' + { 1502, 8, 24, 14, 2, -17 }, // 0x6A 'j' + { 1526, 10, 18, 14, 3, -17 }, // 0x6B 'k' + { 1549, 10, 18, 14, 2, -17 }, // 0x6C 'l' + { 1572, 12, 13, 14, 1, -12 }, // 0x6D 'm' + { 1592, 10, 13, 14, 2, -12 }, // 0x6E 'n' + { 1609, 12, 13, 14, 1, -12 }, // 0x6F 'o' + { 1629, 11, 19, 14, 2, -12 }, // 0x70 'p' + { 1656, 11, 19, 14, 1, -12 }, // 0x71 'q' + { 1683, 9, 13, 14, 3, -12 }, // 0x72 'r' + { 1698, 10, 13, 14, 2, -12 }, // 0x73 's' + { 1715, 10, 16, 14, 2, -15 }, // 0x74 't' + { 1735, 10, 13, 14, 2, -12 }, // 0x75 'u' + { 1752, 12, 13, 14, 1, -12 }, // 0x76 'v' + { 1772, 14, 13, 14, 0, -12 }, // 0x77 'w' + { 1795, 12, 13, 14, 1, -12 }, // 0x78 'x' + { 1815, 12, 19, 14, 1, -12 }, // 0x79 'y' + { 1844, 10, 13, 14, 2, -12 }, // 0x7A 'z' + { 1861, 9, 21, 14, 2, -16 }, // 0x7B '{' + { 1885, 2, 24, 14, 6, -17 }, // 0x7C '|' + { 1891, 9, 21, 14, 3, -16 }, // 0x7D '}' + { 1915, 10, 3, 14, 2, -9 } }; // 0x7E '~' + +const GFXfont NotoMono12pt7b PROGMEM = { + (uint8_t *)NotoMono12pt7bBitmaps, + (GFXglyph *)NotoMono12pt7bGlyphs, + 0x20, 0x7E, 28 }; + +// Approx. 2591 bytes