Add screen for configuring vehicle parameters

This commit is contained in:
Jasper Blanckenburg 2023-04-04 20:58:34 +02:00
parent 09f65fcf22
commit a5f10be4fd
35 changed files with 1976 additions and 104 deletions

24
Core/Inc/params.h Normal file
View File

@ -0,0 +1,24 @@
#ifndef INC_PARAMS_H
#define INC_PARAMS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
typedef struct {
float bbal;
unsigned tc1;
unsigned tc2;
unsigned torque_map;
unsigned test[4];
} Params;
extern Params params;
#ifdef __cplusplus
}
#endif
#endif // INC_PARAMS_H

3
Core/Src/params.c Normal file
View File

@ -0,0 +1,3 @@
#include "params.h"
Params params = {0};

View File

@ -42,6 +42,7 @@ Core/Src/app.c \
Core/Src/app_threadx.c \
Core/Src/hx8357d.c \
Core/Src/leds.c \
Core/Src/params.c \
Core/Src/shorttimer.c \
Core/Src/stm32h7xx_hal_msp.c \
Core/Src/stm32h7xx_hal_timebase_tim.c \
@ -354,6 +355,7 @@ TouchGFX/generated/fonts/src/Table_verdanab_20_4bpp.cpp \
TouchGFX/generated/fonts/src/UnmappedDataFont.cpp \
TouchGFX/generated/gui_generated/src/ami_screen/AMIViewBase.cpp \
TouchGFX/generated/gui_generated/src/common/FrontendApplicationBase.cpp \
TouchGFX/generated/gui_generated/src/containers/ConfigItemBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DebugViewItemBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DebugViewLineBase.cpp \
TouchGFX/generated/gui_generated/src/containers/DriverViewFieldBase.cpp \
@ -363,6 +365,7 @@ TouchGFX/generated/gui_generated/src/containers/TireTempBase.cpp \
TouchGFX/generated/gui_generated/src/debugview_screen/DebugViewViewBase.cpp \
TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp \
TouchGFX/generated/gui_generated/src/missionselect_screen/MissionSelectViewBase.cpp \
TouchGFX/generated/gui_generated/src/vehicleconfig_screen/VehicleConfigViewBase.cpp \
TouchGFX/generated/images/src/BitmapDatabase.cpp \
TouchGFX/generated/images/src/SVGDatabase.cpp \
TouchGFX/generated/images/src/image_Fasttube_Logo.cpp \
@ -380,6 +383,7 @@ TouchGFX/gui/src/ami_screen/AMIPresenter.cpp \
TouchGFX/gui/src/ami_screen/AMIView.cpp \
TouchGFX/gui/src/common/FrontendApplication.cpp \
TouchGFX/gui/src/common/NamedField.cpp \
TouchGFX/gui/src/containers/ConfigItem.cpp \
TouchGFX/gui/src/containers/DebugViewItem.cpp \
TouchGFX/gui/src/containers/DebugViewLine.cpp \
TouchGFX/gui/src/containers/DriverViewField.cpp \
@ -393,6 +397,8 @@ TouchGFX/gui/src/driverview_screen/DriverViewView.cpp \
TouchGFX/gui/src/missionselect_screen/MissionSelectPresenter.cpp \
TouchGFX/gui/src/missionselect_screen/MissionSelectView.cpp \
TouchGFX/gui/src/model/Model.cpp \
TouchGFX/gui/src/vehicleconfig_screen/VehicleConfigPresenter.cpp \
TouchGFX/gui/src/vehicleconfig_screen/VehicleConfigView.cpp \
TouchGFX/target/STM32TouchController.cpp \
TouchGFX/target/TouchGFXGPIO.cpp \
TouchGFX/target/TouchGFXHAL.cpp \

View File

@ -137,6 +137,15 @@
</Text>
</TextGroup>
<TextGroup Id="Unsorted">
<Text Id="__SingleUse_4E84" Alignment="Right" TypographyId="Numbers">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_YTAB" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_RWCE" Alignment="Center" TypographyId="Chinat_Large">
<Translation Language="GB">PARAMETERS</Translation>
</Text>
<Text Id="__SingleUse_HMH2" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">PRECHARGE</Translation>
</Text>
@ -165,7 +174,7 @@
</Texts>
<Typographies>
<Typography Id="Default" Font="verdana.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! &quot;" WildcardCharacterRanges="#-~" />
<Typography Id="Chinat_Large" Font="CHINN___.ttf" Size="30" Bpp="4" Direction="LTR" FallbackCharacter="?" />
<Typography Id="Chinat_Large" Font="CHINN___.ttf" Size="30" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="8 9" WildcardCharacterRanges="a-z,A-Z,0-7" />
<Typography Id="Chinat_Small" Font="CHINN___.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="_ ." WildcardCharacterRanges="0-9,a-z,A-Z" />
<Typography Id="Chinat_Huge" Font="CHINN___.ttf" Size="40" Bpp="4" Direction="LTR" FallbackCharacter="?" />
<Typography Id="Numbers" Font="lucon.TTF" Size="50" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=". ," WildcardCharacterRanges="0-9" />

View File

@ -1,22 +1,65 @@
32
48
49
50
51
52
53
54
55
56
57
58
63
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

View File

@ -1,23 +1,66 @@
AH:0 BA:1 FC:63 EC:0 FF:0 CF:0
32
48
49
50
51
52
53
54
55
56
57
58
63
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

View File

@ -4,6 +4,196 @@ FONT_GLYPH_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = {
// Unicode: [0x0020, space]
// (Has no glyph data)
// Unicode: [0x0030, zero]
0x00, 0x00, 0xA5, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x29, 0x00, 0x00, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xA0, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF1, 0xFF, 0xFF, 0xDD,
0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xED, 0xFF, 0xFF, 0x08, 0xF2, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0x0D, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xFF, 0x0D, 0xF1, 0xFF, 0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x62, 0xFF, 0xFF,
0x0B, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00,
0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x93,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x3A, 0x00, 0x00,
// Unicode: [0x0031, one]
0x00, 0x00, 0x40, 0xEB, 0xDF, 0x07, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0xB1,
0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xC1, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x4F, 0xB0, 0xFF, 0xFF, 0x8F, 0xFC, 0xFF, 0x5F, 0x00, 0xFB, 0xFF, 0x08, 0xFC, 0xFF,
0x5F, 0x00, 0xC1, 0x7F, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x10, 0x06, 0x00, 0xFC, 0xFF, 0x5F, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F,
// Unicode: [0x0032, two]
0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x06, 0x00, 0xF4,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0xF4, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xF4, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xE4, 0xEE, 0xEE, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0E, 0x00, 0x30, 0xEB, 0xEE, 0xEE, 0xEE, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xFF, 0x0E, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xDF, 0x05, 0x00, 0xF2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF2, 0xFF, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x07,
0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF2, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF2, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08,
// Unicode: [0x0033, three]
0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x39, 0x00, 0x00, 0xF4,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0xF4, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xF4, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xE4, 0xEE, 0xEE, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0B, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0B, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x62,
0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF,
0xFF, 0x0E, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x51, 0xFF, 0xFF,
0x0C, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4A, 0x00, 0x00,
// Unicode: [0x0034, four]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x0C, 0x00, 0x00, 0x82, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0A, 0x00,
// Unicode: [0x0035, five]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xF3, 0xFF, 0xFF, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x9E, 0x00, 0xF3, 0xFF, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x3A, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x08, 0x41, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x84,
0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF,
0x0C, 0xD2, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xED, 0xFF, 0xFF, 0x09,
0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0xF2, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x05, 0x00, 0xF2, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAD, 0x16, 0x00, 0x00,
// Unicode: [0x0036, six]
0x00, 0x00, 0xA4, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00,
0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x80, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0xE0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0xF2, 0xFF, 0xEF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0x44, 0x44, 0x44, 0x44,
0x44, 0x44, 0x44, 0x44, 0x34, 0x01, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x01, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x07, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0C, 0xF3, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xFF, 0x0E, 0xF2, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF,
0x0D, 0xD0, 0xFF, 0xFF, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xED, 0xFF, 0xFF, 0x0B,
0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x10,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0xD2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x10, 0xC7,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4A, 0x00, 0x00,
// Unicode: [0x0037, seven]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x02, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xE3, 0xEE, 0xEE, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3,
0xFF, 0xFF, 0xFF, 0xDF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF,
0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFC, 0xFF, 0xFF, 0xFF,
0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x9F, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xFF, 0xFF, 0xFF, 0xDF, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0xFC, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE7, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xFE, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFB, 0xFF,
0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0038, eight]
0x00, 0x00, 0xA4, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x5B, 0x00, 0x00, 0x00,
0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x90, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xF1, 0xFF, 0xFF, 0xDE,
0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xED, 0xFF, 0xFF, 0x0A, 0xF2, 0xFF, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0C, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x08, 0xF1, 0xFF, 0xFF, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xA5,
0xFF, 0xFF, 0x0C, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF,
0xFF, 0x0D, 0xF1, 0xFF, 0xFF, 0x14, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x71, 0xFF, 0xFF,
0x0C, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09,
0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x06, 0x00, 0x00, 0x00, 0x82,
0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x28, 0x00, 0x00,
// Unicode: [0x0039, nine]
0x00, 0x00, 0xB5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4B, 0x00, 0x00, 0x00,
0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x70, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xE0, 0xFF, 0xFF, 0xEE,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFF, 0xFF, 0x08, 0xF2, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0C, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x0D, 0xF2, 0xFF, 0xFF, 0x44, 0x44, 0x44, 0x44,
0x44, 0x44, 0x44, 0x44, 0x74, 0xFF, 0xFF, 0x0E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x10, 0xC7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF,
0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF,
0x0D, 0x30, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xED, 0xFF, 0xFF, 0x0A,
0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x30,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x30, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x30, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x39, 0x00, 0x00,
// Unicode: [0x003A, colon]
0xFC, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x03,
0xFC, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -49,6 +239,26 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x2F, 0x00, 0xB0, 0xFF,
0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xAF, 0x00, 0xF5, 0xFF, 0xFF,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x04,
// Unicode: [0x0042, B]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x9C, 0x04, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x8F, 0xF3, 0xFF, 0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0xF8, 0xFF, 0xDF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7,
0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x04, 0x00,
// Unicode: [0x0043, C]
0x00, 0x00, 0xA5, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x10, 0xFD,
@ -69,6 +279,26 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xC2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0xB5,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
// Unicode: [0x0044, D]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6B, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0x5F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x5B, 0x00, 0x00,
// Unicode: [0x0045, E]
0x00, 0x00, 0xB5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x10, 0xFD,
@ -89,6 +319,26 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xA1,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x94,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
// Unicode: [0x0046, F]
0x00, 0x00, 0xA4, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x90, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xE0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF2, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0047, G]
0x00, 0x00, 0x83, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x10, 0xFD,
@ -129,6 +379,71 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xCF, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xCF, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xCF,
// Unicode: [0x0049, I]
0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3,
0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF,
0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF,
0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF,
// Unicode: [0x004A, J]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFF, 0xFF, 0x2F, 0xF6, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF,
0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF,
0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00,
0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0xB1,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0xC6,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x01, 0x00,
// Unicode: [0x004B, K]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x01, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x70,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x10, 0xFB, 0xFF,
0xFF, 0xFF, 0xDF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF,
0xEF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x19,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xEF, 0x17, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xDF, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x20, 0xFD, 0xFF, 0xFF, 0xFF, 0xCF, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x01, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x10, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x19,
// Unicode: [0x004C, L]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F,
0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x10,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xC2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xC6,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F,
// Unicode: [0x004D, M]
0x00, 0x60, 0xEC, 0xBE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xEB, 0xCF, 0x07, 0x00,
0x00, 0xFB, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xBF, 0x01,
@ -150,6 +465,46 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF, 0x6F,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x20, 0xEA, 0xCF, 0x05, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F,
// Unicode: [0x004E, N]
0x00, 0x60, 0xEC, 0xBE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x10,
0xFB, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0x90, 0xFF,
0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF1, 0xFF, 0xFF,
0xFF, 0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF,
0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x70, 0xFF, 0xFF,
0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0xF6, 0xFF, 0xFF,
0xDF, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x50, 0xFF, 0xFF, 0xFF,
0x2D, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xEF,
0x03, 0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0x3E,
0x00, 0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xEF, 0x04,
0x00, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0xFF, 0x4E, 0x00,
0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0x05, 0xFF,
0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFD, 0xFF, 0xFF, 0x6F, 0xFF, 0xFF,
0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0xFF, 0xAF, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xEB, 0xCE, 0x06, 0x00,
// Unicode: [0x004F, O]
0x00, 0x00, 0xA4, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6C, 0x00, 0x00, 0x00,
0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0xFB,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x01, 0x80, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xE0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xF2, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x3F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD,
0xFF, 0x5F, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF,
0x4F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x10,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x02, 0x00, 0xD2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0xC7,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6C, 0x00, 0x00,
// Unicode: [0x0050, P]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x04, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00,
@ -171,6 +526,27 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0051, Q]
0x00, 0x00, 0xB6, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x39, 0x00, 0x00, 0x00,
0x00, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00,
0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00,
0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00,
0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x0C, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x20, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0x10, 0xC7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
// Unicode: [0x0052, R]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6C, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0xF3, 0xFF,
@ -191,6 +567,168 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x5F,
// Unicode: [0x0053, S]
0x00, 0x00, 0x93, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0xF5, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF5, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7C, 0x01, 0x00,
0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00,
0x30, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x03,
0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D,
0x00, 0x10, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xF9, 0xFF, 0x9F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F,
0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F,
0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D,
0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x00,
0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7C, 0x01, 0x00,
// Unicode: [0x0054, T]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF9, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0055, U]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF4, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4,
0xFF, 0xEF, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF,
0xDF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0xA0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xB5,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x04, 0x00,
// Unicode: [0x0056, V]
0xF5, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x02, 0xC0,
0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F, 0x00, 0x40, 0xFF,
0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0xFB, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x4F,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xCF, 0x00,
0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x05, 0x00,
0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x0D, 0x00, 0x00,
0x30, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xB0,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xDF, 0x01, 0x00, 0xF4, 0xFF,
0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0xFF, 0xEF,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1E, 0x50, 0xFF, 0xFF, 0x8F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F, 0xD0, 0xFF, 0xFF, 0x1E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0xE9, 0xCE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0057, W]
0xFE, 0xFF, 0x5F, 0x00, 0x00, 0x70, 0xEC, 0xCE, 0x07, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF,
0x7F, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0xF5, 0xFF, 0xDF, 0xFA, 0xFF, 0x9F, 0x00,
0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0xF7, 0xFF, 0xBF, 0xF8, 0xFF, 0xBF, 0x00, 0xF1, 0xFF,
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xF9, 0xFF, 0x9F, 0xF6, 0xFF, 0xDF, 0x00, 0xF5, 0xFF, 0xFF, 0xFF,
0xFF, 0x7F, 0x00, 0xFB, 0xFF, 0x7F, 0xF4, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xEF, 0xFE, 0xFF, 0x9F,
0x00, 0xFD, 0xFF, 0x5F, 0xF2, 0xFF, 0xFF, 0x02, 0xFB, 0xFF, 0xBF, 0xFB, 0xFF, 0xCF, 0x00, 0xFF,
0xFF, 0x3F, 0xF0, 0xFF, 0xFF, 0x04, 0xFD, 0xFF, 0x8F, 0xF8, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x1F,
0xD0, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0x5F, 0xF5, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x0E, 0xB0, 0xFF,
0xFF, 0x38, 0xFF, 0xFF, 0x3F, 0xF1, 0xFF, 0xFF, 0x65, 0xFF, 0xFF, 0x0C, 0x90, 0xFF, 0xFF, 0x6A,
0xFF, 0xFF, 0x0E, 0xD0, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x0A, 0x70, 0xFF, 0xFF, 0x9C, 0xFF, 0xFF,
0x0C, 0xA0, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, 0x08, 0x50, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0x09, 0x70,
0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0x06, 0x30, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x06, 0x40, 0xFF, 0xFF,
0xEF, 0xFF, 0xFF, 0x04, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x02, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xDF, 0x00,
0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0xE1,
0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x50, 0xFF, 0xFF,
0xFF, 0x07, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xB4, 0xEE, 0x4B, 0x00,
0x00, 0x00, 0x00, 0xB3, 0xEE, 0x4B, 0x00, 0x00,
// Unicode: [0x0058, X]
0xFB, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xCF, 0x01, 0xC1,
0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0x1C, 0x00, 0x10, 0xFD,
0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0xD2, 0xFF,
0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF,
0xFF, 0x08, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF,
0x6F, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF,
0x04, 0x30, 0xFE, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x2E,
0xD1, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xCF, 0xFB,
0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xBF, 0xFA, 0xFF, 0xFF, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x2E, 0xE2, 0xFF, 0xFF, 0x6F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x05, 0x50, 0xFF, 0xFF, 0xFF, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x2E, 0x00, 0x00,
0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00,
0xFA, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0xFF, 0x09, 0x00, 0xF6, 0xFF, 0xFF,
0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x7F, 0x00,
// Unicode: [0x0059, Y]
0xF3, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xCF, 0x60, 0xFF,
0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x2E, 0x00, 0xF8, 0xFF, 0xFF,
0x1D, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xB0, 0xFF, 0xFF, 0xBF, 0x00,
0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0x08, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xB0, 0xFF,
0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xF8, 0xFF, 0xFF, 0x2E,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x2E, 0x50, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xCF, 0xF4, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF,
0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF,
0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x8F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x005A, Z]
0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3A, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x06, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x4F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x73, 0xDA, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x85,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xB7, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xD9, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x85, 0xEB, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x59, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x8C, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF,
0xFF, 0xEF, 0x7B, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x1F, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x1F, 0x00, 0x00, 0x40, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1F, 0x00,
// Unicode: [0x0061, a]
0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x03, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x80, 0xFF,
@ -211,6 +749,66 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xD3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x10, 0xC7,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
// Unicode: [0x0062, b]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x9C, 0x04, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x8F, 0xF3, 0xFF, 0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0xF8, 0xFF, 0xDF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7,
0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x04, 0x00,
// Unicode: [0x0063, c]
0x00, 0x00, 0xA5, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x70, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xC0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF1, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x10,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0xC2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0xB5,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
// Unicode: [0x0064, d]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6B, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x5F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x6F, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0x5F, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x5B, 0x00, 0x00,
// Unicode: [0x0065, e]
0x00, 0x00, 0x94, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x3A, 0x00, 0x00, 0x00,
0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x10, 0xFD,
@ -231,6 +829,46 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0xB1,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0xB5,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C,
// Unicode: [0x0066, f]
0x00, 0x00, 0xA4, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00,
0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x90, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xE0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF2, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0067, g]
0x00, 0x00, 0x83, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x10, 0xFD,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF1, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xAF, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0x9F, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
0x8F, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F,
0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x00,
0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x90,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x93,
0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6B, 0x01, 0x00,
// Unicode: [0x0068, h]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xCF, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xCF, 0xF3, 0xFF,
@ -256,6 +894,61 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF,
0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF,
0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF,
// Unicode: [0x006A, j]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFF, 0xFF, 0x2F, 0xF6, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF,
0xFF, 0x2F, 0xF3, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF,
0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00,
0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0xB1,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0xC6,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x01, 0x00,
// Unicode: [0x006B, k]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x01, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x70,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x10, 0xFB, 0xFF,
0xFF, 0xFF, 0xDF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF,
0xEF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x19,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xEF, 0x17, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xDF, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x20, 0xFD, 0xFF, 0xFF, 0xFF, 0xCF, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x01, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x10, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x19,
// Unicode: [0x006C, l]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0xF9, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x4F, 0x00, 0x00, 0x93, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F,
// Unicode: [0x006D, m]
0x00, 0x60, 0xEC, 0xCE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xFD, 0x9D, 0x02, 0x00, 0x00,
0xFA, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0xFF, 0x3E, 0x00, 0x70, 0xFF,
@ -316,6 +1009,47 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x02, 0x00, 0xD2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0xC7,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6C, 0x00, 0x00,
// Unicode: [0x0070, p]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x3A, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x01, 0xF3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0x0A, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0x0C, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0x0C, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0x0B, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xEF, 0x01, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x6F, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x07, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x4A,
0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0071, q]
0x00, 0x00, 0xB6, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x39, 0x00, 0x00, 0x00,
0x00, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00,
0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00,
0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00,
0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x0C, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x0D, 0x00,
0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x20, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0x10, 0xC7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
// Unicode: [0x0072, r]
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x02, 0x00, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0xF3, 0xFF,
@ -396,5 +1130,111 @@ KEEP extern const uint8_t unicodes_CHINN____30_4bpp_0[] FONT_GLYPH_LOCATION_FLAS
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0xA0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xB5,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x04, 0x00
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x04, 0x00,
// Unicode: [0x0076, v]
0xF5, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x02, 0xC0,
0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F, 0x00, 0x40, 0xFF,
0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0xFB, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF3, 0xFF, 0xFF,
0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x4F,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xCF, 0x00,
0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x05, 0x00,
0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x0D, 0x00, 0x00,
0x30, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xB0,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xDF, 0x01, 0x00, 0xF4, 0xFF,
0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0xFF, 0xEF,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0x1E, 0x50, 0xFF, 0xFF, 0x8F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F, 0xD0, 0xFF, 0xFF, 0x1E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0xE9, 0xCE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0077, w]
0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x20, 0xD9, 0xDF, 0x29, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF,
0x0C, 0xFB, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0x09, 0xF8, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0xB0,
0xFF, 0xFF, 0x06, 0xF5, 0xFF, 0xFF, 0x01, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00,
0xE0, 0xFF, 0xFF, 0x03, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00,
0x00, 0xF2, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF, 0x06, 0x00, 0xF1, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF,
0x01, 0x00, 0xF5, 0xFF, 0xCF, 0x00, 0xB0, 0xFF, 0xFF, 0x09, 0x00, 0xF5, 0xFF, 0xFF, 0xF4, 0xFF,
0xFF, 0x06, 0x00, 0xF8, 0xFF, 0x9F, 0x00, 0x80, 0xFF, 0xFF, 0x0C, 0x00, 0xFA, 0xFF, 0xEF, 0xB0,
0xFF, 0xFF, 0x0A, 0x00, 0xFB, 0xFF, 0x6F, 0x00, 0x50, 0xFF, 0xFF, 0x0E, 0x00, 0xFE, 0xFF, 0x9F,
0x70, 0xFF, 0xFF, 0x1E, 0x00, 0xFE, 0xFF, 0x3F, 0x00, 0x20, 0xFF, 0xFF, 0x2F, 0x40, 0xFF, 0xFF,
0x4F, 0x20, 0xFF, 0xFF, 0x5F, 0x20, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0x5F, 0x90, 0xFF,
0xFF, 0x0E, 0x00, 0xFD, 0xFF, 0xAF, 0x50, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0xFB, 0xFF, 0x8F, 0xD0,
0xFF, 0xFF, 0x0A, 0x00, 0xF9, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0xF8, 0xFF, 0xAF,
0xF3, 0xFF, 0xFF, 0x05, 0x00, 0xF4, 0xFF, 0xFF, 0xB4, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF5, 0xFF,
0xDF, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0xE1, 0xFF, 0xFF, 0xE9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0xFD, 0xFF, 0xBF, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00,
0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00,
0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00,
0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x2E,
0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF,
0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0xEB, 0xDF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xEF,
0x3A, 0x00, 0x00, 0x00,
// Unicode: [0x0078, x]
0xFB, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xCF, 0x01, 0xC1,
0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0x1C, 0x00, 0x10, 0xFD,
0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0xD2, 0xFF,
0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF,
0xFF, 0x08, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF,
0x6F, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF,
0x04, 0x30, 0xFE, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x2E,
0xD1, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xCF, 0xFB,
0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xBF, 0xFA, 0xFF, 0xFF, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x2E, 0xE2, 0xFF, 0xFF, 0x6F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x05, 0x50, 0xFF, 0xFF, 0xFF, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x2E, 0x00, 0x00,
0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00,
0xFA, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0xFF, 0x09, 0x00, 0xF6, 0xFF, 0xFF,
0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x7F, 0x00,
// Unicode: [0x0079, y]
0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF3,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF3, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF3, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xF2, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xEF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x10, 0xC7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF5, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5,
0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF,
0xDF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xF3,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xF3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0xF3, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x9D, 0x02, 0x00,
// Unicode: [0x007A, z]
0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3A, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x06, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x4F, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x73, 0xDA, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x85,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xB7, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xD9, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x85, 0xEB, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x59, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x8C, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF,
0xFF, 0xEF, 0x7B, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x1F, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x1F, 0x00, 0x00, 0x40, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1F, 0x00
};

View File

@ -5,27 +5,70 @@
FONT_TABLE_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::GlyphNode glyphs_CHINN____30_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = {
{ 0, 0x0020, 0, 0, 0, 0, 8, 0, 0, 0x00 }, // space
{ 0, 0x003A, 7, 14, 14, 1, 8, 0, 0, 0x00 }, // colon
{ 56, 0x003F, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // question
{ 356, 0x0041, 29, 20, 20, -1, 27, 0, 0, 0x00 }, // A
{ 656, 0x0043, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // C
{ 956, 0x0045, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // E
{ 1256, 0x0047, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // G
{ 1556, 0x0048, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // H
{ 1856, 0x004D, 32, 20, 20, 0, 32, 0, 0, 0x00 }, // M
{ 2176, 0x0050, 31, 20, 20, 0, 31, 0, 0, 0x00 }, // P
{ 2496, 0x0052, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // R
{ 2796, 0x0061, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // a
{ 3096, 0x0065, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // e
{ 3396, 0x0068, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // h
{ 3696, 0x0069, 6, 20, 20, 0, 7, 0, 0, 0x00 }, // i
{ 3756, 0x006D, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // m
{ 4056, 0x006E, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // n
{ 4356, 0x006F, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // o
{ 4656, 0x0072, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // r
{ 4956, 0x0073, 32, 20, 20, 0, 32, 0, 0, 0x00 }, // s
{ 5276, 0x0074, 30, 20, 20, -1, 28, 0, 0, 0x00 }, // t
{ 5576, 0x0075, 30, 20, 20, 0, 31, 0, 0, 0x00 } // u
{ 0, 0x0030, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // zero
{ 300, 0x0031, 14, 20, 20, 5, 30, 0, 0, 0x00 }, // one
{ 440, 0x0032, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // two
{ 740, 0x0033, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // three
{ 1040, 0x0034, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // four
{ 1340, 0x0035, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // five
{ 1640, 0x0036, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // six
{ 1940, 0x0037, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // seven
{ 2240, 0x0038, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // eight
{ 2540, 0x0039, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // nine
{ 2840, 0x003A, 7, 14, 14, 1, 8, 0, 0, 0x00 }, // colon
{ 2896, 0x003F, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // question
{ 3196, 0x0041, 29, 20, 20, -1, 27, 0, 0, 0x00 }, // A
{ 3496, 0x0042, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // B
{ 3796, 0x0043, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // C
{ 4096, 0x0044, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // D
{ 4396, 0x0045, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // E
{ 4696, 0x0046, 29, 20, 20, 0, 29, 0, 0, 0x00 }, // F
{ 4996, 0x0047, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // G
{ 5296, 0x0048, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // H
{ 5596, 0x0049, 6, 20, 20, 0, 7, 0, 0, 0x00 }, // I
{ 5656, 0x004A, 30, 20, 20, -1, 29, 0, 0, 0x00 }, // J
{ 5956, 0x004B, 30, 20, 20, 0, 29, 0, 0, 0x00 }, // K
{ 6256, 0x004C, 30, 20, 20, 0, 29, 0, 0, 0x00 }, // L
{ 6556, 0x004D, 32, 20, 20, 0, 32, 0, 0, 0x00 }, // M
{ 6876, 0x004E, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // N
{ 7176, 0x004F, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // O
{ 7476, 0x0050, 31, 20, 20, 0, 31, 0, 0, 0x00 }, // P
{ 7796, 0x0051, 31, 20, 20, 0, 31, 0, 0, 0x00 }, // Q
{ 8116, 0x0052, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // R
{ 8416, 0x0053, 32, 20, 20, 0, 32, 0, 0, 0x00 }, // S
{ 8736, 0x0054, 30, 20, 20, -1, 28, 0, 0, 0x00 }, // T
{ 9036, 0x0055, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // U
{ 9336, 0x0056, 29, 20, 20, -1, 27, 0, 0, 0x00 }, // V
{ 9636, 0x0057, 28, 20, 20, 0, 28, 0, 0, 0x00 }, // W
{ 9916, 0x0058, 29, 20, 20, 0, 28, 0, 0, 0x00 }, // X
{ 10216, 0x0059, 28, 20, 20, -1, 27, 0, 0, 0x00 }, // Y
{ 10496, 0x005A, 33, 20, 20, 0, 32, 0, 0, 0x00 }, // Z
{ 10836, 0x0061, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // a
{ 11136, 0x0062, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // b
{ 11436, 0x0063, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // c
{ 11736, 0x0064, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // d
{ 12036, 0x0065, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // e
{ 12336, 0x0066, 29, 20, 20, 0, 29, 0, 0, 0x00 }, // f
{ 12636, 0x0067, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // g
{ 12936, 0x0068, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // h
{ 13236, 0x0069, 6, 20, 20, 0, 7, 0, 0, 0x00 }, // i
{ 13296, 0x006A, 30, 20, 20, -1, 29, 0, 0, 0x00 }, // j
{ 13596, 0x006B, 30, 20, 20, 0, 29, 0, 0, 0x00 }, // k
{ 13896, 0x006C, 22, 20, 20, 0, 21, 0, 0, 0x00 }, // l
{ 14116, 0x006D, 29, 20, 20, 0, 30, 0, 0, 0x00 }, // m
{ 14416, 0x006E, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // n
{ 14716, 0x006F, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // o
{ 15016, 0x0070, 29, 20, 20, 0, 29, 0, 0, 0x00 }, // p
{ 15316, 0x0071, 31, 20, 20, 0, 31, 0, 0, 0x00 }, // q
{ 15636, 0x0072, 30, 20, 20, 0, 30, 0, 0, 0x00 }, // r
{ 15936, 0x0073, 32, 20, 20, 0, 32, 0, 0, 0x00 }, // s
{ 16256, 0x0074, 30, 20, 20, -1, 28, 0, 0, 0x00 }, // t
{ 16556, 0x0075, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // u
{ 16856, 0x0076, 29, 20, 20, -1, 27, 0, 0, 0x00 }, // v
{ 17156, 0x0077, 33, 20, 20, 0, 33, 0, 0, 0x00 }, // w
{ 17496, 0x0078, 29, 20, 20, 0, 28, 0, 0, 0x00 }, // x
{ 17796, 0x0079, 30, 20, 20, 0, 31, 0, 0, 0x00 }, // y
{ 18096, 0x007A, 33, 20, 20, 0, 32, 0, 0, 0x00 } // z
};
// CHINN____30_4bpp
@ -43,6 +86,6 @@ touchgfx::GeneratedFont& getFont_CHINN____30_4bpp();
touchgfx::GeneratedFont& getFont_CHINN____30_4bpp()
{
static touchgfx::GeneratedFont CHINN____30_4bpp(glyphs_CHINN____30_4bpp, 22, 30, 30, 0, 0, 4, 1, 1, 1, unicodes_CHINN____30_4bpp, kerning_CHINN____30_4bpp, 63, 0, 0, 0);
static touchgfx::GeneratedFont CHINN____30_4bpp(glyphs_CHINN____30_4bpp, 65, 30, 30, 0, 0, 4, 1, 1, 1, unicodes_CHINN____30_4bpp, kerning_CHINN____30_4bpp, 63, 0, 0, 0);
return CHINN____30_4bpp;
}

View File

@ -32,6 +32,9 @@ public:
// DebugView
void gotoDebugViewScreenNoTransition();
// VehicleConfig
void gotoVehicleConfigScreenNoTransition();
protected:
touchgfx::Callback<FrontendApplicationBase> transitionCallback;
FrontendHeap& frontendHeap;
@ -48,6 +51,9 @@ protected:
// DebugView
void gotoDebugViewScreenNoTransitionImpl();
// VehicleConfig
void gotoVehicleConfigScreenNoTransitionImpl();
};
#endif // FRONTENDAPPLICATIONBASE_HPP

View File

@ -20,6 +20,8 @@
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/debugview_screen/DebugViewView.hpp>
#include <gui/debugview_screen/DebugViewPresenter.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigView.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
/**
@ -46,7 +48,8 @@ public:
touchgfx::meta::TypeList< AMIView,
touchgfx::meta::TypeList< DriverViewView,
touchgfx::meta::TypeList< DebugViewView,
touchgfx::meta::Nil > > >
touchgfx::meta::TypeList< VehicleConfigView,
touchgfx::meta::Nil > > > >
> GeneratedViewTypes;
/**
@ -62,7 +65,8 @@ public:
touchgfx::meta::TypeList< AMIPresenter,
touchgfx::meta::TypeList< DriverViewPresenter,
touchgfx::meta::TypeList< DebugViewPresenter,
touchgfx::meta::Nil > > >
touchgfx::meta::TypeList< VehicleConfigPresenter,
touchgfx::meta::Nil > > > >
> GeneratedPresenterTypes;
/**

View File

@ -0,0 +1,41 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef CONFIGITEMBASE_HPP
#define CONFIGITEMBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <touchgfx/widgets/canvas/Line.hpp>
#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
class ConfigItemBase : public touchgfx::Container
{
public:
ConfigItemBase();
virtual ~ConfigItemBase();
virtual void initialize();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box bg;
touchgfx::TextAreaWithOneWildcard title;
touchgfx::Line line1;
touchgfx::PainterRGB565 line1Painter;
touchgfx::TextAreaWithOneWildcard value;
touchgfx::Line line2;
touchgfx::PainterRGB565 line2Painter;
private:
};
#endif // CONFIGITEMBASE_HPP

View File

@ -0,0 +1,89 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef VEHICLECONFIGVIEWBASE_HPP
#define VEHICLECONFIGVIEWBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/TextArea.hpp>
#include <touchgfx/containers/scrollers/ScrollWheel.hpp>
#include <gui/containers/ConfigItem.hpp>
#include <touchgfx/widgets/canvas/Line.hpp>
#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
class VehicleConfigViewBase : public touchgfx::View<VehicleConfigPresenter>
{
public:
VehicleConfigViewBase();
virtual ~VehicleConfigViewBase();
virtual void setupScreen();
virtual void paramsUpdateItem(ConfigItem& item, int16_t itemIndex)
{
// Override and implement this function in VehicleConfig
}
virtual void handleKeyEvent(uint8_t key);
/*
* Virtual Action Handlers
*/
virtual void selectPrevParam()
{
// Override and implement this function in VehicleConfig
}
virtual void selectNextParam()
{
// Override and implement this function in VehicleConfig
}
virtual void decParam()
{
// Override and implement this function in VehicleConfig
}
virtual void incParam()
{
// Override and implement this function in VehicleConfig
}
virtual void confirmParam()
{
// Override and implement this function in VehicleConfig
}
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box __background;
touchgfx::TextArea title;
touchgfx::ScrollWheel params;
touchgfx::DrawableListItems<ConfigItem, 6> paramsListItems;
touchgfx::Line line1;
touchgfx::PainterRGB565 line1Painter;
private:
/*
* Canvas Buffer Size
*/
static const uint32_t CANVAS_BUFFER_SIZE = 7200;
uint8_t canvasBuffer[CANVAS_BUFFER_SIZE];
/*
* Callback Declarations
*/
touchgfx::Callback<VehicleConfigViewBase, touchgfx::DrawableListItemsInterface*, int16_t, int16_t> updateItemCallback;
/*
* Callback Handler Declarations
*/
void updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex);
};
#endif // VEHICLECONFIGVIEWBASE_HPP

View File

@ -17,6 +17,8 @@
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui/debugview_screen/DebugViewView.hpp>
#include <gui/debugview_screen/DebugViewPresenter.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigView.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
using namespace touchgfx;
@ -86,3 +88,16 @@ void FrontendApplicationBase::gotoDebugViewScreenNoTransitionImpl()
{
touchgfx::makeTransition<DebugViewView, DebugViewPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}
// VehicleConfig
void FrontendApplicationBase::gotoVehicleConfigScreenNoTransition()
{
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoVehicleConfigScreenNoTransitionImpl);
pendingScreenTransitionCallback = &transitionCallback;
}
void FrontendApplicationBase::gotoVehicleConfigScreenNoTransitionImpl()
{
touchgfx::makeTransition<VehicleConfigView, VehicleConfigPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}

View File

@ -0,0 +1,55 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/containers/ConfigItemBase.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
ConfigItemBase::ConfigItemBase()
{
setWidth(450);
setHeight(50);
bg.setPosition(0, 0, 450, 50);
bg.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(bg);
title.setPosition(0, 6, 200, 37);
title.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
title.setLinespacing(0);
title.setTypedText(touchgfx::TypedText(T___SINGLEUSE_YTAB));
add(title);
line1.setPosition(200, 0, 2, 50);
line1Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line1.setPainter(line1Painter);
line1.setStart(0, 0);
line1.setEnd(0, 50);
line1.setLineWidth(10);
line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line1);
value.setPosition(207, -7, 243, 55);
value.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
value.setLinespacing(0);
value.setTypedText(touchgfx::TypedText(T___SINGLEUSE_4E84));
add(value);
line2.setPosition(0, 48, 450, 2);
line2Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line2.setPainter(line2Painter);
line2.setStart(0, 0);
line2.setEnd(450, 0);
line2.setLineWidth(10);
line2.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line2);
}
ConfigItemBase::~ConfigItemBase()
{
}
void ConfigItemBase::initialize()
{
}

View File

@ -126,4 +126,13 @@ void MissionSelectViewBase::handleKeyEvent(uint8_t key)
application().gotoDebugViewScreenNoTransition();
}
if(251 == key)
{
//DummyChangeConfigView
//When hardware button 251 clicked change screen to VehicleConfig
//Go to VehicleConfig with no screen transition
application().gotoVehicleConfigScreenNoTransition();
}
}

View File

@ -0,0 +1,117 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/vehicleconfig_screen/VehicleConfigViewBase.hpp>
#include <touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
VehicleConfigViewBase::VehicleConfigViewBase() :
updateItemCallback(this, &VehicleConfigViewBase::updateItemCallbackHandler)
{
touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);
__background.setPosition(0, 0, 480, 320);
__background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(__background);
title.setPosition(15, 15, 450, 37);
title.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
title.setLinespacing(0);
title.setTypedText(touchgfx::TypedText(T___SINGLEUSE_RWCE));
add(title);
params.setPosition(15, 60, 450, 245);
params.setHorizontal(false);
params.setCircular(false);
params.setEasingEquation(touchgfx::EasingEquations::cubicEaseOut);
params.setSwipeAcceleration(10);
params.setDragAcceleration(10);
params.setNumberOfItems(1);
params.setSelectedItemOffset(0);
params.setDrawableSize(50, 0);
params.setDrawables(paramsListItems, updateItemCallback);
params.animateToItem(0, 0);
add(params);
line1.setPosition(15, 58, 450, 2);
line1Painter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
line1.setPainter(line1Painter);
line1.setStart(0, 0);
line1.setEnd(450, 0);
line1.setLineWidth(10);
line1.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
add(line1);
}
VehicleConfigViewBase::~VehicleConfigViewBase()
{
touchgfx::CanvasWidgetRenderer::resetBuffer();
}
void VehicleConfigViewBase::setupScreen()
{
params.initialize();
for (int i = 0; i < paramsListItems.getNumberOfDrawables(); i++)
{
paramsListItems[i].initialize();
}
}
void VehicleConfigViewBase::handleKeyEvent(uint8_t key)
{
if(22 == key)
{
//SelectPreviousParam
//When hardware button 22 clicked call virtual function
//Call selectPrevParam
selectPrevParam();
}
if(21 == key)
{
//SelectNextParam
//When hardware button 21 clicked call virtual function
//Call selectNextParam
selectNextParam();
}
if(24 == key)
{
//DecreaseParam
//When hardware button 24 clicked call virtual function
//Call decParam
decParam();
}
if(23 == key)
{
//IncreaseParam
//When hardware button 23 clicked call virtual function
//Call incParam
incParam();
}
if(6 == key)
{
//ConfirmParam
//When hardware button 6 clicked call virtual function
//Call confirmParam
confirmParam();
}
}
void VehicleConfigViewBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex)
{
if (items == &paramsListItems)
{
touchgfx::Drawable* d = items->getDrawable(containerIndex);
ConfigItem* cc = (ConfigItem*)d;
paramsUpdateItem(*cc, itemIndex);
}
}

View File

@ -1 +1 @@
{"remap":"yes","language":"GB","language_index":0,"indices":[["146","T_DEBUGVIEWFIELD_TITLE"],["146","T_DRIVERVIEWFIELD_TITLE"],["256","T_FIELD_BBAL"],["219","T_FIELD_TSVOLTVEH"],["212","T_FIELD_TSVOLTBAT"],["232","T_FIELD_LVSOC"],["250","T_FIELD_TSSOC"],["266","T_FIELD_MAXCELLTEMP"],["271","T_FIELD_TIREFL"],["276","T_FIELD_TIREFR"],["281","T_FIELD_TIRERL"],["286","T_FIELD_TIRERR"],["261","T_FIELD_LAPCOUNT"],["156","T_FIELD_INICHKSTATE"],["226","T_FIELD_ERR"],["300","T_FIELD_SDC"],["172","T_FIELD_INVRREADY"],["164","T_FIELD_INVLREADY"],["188","T_FIELD_R2DPROGRESS"],["180","T_FIELD_ACTIVEMISSION"],["148","T_FIELD_ASSTATE"],["204","T_FIELD_TSSTATE"],["146","T_NUMBERWILDCARD"],["146","T_DEFAULTWILDCARD_CENTERED"],["146","T_DEFAULTWILDCARD_RIGHTALIGNED"],["296","T_FIELD_TSCURRENT"],["291","T_FIELD_MINCELLVOLT"],["238","T_FIELD_SPEED"],["95","T_INSPECTION_HUGE"],["137","T_EBS_HUGE"],["106","T_TRACKDRIVE_HUGE"],["117","T_AUTOX_HUGE"],["196","T_SKIDPAD_HUGE"],["82","T_ACCEL_HUGE"],["34","T_INVALID_HUGE"],["67","T_MANUAL"],["95","T_INSPECTION"],["137","T_EBS"],["106","T_TRACKDRIVE"],["117","T_AUTOX"],["196","T_SKIDPAD"],["82","T_ACCEL"],["127","T___SINGLEUSE_HMH2"],["304","T___SINGLEUSE_4OBM"],["297","T___SINGLEUSE_PHFD"],["244","T___SINGLEUSE_H6UX"],["146","T___SINGLEUSE_20H3"],["17","T___SINGLEUSE_SDGP"],["51","T___SINGLEUSE_M5X7"],["0","T___SINGLEUSE_6GPV"]]}
{"remap":"yes","language":"GB","language_index":0,"indices":[["157","T_DEBUGVIEWFIELD_TITLE"],["157","T_DRIVERVIEWFIELD_TITLE"],["267","T_FIELD_BBAL"],["230","T_FIELD_TSVOLTVEH"],["223","T_FIELD_TSVOLTBAT"],["243","T_FIELD_LVSOC"],["261","T_FIELD_TSSOC"],["277","T_FIELD_MAXCELLTEMP"],["282","T_FIELD_TIREFL"],["287","T_FIELD_TIREFR"],["292","T_FIELD_TIRERL"],["297","T_FIELD_TIRERR"],["272","T_FIELD_LAPCOUNT"],["167","T_FIELD_INICHKSTATE"],["237","T_FIELD_ERR"],["311","T_FIELD_SDC"],["183","T_FIELD_INVRREADY"],["175","T_FIELD_INVLREADY"],["199","T_FIELD_R2DPROGRESS"],["191","T_FIELD_ACTIVEMISSION"],["159","T_FIELD_ASSTATE"],["215","T_FIELD_TSSTATE"],["157","T_NUMBERWILDCARD"],["157","T_DEFAULTWILDCARD_CENTERED"],["157","T_DEFAULTWILDCARD_RIGHTALIGNED"],["307","T_FIELD_TSCURRENT"],["302","T_FIELD_MINCELLVOLT"],["249","T_FIELD_SPEED"],["95","T_INSPECTION_HUGE"],["148","T_EBS_HUGE"],["117","T_TRACKDRIVE_HUGE"],["128","T_AUTOX_HUGE"],["207","T_SKIDPAD_HUGE"],["82","T_ACCEL_HUGE"],["34","T_INVALID_HUGE"],["67","T_MANUAL"],["95","T_INSPECTION"],["148","T_EBS"],["117","T_TRACKDRIVE"],["128","T_AUTOX"],["207","T_SKIDPAD"],["82","T_ACCEL"],["157","T___SINGLEUSE_4E84"],["157","T___SINGLEUSE_YTAB"],["106","T___SINGLEUSE_RWCE"],["138","T___SINGLEUSE_HMH2"],["315","T___SINGLEUSE_4OBM"],["308","T___SINGLEUSE_PHFD"],["255","T___SINGLEUSE_H6UX"],["157","T___SINGLEUSE_20H3"],["17","T___SINGLEUSE_SDGP"],["51","T___SINGLEUSE_M5X7"],["0","T___SINGLEUSE_6GPV"]]}

View File

@ -1 +1 @@
{"languages":["GB"],"textids":["T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_HMH2","T___SINGLEUSE_4OBM","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_SDGP","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}
{"languages":["GB"],"textids":["T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_4E84","T___SINGLEUSE_YTAB","T___SINGLEUSE_RWCE","T___SINGLEUSE_HMH2","T___SINGLEUSE_4OBM","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_SDGP","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}

View File

@ -1 +1 @@
{"remap":"yes","languages":["Gb"],"characters":[67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,67,117,114,114,101,110,116,32,77,105,115,115,105,111,110,58,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,65,99,99,101,108,101,114,97,116,105,111,110,0,73,110,115,112,101,99,116,105,111,110,0,84,114,97,99,107,100,114,105,118,101,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,69,66,83,32,84,101,115,116,0,2,0,65,83,83,84,65,84,69,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,69,82,82,79,82,0,76,86,83,79,67,0,83,80,69,69,68,0,84,73,82,69,83,0,84,83,83,79,67,0,66,66,65,76,0,76,65,80,83,0,84,77,65,88,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,73,84,83,0,83,68,67,0,76,86,0]}
{"remap":"yes","languages":["Gb"],"characters":[67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,67,117,114,114,101,110,116,32,77,105,115,115,105,111,110,58,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,65,99,99,101,108,101,114,97,116,105,111,110,0,73,110,115,112,101,99,116,105,111,110,0,80,65,82,65,77,69,84,69,82,83,0,84,114,97,99,107,100,114,105,118,101,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,69,66,83,32,84,101,115,116,0,2,0,65,83,83,84,65,84,69,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,69,82,82,79,82,0,76,86,83,79,67,0,83,80,69,69,68,0,84,73,82,69,83,0,84,83,83,79,67,0,66,66,65,76,0,76,65,80,83,0,84,77,65,88,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,73,84,83,0,83,68,67,0,76,86,0]}

View File

@ -1 +1 @@
{"databases":{"DEFAULT":[[5,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["DEFAULT"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4,"getFont_verdanab_20_4bpp":5},"generate_font_format":"0"}
{"databases":{"DEFAULT":[[5,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["DEFAULT"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4,"getFont_verdanab_20_4bpp":5},"generate_font_format":"0"}

View File

@ -54,6 +54,9 @@ enum TEXTS
T_AUTOX,
T_SKIDPAD,
T_ACCEL,
T___SINGLEUSE_4E84,
T___SINGLEUSE_YTAB,
T___SINGLEUSE_RWCE,
T___SINGLEUSE_HMH2,
T___SINGLEUSE_4OBM,
T___SINGLEUSE_PHFD,

View File

@ -10,53 +10,56 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
// Remap all strings
TEXT_LOCATION_FLASH_PRAGMA
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
146, // T_DEBUGVIEWFIELD_TITLE: "<>"
146, // T_DRIVERVIEWFIELD_TITLE: "<>"
256, // T_FIELD_BBAL: "BBAL"
219, // T_FIELD_TSVOLTVEH: "TSVVEH"
212, // T_FIELD_TSVOLTBAT: "TSVBAT"
232, // T_FIELD_LVSOC: "LVSOC"
250, // T_FIELD_TSSOC: "TSSOC"
266, // T_FIELD_MAXCELLTEMP: "TMAX"
271, // T_FIELD_TIREFL: "TTFL"
276, // T_FIELD_TIREFR: "TTFR"
281, // T_FIELD_TIRERL: "TTRL"
286, // T_FIELD_TIRERR: "TTRR"
261, // T_FIELD_LAPCOUNT: "LAPS"
156, // T_FIELD_INICHKSTATE: "ICSTATE"
226, // T_FIELD_ERR: "ERROR"
300, // T_FIELD_SDC: "SDC"
172, // T_FIELD_INVRREADY: "INVRRDY"
164, // T_FIELD_INVLREADY: "INVLRDY"
188, // T_FIELD_R2DPROGRESS: "R2DPROG"
180, // T_FIELD_ACTIVEMISSION: "MISSION"
148, // T_FIELD_ASSTATE: "ASSTATE"
204, // T_FIELD_TSSTATE: "TSSTATE"
146, // T_NUMBERWILDCARD: "<>"
146, // T_DEFAULTWILDCARD_CENTERED: "<>"
146, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
296, // T_FIELD_TSCURRENT: "ITS"
291, // T_FIELD_MINCELLVOLT: "VMIN"
238, // T_FIELD_SPEED: "SPEED"
157, // T_DEBUGVIEWFIELD_TITLE: "<>"
157, // T_DRIVERVIEWFIELD_TITLE: "<>"
267, // T_FIELD_BBAL: "BBAL"
230, // T_FIELD_TSVOLTVEH: "TSVVEH"
223, // T_FIELD_TSVOLTBAT: "TSVBAT"
243, // T_FIELD_LVSOC: "LVSOC"
261, // T_FIELD_TSSOC: "TSSOC"
277, // T_FIELD_MAXCELLTEMP: "TMAX"
282, // T_FIELD_TIREFL: "TTFL"
287, // T_FIELD_TIREFR: "TTFR"
292, // T_FIELD_TIRERL: "TTRL"
297, // T_FIELD_TIRERR: "TTRR"
272, // T_FIELD_LAPCOUNT: "LAPS"
167, // T_FIELD_INICHKSTATE: "ICSTATE"
237, // T_FIELD_ERR: "ERROR"
311, // T_FIELD_SDC: "SDC"
183, // T_FIELD_INVRREADY: "INVRRDY"
175, // T_FIELD_INVLREADY: "INVLRDY"
199, // T_FIELD_R2DPROGRESS: "R2DPROG"
191, // T_FIELD_ACTIVEMISSION: "MISSION"
159, // T_FIELD_ASSTATE: "ASSTATE"
215, // T_FIELD_TSSTATE: "TSSTATE"
157, // T_NUMBERWILDCARD: "<>"
157, // T_DEFAULTWILDCARD_CENTERED: "<>"
157, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
307, // T_FIELD_TSCURRENT: "ITS"
302, // T_FIELD_MINCELLVOLT: "VMIN"
249, // T_FIELD_SPEED: "SPEED"
95, // T_INSPECTION_HUGE: "Inspection"
137, // T_EBS_HUGE: "EBS Test"
106, // T_TRACKDRIVE_HUGE: "Trackdrive"
117, // T_AUTOX_HUGE: "Autocross"
196, // T_SKIDPAD_HUGE: "Skidpad"
148, // T_EBS_HUGE: "EBS Test"
117, // T_TRACKDRIVE_HUGE: "Trackdrive"
128, // T_AUTOX_HUGE: "Autocross"
207, // T_SKIDPAD_HUGE: "Skidpad"
82, // T_ACCEL_HUGE: "Acceleration"
34, // T_INVALID_HUGE: "Invalid Mission!"
67, // T_MANUAL: "Manual Driving"
95, // T_INSPECTION: "Inspection"
137, // T_EBS: "EBS Test"
106, // T_TRACKDRIVE: "Trackdrive"
117, // T_AUTOX: "Autocross"
196, // T_SKIDPAD: "Skidpad"
148, // T_EBS: "EBS Test"
117, // T_TRACKDRIVE: "Trackdrive"
128, // T_AUTOX: "Autocross"
207, // T_SKIDPAD: "Skidpad"
82, // T_ACCEL: "Acceleration"
127, // T___SINGLEUSE_HMH2: "PRECHARGE"
304, // T___SINGLEUSE_4OBM: "LV"
297, // T___SINGLEUSE_PHFD: "TS"
244, // T___SINGLEUSE_H6UX: "TIRES"
146, // T___SINGLEUSE_20H3: "<>"
157, // T___SINGLEUSE_4E84: "<>"
157, // T___SINGLEUSE_YTAB: "<>"
106, // T___SINGLEUSE_RWCE: "PARAMETERS"
138, // T___SINGLEUSE_HMH2: "PRECHARGE"
315, // T___SINGLEUSE_4OBM: "LV"
308, // T___SINGLEUSE_PHFD: "TS"
255, // T___SINGLEUSE_H6UX: "TIRES"
157, // T___SINGLEUSE_20H3: "<>"
17, // T___SINGLEUSE_SDGP: "Current Mission:"
51, // T___SINGLEUSE_M5X7: "Invalid Mission"
0 // T___SINGLEUSE_6GPV: "Choose a mission"

View File

@ -67,37 +67,38 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA
0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x44, 0x72, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x0, // @67 "Manual Driving"
0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @82 "Acceleration"
0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @95 "Inspection"
0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @106 "Trackdrive"
0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @117 "Autocross"
0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @127 "PRECHARGE"
0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @137 "EBS Test"
0x2, 0x0, // @146 "<>"
0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @148 "ASSTATE"
0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @156 "ICSTATE"
0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @164 "INVLRDY"
0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @172 "INVRRDY"
0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @180 "MISSION"
0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @188 "R2DPROG"
0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @196 "Skidpad"
0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @204 "TSSTATE"
0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @212 "TSVBAT"
0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @219 "TSVVEH"
0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @226 "ERROR"
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @232 "LVSOC"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @238 "SPEED"
0x54, 0x49, 0x52, 0x45, 0x53, 0x0, // @244 "TIRES"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @250 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @256 "BBAL"
0x4c, 0x41, 0x50, 0x53, 0x0, // @261 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @266 "TMAX"
0x54, 0x54, 0x46, 0x4c, 0x0, // @271 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @276 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @281 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @286 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @291 "VMIN"
0x49, 0x54, 0x53, 0x0, // @296 "ITS"
0x53, 0x44, 0x43, 0x0, // @300 "SDC"
0x4c, 0x56, 0x0 // @304 "LV"
0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x0, // @106 "PARAMETERS"
0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @117 "Trackdrive"
0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @128 "Autocross"
0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @138 "PRECHARGE"
0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @148 "EBS Test"
0x2, 0x0, // @157 "<>"
0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @159 "ASSTATE"
0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @167 "ICSTATE"
0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @175 "INVLRDY"
0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @183 "INVRRDY"
0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @191 "MISSION"
0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @199 "R2DPROG"
0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @207 "Skidpad"
0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @215 "TSSTATE"
0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @223 "TSVBAT"
0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @230 "TSVVEH"
0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @237 "ERROR"
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @243 "LVSOC"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @249 "SPEED"
0x54, 0x49, 0x52, 0x45, 0x53, 0x0, // @255 "TIRES"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @261 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @267 "BBAL"
0x4c, 0x41, 0x50, 0x53, 0x0, // @272 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @277 "TMAX"
0x54, 0x54, 0x46, 0x4c, 0x0, // @282 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @287 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @292 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @297 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @302 "VMIN"
0x49, 0x54, 0x53, 0x0, // @307 "ITS"
0x53, 0x44, 0x43, 0x0, // @311 "SDC"
0x4c, 0x56, 0x0 // @315 "LV"
};
TEXT_LOCATION_FLASH_PRAGMA

View File

@ -68,6 +68,9 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },

View File

@ -20,6 +20,8 @@ CountedEnum(DataFieldType, size_t, DF_TSState, DF_ASState, DF_ActiveMission,
DF_TireTempRL, DF_TireTempRR, DF_MinCellVolt, DF_MaxCellTemp,
DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh,
DF_Speed, DF_BBal);
CountedEnum(ParamFieldType, size_t, PF_BBAL, PF_TC1, PF_TC2, PF_TORQUEMAP,
PF_TEST1, PF_TEST2, PF_TEST3, PF_TEST4);
enum class NamedFieldKind { Float, Bool, Text, Int };
@ -33,6 +35,7 @@ struct NamedFieldDescription {
};
extern NamedFieldDescription dataFieldDescs[];
extern NamedFieldDescription paramFieldDescs[];
template <class T> class NamedField {
public:
@ -40,7 +43,7 @@ public:
virtual ~NamedField() {}
void setType(T type);
T getType();
const T &getType();
virtual void updateValue();

View File

@ -0,0 +1,23 @@
#ifndef CONFIGITEM_HPP
#define CONFIGITEM_HPP
#include "gui/common/NamedField.hpp"
#include <gui_generated/containers/ConfigItemBase.hpp>
class ConfigItem : public ConfigItemBase, public NamedField<ParamFieldType> {
public:
ConfigItem();
virtual ~ConfigItem() {}
virtual void initialize() override;
void setSelected(int selected);
protected:
private:
virtual void typeUpdated() override;
virtual void titleBufferUpdated() override;
virtual void valueBufferUpdated() override;
};
#endif // CONFIGITEM_HPP

View File

@ -0,0 +1,36 @@
#ifndef VEHICLECONFIGPRESENTER_HPP
#define VEHICLECONFIGPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class VehicleConfigView;
class VehicleConfigPresenter : public touchgfx::Presenter, public ModelListener
{
public:
VehicleConfigPresenter(VehicleConfigView& v);
/**
* The activate function is called automatically when this screen is "switched in"
* (ie. made active). Initialization logic can be placed here.
*/
virtual void activate();
/**
* The deactivate function is called automatically when this screen is "switched out"
* (ie. made inactive). Teardown functionality can be placed here.
*/
virtual void deactivate();
virtual ~VehicleConfigPresenter() {};
private:
VehicleConfigPresenter();
VehicleConfigView& view;
};
#endif // VEHICLECONFIGPRESENTER_HPP

View File

@ -0,0 +1,29 @@
#ifndef VEHICLECONFIGVIEW_HPP
#define VEHICLECONFIGVIEW_HPP
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui_generated/vehicleconfig_screen/VehicleConfigViewBase.hpp>
class VehicleConfigView : public VehicleConfigViewBase {
public:
VehicleConfigView();
virtual ~VehicleConfigView() {}
virtual void setupScreen() override;
virtual void tearDownScreen() override;
void paramsUpdateItem(ConfigItem &item, int16_t itemIndex) override;
void selectPrevParam() override;
void selectNextParam() override;
void decParam() override;
void incParam() override;
void confirmParam() override;
protected:
private:
int selectedParam;
void updateSelectedParam(int select);
};
#endif // VEHICLECONFIGVIEW_HPP

View File

@ -1,6 +1,7 @@
#include "gui/common/NamedField.hpp"
#include "texts/TextKeysAndLanguages.hpp"
#include "params.h"
#include "touchgfx/Unicode.hpp"
#include "vehicle.h"
@ -275,6 +276,24 @@ static_assert(sizeof(dataFieldDescs) / sizeof(dataFieldDescs[0]) ==
DataFieldType_COUNT,
"Incorrect number of data field descriptions");
#define PARAM_FIELD(FIELD) []() { return (void *)&params.FIELD; }
NamedFieldDescription paramFieldDescs[] = {
[PF_BBAL] = {NamedFieldKind::Float, "BBAL", 2, 1, PARAM_FIELD(bbal)},
[PF_TC1] = {NamedFieldKind::Int, "TC1", 2, 0, PARAM_FIELD(tc1)},
[PF_TC2] = {NamedFieldKind::Int, "TC2", 2, 0, PARAM_FIELD(tc2)},
[PF_TORQUEMAP] = {NamedFieldKind::Int, "MAP", 2, 0,
PARAM_FIELD(torque_map)},
[PF_TEST1] = {NamedFieldKind::Int, "TEST1", 2, 0, PARAM_FIELD(test[0])},
[PF_TEST2] = {NamedFieldKind::Int, "TEST2", 2, 0, PARAM_FIELD(test[1])},
[PF_TEST3] = {NamedFieldKind::Int, "TEST3", 2, 0, PARAM_FIELD(test[2])},
[PF_TEST4] = {NamedFieldKind::Int, "TEST4", 2, 0, PARAM_FIELD(test[3])},
};
static_assert(sizeof(paramFieldDescs) / sizeof(paramFieldDescs[0]) ==
ParamFieldType_COUNT,
"Incorrect number of param field descriptions");
template <class T>
NamedField<T>::NamedField(const NamedFieldDescription *fieldDescs)
: fieldDescs{fieldDescs} {}
@ -291,6 +310,8 @@ template <class T> void NamedField<T>::setType(T type) {
updateValue();
}
template <class T> const T &NamedField<T>::getType() { return type; }
template <class T> void NamedField<T>::updateValue() {
void *val = desc->getValue();
switch (desc->kind) {
@ -362,3 +383,4 @@ template <class T> void NamedField<T>::updateValueBuffer() {
}
template class NamedField<DataFieldType>;
template class NamedField<ParamFieldType>;

View File

@ -0,0 +1,38 @@
#include <gui/containers/ConfigItem.hpp>
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Color.hpp"
ConfigItem::ConfigItem() : NamedField(paramFieldDescs) {}
void ConfigItem::initialize() { ConfigItemBase::initialize(); }
void ConfigItem::setSelected(int selected) {
uint8_t v = selected ? 0x44 : 0x00;
bg.setColor(touchgfx::Color::getColorFromRGB(v, v, v));
bg.invalidate();
}
void ConfigItem::typeUpdated() {
switch (desc->kind) {
case NamedFieldKind::Float:
case NamedFieldKind::Int:
value.setTypedText(T_NUMBERWILDCARD);
break;
case NamedFieldKind::Bool:
case NamedFieldKind::Text:
value.setTypedText(T_DEFAULTWILDCARD_CENTERED);
break;
}
value.invalidate();
}
void ConfigItem::titleBufferUpdated() {
title.setWildcard(titleBuffer);
title.invalidate();
}
void ConfigItem::valueBufferUpdated() {
value.setWildcard(valueBuffer);
value.invalidate();
}

View File

@ -0,0 +1,18 @@
#include <gui/vehicleconfig_screen/VehicleConfigView.hpp>
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
VehicleConfigPresenter::VehicleConfigPresenter(VehicleConfigView& v)
: view(v)
{
}
void VehicleConfigPresenter::activate()
{
}
void VehicleConfigPresenter::deactivate()
{
}

View File

@ -0,0 +1,97 @@
#include "gui/common/NamedField.hpp"
#include "gui/containers/ConfigItem.hpp"
#include "main.h"
#include <cstdint>
#include <gui/vehicleconfig_screen/VehicleConfigView.hpp>
VehicleConfigView::VehicleConfigView() : selectedParam{0} {}
void VehicleConfigView::setupScreen() {
VehicleConfigViewBase::setupScreen();
params.setNumberOfItems(ParamFieldType_COUNT);
}
void VehicleConfigView::tearDownScreen() {
VehicleConfigViewBase::tearDownScreen();
}
void VehicleConfigView::paramsUpdateItem(ConfigItem &item, int16_t itemIndex) {
item.setType(static_cast<ParamFieldType>(itemIndex));
item.setSelected(itemIndex == selectedParam);
}
void VehicleConfigView::selectPrevParam() {
if (selectedParam == 0) {
updateSelectedParam(ParamFieldType_COUNT - 1);
} else {
updateSelectedParam(selectedParam - 1);
}
}
void VehicleConfigView::selectNextParam() {
updateSelectedParam((selectedParam + 1) % ParamFieldType_COUNT);
}
void VehicleConfigView::decParam() {
// TODO: How to handle this for different parameter types?
}
void VehicleConfigView::incParam() {
// TODO: How to handle this for different parameter types?
}
void VehicleConfigView::confirmParam() {
// TODO: How to handle this for different parameter types?
}
void VehicleConfigView::updateSelectedParam(int select) {
int previousSelected = selectedParam;
selectedParam = select;
params.itemChanged(previousSelected);
params.itemChanged(selectedParam);
ConfigItem *firstItem = nullptr;
int16_t firstY = INT16_MAX;
ConfigItem *lastItem = nullptr;
int16_t lastY = INT16_MIN;
for (int16_t i = 0; i < paramsListItems.getNumberOfDrawables(); ++i) {
ConfigItem *item =
static_cast<ConfigItem *>(paramsListItems.getDrawable(i));
int16_t y = item->getY();
if (y + item->getHeight() > params.getHeight() || y < 0) {
continue;
}
if (y < firstY) {
firstY = y;
firstItem = item;
}
if (y > lastY) {
lastY = y;
lastItem = item;
}
}
int16_t firstVisible = firstItem->getType();
int16_t lastVisible = lastItem->getType();
if (lastVisible < firstVisible) {
Error_Handler();
}
int16_t numVisible = lastVisible - firstVisible + 1;
if (selectedParam >= firstVisible && selectedParam <= lastVisible) {
return;
}
int16_t firstWanted;
if (selectedParam == 0 && previousSelected == ParamFieldType_COUNT - 1) {
firstWanted = 0;
} else if (selectedParam > previousSelected) {
firstWanted = selectedParam - numVisible + 1;
} else {
firstWanted = selectedParam;
}
if (firstWanted < 0) {
firstWanted = 0;
} else if (firstWanted > ParamFieldType_COUNT - 1) {
firstWanted = ParamFieldType_COUNT - 1;
}
params.animateToItem(firstWanted, 0);
}

View File

@ -46,6 +46,11 @@
<ClCompile Include="..\..\gui\src\containers\DebugViewLine.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\containers\DebugViewLineBase.cpp"/>
<ClCompile Include="..\..\gui\src\common\NamedField.cpp"/>
<ClCompile Include="..\..\gui\src\containers\ConfigItem.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\containers\ConfigItemBase.cpp"/>
<ClCompile Include="..\..\gui\src\vehicleconfig_screen\VehicleConfigPresenter.cpp"/>
<ClCompile Include="..\..\gui\src\vehicleconfig_screen\VehicleConfigView.cpp"/>
<ClCompile Include="..\..\generated\gui_generated\src\vehicleconfig_screen\VehicleConfigViewBase.cpp"/>
</ItemGroup>
<ItemGroup>
<None Include="$(ApplicationRoot)\assets\texts\texts.xml"/>
@ -221,6 +226,11 @@
<ClInclude Include="..\..\gui\include\gui\containers\DebugViewLine.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\DebugViewLineBase.hpp"/>
<ClInclude Include="..\..\gui\include\gui\common\NamedField.hpp"/>
<ClInclude Include="..\..\gui\include\gui\containers\ConfigItem.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\ConfigItemBase.hpp"/>
<ClInclude Include="..\..\gui\include\gui\vehicleconfig_screen\VehicleConfigPresenter.hpp"/>
<ClInclude Include="..\..\gui\include\gui\vehicleconfig_screen\VehicleConfigView.hpp"/>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\vehicleconfig_screen\VehicleConfigViewBase.hpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc"/>

View File

@ -232,6 +232,18 @@
<Filter Include="Header Files\generated\gui_generated\debugview_screen">
<UniqueIdentifier>3CC29751-0B47-BADD-4836-593204B16ED3</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\gui\vehicleconfig_screen">
<UniqueIdentifier>309D4F5D-72CA-605A-7CE4-08A65F5822C7</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\gui\vehicleconfig_screen">
<UniqueIdentifier>A59556B2-3270-CA47-8927-445A1717CFCC</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\generated\gui_generated\vehicleconfig_screen">
<UniqueIdentifier>553B9DD0-2DF3-9B42-7F64-31A9066DF91B</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\generated\gui_generated\vehicleconfig_screen">
<UniqueIdentifier>1C93FF22-11DF-D6C9-DD1D-ABE2FEAA0A55</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\driver\touch\SDL2TouchController.cpp">
@ -339,6 +351,21 @@
<ClCompile Include="..\..\gui\src\common\NamedField.cpp">
<Filter>Source Files\gui\common</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\containers\ConfigItem.cpp">
<Filter>Source Files\gui\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\generated\gui_generated\src\containers\ConfigItemBase.cpp">
<Filter>Source Files\generated\gui_generated\containers</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\vehicleconfig_screen\VehicleConfigPresenter.cpp">
<Filter>Source Files\gui\vehicleconfig_screen</Filter>
</ClCompile>
<ClCompile Include="..\..\gui\src\vehicleconfig_screen\VehicleConfigView.cpp">
<Filter>Source Files\gui\vehicleconfig_screen</Filter>
</ClCompile>
<ClCompile Include="..\..\generated\gui_generated\src\vehicleconfig_screen\VehicleConfigViewBase.cpp">
<Filter>Source Files\generated\gui_generated\vehicleconfig_screen</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="$(ApplicationRoot)\assets\texts\texts.xml">
@ -856,6 +883,21 @@
<ClInclude Include="..\..\gui\include\gui\common\NamedField.hpp">
<Filter>Header Files\gui\common</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\containers\ConfigItem.hpp">
<Filter>Header Files\gui\containers</Filter>
</ClInclude>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\containers\ConfigItemBase.hpp">
<Filter>Header Files\generated\gui_generated\containers</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\vehicleconfig_screen\VehicleConfigPresenter.hpp">
<Filter>Header Files\gui\vehicleconfig_screen</Filter>
</ClInclude>
<ClInclude Include="..\..\gui\include\gui\vehicleconfig_screen\VehicleConfigView.hpp">
<Filter>Header Files\gui\vehicleconfig_screen</Filter>
</ClInclude>
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\vehicleconfig_screen\VehicleConfigViewBase.hpp">
<Filter>Header Files\generated\gui_generated\vehicleconfig_screen</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc">

View File

@ -180,6 +180,18 @@
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "DebugView"
}
},
{
"InteractionName": "DummyChangeConfigView",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 251
},
"Action": {
"Type": "ActionGotoScreen",
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "VehicleConfig"
}
}
]
},
@ -592,6 +604,114 @@
}
],
"Interactions": []
},
{
"Name": "VehicleConfig",
"CanvasBufferSize": 7200,
"Components": [
{
"Type": "TextArea",
"Name": "title",
"X": 15,
"Y": 15,
"Width": 450,
"Height": 37,
"TextId": "__SingleUse_RWCE",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
}
},
{
"Type": "ScrollWheel",
"Name": "params",
"X": 15,
"Y": 60,
"Width": 450,
"Height": 245,
"ItemTemplateName": "ConfigItem",
"NumberofItems": 1,
"Easing": "Cubic",
"EasingOption": "Out",
"SwipeAcceleration": 1.0,
"DragAcceleration": 1.0
},
{
"Type": "Line",
"Name": "line1",
"X": 15,
"Y": 58,
"Width": 450,
"Height": 2,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndX": 450.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
}
],
"Interactions": [
{
"InteractionName": "SelectPreviousParam",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 22
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "selectPrevParam"
}
},
{
"InteractionName": "SelectNextParam",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 21
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "selectNextParam"
}
},
{
"InteractionName": "DecreaseParam",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 24
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "decParam"
}
},
{
"InteractionName": "IncreaseParam",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 23
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "incParam"
}
},
{
"InteractionName": "ConfirmParam",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 6
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "confirmParam"
}
}
]
}
],
"CustomContainerDefinitions": [
@ -904,6 +1024,83 @@
}
],
"Interactions": []
},
{
"Name": "ConfigItem",
"X": -65,
"Y": 220,
"Width": 450,
"Height": 50,
"Components": [
{
"Type": "Box",
"Name": "bg",
"Width": 450,
"Height": 50
},
{
"Type": "TextArea",
"Name": "title",
"Y": 6,
"Width": 200,
"Height": 37,
"TextId": "__SingleUse_YTAB",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "Line",
"Name": "line1",
"X": 200,
"Width": 2,
"Height": 50,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndY": 50.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
},
{
"Type": "TextArea",
"Name": "value",
"X": 207,
"Y": -7,
"Width": 243,
"Height": 55,
"TextId": "__SingleUse_4E84",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "Line",
"Name": "line2",
"Y": 48,
"Width": 450,
"Height": 2,
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"EndX": 450.0,
"LineWidth": 10.0,
"LineEndingStyle": "Round"
}
],
"Interactions": []
}
],
"Name": "MyApplication",