From e8701195e66f2d27ffe17fb514eae8173795aaf7 Mon Sep 17 00:00:00 2001
From: Georgiy Bondarenko <69736697+nehilo@users.noreply.github.com>
Date: Thu, 4 Mar 2021 22:54:23 +0500
Subject: Initial commit
---
Marlin/src/lcd/dogm/HAL_LCD_class_defines.h | 122 ++
Marlin/src/lcd/dogm/HAL_LCD_com_defines.h | 122 ++
Marlin/src/lcd/dogm/dogm_Bootscreen.h | 536 ++++++
Marlin/src/lcd/dogm/dogm_Statusscreen.h | 608 +++++++
Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h | 189 ++
Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h | 301 ++++
Marlin/src/lcd/dogm/fontdata/langdata_an.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_bg.h | 77 +
Marlin/src/lcd/dogm/fontdata/langdata_ca.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_cz.h | 54 +
Marlin/src/lcd/dogm/fontdata/langdata_da.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_de.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_el.h | 90 +
Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h | 90 +
Marlin/src/lcd/dogm/fontdata/langdata_en.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_es.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_eu.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_fi.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_fr.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_gl.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_hr.h | 32 +
Marlin/src/lcd/dogm/fontdata/langdata_hu.h | 15 +
Marlin/src/lcd/dogm/fontdata/langdata_it.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h | 111 ++
Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h | 547 ++++++
Marlin/src/lcd/dogm/fontdata/langdata_nl.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_pl.h | 40 +
Marlin/src/lcd/dogm/fontdata/langdata_pt.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_ro.h | 9 +
Marlin/src/lcd/dogm/fontdata/langdata_ru.h | 73 +
Marlin/src/lcd/dogm/fontdata/langdata_sk.h | 49 +
Marlin/src/lcd/dogm/fontdata/langdata_test.h | 231 +++
Marlin/src/lcd/dogm/fontdata/langdata_tr.h | 27 +
Marlin/src/lcd/dogm/fontdata/langdata_uk.h | 85 +
Marlin/src/lcd/dogm/fontdata/langdata_vi.h | 227 +++
Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h | 1823 ++++++++++++++++++++
Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h | 1521 ++++++++++++++++
Marlin/src/lcd/dogm/lcdprint_u8g.cpp | 56 +
Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 707 ++++++++
Marlin/src/lcd/dogm/marlinui_DOGM.h | 232 +++
Marlin/src/lcd/dogm/status/bed.h | 110 ++
Marlin/src/lcd/dogm/status/chamber.h | 89 +
Marlin/src/lcd/dogm/status/combined.h | 309 ++++
Marlin/src/lcd/dogm/status/cutter.h | 123 ++
Marlin/src/lcd/dogm/status/fan.h | 443 +++++
Marlin/src/lcd/dogm/status/hotend.h | 486 ++++++
Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 940 ++++++++++
Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp | 917 ++++++++++
Marlin/src/lcd/dogm/status_screen_lite_ST7920.h | 106 ++
.../lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp | 302 ++++
Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp | 128 ++
Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp | 236 +++
Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp | 208 +++
.../lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp | 536 ++++++
.../src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp | 213 +++
Marlin/src/lcd/dogm/u8g_fontutf8.cpp | 315 ++++
Marlin/src/lcd/dogm/u8g_fontutf8.h | 37 +
.../lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp | 200 +++
.../src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h | 53 +
60 files changed, 13851 insertions(+)
create mode 100644 Marlin/src/lcd/dogm/HAL_LCD_class_defines.h
create mode 100644 Marlin/src/lcd/dogm/HAL_LCD_com_defines.h
create mode 100644 Marlin/src/lcd/dogm/dogm_Bootscreen.h
create mode 100644 Marlin/src/lcd/dogm/dogm_Statusscreen.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_an.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_bg.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_ca.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_cz.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_da.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_de.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_el.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_en.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_es.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_eu.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_fi.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_fr.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_gl.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_hr.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_hu.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_it.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_nl.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_pl.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_pt.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_ro.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_ru.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_sk.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_test.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_tr.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_uk.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_vi.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
create mode 100644 Marlin/src/lcd/dogm/lcdprint_u8g.cpp
create mode 100644 Marlin/src/lcd/dogm/marlinui_DOGM.cpp
create mode 100644 Marlin/src/lcd/dogm/marlinui_DOGM.h
create mode 100644 Marlin/src/lcd/dogm/status/bed.h
create mode 100644 Marlin/src/lcd/dogm/status/chamber.h
create mode 100644 Marlin/src/lcd/dogm/status/combined.h
create mode 100644 Marlin/src/lcd/dogm/status/cutter.h
create mode 100644 Marlin/src/lcd/dogm/status/fan.h
create mode 100644 Marlin/src/lcd/dogm/status/hotend.h
create mode 100644 Marlin/src/lcd/dogm/status_screen_DOGM.cpp
create mode 100644 Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
create mode 100644 Marlin/src/lcd/dogm/status_screen_lite_ST7920.h
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_fontutf8.cpp
create mode 100644 Marlin/src/lcd/dogm/u8g_fontutf8.h
create mode 100644 Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
create mode 100644 Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h
(limited to 'Marlin/src/lcd/dogm')
diff --git a/Marlin/src/lcd/dogm/HAL_LCD_class_defines.h b/Marlin/src/lcd/dogm/HAL_LCD_class_defines.h
new file mode 100644
index 0000000..30a5361
--- /dev/null
+++ b/Marlin/src/lcd/dogm/HAL_LCD_class_defines.h
@@ -0,0 +1,122 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#include "../../inc/MarlinConfig.h"
+
+// use this file to create the public interface for device drivers that are NOT in the U8G library
+
+extern u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_sw_spi;
+extern u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_hw_spi;
+
+class U8GLIB_64128N_2X_HAL : public U8GLIB {
+public:
+ U8GLIB_64128N_2X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_st7565_64128n_HAL_2x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
+ { }
+ U8GLIB_64128N_2X_HAL(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_st7565_64128n_HAL_2x_hw_spi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
+ { }
+};
+
+extern u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_sw_spi;
+extern u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_hw_spi;
+
+class U8GLIB_ST7920_128X64_4X_HAL : public U8GLIB {
+public:
+ U8GLIB_ST7920_128X64_4X_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_st7920_128x64_HAL_4x_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
+ { }
+ U8GLIB_ST7920_128X64_4X_HAL(pin_t cs, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_st7920_128x64_HAL_4x_hw_spi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
+ { }
+};
+
+//
+// AVR version uses ultralcd_st7920_u8glib_rrd_AVR.cpp
+// HAL version uses u8g_dev_st7920_128x64_HAL.cpp
+//
+extern u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi;
+
+class U8GLIB_ST7920_128X64_RRD : public U8GLIB {
+public:
+ U8GLIB_ST7920_128X64_RRD(pin_t sck, pin_t mosi, pin_t cs, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, U8G_PIN_NONE, (uint8_t)reset) // a0 = U8G_PIN_NONE
+ { }
+};
+
+extern u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c_2_wire;
+
+class U8GLIB_SH1106_128X64_2X_I2C_2_WIRE : public U8GLIB {
+public:
+ U8GLIB_SH1106_128X64_2X_I2C_2_WIRE(uint8_t options = U8G_I2C_OPT_NONE)
+ : U8GLIB(&u8g_dev_sh1106_128x64_2x_i2c_2_wire, options)
+ { }
+};
+
+extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire;
+
+class U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE : public U8GLIB {
+public:
+ U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE(uint8_t options = U8G_I2C_OPT_NONE)
+ : U8GLIB(&u8g_dev_ssd1306_128x64_2x_i2c_2_wire, options)
+ { }
+};
+
+//
+// Very basic support for 320x240 TFT screen
+// Tested on MKS Robin TFT_V2.0 with ST7789V controller
+//
+extern u8g_dev_t u8g_dev_tft_320x240_upscale_from_128x64;
+
+class U8GLIB_TFT_320X240_UPSCALE_FROM_128X64 : public U8GLIB {
+public:
+ U8GLIB_TFT_320X240_UPSCALE_FROM_128X64(uint8_t cs, uint8_t rs, uint8_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_tft_320x240_upscale_from_128x64, cs, rs, reset)
+ { }
+};
+
+
+extern u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_sw_spi, u8g_dev_uc1701_mini12864_HAL_2x_hw_spi;
+
+class U8GLIB_MINI12864_2X_HAL : public U8GLIB {
+public:
+ U8GLIB_MINI12864_2X_HAL(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_uc1701_mini12864_HAL_2x_sw_spi, sck, mosi, cs, a0, reset)
+ { }
+ U8GLIB_MINI12864_2X_HAL(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_uc1701_mini12864_HAL_2x_hw_spi, cs, a0, reset)
+ { }
+};
+
+extern u8g_dev_t u8g_dev_ssd1309_sw_spi;
+extern u8g_dev_t u8g_dev_ssd1309_hw_spi;
+
+class U8GLIB_SSD1309_128X64_HAL : public U8GLIB {
+public:
+ U8GLIB_SSD1309_128X64_HAL(pin_t sck, pin_t mosi, pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_ssd1309_sw_spi, (uint8_t)sck, (uint8_t)mosi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
+ { }
+ U8GLIB_SSD1309_128X64_HAL(pin_t cs, pin_t a0, pin_t reset = U8G_PIN_NONE)
+ : U8GLIB(&u8g_dev_ssd1309_hw_spi, (uint8_t)cs, (uint8_t)a0, (uint8_t)reset)
+ { }
+};
diff --git a/Marlin/src/lcd/dogm/HAL_LCD_com_defines.h b/Marlin/src/lcd/dogm/HAL_LCD_com_defines.h
new file mode 100644
index 0000000..8a707ab
--- /dev/null
+++ b/Marlin/src/lcd/dogm/HAL_LCD_com_defines.h
@@ -0,0 +1,122 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+// Use this file to select the com driver for device drivers that are NOT in the U8G library
+
+#include
+
+#ifndef U8G_HAL_LINKS // Defined by LPC1768/9 environments in platform.ini
+
+ #ifdef __SAM3X8E__
+
+ uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_DUE_shared_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_DUE_sw_spi_fn
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_HAL_DUE_shared_hw_spi_fn
+ #define U8G_COM_ST7920_HAL_SW_SPI u8g_com_HAL_DUE_ST7920_sw_spi_fn
+
+ #elif defined(__SAMD51__)
+
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_samd51_hw_spi_fn
+ #define U8G_COM_ST7920_HAL_HW_SPI u8g_com_samd51_st7920_hw_spi_fn
+
+ #elif defined(__STM32F1__)
+
+ uint8_t u8g_com_HAL_STM32F1_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_stm32duino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_STM32F1_sw_spi_fn
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_stm32duino_hw_spi_fn
+ #define U8G_COM_ST7920_HAL_SW_SPI u8g_com_std_sw_spi_fn
+ #define U8G_COM_ST7920_HAL_HW_SPI u8g_com_stm32duino_hw_spi_fn
+
+ #elif defined(ARDUINO_ARCH_STM32)
+
+ uint8_t u8g_com_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_stm32duino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_std_sw_spi_fn
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_stm32duino_hw_spi_fn
+
+ #elif defined(__AVR__)
+
+ uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_AVR_sw_sp_fn
+
+ #endif
+
+ #ifndef U8G_COM_HAL_SW_SPI_FN
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_arduino_std_sw_spi_fn
+ #endif
+ #ifndef U8G_COM_HAL_HW_SPI_FN
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_arduino_hw_spi_fn
+ #endif
+ #ifndef U8G_COM_ST7920_HAL_SW_SPI
+ #define U8G_COM_ST7920_HAL_SW_SPI u8g_com_arduino_st7920_spi_fn
+ #endif
+ #ifndef U8G_COM_ST7920_HAL_HW_SPI
+ #define U8G_COM_ST7920_HAL_HW_SPI u8g_com_arduino_st7920_hw_spi_fn
+ #endif
+
+ // This can't be invoked from the current platformio.ini
+ #ifdef TARGET_LPC1768
+ uint8_t u8g_com_HAL_LPC1768_ssd_hw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #endif
+
+ #define U8G_COM_SSD_I2C_HAL u8g_com_arduino_ssd_i2c_fn
+
+#elif defined(TARGET_LPC1768)
+
+ uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_LPC1768_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_LPC1768_ST7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ uint8_t u8g_com_HAL_LPC1768_ssd_hw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_LPC1768_sw_spi_fn
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_HAL_LPC1768_hw_spi_fn
+ #define U8G_COM_ST7920_HAL_SW_SPI u8g_com_HAL_LPC1768_ST7920_sw_spi_fn
+ #define U8G_COM_ST7920_HAL_HW_SPI u8g_com_HAL_LPC1768_ST7920_hw_spi_fn
+ #define U8G_COM_SSD_I2C_HAL u8g_com_HAL_LPC1768_ssd_hw_i2c_fn
+
+#endif
+
+#ifndef U8G_COM_HAL_SW_SPI_FN
+ #define U8G_COM_HAL_SW_SPI_FN u8g_com_null_fn
+#endif
+#ifndef U8G_COM_HAL_HW_SPI_FN
+ #define U8G_COM_HAL_HW_SPI_FN u8g_com_null_fn
+#endif
+#ifndef U8G_COM_ST7920_HAL_SW_SPI
+ #define U8G_COM_ST7920_HAL_SW_SPI u8g_com_null_fn
+#endif
+#ifndef U8G_COM_ST7920_HAL_HW_SPI
+ #define U8G_COM_ST7920_HAL_HW_SPI u8g_com_null_fn
+#endif
+#ifndef U8G_COM_SSD_I2C_HAL
+ #define U8G_COM_SSD_I2C_HAL u8g_com_null_fn
+#endif
+#if HAS_FSMC_GRAPHICAL_TFT || HAS_SPI_GRAPHICAL_TFT
+ uint8_t u8g_com_hal_tft_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
+ #define U8G_COM_HAL_TFT_FN u8g_com_hal_tft_fn
+#else
+ #define U8G_COM_HAL_TFT_FN u8g_com_null_fn
+#endif
diff --git a/Marlin/src/lcd/dogm/dogm_Bootscreen.h b/Marlin/src/lcd/dogm/dogm_Bootscreen.h
new file mode 100644
index 0000000..0b8845e
--- /dev/null
+++ b/Marlin/src/lcd/dogm/dogm_Bootscreen.h
@@ -0,0 +1,536 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ * Standard Marlin Boot Screen bitmaps
+ *
+ * Use the Marlin Bitmap Converter to make your own:
+ * https://marlinfw.org/tools/u8glib/converter.html
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
+
+ typedef struct {
+ const unsigned char *bitmap;
+ const unsigned short duration;
+ } boot_frame_t;
+
+ #include "../../../_Bootscreen.h"
+
+ #ifndef CUSTOM_BOOTSCREEN_BMPWIDTH
+ #define CUSTOM_BOOTSCREEN_BMPWIDTH 128
+ #endif
+ #ifndef CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH
+ #define CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH CEILING(CUSTOM_BOOTSCREEN_BMPWIDTH, 8)
+ #endif
+ #ifndef CUSTOM_BOOTSCREEN_BMPHEIGHT
+ #define CUSTOM_BOOTSCREEN_BMPHEIGHT (sizeof(custom_start_bmp) / (CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH))
+ #endif
+
+ #ifndef CUSTOM_BOOTSCREEN_Y
+ #if ENABLED(CUSTOM_BOOTSCREEN_BOTTOM_JUSTIFY)
+ #define CUSTOM_BOOTSCREEN_Y (LCD_PIXEL_HEIGHT - (CUSTOM_BOOTSCREEN_BMPHEIGHT))
+ #else
+ #define CUSTOM_BOOTSCREEN_Y ((LCD_PIXEL_HEIGHT - (CUSTOM_BOOTSCREEN_BMPHEIGHT)) / 2)
+ #endif
+ #endif
+#endif
+
+#if ENABLED(BOOT_MARLIN_LOGO_SMALL)
+
+ #define START_BMPWIDTH 56
+
+ const unsigned char start_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111,
+ B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B11100111,
+ B10001100,B00110000,B11001111,B11000111,B11001100,B00110001,B11110011,
+ B10001100,B00110000,B11011100,B11101100,B11101100,B00110011,B10111001,
+ B10001100,B00110000,B11011000,B01101100,B01101100,B00110011,B00011001,
+ B10001100,B00110000,B11010000,B01101100,B00001100,B00110011,B00011001,
+ B10001100,B00110000,B11011000,B01101100,B00001100,B00110011,B00011001,
+ B10001100,B00110000,B11011100,B01101100,B00001110,B00111011,B00011001,
+ B10001100,B00110000,B11001111,B01111100,B00000111,B10011111,B00011001,
+ B10001100,B00110000,B11000111,B01111100,B00000011,B10001111,B00011001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ #if ENABLED(BOOT_MARLIN_LOGO_ANIMATED)
+
+ const unsigned char start_bmp1[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ const unsigned char start_bmp2[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000111,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000011,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000000,B00000000,B00000000,B00000000,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ const unsigned char start_bmp3[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111,
+ B10001100,B00110000,B11000111,B10000000,B00000000,B00000000,B00000111,
+ B10001100,B00110000,B11001111,B11000000,B00000000,B00000000,B00000011,
+ B10001100,B00110000,B11011100,B11100000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11010000,B01100000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01100000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11011100,B01100000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11001111,B01110000,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000111,B01110000,B00000000,B00000000,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ const unsigned char start_bmp4[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00000000,B00000000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00000000,B00000000,B00001111,
+ B10001100,B00110000,B11000111,B10000011,B10000000,B00000000,B00000111,
+ B10001100,B00110000,B11001111,B11000111,B11000000,B00000000,B00000011,
+ B10001100,B00110000,B11011100,B11101100,B11100000,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B01100000,B00000000,B00000001,
+ B10001100,B00110000,B11010000,B01101100,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11011100,B01101100,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11001111,B01111100,B00000000,B00000000,B00000001,
+ B10001100,B00110000,B11000111,B01111100,B00000000,B00000000,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ const unsigned char start_bmp5[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00001100,B00000000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00001100,B00000000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111,
+ B10001100,B00110000,B11000111,B10000011,B10001100,B00000000,B00000111,
+ B10001100,B00110000,B11001111,B11000111,B11001100,B00000000,B00000011,
+ B10001100,B00110000,B11011100,B11101100,B11101100,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B01101100,B00000000,B00000001,
+ B10001100,B00110000,B11010000,B01101100,B00001100,B00000000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B00001100,B00000000,B00000001,
+ B10001100,B00110000,B11011100,B01101100,B00001110,B00000000,B00000001,
+ B10001100,B00110000,B11001111,B01111100,B00000111,B10000000,B00000001,
+ B10001100,B00110000,B11000111,B01111100,B00000011,B10000000,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ const unsigned char start_bmp6[] PROGMEM = {
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B10000011,B11001111,B00000000,B00000000,B00001100,B00110000,B00111111,
+ B10000111,B11111111,B10000000,B00000000,B00001100,B00110000,B00011111,
+ B10000110,B01111001,B10000000,B00000000,B00001100,B00000000,B00001111,
+ B10001100,B00110000,B11000111,B10000011,B10001100,B00110000,B00000111,
+ B10001100,B00110000,B11001111,B11000111,B11001100,B00110000,B00000011,
+ B10001100,B00110000,B11011100,B11101100,B11101100,B00110000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B01101100,B00110000,B00000001,
+ B10001100,B00110000,B11010000,B01101100,B00001100,B00110000,B00000001,
+ B10001100,B00110000,B11011000,B01101100,B00001100,B00110000,B00000001,
+ B10001100,B00110000,B11011100,B01101100,B00001110,B00111000,B00000001,
+ B10001100,B00110000,B11001111,B01111100,B00000111,B10011100,B00000001,
+ B10001100,B00110000,B11000111,B01111100,B00000011,B10001100,B00000001,
+ B01000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B00011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111000
+ };
+
+ #endif
+
+#else
+
+ #define START_BMPWIDTH 112
+
+ const unsigned char start_bmp[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00011000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00011111,B00000000,B00000011,B11100000,B01111000,B00111100,B00000011,B11110000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B11000000,B00001111,B11111000,B01111000,B00111100,B00000111,B11111100,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B11100000,B00011111,B11111100,B01111000,B00111100,B00001111,B11111110,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B11110000,B00111111,B11111110,B01111000,B00111100,B00011111,B11111110,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11110011,B11111000,B00111111,B00111110,B01111000,B00111100,B00111111,B00111111,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11100000,B11111100,B01111100,B00011111,B01111000,B00111100,B00111110,B00011111,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B01111100,B01111100,B00001111,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B01111100,B01111000,B00001111,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11100000,B00111100,B01111000,B00000000,B01111100,B00111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B00111111,B11111000,B00000000,B01111111,B10111100,B00111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B00111111,B11111000,B00000000,B00111111,B10111111,B11111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B11111111,B00111111,B11111000,B00000000,B00011111,B10111111,B11111100,B00001111,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B00111111,B11111000,B00000000,B00001111,B10111111,B11111100,B00001111,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ #if ENABLED(BOOT_MARLIN_LOGO_ANIMATED)
+
+ const unsigned char start_bmp1[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ const unsigned char start_bmp2[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ const unsigned char start_bmp3[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00011111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11110011,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11100000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B01111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B01111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11100000,B00111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B00111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B00111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B11111111,B00111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B00111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ const unsigned char start_bmp4[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00011111,B00000000,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B11000000,B00001111,B11111000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B11100000,B00011111,B11111100,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B11110000,B00111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11110011,B11111000,B00111111,B00111110,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11100000,B11111100,B01111100,B00011111,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B01111100,B01111100,B00001111,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B01111100,B01111000,B00001111,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B00111100,B01111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11100000,B00111100,B01111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B11111111,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B00111111,B11111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ const unsigned char start_bmp5[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00011111,B00000000,B00000011,B11100000,B01111000,B00000000,B00000000,B00000000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B11000000,B00001111,B11111000,B01111000,B00000000,B00000000,B00000000,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B11100000,B00011111,B11111100,B01111000,B00000000,B00000000,B00000000,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B11110000,B00111111,B11111110,B01111000,B00000000,B00000000,B00000000,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11110011,B11111000,B00111111,B00111110,B01111000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11100000,B11111100,B01111100,B00011111,B01111000,B00000000,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B01111100,B01111100,B00001111,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B01111100,B01111000,B00001111,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B00111100,B01111000,B00000000,B01111000,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11100000,B00111100,B01111000,B00000000,B01111100,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B00111111,B11111000,B00000000,B01111111,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B00111111,B11111000,B00000000,B00111111,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B11111111,B00111111,B11111000,B00000000,B00011111,B00000000,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B00111111,B11111000,B00000000,B00001111,B00000000,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ const unsigned char start_bmp6[] PROGMEM = {
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,B11111111,B11111111,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000011,B11111111,B11111111,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B11111111,B11111111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111111,B11111111,
+ B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00111111,B11111111,
+ B11000000,B00001111,B11000000,B11111100,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00011000,B00000000,B00011111,B11111111,
+ B11000000,B00111111,B11100001,B11111111,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00001111,B11111111,
+ B11000000,B01111111,B11110011,B11111111,B10000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00000111,B11111111,
+ B11000000,B11111111,B11111111,B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111000,B00111100,B00000000,B00000011,B11111111,
+ B11000001,B11111000,B01111111,B10000111,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000001,B11111111,
+ B11000001,B11110000,B00111111,B00000011,B11100000,B00000000,B00000000,B00000000,B00000000,B01111000,B00000000,B00000000,B00000000,B11111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B00011111,B00000000,B00000011,B11100000,B01111000,B00111100,B00000000,B00000000,B01111111,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B11000000,B00001111,B11111000,B01111000,B00111100,B00000000,B00000000,B00111111,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B11100000,B00011111,B11111100,B01111000,B00111100,B00000000,B00000000,B00011111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B11110000,B00111111,B11111110,B01111000,B00111100,B00000000,B00000000,B00001111,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11110011,B11111000,B00111111,B00111110,B01111000,B00111100,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11100000,B11111100,B01111100,B00011111,B01111000,B00111100,B00000000,B00000000,B00000111,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B01111100,B01111100,B00001111,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B01111100,B01111000,B00001111,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B10000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100111,B11000000,B00111100,B01111000,B00000000,B01111000,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11100000,B00111100,B01111000,B00000000,B01111100,B00111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100011,B11111111,B00111111,B11111000,B00000000,B01111111,B10111100,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100001,B11111111,B00111111,B11111000,B00000000,B00111111,B10111111,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B11111111,B00111111,B11111000,B00000000,B00011111,B10111111,B00000000,B00000000,B00000011,
+ B11000001,B11100000,B00011110,B00000001,B11100000,B01111111,B00111111,B11111000,B00000000,B00001111,B10111111,B00000000,B00000000,B00000011,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000111,
+ B01100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000110,
+ B01110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001110,
+ B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011100,
+ B00011110,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B01111000,
+ B00001111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,
+ B00000001,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000000
+ };
+
+ #endif
+
+#endif
+
+#if ENABLED(BOOT_MARLIN_LOGO_ANIMATED)
+ #ifndef MARLIN_BOOTSCREEN_FRAME_TIME
+ #define MARLIN_BOOTSCREEN_FRAME_TIME 100 // (ms)
+ #endif
+ const unsigned char * const marlin_bootscreen_animation[] PROGMEM = {
+ start_bmp1, start_bmp2, start_bmp3, start_bmp4, start_bmp5, start_bmp6, start_bmp
+ };
+#endif
+
+#ifndef START_BMP_BYTEWIDTH
+ #define START_BMP_BYTEWIDTH CEILING(START_BMPWIDTH, 8)
+#endif
+#ifndef START_BMPHEIGHT
+ #define START_BMPHEIGHT (sizeof(start_bmp) / (START_BMP_BYTEWIDTH))
+#endif
+
+static_assert(sizeof(start_bmp) == (START_BMP_BYTEWIDTH) * (START_BMPHEIGHT), "Bootscreen (start_bmp) dimensions don't match data.");
diff --git a/Marlin/src/lcd/dogm/dogm_Statusscreen.h b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
new file mode 100644
index 0000000..61fee3e
--- /dev/null
+++ b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
@@ -0,0 +1,608 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ * Standard Marlin Status Screen bitmaps
+ *
+ * Use the Marlin Bitmap Converter to make your own:
+ * https://marlinfw.org/tools/u8glib/converter.html
+ */
+
+#include "../../inc/MarlinConfig.h"
+#include "marlinui_DOGM.h"
+
+#define BW(N) ((N + 7) / 8)
+
+#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE) && DISABLED(STATUS_COMBINE_HEATERS)
+
+ #undef STATUS_HEATERS_X
+ #undef STATUS_BED_X
+ /**
+ * Custom _Statusscreen.h files can define:
+ * - A custom logo image
+ * - A custom heater bitmap
+ * - A custom fan bitmap / animation
+ *
+ * See the included examples for guidance
+ */
+ #include "../../../_Statusscreen.h"
+
+ #ifdef STATUS_SCREENWIDTH
+ #error "Your custom _Statusscreen.h needs to be converted for Marlin 2.0."
+ #endif
+
+#endif
+
+//
+// Default Status Screen Heater or Hotends bitmaps
+//
+#if !STATUS_HEATERS_WIDTH && !STATUS_HOTEND1_WIDTH
+ #if ENABLED(STATUS_COMBINE_HEATERS)
+ #include "status/combined.h"
+ #else
+ #if HAS_HOTEND
+ #include "status/hotend.h"
+ #else
+ #define STATUS_HEATERS_HEIGHT 20
+ #endif
+ #endif
+#endif
+
+//
+// Laser / Spindle
+//
+#if !STATUS_CUTTER_WIDTH && HAS_CUTTER
+ #include "status/cutter.h"
+#endif
+#ifndef STATUS_CUTTER_WIDTH
+ #define STATUS_CUTTER_WIDTH 0
+#endif
+
+//
+// Bed
+//
+#if !STATUS_BED_WIDTH && HAS_HEATED_BED && DISABLED(STATUS_COMBINE_HEATERS)
+ #include "status/bed.h"
+#endif
+#ifndef STATUS_BED_WIDTH
+ #define STATUS_BED_WIDTH 0
+#endif
+
+//
+// Chamber
+//
+#if !STATUS_CHAMBER_WIDTH && HAS_TEMP_CHAMBER && ((HOTENDS <= 4 && !HAS_HEATED_BED) || (HOTENDS <= 3 && HAS_HEATED_BED))
+ #include "status/chamber.h"
+#endif
+#ifndef STATUS_CHAMBER_WIDTH
+ #define STATUS_CHAMBER_WIDTH 0
+#endif
+
+// Can also be overridden in Configuration_adv.h
+// If you can afford it, try the 3-frame fan animation!
+// Don't compile in the fan animation with no fan
+#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && BED_OR_CHAMBER) || BOTH(STATUS_COMBINE_HEATERS, HAS_HEATED_CHAMBER))
+ #undef STATUS_FAN_FRAMES
+#elif !STATUS_FAN_FRAMES
+ #define STATUS_FAN_FRAMES 2
+#elif STATUS_FAN_FRAMES > 4
+ #error "A maximum of 4 fan animation frames is currently supported."
+#endif
+
+#if HOTENDS > 4
+ #undef STATUS_LOGO_WIDTH
+ #undef STATUS_HEATERS_XSPACE
+ #define STATUS_HEATERS_XSPACE 24
+#endif
+
+//
+// Provide default Fan Bitmaps
+//
+#if !STATUS_FAN_WIDTH && STATUS_FAN_FRAMES > 0
+ #include "status/fan.h"
+#else
+ #undef STATUS_FAN_FRAMES
+ #define STATUS_FAN_WIDTH 0
+#endif
+
+#define _EXTRA_WIDTH (STATUS_FAN_WIDTH + STATUS_CHAMBER_WIDTH + STATUS_BED_WIDTH)
+
+//
+// Heater Bitmap X Space Requirements
+//
+#if !defined(STATUS_HEATERS_XSPACE) && (STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH)
+ #if (HOTENDS == 3 || HOTENDS == 4) && ENABLED(STATUS_COMBINE_HEATERS)
+ // If more heaters or they're combined, 3 bytes
+ #define STATUS_HEATERS_XSPACE 24
+ #elif STATUS_LOGO_WIDTH > (LCD_PIXEL_WIDTH - (_EXTRA_WIDTH) - 26 * (HOTENDS)) // 128 - (20 + 24 + 26) == 58
+ // If the logo won't fit at 26 width
+ #define STATUS_HEATERS_XSPACE 24
+ #else
+ #define STATUS_HEATERS_XSPACE 26
+ #endif
+#endif
+
+#if ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
+ //
+ // Disable the logo bitmap if insufficient space
+ //
+ #if STATUS_HEATERS_XSPACE
+ #define _HEATERS_WIDTH (HOTENDS * (STATUS_HEATERS_XSPACE)) // as many hotends as possible
+ #elif STATUS_HEATERS_WIDTH
+ #define _HEATERS_WIDTH STATUS_HEATERS_WIDTH
+ #elif HOTENDS
+ #error "Status screen heaters region was not specified."
+ #endif
+ #if STATUS_LOGO_WIDTH > (LCD_PIXEL_WIDTH - (_EXTRA_WIDTH + _HEATERS_WIDTH))
+ #warning "Unable to fit custom Status Screen logo. Disabling."
+ #undef STATUS_LOGO_WIDTH
+ #endif
+
+ #if !defined(STATUS_HEATERS_X) && ((HAS_HOTEND && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN))
+ #define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
+ #if STATUS_HOTEND1_WIDTH
+ #if HOTENDS > 2
+ #define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 6)
+ #else
+ #define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 4)
+ #endif
+ #else
+ #define STATUS_HEATERS_X _STATUS_HEATERS_X(1, STATUS_HEATERS_WIDTH, 4)
+ #endif
+ #endif
+#endif
+
+//
+// Custom Logo Bitmap Properties
+//
+#ifndef STATUS_LOGO_WIDTH
+ #define STATUS_LOGO_WIDTH 0
+#endif
+#ifndef STATUS_LOGO_BYTEWIDTH
+ #define STATUS_LOGO_BYTEWIDTH BW(STATUS_LOGO_WIDTH)
+#endif
+#if STATUS_LOGO_WIDTH
+ #ifndef STATUS_LOGO_X
+ #ifdef STATUS_HEATERS_X
+ #define STATUS_LOGO_X ((STATUS_HEATERS_X - (STATUS_LOGO_WIDTH) - 1) / 2)
+ #else
+ #define STATUS_LOGO_X 0
+ #endif
+ #endif
+ #ifndef STATUS_LOGO_HEIGHT
+ #define STATUS_LOGO_HEIGHT (sizeof(status_logo_bmp) / (STATUS_LOGO_BYTEWIDTH))
+ #endif
+ #ifndef STATUS_LOGO_Y
+ #define STATUS_LOGO_Y _MAX(0U, (28U - _MIN(28U, STATUS_LOGO_HEIGHT)) / 2U)
+ #endif
+ static_assert(
+ sizeof(status_logo_bmp) == (STATUS_LOGO_BYTEWIDTH) * (STATUS_LOGO_HEIGHT),
+ "Status logo bitmap (status_logo_bmp) dimensions don't match data."
+ );
+#endif
+
+//
+// Hotend Heater Bitmap starting X position
+//
+#if !defined(STATUS_HEATERS_X) && (STATUS_HOTEND1_WIDTH || STATUS_HEATERS_WIDTH)
+ #if STATUS_LOGO_BYTEWIDTH
+ #define STATUS_HEATERS_X (STATUS_LOGO_BYTEWIDTH * 8)
+ #elif ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH) && (STATUS_BED_WIDTH && STATUS_HOTEND_BITMAPS == 3)) || \
+ ((STATUS_CHAMBER_WIDTH || STATUS_FAN_WIDTH || STATUS_BED_WIDTH) && STATUS_HOTEND_BITMAPS == 4)
+ #define STATUS_HEATERS_X 5
+ #else
+ #if BOTH(STATUS_COMBINE_HEATERS, HAS_HEATED_BED) && HOTENDS <= 4
+ #define STATUS_HEATERS_X 5
+ #else
+ #define STATUS_HEATERS_X 8 // Like the included bitmaps
+ #endif
+ #endif
+#endif
+
+#if STATUS_HOTEND1_WIDTH
+
+ //
+ // Hotend images. A base hotend image and optional "ON" state image.
+ //
+ #ifndef STATUS_HOTEND_BITMAPS
+ #define STATUS_HOTEND_BITMAPS 1
+ #endif
+
+ #ifndef STATUS_HOTEND2_WIDTH
+ #define STATUS_HOTEND2_WIDTH STATUS_HOTEND1_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND3_WIDTH
+ #define STATUS_HOTEND3_WIDTH STATUS_HOTEND2_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND4_WIDTH
+ #define STATUS_HOTEND4_WIDTH STATUS_HOTEND3_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND5_WIDTH
+ #define STATUS_HOTEND5_WIDTH STATUS_HOTEND4_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND6_WIDTH
+ #define STATUS_HOTEND6_WIDTH STATUS_HOTEND5_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND7_WIDTH
+ #define STATUS_HOTEND7_WIDTH STATUS_HOTEND6_WIDTH
+ #endif
+ #ifndef STATUS_HOTEND8_WIDTH
+ #define STATUS_HOTEND8_WIDTH STATUS_HOTEND7_WIDTH
+ #endif
+
+ constexpr uint8_t status_hotend_width[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_WIDTH, STATUS_HOTEND2_WIDTH, STATUS_HOTEND3_WIDTH, STATUS_HOTEND4_WIDTH, STATUS_HOTEND5_WIDTH, STATUS_HOTEND6_WIDTH, STATUS_HOTEND7_WIDTH, STATUS_HOTEND8_WIDTH);
+ #define STATUS_HOTEND_WIDTH(N) status_hotend_width[N]
+
+ #ifndef STATUS_HOTEND1_BYTEWIDTH
+ #define STATUS_HOTEND1_BYTEWIDTH BW(STATUS_HOTEND1_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND2_BYTEWIDTH
+ #define STATUS_HOTEND2_BYTEWIDTH BW(STATUS_HOTEND2_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND3_BYTEWIDTH
+ #define STATUS_HOTEND3_BYTEWIDTH BW(STATUS_HOTEND3_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND4_BYTEWIDTH
+ #define STATUS_HOTEND4_BYTEWIDTH BW(STATUS_HOTEND4_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND5_BYTEWIDTH
+ #define STATUS_HOTEND5_BYTEWIDTH BW(STATUS_HOTEND5_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND6_BYTEWIDTH
+ #define STATUS_HOTEND6_BYTEWIDTH BW(STATUS_HOTEND6_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND7_BYTEWIDTH
+ #define STATUS_HOTEND7_BYTEWIDTH BW(STATUS_HOTEND7_WIDTH)
+ #endif
+ #ifndef STATUS_HOTEND8_BYTEWIDTH
+ #define STATUS_HOTEND8_BYTEWIDTH BW(STATUS_HOTEND8_WIDTH)
+ #endif
+
+ constexpr uint8_t status_hotend_bytewidth[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_BYTEWIDTH, STATUS_HOTEND2_BYTEWIDTH, STATUS_HOTEND3_BYTEWIDTH, STATUS_HOTEND4_BYTEWIDTH, STATUS_HOTEND5_BYTEWIDTH, STATUS_HOTEND6_BYTEWIDTH, STATUS_HOTEND7_BYTEWIDTH, STATUS_HOTEND8_BYTEWIDTH);
+ #define STATUS_HOTEND_BYTEWIDTH(N) status_hotend_bytewidth[N]
+
+ #ifndef STATUS_HOTEND1_X
+ #define STATUS_HOTEND1_X STATUS_HEATERS_X
+ #endif
+ #ifndef STATUS_HOTEND2_X
+ #define STATUS_HOTEND2_X STATUS_HOTEND1_X + STATUS_HEATERS_XSPACE
+ #endif
+
+ #if HOTENDS > 2
+ #ifndef STATUS_HOTEND3_X
+ #define STATUS_HOTEND3_X STATUS_HOTEND2_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND4_X
+ #define STATUS_HOTEND4_X STATUS_HOTEND3_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND5_X
+ #define STATUS_HOTEND5_X STATUS_HOTEND4_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND6_X
+ #define STATUS_HOTEND6_X STATUS_HOTEND5_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND7_X
+ #define STATUS_HOTEND7_X STATUS_HOTEND6_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND8_X
+ #define STATUS_HOTEND8_X STATUS_HOTEND7_X + STATUS_HEATERS_XSPACE
+ #endif
+
+ constexpr uint8_t status_hotend_x[HOTENDS] = ARRAY_N(HOTENDS, STATUS_HOTEND1_X, STATUS_HOTEND2_X, STATUS_HOTEND3_X, STATUS_HOTEND4_X, STATUS_HOTEND5_X, STATUS_HOTEND6_X, STATUS_HOTEND7_X, STATUS_HOTEND8_X);
+ #define STATUS_HOTEND_X(N) status_hotend_x[N]
+ #elif HAS_MULTI_HOTEND
+ #define STATUS_HOTEND_X(N) ((N) ? STATUS_HOTEND2_X : STATUS_HOTEND1_X)
+ #else
+ #define STATUS_HOTEND_X(N) STATUS_HOTEND1_X
+ #endif
+
+ #ifndef STATUS_HOTEND_TEXT_X
+ #ifdef STATUS_HOTEND1_TEXT_X
+ #ifndef STATUS_HOTEND2_TEXT_X
+ #define STATUS_HOTEND2_TEXT_X STATUS_HOTEND1_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND3_TEXT_X
+ #define STATUS_HOTEND3_TEXT_X STATUS_HOTEND2_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND4_TEXT_X
+ #define STATUS_HOTEND4_TEXT_X STATUS_HOTEND3_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND5_TEXT_X
+ #define STATUS_HOTEND5_TEXT_X STATUS_HOTEND4_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND6_TEXT_X
+ #define STATUS_HOTEND6_TEXT_X STATUS_HOTEND5_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND7_TEXT_X
+ #define STATUS_HOTEND7_TEXT_X STATUS_HOTEND6_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ #ifndef STATUS_HOTEND8_TEXT_X
+ #define STATUS_HOTEND8_TEXT_X STATUS_HOTEND7_TEXT_X + STATUS_HEATERS_XSPACE
+ #endif
+ constexpr uint8_t status_hotend_text_x[] = ARRAY_N(HOTENDS, STATUS_HOTEND1_TEXT_X, STATUS_HOTEND2_TEXT_X, STATUS_HOTEND3_TEXT_X, STATUS_HOTEND4_TEXT_X, STATUS_HOTEND5_TEXT_X, STATUS_HOTEND6_TEXT_X, STATUS_HOTEND7_TEXT_X, STATUS_HOTEND8_TEXT_X);
+ #define STATUS_HOTEND_TEXT_X(N) status_hotend_text_x[N]
+ #else
+ #define STATUS_HOTEND_TEXT_X(N) (STATUS_HOTEND1_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
+ #endif
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS > 1 && DISABLED(STATUS_HOTEND_NUMBERLESS)
+ #define TEST_BITMAP_OFF status_hotend1_a_bmp
+ #define TEST_BITMAP_ON status_hotend1_b_bmp
+ #else
+ #define TEST_BITMAP_OFF status_hotend_a_bmp
+ #define TEST_BITMAP_ON status_hotend_b_bmp
+ #endif
+ #ifndef STATUS_HEATERS_HEIGHT
+ #define STATUS_HEATERS_HEIGHT (sizeof(TEST_BITMAP_OFF) / (STATUS_HOTEND1_BYTEWIDTH))
+ #endif
+ #ifndef STATUS_HEATERS_Y
+ #define STATUS_HEATERS_Y (20 - (STATUS_HEATERS_HEIGHT))
+ #endif
+
+ #define HOTEND0_BITMAP_SIZE (STATUS_HOTEND1_BYTEWIDTH) * (STATUS_HEATERS_HEIGHT)
+ static_assert(
+ sizeof(TEST_BITMAP_OFF) == HOTEND0_BITMAP_SIZE,
+ "Status hotend bitmap (" STRINGIFY(TEST_BITMAP_OFF) ") dimensions don't match data."
+ );
+ #ifdef STATUS_HOTEND_ANIM
+ static_assert(
+ sizeof(TEST_BITMAP_ON) == HOTEND0_BITMAP_SIZE,
+ "Status hotend bitmaps (" STRINGIFY(TEST_BITMAP_OFF) " and " STRINGIFY(TEST_BITMAP_ON) ") dimensions don't match."
+ );
+ #endif
+
+#elif STATUS_HEATERS_WIDTH
+
+ #ifndef STATUS_HEATERS_XSPACE
+ #define STATUS_HEATERS_XSPACE 24
+ #endif
+ #ifndef STATUS_HOTEND_WIDTH
+ #define STATUS_HOTEND_WIDTH(N) 10
+ #endif
+ #ifndef STATUS_HOTEND_X
+ #define STATUS_HOTEND_X(N) (STATUS_HEATERS_X + 2 + (N) * (STATUS_HEATERS_XSPACE))
+ #endif
+ #ifndef STATUS_HOTEND_TEXT_X
+ #if HOTENDS == 4 && STATUS_LOGO_WIDTH
+ #define STATUS_HOTEND_TEXT_X(N) (STATUS_HEATERS_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
+ #else
+ #define STATUS_HOTEND_TEXT_X(N) (STATUS_HEATERS_X + 6 + (N) * (STATUS_HEATERS_XSPACE))
+ #endif
+ #endif
+ #ifndef STATUS_HEATERS_BYTEWIDTH
+ #define STATUS_HEATERS_BYTEWIDTH BW(STATUS_HEATERS_WIDTH)
+ #endif
+ #ifndef STATUS_HEATERS_HEIGHT
+ #define STATUS_HEATERS_HEIGHT (sizeof(status_heaters_bmp) / (STATUS_HEATERS_BYTEWIDTH))
+ #endif
+ #ifndef STATUS_HEATERS_Y
+ #define STATUS_HEATERS_Y (20 - (STATUS_HEATERS_HEIGHT))
+ #endif
+
+ static_assert(
+ sizeof(status_heaters_bmp) == (STATUS_HEATERS_BYTEWIDTH) * (STATUS_HEATERS_HEIGHT),
+ "Status heaters bitmap (status_heaters_bmp) dimensions don't match data."
+ );
+
+#else // HOTENDS == 0
+
+ #define STATUS_HOTEND_TEXT_X(N) 0
+ #define STATUS_HEATERS_Y 0
+
+#endif
+
+//
+// Cutter Bitmap Properties
+//
+#ifndef STATUS_CUTTER_BYTEWIDTH
+ #define STATUS_CUTTER_BYTEWIDTH BW(STATUS_CUTTER_WIDTH)
+#endif
+#if STATUS_CUTTER_WIDTH
+
+ #ifndef STATUS_CUTTER_X
+ #define STATUS_CUTTER_X (LCD_PIXEL_WIDTH - (STATUS_CUTTER_BYTEWIDTH + STATUS_CUTTER_BYTEWIDTH) * 8)
+ #endif
+
+ #ifndef STATUS_CUTTER_HEIGHT
+ #ifdef STATUS_CUTTER_ANIM
+ #define STATUS_CUTTER_HEIGHT(S) ((S) ? sizeof(status_cutter_on_bmp) / (STATUS_CUTTER_BYTEWIDTH) : sizeof(status_cutter_bmp) / (STATUS_CUTTER_BYTEWIDTH))
+ #else
+ #define STATUS_CUTTER_HEIGHT(S) (sizeof(status_cutter_bmp) / (STATUS_CUTTER_BYTEWIDTH))
+ #endif
+ #endif
+
+ #ifndef STATUS_CUTTER_Y
+ #define STATUS_CUTTER_Y(S) 4
+ #endif
+
+ #ifndef STATUS_CUTTER_TEXT_X
+ #define STATUS_CUTTER_TEXT_X (STATUS_CUTTER_X -1)
+ #endif
+
+ #ifndef STATUS_CUTTER_TEXT_Y
+ #define STATUS_CUTTER_TEXT_Y 28
+ #endif
+
+ static_assert(
+ sizeof(status_cutter_bmp) == (STATUS_CUTTER_BYTEWIDTH) * (STATUS_CUTTER_HEIGHT(0)),
+ "Status cutter bitmap (status_cutter_bmp) dimensions don't match data."
+ );
+ #ifdef STATUS_CUTTER_ANIM
+ static_assert(
+ sizeof(status_cutter_on_bmp) == (STATUS_CUTTER_BYTEWIDTH) * (STATUS_CUTTER_HEIGHT(1)),
+ "Status cutter bitmap (status_cutter_on_bmp) dimensions don't match data."
+ );
+ #endif
+
+#endif
+
+//
+// Chamber Bitmap Properties
+//
+#ifndef STATUS_CHAMBER_BYTEWIDTH
+ #define STATUS_CHAMBER_BYTEWIDTH BW(STATUS_CHAMBER_WIDTH)
+#endif
+#if STATUS_CHAMBER_WIDTH
+
+ #ifndef STATUS_CHAMBER_X
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+
+ #ifndef STATUS_CHAMBER_HEIGHT
+ #ifdef STATUS_CHAMBER_ANIM
+ #define STATUS_CHAMBER_HEIGHT(S) ((S) ? sizeof(status_chamber_on_bmp) / (STATUS_CHAMBER_BYTEWIDTH) : sizeof(status_chamber_bmp) / (STATUS_CHAMBER_BYTEWIDTH))
+ #else
+ #define STATUS_CHAMBER_HEIGHT(S) (sizeof(status_chamber_bmp) / (STATUS_CHAMBER_BYTEWIDTH))
+ #endif
+ #endif
+
+ #ifndef STATUS_CHAMBER_Y
+ #define STATUS_CHAMBER_Y(S) (20 - STATUS_CHAMBER_HEIGHT(S))
+ #endif
+
+ #ifndef STATUS_CHAMBER_TEXT_X
+ #define STATUS_CHAMBER_TEXT_X (STATUS_CHAMBER_X + 11)
+ #endif
+
+ static_assert(
+ sizeof(status_chamber_bmp) == (STATUS_CHAMBER_BYTEWIDTH) * (STATUS_CHAMBER_HEIGHT(0)),
+ "Status chamber bitmap (status_chamber_bmp) dimensions don't match data."
+ );
+ #ifdef STATUS_CHAMBER_ANIM
+ static_assert(
+ sizeof(status_chamber_on_bmp) == (STATUS_CHAMBER_BYTEWIDTH) * (STATUS_CHAMBER_HEIGHT(1)),
+ "Status chamber bitmap (status_chamber_on_bmp) dimensions don't match data."
+ );
+ #endif
+
+#endif
+
+//
+// Bed Bitmap Properties
+//
+#ifndef STATUS_BED_BYTEWIDTH
+ #define STATUS_BED_BYTEWIDTH BW(STATUS_BED_WIDTH)
+#endif
+#if STATUS_BED_WIDTH && !STATUS_HEATERS_WIDTH
+
+ #ifndef STATUS_BED_X
+ #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_BED_BYTEWIDTH) * 8)
+ #endif
+
+ #ifndef STATUS_BED_HEIGHT
+ #ifdef STATUS_BED_ANIM
+ #define STATUS_BED_HEIGHT(S) ((S) ? sizeof(status_bed_on_bmp) / (STATUS_BED_BYTEWIDTH) : sizeof(status_bed_bmp) / (STATUS_BED_BYTEWIDTH))
+ #else
+ #define STATUS_BED_HEIGHT(S) (sizeof(status_bed_bmp) / (STATUS_BED_BYTEWIDTH))
+ #endif
+ #endif
+
+ #ifndef STATUS_BED_Y
+ #define STATUS_BED_Y(S) (20 - STATUS_BED_HEIGHT(S))
+ #endif
+
+ #ifndef STATUS_BED_TEXT_X
+ #define STATUS_BED_TEXT_X (STATUS_BED_X + 9)
+ #endif
+
+ static_assert(
+ sizeof(status_bed_bmp) == (STATUS_BED_BYTEWIDTH) * (STATUS_BED_HEIGHT(0)),
+ "Status bed bitmap (status_bed_bmp) dimensions don't match data."
+ );
+ #ifdef STATUS_BED_ANIM
+ static_assert(
+ sizeof(status_bed_on_bmp) == (STATUS_BED_BYTEWIDTH) * (STATUS_BED_HEIGHT(1)),
+ "Status bed bitmap (status_bed_on_bmp) dimensions don't match data."
+ );
+ #endif
+#endif
+
+//
+// Fan Bitmap Properties
+//
+#ifndef STATUS_FAN_BYTEWIDTH
+ #define STATUS_FAN_BYTEWIDTH BW(STATUS_FAN_WIDTH)
+#endif
+#if STATUS_FAN_FRAMES
+ #ifndef STATUS_FAN_X
+ #define STATUS_FAN_X (LCD_PIXEL_WIDTH - (STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+ #ifndef STATUS_FAN_Y
+ #define STATUS_FAN_Y 1
+ #endif
+ #ifndef STATUS_FAN_TEXT_X
+ #define STATUS_FAN_TEXT_X (STATUS_FAN_X - 1)
+ #endif
+ #ifndef STATUS_FAN_TEXT_Y
+ #define STATUS_FAN_TEXT_Y 28
+ #endif
+ #ifndef STATUS_FAN_HEIGHT
+ #define STATUS_FAN_HEIGHT (sizeof(status_fan0_bmp) / (STATUS_FAN_BYTEWIDTH))
+ #endif
+ #define FAN_BMP_SIZE (STATUS_FAN_BYTEWIDTH) * (STATUS_FAN_HEIGHT)
+ static_assert(sizeof(status_fan0_bmp) == FAN_BMP_SIZE, "Status fan bitmap (status_fan0_bmp) dimensions don't match data.");
+ #if STATUS_FAN_FRAMES > 1
+ static_assert(sizeof(status_fan1_bmp) == FAN_BMP_SIZE, "Status fan bitmap (status_fan1_bmp) dimensions don't match data.");
+ #if STATUS_FAN_FRAMES > 2
+ static_assert(sizeof(status_fan2_bmp) == FAN_BMP_SIZE, "Status fan bitmap (status_fan2_bmp) dimensions don't match data.");
+ #if STATUS_FAN_FRAMES > 3
+ static_assert(sizeof(status_fan3_bmp) == FAN_BMP_SIZE, "Status fan bitmap (status_fan3_bmp) dimensions don't match data.");
+ #endif
+ #endif
+ #endif
+#endif
+
+#if STATUS_LOGO_WIDTH && ENABLED(CUSTOM_STATUS_SCREEN_IMAGE)
+ #define DO_DRAW_LOGO 1
+#endif
+#if HOTENDS > 0
+ #define DO_DRAW_HOTENDS 1
+#endif
+#if HAS_HEATED_BED && HOTENDS <= 4
+ #define DO_DRAW_BED 1
+#endif
+#if HAS_CUTTER && !DO_DRAW_BED
+ #define DO_DRAW_CUTTER 1
+#endif
+#if HAS_TEMP_CHAMBER && STATUS_CHAMBER_WIDTH && HOTENDS <= 4
+ #define DO_DRAW_CHAMBER 1
+#endif
+#if HAS_FAN0 && STATUS_FAN_WIDTH && HOTENDS <= 4 && defined(STATUS_FAN_FRAMES)
+ #define DO_DRAW_FAN 1
+#endif
+#if BOTH(HAS_HOTEND, STATUS_HOTEND_ANIM)
+ #define ANIM_HOTEND 1
+#endif
+#if BOTH(DO_DRAW_BED, STATUS_BED_ANIM)
+ #define ANIM_BED 1
+#endif
+#if BOTH(DO_DRAW_CHAMBER, STATUS_CHAMBER_ANIM)
+ #define ANIM_CHAMBER 1
+#endif
+#if BOTH(DO_DRAW_CUTTER, STATUS_CUTTER_ANIM)
+ #define ANIM_CUTTER 1
+#endif
+#if ANIM_HOTEND || ANIM_BED || ANIM_CHAMBER || ANIM_CUTTER
+ #define ANIM_HBCC 1
+#endif
diff --git a/Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h b/Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h
new file mode 100644
index 0000000..cd9cb3c
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/fontdata_6x9_marlin.h
@@ -0,0 +1,189 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ Fontname: -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1
+ Copyright: Public domain font. Share and enjoy.
+ Capital A Height: 6, '1' Height: 6
+ Calculated Max Values w= 6 h= 9 x= 5 y= 5 dx= 6 dy= 0 ascent= 7 len= 9
+ Font Bounding box w= 6 h= 9 x= 0 y=-2
+ Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
+ Pure Font ascent = 6 descent=-2
+ X Font ascent = 6 descent=-2
+ Max Font ascent = 7 descent=-2
+*/
+#include
+const u8g_fntpgm_uint8_t u8g_font_6x9[2434] U8G_FONT_SECTION(".progmem.u8g_font_6x9") = {
+ 0x00,0x06,0x09,0x00,0xFE,0x06,0x02,0x0F,0x03,0x84,0x01,0xFF,0xFE,0x07,0xFE,0x06,
+ 0xFE,0x05,0x07,0x07,0x00,0x00,0x00,0x40,0xF0,0xC8,0x88,0x98,0x78,0x10,0x05,0x07,
+ 0x07,0x00,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,0x00,0x00,
+ 0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x07,0x07,0x00,0x00,0x00,0x20,0x70,0xF8,0x20,
+ 0x20,0x20,0xE0,0x05,0x07,0x07,0x00,0x00,0x00,0x20,0x70,0xA8,0xB8,0x88,0x70,0x20,
+ 0x06,0x05,0x05,0x00,0x00,0x00,0xB0,0xD8,0x6C,0xD8,0xB0,0x05,0x08,0x08,0x00,0x00,
+ 0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,0x09,0x09,0x00,0x00,0xFE,0x20,
+ 0x50,0x50,0x50,0x50,0x88,0xA8,0x88,0x70,0x03,0x03,0x03,0x00,0x00,0x03,0x40,0xA0,
+ 0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,0x05,0xFF,0x01,0x06,0x06,
+ 0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x00,0x80,0x03,0x03,0x03,0x06,0x01,0x03,0xA0,
+ 0xA0,0xA0,0x05,0x07,0x07,0x06,0x00,0xFF,0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x05,
+ 0x09,0x09,0x06,0x00,0xFE,0x20,0x70,0xA8,0xA0,0x70,0x28,0xA8,0x70,0x20,0x06,0x08,
+ 0x08,0x06,0x00,0xFF,0x40,0xA8,0x48,0x10,0x20,0x48,0x54,0x08,0x05,0x07,0x07,0x06,
+ 0x00,0xFF,0x60,0x90,0x90,0x60,0x98,0x90,0x68,0x01,0x03,0x03,0x06,0x02,0x03,0x80,
+ 0x80,0x80,0x02,0x07,0x07,0x06,0x02,0xFF,0x40,0x80,0x80,0x80,0x80,0x80,0x40,0x02,
+ 0x07,0x07,0x06,0x02,0xFF,0x80,0x40,0x40,0x40,0x40,0x40,0x80,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0x88,0x50,0xF8,0x50,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x20,0x20,0xF8,
+ 0x20,0x20,0x02,0x04,0x04,0x06,0x02,0xFE,0xC0,0x40,0x40,0x80,0x05,0x01,0x01,0x06,
+ 0x00,0x02,0xF8,0x02,0x02,0x02,0x06,0x02,0x00,0xC0,0xC0,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0x10,0x10,0x20,0x40,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x90,
+ 0x90,0x90,0x60,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0xE0,0x04,
+ 0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x10,0x20,0x40,0xF0,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0xF0,0x20,0x60,0x10,0x10,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0x30,0x50,
+ 0x90,0xF8,0x10,0x04,0x06,0x06,0x06,0x01,0x00,0xF0,0x80,0xE0,0x10,0x10,0xE0,0x04,
+ 0x06,0x06,0x06,0x01,0x00,0x60,0x80,0xE0,0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0xF0,0x10,0x10,0x20,0x40,0x40,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x60,
+ 0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x90,0x70,0x10,0x60,0x02,
+ 0x05,0x05,0x06,0x02,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x02,0x07,0x07,0x06,0x02,0xFE,
+ 0xC0,0xC0,0x00,0xC0,0x40,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x18,0x60,0x80,
+ 0x60,0x18,0x05,0x03,0x03,0x06,0x00,0x01,0xF8,0x00,0xF8,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0xC0,0x30,0x08,0x30,0xC0,0x04,0x07,0x07,0x06,0x01,0x00,0x60,0x90,0x10,0x60,
+ 0x40,0x00,0x40,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x90,0xA8,0xB0,0x80,0x70,0x05,
+ 0x06,0x06,0x06,0x00,0x00,0x20,0x50,0x88,0xF8,0x88,0x88,0x05,0x06,0x06,0x06,0x00,
+ 0x00,0xF0,0x88,0xF0,0x88,0x88,0xF0,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x80,
+ 0x80,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x90,0x90,0x90,0x90,0xE0,0x04,
+ 0x06,0x06,0x06,0x01,0x00,0xF0,0x80,0xE0,0x80,0x80,0xF0,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0xF0,0x80,0xE0,0x80,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0x80,
+ 0xB0,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x90,0x90,0xF0,0x90,0x90,0x90,0x03,
+ 0x06,0x06,0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0xE0,0x05,0x06,0x06,0x06,0x00,
+ 0x00,0x38,0x10,0x10,0x10,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x90,0xA0,0xC0,
+ 0xA0,0x90,0x90,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0x80,0x80,0x80,0xF0,0x05,
+ 0x06,0x06,0x06,0x00,0x00,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0x90,0xD0,0xB0,0x90,0x90,0x90,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x88,0x88,
+ 0x88,0x88,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x90,0x90,0xE0,0x80,0x80,0x04,
+ 0x07,0x07,0x06,0x01,0xFF,0x60,0x90,0x90,0xD0,0xB0,0x60,0x10,0x04,0x06,0x06,0x06,
+ 0x01,0x00,0xE0,0x90,0x90,0xE0,0x90,0x90,0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,
+ 0x40,0x20,0x90,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,
+ 0x04,0x06,0x06,0x06,0x01,0x00,0x90,0x90,0x90,0x90,0x90,0x60,0x04,0x06,0x06,0x06,
+ 0x01,0x00,0x90,0x90,0x90,0xF0,0x60,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x88,
+ 0xA8,0xA8,0xD8,0x88,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x50,0x20,0x20,0x50,0x88,
+ 0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x04,0x06,0x06,0x06,
+ 0x01,0x00,0xF0,0x10,0x20,0x40,0x80,0xF0,0x03,0x06,0x06,0x06,0x01,0x00,0xE0,0x80,
+ 0x80,0x80,0x80,0xE0,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0x40,0x20,0x10,0x10,
+ 0x03,0x06,0x06,0x06,0x01,0x00,0xE0,0x20,0x20,0x20,0x20,0xE0,0x05,0x03,0x03,0x06,
+ 0x00,0x03,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,0xFE,0xF8,0x02,0x02,0x02,0x06,
+ 0x02,0x04,0x80,0x40,0x04,0x04,0x04,0x06,0x01,0x00,0x70,0x90,0x90,0x70,0x04,0x06,
+ 0x06,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0x90,0xE0,0x04,0x04,0x04,0x06,0x01,0x00,
+ 0x70,0x80,0x80,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0x10,0x10,0x70,0x90,0x90,0x70,
+ 0x04,0x04,0x04,0x06,0x01,0x00,0x60,0xB0,0xC0,0x70,0x04,0x06,0x06,0x06,0x01,0x00,
+ 0x20,0x50,0x40,0xE0,0x40,0x40,0x04,0x06,0x06,0x06,0x01,0xFE,0x60,0x90,0x90,0x70,
+ 0x10,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0x90,0x90,0x03,0x06,
+ 0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x08,0x08,0x06,0x01,0xFE,
+ 0x20,0x00,0x60,0x20,0x20,0x20,0xA0,0x40,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0x80,
+ 0xA0,0xC0,0xA0,0x90,0x03,0x06,0x06,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,0x40,0xE0,
+ 0x05,0x04,0x04,0x06,0x00,0x00,0xD0,0xA8,0xA8,0x88,0x04,0x04,0x04,0x06,0x01,0x00,
+ 0xE0,0x90,0x90,0x90,0x04,0x04,0x04,0x06,0x01,0x00,0x60,0x90,0x90,0x60,0x04,0x06,
+ 0x06,0x06,0x01,0xFE,0xE0,0x90,0x90,0xE0,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0xFE,
+ 0x70,0x90,0x90,0x70,0x10,0x10,0x04,0x04,0x04,0x06,0x01,0x00,0xA0,0xD0,0x80,0x80,
+ 0x04,0x04,0x04,0x06,0x01,0x00,0x70,0xC0,0x30,0xE0,0x04,0x06,0x06,0x06,0x01,0x00,
+ 0x40,0x40,0xE0,0x40,0x50,0x20,0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x90,0x90,0x70,
+ 0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x90,0x60,0x60,0x05,0x04,0x04,0x06,0x00,0x00,
+ 0x88,0xA8,0xA8,0x50,0x04,0x04,0x04,0x06,0x01,0x00,0x90,0x60,0x60,0x90,0x04,0x06,
+ 0x06,0x06,0x01,0xFE,0x90,0x90,0x90,0x70,0x90,0x60,0x04,0x04,0x04,0x06,0x01,0x00,
+ 0xF0,0x20,0x40,0xF0,0x03,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x40,0x80,0x40,0x40,
+ 0x20,0x01,0x07,0x07,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x03,0x07,
+ 0x07,0x06,0x01,0x00,0x80,0x40,0x40,0x20,0x40,0x40,0x80,0x04,0x02,0x02,0x06,0x01,
+ 0x03,0x50,0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,0x05,0xFF,0x01,0x06,0x06,0x06,0x02,0x00,
+ 0x80,0x00,0x80,0x80,0x80,0x80,0x04,0x06,0x06,0x06,0x01,0xFF,0x20,0x70,0xA0,0xA0,
+ 0x70,0x20,0x05,0x07,0x07,0x06,0x00,0xFF,0x30,0x48,0x40,0xF0,0x40,0x40,0xF8,0x05,
+ 0x05,0x05,0x06,0x00,0x00,0xA8,0x50,0x88,0x50,0xA8,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0x88,0x50,0xF8,0x20,0xF8,0x20,0x01,0x07,0x07,0x06,0x02,0xFF,0x80,0x80,0x80,0x00,
+ 0x80,0x80,0x80,0x04,0x07,0x07,0x06,0x01,0xFF,0x70,0x80,0x60,0x90,0x60,0x10,0xE0,
+ 0x03,0x01,0x01,0x06,0x01,0x05,0xA0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0x94,
+ 0xA4,0x94,0x84,0x78,0x03,0x05,0x05,0x06,0x01,0x01,0x60,0xA0,0x60,0x00,0xE0,0x05,
+ 0x05,0x05,0x06,0x00,0x00,0x28,0x50,0xA0,0x50,0x28,0x04,0x03,0x03,0x06,0x01,0x00,
+ 0xF0,0x10,0x10,0x04,0x01,0x01,0x06,0x01,0x02,0xF0,0x06,0x07,0x07,0x06,0x00,0x00,
+ 0x78,0x84,0xB4,0xA4,0xA4,0x84,0x78,0x04,0x01,0x01,0x06,0x01,0x05,0xF0,0x04,0x03,
+ 0x03,0x06,0x01,0x02,0x60,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0xFF,0x20,0x20,0xF8,
+ 0x20,0x20,0x00,0xF8,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xA0,0x20,0x40,0xE0,0x03,
+ 0x05,0x05,0x06,0x01,0x01,0xC0,0x20,0x40,0x20,0xC0,0x02,0x02,0x02,0x06,0x02,0x04,
+ 0x40,0x80,0x04,0x05,0x05,0x06,0x01,0xFF,0x90,0x90,0xB0,0xD0,0x80,0x05,0x06,0x06,
+ 0x06,0x00,0x00,0x78,0xE8,0xE8,0x68,0x28,0x28,0x01,0x01,0x01,0x06,0x02,0x02,0x80,
+ 0x02,0x02,0x02,0x06,0x02,0xFE,0x40,0x80,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xC0,
+ 0x40,0x40,0xE0,0x03,0x05,0x05,0x06,0x01,0x01,0x40,0xA0,0x40,0x00,0xE0,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xA0,0x50,0x28,0x50,0xA0,0x05,0x08,0x08,0x06,0x00,0xFF,0x40,
+ 0xC0,0x40,0x50,0x70,0x30,0x78,0x10,0x05,0x08,0x08,0x06,0x00,0xFF,0x40,0xC0,0x40,
+ 0x50,0x68,0x08,0x10,0x38,0x05,0x08,0x08,0x06,0x00,0xFF,0xC0,0x20,0x40,0x30,0xF0,
+ 0x30,0x78,0x10,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x00,0x20,0x60,0x80,0x90,0x60,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x20,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x10,0x20,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x20,0x50,0x20,0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x28,0x50,0x20,
+ 0x50,0x70,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x20,0x50,0x70,0x88,
+ 0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x50,0x20,0x50,0x70,0x88,0x88,0x05,0x06,
+ 0x06,0x06,0x00,0x00,0x78,0xA0,0xF0,0xA0,0xA0,0xB8,0x04,0x08,0x08,0x06,0x01,0xFE,
+ 0x60,0x90,0x80,0x80,0x90,0x60,0x20,0x40,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,
+ 0xF0,0x80,0xE0,0x80,0xF0,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0xF0,0x80,0xE0,
+ 0x80,0xF0,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0xF0,0x80,0xE0,0x80,0xF0,0x04,
+ 0x07,0x07,0x06,0x01,0x00,0x50,0x00,0xF0,0x80,0xE0,0x80,0xF0,0x03,0x07,0x07,0x06,
+ 0x01,0x00,0x80,0x40,0xE0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0x20,
+ 0x40,0xE0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xA0,0xE0,0x40,
+ 0x40,0x40,0xE0,0x03,0x07,0x07,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,0x40,0x40,0xE0,
+ 0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x48,0xE8,0x48,0x48,0x70,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x50,0xA0,0x90,0xD0,0xB0,0x90,0x90,0x04,0x07,0x07,0x06,0x01,0x00,0x40,
+ 0x20,0x60,0x90,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x60,0x90,
+ 0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0x60,0x90,0x90,0x90,0x60,
+ 0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x60,0x90,0x90,0x90,0x60,0x04,0x07,0x07,
+ 0x06,0x01,0x00,0x50,0x00,0x60,0x90,0x90,0x90,0x60,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0x88,0x50,0x20,0x50,0x88,0x04,0x08,0x08,0x06,0x01,0xFF,0x10,0x70,0xB0,0xB0,0xD0,
+ 0xD0,0xE0,0x80,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x90,0x90,0x90,0x90,0x60,
+ 0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x90,0x90,0x90,0x90,0x60,0x04,0x07,0x07,
+ 0x06,0x01,0x00,0x20,0x50,0x90,0x90,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,
+ 0x50,0x00,0x90,0x90,0x90,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x20,0x88,
+ 0x50,0x20,0x20,0x20,0x04,0x06,0x06,0x06,0x01,0x00,0x80,0xE0,0x90,0x90,0xE0,0x80,
+ 0x04,0x06,0x06,0x06,0x01,0x00,0x60,0x90,0xA0,0xA0,0x90,0xA0,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x40,0x20,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
+ 0x40,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x50,0x00,0x70,
+ 0x90,0x90,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0x70,0x90,0x90,0x70,
+ 0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x70,0x90,0x90,0x70,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x20,0x50,0x20,0x70,0x90,0x90,0x70,0x05,0x04,0x04,0x06,0x00,0x00,0x70,
+ 0xA8,0xB0,0x78,0x04,0x06,0x06,0x06,0x01,0xFE,0x70,0x80,0x80,0x70,0x20,0x40,0x04,
+ 0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x60,0xB0,0xC0,0x70,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x20,0x40,0x00,0x60,0xB0,0xC0,0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
+ 0x50,0x00,0x60,0xB0,0xC0,0x70,0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x60,0xB0,
+ 0xC0,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0x80,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,
+ 0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x07,0x07,0x06,
+ 0x01,0x00,0x40,0xA0,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,0x06,0x01,0x00,0xA0,
+ 0x00,0xC0,0x40,0x40,0xE0,0x04,0x07,0x07,0x06,0x01,0x00,0x30,0x60,0x10,0x70,0x90,
+ 0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0xE0,0x90,0x90,0x90,0x04,
+ 0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x20,0x40,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x20,
+ 0x50,0x00,0x60,0x90,0x90,0x60,0x04,0x07,0x07,0x06,0x01,0x00,0x50,0xA0,0x00,0x60,
+ 0x90,0x90,0x60,0x04,0x06,0x06,0x06,0x01,0x00,0x50,0x00,0x60,0x90,0x90,0x60,0x05,
+ 0x05,0x05,0x06,0x00,0x00,0x20,0x00,0xF8,0x00,0x20,0x04,0x04,0x04,0x06,0x01,0x00,
+ 0x70,0xB0,0xD0,0xE0,0x04,0x07,0x07,0x06,0x01,0x00,0x40,0x20,0x00,0x90,0x90,0x90,
+ 0x70,0x04,0x07,0x07,0x06,0x01,0x00,0x20,0x40,0x00,0x90,0x90,0x90,0x70,0x04,0x07,
+ 0x07,0x06,0x01,0x00,0x20,0x50,0x00,0x90,0x90,0x90,0x70,0x04,0x06,0x06,0x06,0x01,
+ 0x00,0x50,0x00,0x90,0x90,0x90,0x70,0x04,0x09,0x09,0x06,0x01,0xFE,0x20,0x40,0x00,
+ 0x90,0x90,0x90,0x70,0x90,0x60,0x04,0x08,0x08,0x06,0x01,0xFE,0x80,0x80,0xE0,0x90,
+ 0x90,0xE0,0x80,0x80,0x04,0x08,0x08,0x06,0x01,0xFE,0x50,0x00,0x90,0x90,0x90,0x70,
+ 0x90,0x60};
diff --git a/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h b/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h
new file mode 100644
index 0000000..b4b615d
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/fontdata_ISO10646_1.h
@@ -0,0 +1,301 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include
+
+#if defined(__AVR__) && ENABLED(NOT_EXTENDED_ISO10646_1_5X7)
+ // reduced font (only symbols 1 - 127) - saves about 1278 bytes of FLASH
+
+/*
+ Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1
+ Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1
+ Capital A Height: 7, '1' Height: 7
+ Calculated Max Values w= 7 h=10 x= 5 y= 5 dx= 7 dy= 0 ascent= 8 len=10
+ Font Bounding box w=12 h=15 x= 0 y=-2
+ Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
+ Pure Font ascent = 7 descent=-2
+ X Font ascent = 8 descent=-2
+ Max Font ascent = 8 descent=-2
+*/
+const u8g_fntpgm_uint8_t ISO10646_1_5x7[1324] U8G_FONT_SECTION("ISO10646_1_5x7") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0x7F,0xFE,0x08,0xFE,0x08,
+ 0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,
+ 0x06,0x00,0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
+ 0xF8,0x20,0x20,0x20,0x20,0xE0,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA8,
+ 0xB8,0x88,0x88,0x70,0x20,0x07,0x05,0x05,0x07,0x00,0x01,0xD8,0x6C,0x36,0x6C,0xD8,
+ 0x05,0x09,0x09,0x06,0x00,0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,
+ 0x0A,0x0A,0x06,0x00,0xFE,0x20,0x50,0x50,0x50,0x50,0x88,0xA8,0xA8,0x88,0x70,0x03,
+ 0x03,0x03,0x06,0x00,0x03,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
+ 0x00,0x06,0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
+ 0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xA0,0xA0,0xA0,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0x50,0xF8,0x50,0x50,0xF8,0x50,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,
+ 0x70,0x28,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xC8,0xC8,0x10,0x20,0x40,
+ 0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x01,
+ 0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,
+ 0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,
+ 0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xA8,0x70,0x20,
+ 0x70,0xA8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xF8,0x20,0x20,0x02,0x03,
+ 0x03,0x06,0x01,0xFF,0xC0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xF8,0x02,0x02,
+ 0x02,0x06,0x01,0x00,0xC0,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,0x20,
+ 0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,
+ 0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,0x50,
+ 0x90,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,
+ 0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xF0,0x88,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
+ 0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xC0,0xC0,0x00,0xC0,0xC0,
+ 0x02,0x06,0x06,0x06,0x01,0xFF,0xC0,0xC0,0x00,0xC0,0x40,0x80,0x03,0x05,0x05,0x06,
+ 0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xF8,0x00,0xF8,
+ 0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
+ 0xB8,0xA8,0xB8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,
+ 0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0xF0,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
+ 0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,
+ 0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x03,0x07,0x07,
+ 0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
+ 0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,
+ 0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0xA8,
+ 0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
+ 0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0x50,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,0x20,
+ 0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0xE0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,
+ 0xFE,0xF8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,
+ 0x88,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,0xE0,
+ 0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x88,0x88,0x78,0x08,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x03,0x07,0x07,
+ 0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x04,0x09,0x09,0x06,0x01,0xFE,
+ 0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,
+ 0x80,0x88,0x90,0xE0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,
+ 0x40,0x40,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,
+ 0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
+ 0x80,0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x78,
+ 0x80,0x70,0x08,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
+ 0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xA8,
+ 0xA8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0xFE,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0xF8,0x10,0x20,0x40,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,0x40,0x40,0x80,
+ 0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,0x40,0x20,0x40,0x40,
+ 0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xA8,0x90,0xFF};
+#else
+ // extended (original) font (symbols 1 - 255)
+
+/*
+ Fontname: -Marlin6x12-Fixed-Medium-R-SemiCondensed--12-90-100-100-C-111-ISO10646-1
+ Copyright: Public domain terminal emulator font. Share and enjoy. original font -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1
+ Capital A Height: 7, '1' Height: 7
+ Calculated Max Values w= 7 h=10 x= 5 y= 7 dx= 7 dy= 0 ascent=10 len=10
+ Font Bounding box w=12 h=15 x= 0 y=-2
+ Calculated Min Values x= 0 y=-2 dx= 0 dy= 0
+ Pure Font ascent = 7 descent=-2
+ X Font ascent = 8 descent=-2
+ Max Font ascent =10 descent=-2
+*/
+const u8g_fntpgm_uint8_t ISO10646_1_5x7[2647] U8G_FONT_SECTION("ISO10646_1_5x7") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x07,0x02,0x25,0x03,0xBB,0x01,0xFF,0xFE,0x0A,0xFE,0x08,
+ 0xFE,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0xF0,0xC8,0x88,0x88,0x98,0x78,0x10,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0xC0,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x05,0x05,0x05,
+ 0x06,0x00,0x01,0x20,0x30,0xF8,0x30,0x20,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x70,
+ 0xF8,0x20,0x20,0x20,0x20,0xE0,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA8,
+ 0xB8,0x88,0x88,0x70,0x20,0x07,0x05,0x05,0x07,0x00,0x01,0xD8,0x6C,0x36,0x6C,0xD8,
+ 0x05,0x09,0x09,0x06,0x00,0xFF,0xF8,0xA8,0x88,0x88,0x88,0x88,0x88,0xA8,0xF8,0x05,
+ 0x0A,0x0A,0x06,0x00,0xFE,0x20,0x50,0x50,0x50,0x50,0x88,0xA8,0xA8,0x88,0x70,0x03,
+ 0x03,0x03,0x06,0x00,0x03,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
+ 0x00,0x06,0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
+ 0x80,0x03,0x03,0x03,0x06,0x01,0x05,0xA0,0xA0,0xA0,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0x50,0xF8,0x50,0x50,0xF8,0x50,0x05,0x09,0x09,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,
+ 0x70,0x28,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0xC8,0xC8,0x10,0x20,0x40,
+ 0x98,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x01,
+ 0x03,0x03,0x06,0x02,0x05,0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,
+ 0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,
+ 0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xA8,0x70,0x20,
+ 0x70,0xA8,0x20,0x05,0x05,0x05,0x06,0x00,0x01,0x20,0x20,0xF8,0x20,0x20,0x02,0x03,
+ 0x03,0x06,0x01,0xFF,0xC0,0x40,0x80,0x05,0x01,0x01,0x06,0x00,0x03,0xF8,0x02,0x02,
+ 0x02,0x06,0x01,0x00,0xC0,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x10,0x20,
+ 0x40,0x40,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x98,0xA8,0xC8,0x88,0x70,
+ 0x03,0x07,0x07,0x06,0x01,0x00,0x40,0xC0,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x30,0x50,
+ 0x90,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0xF0,0x08,0x08,0x88,
+ 0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x40,0x80,0xF0,0x88,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
+ 0x88,0x78,0x08,0x10,0x60,0x02,0x05,0x05,0x06,0x01,0x00,0xC0,0xC0,0x00,0xC0,0xC0,
+ 0x02,0x06,0x06,0x06,0x01,0xFF,0xC0,0xC0,0x00,0xC0,0x40,0x80,0x03,0x05,0x05,0x06,
+ 0x01,0x01,0x20,0x40,0x80,0x40,0x20,0x05,0x03,0x03,0x06,0x00,0x02,0xF8,0x00,0xF8,
+ 0x03,0x05,0x05,0x06,0x01,0x01,0x80,0x40,0x20,0x40,0x80,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x10,0x20,0x20,0x00,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
+ 0xB8,0xA8,0xB8,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,
+ 0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0xF0,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
+ 0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,
+ 0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x03,0x07,0x07,
+ 0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
+ 0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,
+ 0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0xA8,
+ 0x90,0x68,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
+ 0x50,0x50,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0x50,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x40,0x40,0x20,
+ 0x10,0x10,0x08,0x03,0x09,0x09,0x06,0x01,0xFF,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0xE0,0x05,0x03,0x03,0x06,0x00,0x05,0x20,0x50,0x88,0x05,0x01,0x01,0x06,0x00,
+ 0xFE,0xF8,0x03,0x03,0x03,0x06,0x01,0x05,0x80,0x40,0x20,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,
+ 0x88,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x80,0x80,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x30,0x48,0x40,0xE0,
+ 0x40,0x40,0x40,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x88,0x88,0x78,0x08,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x03,0x07,0x07,
+ 0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x04,0x09,0x09,0x06,0x01,0xFE,
+ 0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,
+ 0x80,0x88,0x90,0xE0,0x90,0x88,0x03,0x07,0x07,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,
+ 0x40,0x40,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,
+ 0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
+ 0x80,0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x78,
+ 0x80,0x70,0x08,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
+ 0x18,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xA8,
+ 0xA8,0x50,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0xFE,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0xF8,0x10,0x20,0x40,0xF8,0x03,0x09,0x09,0x06,0x01,0xFF,0x20,0x40,0x40,0x40,0x80,
+ 0x40,0x40,0x40,0x20,0x01,0x09,0x09,0x06,0x02,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x03,0x09,0x09,0x06,0x01,0xFF,0x80,0x40,0x40,0x40,0x20,0x40,0x40,
+ 0x40,0x80,0x05,0x03,0x03,0x06,0x00,0x02,0x48,0xA8,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x06,
+ 0x05,0xFF,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x05,
+ 0x07,0x07,0x06,0x00,0xFF,0x20,0x70,0xA8,0xA0,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x30,0x48,0x40,0xE0,0x40,0x48,0xB0,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,
+ 0x50,0x88,0x50,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x50,0xF8,0x20,0xF8,0x20,
+ 0x20,0x01,0x07,0x07,0x06,0x02,0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x04,0x08,
+ 0x08,0x06,0x01,0x00,0x70,0x80,0x60,0x90,0x90,0x60,0x10,0xE0,0x03,0x01,0x01,0x06,
+ 0x01,0x07,0xA0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xB4,0xA4,0xB4,0x84,0x78,
+ 0x03,0x05,0x05,0x06,0x01,0x04,0x60,0xA0,0x60,0x00,0xE0,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x28,0x50,0xA0,0x50,0x28,0x05,0x03,0x03,0x06,0x00,0x01,0xF8,0x08,0x08,0x03,
+ 0x01,0x01,0x06,0x01,0x03,0xE0,0x06,0x07,0x07,0x06,0x00,0x00,0x78,0x84,0xB4,0xA4,
+ 0xA4,0x84,0x78,0x05,0x01,0x01,0x06,0x00,0x07,0xF8,0x04,0x04,0x04,0x06,0x01,0x05,
+ 0x60,0x90,0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,
+ 0xF8,0x03,0x05,0x05,0x06,0x01,0x04,0x40,0xA0,0x20,0x40,0xE0,0x03,0x05,0x05,0x06,
+ 0x01,0x04,0xC0,0x20,0x40,0x20,0xC0,0x03,0x03,0x03,0x06,0x01,0x05,0x20,0x40,0x80,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x08,0x08,
+ 0x06,0x00,0x00,0x78,0xE8,0xE8,0xE8,0x68,0x28,0x28,0x28,0x02,0x02,0x02,0x06,0x02,
+ 0x03,0xC0,0xC0,0x03,0x02,0x02,0x06,0x01,0xFE,0x20,0xC0,0x03,0x05,0x05,0x06,0x01,
+ 0x04,0x40,0xC0,0x40,0x40,0xE0,0x03,0x05,0x05,0x06,0x01,0x05,0x40,0xA0,0x40,0x00,
+ 0xE0,0x05,0x05,0x05,0x06,0x00,0x00,0xA0,0x50,0x28,0x50,0xA0,0x05,0x0A,0x0A,0x06,
+ 0x00,0x00,0x40,0xC0,0x48,0x50,0x60,0x50,0xB0,0x50,0x78,0x10,0x05,0x0A,0x0A,0x06,
+ 0x00,0x00,0x40,0xC0,0x48,0x50,0x60,0x50,0xA8,0x08,0x10,0x38,0x05,0x0A,0x0A,0x06,
+ 0x00,0x00,0xC0,0x20,0x48,0x30,0xE0,0x50,0xB0,0x50,0x78,0x10,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,
+ 0x20,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,
+ 0x20,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,
+ 0x50,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x68,
+ 0xB0,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x50,
+ 0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,
+ 0x20,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0xA0,
+ 0xA0,0xF0,0xA0,0xA0,0xB8,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x80,0x80,0x80,
+ 0x88,0x70,0x10,0x60,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0xF8,0x80,0x80,
+ 0xF0,0x80,0x80,0xF8,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,
+ 0xF0,0x80,0x80,0xF8,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,0x00,0xF8,0x80,0x80,
+ 0xF0,0x80,0x80,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xF8,0x80,0x80,0xF0,
+ 0x80,0x80,0xF8,0x03,0x0A,0x0A,0x06,0x01,0x00,0x80,0x40,0x00,0xE0,0x40,0x40,0x40,
+ 0x40,0x40,0xE0,0x03,0x0A,0x0A,0x06,0x01,0x00,0x20,0x40,0x00,0xE0,0x40,0x40,0x40,
+ 0x40,0x40,0xE0,0x03,0x0A,0x0A,0x06,0x01,0x00,0x40,0xA0,0x00,0xE0,0x40,0x40,0x40,
+ 0x40,0x40,0xE0,0x03,0x09,0x09,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,0x40,0x40,0x40,
+ 0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x48,0x48,0xE8,0x48,0x48,0x70,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x68,0xB0,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
+ 0x09,0x09,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x05,
+ 0x05,0x06,0x00,0x01,0x88,0x50,0x20,0x50,0x88,0x05,0x09,0x09,0x06,0x00,0xFF,0x08,
+ 0x70,0x98,0xA8,0xA8,0xA8,0xC8,0x70,0x80,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,
+ 0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,
+ 0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x20,0x50,
+ 0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,
+ 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,
+ 0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0xE0,0x90,
+ 0x90,0x90,0xE0,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x90,0xA0,0x90,0x88,
+ 0xB0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x08,0x78,0x88,0x78,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,
+ 0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,0x00,
+ 0x00,0x68,0xB0,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x50,
+ 0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x20,0x70,
+ 0x08,0x78,0x88,0x78,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x28,0x70,0xA0,0x78,0x05,
+ 0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0x80,0x88,0x70,0x10,0x60,0x05,0x08,0x08,0x06,
+ 0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,0x00,
+ 0x10,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,
+ 0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,
+ 0xF0,0x80,0x70,0x03,0x08,0x08,0x06,0x01,0x00,0x80,0x40,0x00,0xC0,0x40,0x40,0x40,
+ 0xE0,0x03,0x08,0x08,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x03,
+ 0x08,0x08,0x06,0x01,0x00,0x40,0xA0,0x00,0xC0,0x40,0x40,0x40,0xE0,0x03,0x07,0x07,
+ 0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0x40,0xE0,0x05,0x09,0x09,0x06,0x00,0x00,
+ 0x50,0x20,0x50,0x08,0x78,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x68,
+ 0xB0,0x00,0xB0,0xC8,0x88,0x88,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,
+ 0x70,0x88,0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,
+ 0x88,0x88,0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,
+ 0x00,0x01,0x20,0x00,0xF8,0x00,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x98,0xA8,
+ 0xC8,0xF0,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,0x70,
+ 0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x08,
+ 0x08,0x06,0x00,0x00,0x20,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x10,
+ 0x20,0x00,0x88,0x88,0x88,0x50,0x20,0x40,0x80,0x05,0x09,0x09,0x06,0x00,0xFE,0x80,
+ 0x80,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x05,0x09,0x09,0x06,0x00,0xFE,0x50,0x00,
+ 0x88,0x88,0x88,0x50,0x20,0x40,0x80};
+
+#endif
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_an.h b/Marlin/src/lcd/dogm/fontdata/langdata_an.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_an.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_bg.h b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h
new file mode 100644
index 0000000..c506f87
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h
@@ -0,0 +1,77 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_8_144_149[96] U8G_FONT_SECTION("fontpage_8_144_149") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x95,0x00,0x07,0xFF,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
+ 0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8
+ };
+const u8g_fntpgm_uint8_t fontpage_8_151_152[43] U8G_FONT_SECTION("fontpage_8_151_152") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x98,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_8_154_164[160] U8G_FONT_SECTION("fontpage_8_154_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0xA4,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,
+ 0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,
+ 0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,
+ 0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20
+ };
+const u8g_fntpgm_uint8_t fontpage_8_166_166[32] U8G_FONT_SECTION("fontpage_8_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08
+ };
+const u8g_fntpgm_uint8_t fontpage_8_175_195[260] U8G_FONT_SECTION("fontpage_8_175_195") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xC3,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
+ 0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
+ 0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
+ 0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
+ 0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
+ 0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
+ 0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
+ 0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
+ 0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
+ 0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
+ 0x88,0x78,0x08,0x70};
+const u8g_fntpgm_uint8_t fontpage_8_197_200[63] U8G_FONT_SECTION("fontpage_8_197_200") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC8,0x00,0x05,0xFE,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,0x07,0x06,
+ 0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
+ 0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xF8};
+const u8g_fntpgm_uint8_t fontpage_8_202_202[28] U8G_FONT_SECTION("fontpage_8_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70};
+const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCF,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,
+ 0x01,0x00,0x70,0x90,0x70,0x50,0x90};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е'
+ FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И'
+ FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф'
+ FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
+ FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у'
+ FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш'
+ FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ'
+ FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ca.h b/Marlin/src/lcd/dogm/fontdata/langdata_ca.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ca.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_cz.h b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h
new file mode 100644
index 0000000..754459d
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h
@@ -0,0 +1,54 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_140_141[47] U8G_FONT_SECTION("fontpage_2_140_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_143_143[33] U8G_FONT_SECTION("fontpage_2_143_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0x00,0x00,
+ 0x00,0x06,0x0A,0x0A,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_2_154_155[47] U8G_FONT_SECTION("fontpage_2_154_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9B,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
+ 0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0xF0,0x80,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_200_200[31] U8G_FONT_SECTION("fontpage_2_200_200") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_2_216_217[47] U8G_FONT_SECTION("fontpage_2_216_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD9,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,
+ 0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x80,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_2_224_225[47] U8G_FONT_SECTION("fontpage_2_224_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE1,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
+const u8g_fntpgm_uint8_t fontpage_2_229_229[33] U8G_FONT_SECTION("fontpage_2_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
+ 0x18};
+const u8g_fntpgm_uint8_t fontpage_2_239_239[31] U8G_FONT_SECTION("fontpage_2_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x20,0x50,0x20,0x88,0x88,0x88,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253_254") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFE,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
+ 0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
+ FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď'
+ FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // 'Ě' -- 'ě'
+ FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň'
+ FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř'
+ FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
+ FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
+ FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů'
+ FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_da.h b/Marlin/src/lcd/dogm/fontdata/langdata_da.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_da.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_de.h b/Marlin/src/lcd/dogm/fontdata/langdata_de.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_de.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el.h b/Marlin/src/lcd/dogm/fontdata/langdata_el.h
new file mode 100644
index 0000000..4b545f2
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_el.h
@@ -0,0 +1,90 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
+ 0xF8};
+const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
+ 0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,
+ 0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
+ 0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,
+ 0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_7_163_167[82] U8G_FONT_SECTION("fontpage_7_163_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA7,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x40,0x20,0x10,0x20,0x40,0xF8,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,
+ 0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
+ 0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_172_175[75] U8G_FONT_SECTION("fontpage_7_172_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAF,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x68,0x90,0x90,0x90,0x68,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0A,0x0A,
+ 0x06,0x00,0xFE,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
+ 0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xA0,0x40};
+const u8g_fntpgm_uint8_t fontpage_7_177_181[80] U8G_FONT_SECTION("fontpage_7_177_181") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB5,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x68,0x90,0x90,0x90,0x68,0x05,0x09,0x09,0x06,
+ 0x00,0xFE,0x60,0x90,0x90,0xB0,0x88,0x88,0xF0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
+ 0xFE,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
+ 0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x60,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_7_183_199[226] U8G_FONT_SECTION("fontpage_7_183_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xC7,0x00,0x09,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
+ 0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xF0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
+ 0x00,0x80,0x80,0x80,0xA0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,
+ 0x90,0x05,0x09,0x09,0x06,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x50,0x50,0x88,0x88,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0xF8,0x20,
+ 0x40,0x70,0x80,0x80,0x70,0x08,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,
+ 0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xF8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
+ 0x06,0x00,0xFE,0x70,0x88,0x88,0xC8,0xB0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xFE,
+ 0x70,0x88,0x80,0x80,0x70,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x90,0x88,
+ 0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x10,0xA8,
+ 0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x50,0x20,0x50,
+ 0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_201_201[28] U8G_FONT_SECTION("fontpage_7_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50};
+const u8g_fntpgm_uint8_t fontpage_7_204_206[59] U8G_FONT_SECTION("fontpage_7_204_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCE,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x08,0x08,
+ 0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xA8,0xA8,0x50};
+const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
+ 0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
+ FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
+ FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
+ FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
+ FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
+ FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
+ FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
+ FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
+ FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
+ FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h b/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
new file mode 100644
index 0000000..4b545f2
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
@@ -0,0 +1,90 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x80,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
+ 0xF8};
+const u8g_fntpgm_uint8_t fontpage_7_145_157[186] U8G_FONT_SECTION("fontpage_7_145_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x9D,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,
+ 0x50,0x50,0x88,0x88,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,
+ 0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
+ 0x40,0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,
+ 0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_159_161[56] U8G_FONT_SECTION("fontpage_7_159_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA1,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_7_163_167[82] U8G_FONT_SECTION("fontpage_7_163_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA7,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x40,0x20,0x10,0x20,0x40,0xF8,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,
+ 0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,
+ 0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_172_175[75] U8G_FONT_SECTION("fontpage_7_172_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAF,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x68,0x90,0x90,0x90,0x68,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x88,0x70,0x05,0x0A,0x0A,
+ 0x06,0x00,0xFE,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x03,0x08,0x08,
+ 0x06,0x01,0x00,0x40,0x80,0x00,0x80,0x80,0x80,0xA0,0x40};
+const u8g_fntpgm_uint8_t fontpage_7_177_181[80] U8G_FONT_SECTION("fontpage_7_177_181") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB5,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x68,0x90,0x90,0x90,0x68,0x05,0x09,0x09,0x06,
+ 0x00,0xFE,0x60,0x90,0x90,0xB0,0x88,0x88,0xF0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,
+ 0xFE,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x80,
+ 0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x60,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_7_183_199[226] U8G_FONT_SECTION("fontpage_7_183_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xC7,0x00,0x09,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0xB0,0xC8,0x88,0x88,0x88,0x08,0x08,0x04,0x07,
+ 0x07,0x06,0x01,0x00,0x60,0x90,0x90,0xF0,0x90,0x90,0x60,0x03,0x05,0x05,0x06,0x02,
+ 0x00,0x80,0x80,0x80,0xA0,0x40,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,
+ 0x90,0x05,0x09,0x09,0x06,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x50,0x50,0x88,0x88,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x98,0xE8,0x80,0x80,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0xF8,0x20,
+ 0x40,0x70,0x80,0x80,0x70,0x08,0x10,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,
+ 0x88,0x70,0x06,0x05,0x05,0x06,0x00,0x00,0xF8,0x50,0x50,0x54,0x48,0x05,0x07,0x07,
+ 0x06,0x00,0xFE,0x70,0x88,0x88,0xC8,0xB0,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0xFE,
+ 0x70,0x88,0x80,0x80,0x70,0x08,0x30,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x90,0x88,
+ 0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x28,0x10,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x10,0xA8,
+ 0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x50,0x20,0x50,
+ 0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_7_201_201[28] U8G_FONT_SECTION("fontpage_7_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50};
+const u8g_fntpgm_uint8_t fontpage_7_204_206[59] U8G_FONT_SECTION("fontpage_7_204_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCE,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x90,0x88,0x88,0x88,0x70,0x05,0x08,0x08,
+ 0x06,0x00,0x00,0x10,0x20,0x00,0x50,0x88,0xA8,0xA8,0x50};
+const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
+ 0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
+ FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
+ FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
+ FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
+ FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
+ FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
+ FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
+ FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
+ FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
+ FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_en.h b/Marlin/src/lcd/dogm/fontdata/langdata_en.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_en.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_es.h b/Marlin/src/lcd/dogm/fontdata/langdata_es.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_es.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_eu.h b/Marlin/src/lcd/dogm/fontdata/langdata_eu.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_eu.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_fi.h b/Marlin/src/lcd/dogm/fontdata/langdata_fi.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_fi.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_fr.h b/Marlin/src/lcd/dogm/fontdata/langdata_fr.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_fr.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_gl.h b/Marlin/src/lcd/dogm/fontdata/langdata_gl.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_gl.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hr.h b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h
new file mode 100644
index 0000000..cdb2cc7
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h
@@ -0,0 +1,32 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_135_135[31] U8G_FONT_SECTION("fontpage_2_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_140_141[47] U8G_FONT_SECTION("fontpage_2_140_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_145_145[31] U8G_FONT_SECTION("fontpage_2_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x08,0x00,0x00,
+ 0x00,0x06,0x08,0x08,0x06,0x00,0x00,0x08,0x1C,0x08,0x78,0x88,0x88,0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_2_225_225[31] U8G_FONT_SECTION("fontpage_2_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
+const u8g_fntpgm_uint8_t fontpage_2_254_254[31] U8G_FONT_SECTION("fontpage_2_254_254") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
+ FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
+ FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ'
+ FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
+ FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hu.h b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h
new file mode 100644
index 0000000..8c15a38
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h
@@ -0,0 +1,15 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_241_241[31] U8G_FONT_SECTION("fontpage_2_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x70};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 241, 241, fontpage_2_241_241), // 'ű' -- 'ű'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_it.h b/Marlin/src/lcd/dogm/fontdata/langdata_it.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_it.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
new file mode 100644
index 0000000..01316d4
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
@@ -0,0 +1,111 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_97_161_164[65] U8G_FONT_SECTION("fontpage_97_161_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA4,0x00,0x07,0x00,0x00,
+ 0x00,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0x60,0x40,0x80,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF8,0x08,0x28,0x30,0x20,0x20,0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x10,
+ 0x20,0x60,0xA0,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x20,0x60,0xA0,0x20,
+ 0x20};
+const u8g_fntpgm_uint8_t fontpage_97_166_166[30] U8G_FONT_SECTION("fontpage_97_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x88,0x88,0x08,0x10,0x60};
+const u8g_fntpgm_uint8_t fontpage_97_168_168[29] U8G_FONT_SECTION("fontpage_97_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x06,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0xF8};
+const u8g_fntpgm_uint8_t fontpage_97_170_187[268] U8G_FONT_SECTION("fontpage_97_170_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAA,0xBB,0x00,0x0D,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0xF8,0x10,0x30,0x50,0x90,0x10,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x09,0x09,0x06,0x00,
+ 0x00,0x28,0x08,0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x20,0xF8,0x20,0x20,0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,
+ 0xF8,0x20,0x20,0xF8,0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0x88,
+ 0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,0x78,0x48,0x88,0x08,
+ 0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,
+ 0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x06,
+ 0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,
+ 0x28,0x28,0x00,0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x50,
+ 0xF8,0x50,0x50,0x50,0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x50,0xF8,
+ 0x50,0x50,0x50,0x10,0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0xC8,0x08,0x10,
+ 0xE0,0x07,0x0D,0x0D,0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x28,0x28,0x00,0xC0,0x08,
+ 0xC8,0x08,0x10,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,0x10,0x20,0x50,0x88,
+ 0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x38};
+const u8g_fntpgm_uint8_t fontpage_97_189_193[85] U8G_FONT_SECTION("fontpage_97_189_193") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xC1,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x48,0x48,0x10,0x10,0x20,0x05,0x09,0x09,
+ 0x06,0x00,0x00,0x28,0x28,0x00,0x88,0x48,0x48,0x10,0x10,0x20,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x40,0x78,0x48,0xA8,0x18,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,
+ 0x08,0x40,0x78,0x48,0xA8,0x18,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x60,
+ 0x20,0xF8,0x20,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_97_195_211[241] U8G_FONT_SECTION("fontpage_97_195_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xD3,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x04,0x04,0x06,0x00,0x00,0xA8,0xA8,0x08,0x30,0x05,0x06,0x06,0x06,0x00,
+ 0x00,0xA8,0xA8,0xA8,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,
+ 0xA8,0xA8,0xA8,0x08,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x20,
+ 0x20,0x20,0x40,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x70,0x00,0xF8,0x20,0x20,
+ 0x20,0x40,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x04,
+ 0x09,0x09,0x06,0x01,0x00,0x50,0x10,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x40,0x80,0x05,0x06,0x06,0x06,0x00,
+ 0x00,0x70,0x00,0x00,0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,0x78,0x08,0x28,
+ 0x10,0x28,0xC0,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0x10,0x20,0x70,0xA8,0x20,
+ 0x03,0x06,0x06,0x06,0x01,0x00,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x06,0x06,0x06,
+ 0x00,0x00,0x10,0x50,0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,
+ 0x00,0x10,0x50,0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,
+ 0x10,0x50,0x50,0x48,0x88,0x88,0x04,0x06,0x06,0x06,0x00,0x00,0x80,0x90,0xE0,0x80,
+ 0x80,0x70,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x80,0x90,0xE0,0x80,0x80,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_97_213_217[84] U8G_FONT_SECTION("fontpage_97_213_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD9,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,
+ 0x06,0x00,0x00,0x28,0x28,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,
+ 0x00,0x00,0x18,0x18,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x05,0x05,0x06,0x00,
+ 0x01,0x60,0xA0,0x10,0x10,0x08,0x05,0x08,0x08,0x06,0x00,0x01,0x28,0x28,0x00,0x60,
+ 0xA0,0x10,0x10,0x08};
+const u8g_fntpgm_uint8_t fontpage_97_219_220[45] U8G_FONT_SECTION("fontpage_97_219_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDC,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,
+ 0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20};
+const u8g_fntpgm_uint8_t fontpage_97_222_223[41] U8G_FONT_SECTION("fontpage_97_222_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDF,0x00,0x06,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0x08,0x50,0x20,0x10,0x04,0x06,0x06,
+ 0x06,0x01,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x30};
+const u8g_fntpgm_uint8_t fontpage_97_225_237[174] U8G_FONT_SECTION("fontpage_97_225_237") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xED,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0x08,0x48,0x30,0x10,0x28,0xC0,0x05,0x06,0x06,
+ 0x06,0x00,0x00,0xF0,0x40,0xF8,0x40,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x40,
+ 0xF8,0x48,0x50,0x40,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,
+ 0x40,0x04,0x05,0x05,0x06,0x00,0x00,0x60,0x20,0x20,0x20,0xF0,0x05,0x06,0x06,0x06,
+ 0x00,0x00,0x70,0x10,0x10,0x10,0x10,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,
+ 0xF0,0x10,0xF0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0xF8,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x08,0x08,0x10,0x60,0x04,0x07,0x07,0x06,
+ 0x00,0x00,0x10,0x90,0x90,0x90,0x90,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
+ 0x20,0xA0,0xA0,0xA8,0xA8,0xB0,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0x80,0x88,
+ 0xB0,0xC0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xF8};
+const u8g_fntpgm_uint8_t fontpage_97_242_243[41] U8G_FONT_SECTION("fontpage_97_242_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF3,0x00,0x06,0x00,0x00,
+ 0x00,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x10,0x60,0x05,0x06,0x06,
+ 0x06,0x00,0x00,0xC0,0x08,0x08,0x08,0x10,0xE0};
+const u8g_fntpgm_uint8_t fontpage_97_252_252[25] U8G_FONT_SECTION("fontpage_97_252_252") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x02,0x02,0x06,0x00,0x03,0x80,0x78};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ'
+ FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ'
+ FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ'
+ FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ'
+ FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ'
+ FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ'
+ FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ'
+ FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ'
+ FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ'
+ FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ'
+ FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン'
+ FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
new file mode 100644
index 0000000..6b48434
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
@@ -0,0 +1,547 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_344_240_240[34] U8G_FONT_SECTION("fontpage_344_240_240") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x17,0x21,0x41,0x81,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_345_224_224[41] U8G_FONT_SECTION("fontpage_345_224_224") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x08,
+ 0x80,0x08,0x80,0x09,0x00,0x08,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_347_248_248[41] U8G_FONT_SECTION("fontpage_347_248_248") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,
+ 0x80,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_348_137_137[45] U8G_FONT_SECTION("fontpage_348_137_137") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x00,0x80,0x00,0x80,0x01,0x00,0xFF,
+ 0xC0,0x00,0x00,0x20,0x80,0x20,0x80,0x3F,0x00,0x20,0x80,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_348_176_176[34] U8G_FONT_SECTION("fontpage_348_176_176") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x11,0x21,0x41,0x81,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_348_197_197[34] U8G_FONT_SECTION("fontpage_348_197_197") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x21,0xC1,0x1E,0x21,0x41,
+ 0x21,0x1E};
+const u8g_fntpgm_uint8_t fontpage_352_196_196[41] U8G_FONT_SECTION("fontpage_352_196_196") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x7F,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,
+ 0x80,0x08,0x80,0x10,0x80,0x11,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_353_180_180[34] U8G_FONT_SECTION("fontpage_353_180_180") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x85,0x85,0x85,0x85,0x87,0x85,0x85,0xFD,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_354_248_248[41] U8G_FONT_SECTION("fontpage_354_248_248") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
+ 0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_356_132_132[43] U8G_FONT_SECTION("fontpage_356_132_132") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFF,0x00,
+ 0x00,0x0A,0x0A,0x14,0x0A,0x00,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
+ 0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_356_244_244[43] U8G_FONT_SECTION("fontpage_356_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFF,0x00,
+ 0x00,0x0A,0x0A,0x14,0x0A,0x00,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,0x80,0x00,
+ 0x00,0x00,0x00,0xFF,0xC0,0x12,0x00,0x12,0x00,0x12,0x00};
+const u8g_fntpgm_uint8_t fontpage_357_200_200[34] U8G_FONT_SECTION("fontpage_357_200_200") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x7D,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_357_228_228[45] U8G_FONT_SECTION("fontpage_357_228_228") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE4,0xE4,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,
+ 0x80,0x81,0x00,0x81,0x00,0xFD,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_357_249_249[45] U8G_FONT_SECTION("fontpage_357_249_249") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0x81,0x00,0x81,0x80,0x81,
+ 0x00,0xFD,0x00,0x00,0x00,0x3E,0x00,0x41,0x00,0x41,0x00,0x3E,0x00};
+const u8g_fntpgm_uint8_t fontpage_359_196_196[41] U8G_FONT_SECTION("fontpage_359_196_196") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,
+ 0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_359_204_204[45] U8G_FONT_SECTION("fontpage_359_204_204") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x00,0x3F,0x80,0x04,0x00,0xFF,
+ 0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_359_217_217[45] U8G_FONT_SECTION("fontpage_359_217_217") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x00,0x20,0x00,0x3F,0x80,0x04,
+ 0x00,0xFF,0xC0,0x00,0x00,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00};
+const u8g_fntpgm_uint8_t fontpage_360_152_152[45] U8G_FONT_SECTION("fontpage_360_152_152") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7E,
+ 0x80,0x10,0x80,0x10,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_360_156_156[45] U8G_FONT_SECTION("fontpage_360_156_156") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x7C,0x80,0x10,
+ 0x80,0x10,0x80,0xFF,0x80,0x00,0x80,0x20,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_360_168_168[34] U8G_FONT_SECTION("fontpage_360_168_168") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0xF9,0x21,0xFF,0x00,0x7F,0x41,
+ 0x41,0x7F};
+const u8g_fntpgm_uint8_t fontpage_361_164_164[45] U8G_FONT_SECTION("fontpage_361_164_164") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7C,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7C,
+ 0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
+const u8g_fntpgm_uint8_t fontpage_361_220_220[41] U8G_FONT_SECTION("fontpage_361_220_220") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_362_148_148[34] U8G_FONT_SECTION("fontpage_362_148_148") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0x81,0x81,0x81,0x81,0xFD,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_366_252_252[45] U8G_FONT_SECTION("fontpage_366_252_252") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x09,0x00,0xF9,0x00,0x81,
+ 0x80,0x81,0x00,0x81,0x00,0xFD,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_367_236_236[34] U8G_FONT_SECTION("fontpage_367_236_236") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xEC,0xEC,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF1,0x09,0x09,0xF1,0x87,0x81,0x81,0xF9,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_368_136_136[34] U8G_FONT_SECTION("fontpage_368_136_136") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x15,0x15,0xF5,0x8D,0x85,0x85,0xFD,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_368_165_165[34] U8G_FONT_SECTION("fontpage_368_165_165") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF1,0x17,0xF1,0x87,0x81,0xF9,0x00,0x7F,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_368_220_220[41] U8G_FONT_SECTION("fontpage_368_220_220") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_369_204_204[41] U8G_FONT_SECTION("fontpage_369_204_204") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x12,0x00,0x12,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_370_244_244[41] U8G_FONT_SECTION("fontpage_370_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_371_172_172[34] U8G_FONT_SECTION("fontpage_371_172_172") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0xF9,0x81,0x81,0x81,0xFD,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_371_176_176[34] U8G_FONT_SECTION("fontpage_371_176_176") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0xF9,0x81,0x81,0xFD,0x01,0x20,
+ 0x20,0x3F};
+const u8g_fntpgm_uint8_t fontpage_371_189_189[34] U8G_FONT_SECTION("fontpage_371_189_189") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0xF9,0x81,0x81,0xFD,0x00,0x41,0x3F,
+ 0x41,0x3F};
+const u8g_fntpgm_uint8_t fontpage_371_193_193[34] U8G_FONT_SECTION("fontpage_371_193_193") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0xF9,0x81,0x81,0xFD,0x01,0x3E,0x21,
+ 0x21,0x3E};
+const u8g_fntpgm_uint8_t fontpage_372_200_200[34] U8G_FONT_SECTION("fontpage_372_200_200") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x8F,0x89,0xF9,0x00,0x3F,0x41,
+ 0x41,0x3F};
+const u8g_fntpgm_uint8_t fontpage_372_212_212[34] U8G_FONT_SECTION("fontpage_372_212_212") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x95,0x95,0x9D,0x95,0x95,0x95,0xF5,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_372_244_244[34] U8G_FONT_SECTION("fontpage_372_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x8F,0x89,0x8F,0xF9,0x01,0x21,0x20,
+ 0x20,0x3F};
+const u8g_fntpgm_uint8_t fontpage_373_168_168[41] U8G_FONT_SECTION("fontpage_373_168_168") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3F,
+ 0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_373_187_187[45] U8G_FONT_SECTION("fontpage_373_187_187") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x20,0x80,0x20,0x80,0x3F,0x00,0x04,
+ 0x00,0xFF,0xC0,0x00,0x00,0x04,0x00,0x0C,0x00,0x1A,0x00,0x61,0x80};
+const u8g_fntpgm_uint8_t fontpage_375_248_248[34] U8G_FONT_SECTION("fontpage_375_248_248") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x89,0x89,0x89,0x89,0xF9,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_376_128_128[34] U8G_FONT_SECTION("fontpage_376_128_128") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x89,0x89,0x89,0xF9,0x00,0x3F,0x01,0x3F,
+ 0x40,0x3F};
+const u8g_fntpgm_uint8_t fontpage_376_148_148[45] U8G_FONT_SECTION("fontpage_376_148_148") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x89,0x00,0x89,0x00,0x89,0x00,0xF9,0x00,0x89,
+ 0x80,0x89,0x00,0x89,0x00,0xF9,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_377_132_132[34] U8G_FONT_SECTION("fontpage_377_132_132") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x89,0x89,0x89,0xFF,0x89,0x89,0x89,0xF9,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_377_160_160[34] U8G_FONT_SECTION("fontpage_377_160_160") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x95,0x95,0x95,0xF5,0x9D,0x95,0x95,0xF5,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_377_168_168[34] U8G_FONT_SECTION("fontpage_377_168_168") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x95,0x95,0xFD,0x95,0xF5,0x00,0x3F,0x01,0x3F,
+ 0x40,0x3F};
+const u8g_fntpgm_uint8_t fontpage_377_248_248[45] U8G_FONT_SECTION("fontpage_377_248_248") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x20,0x80,0x20,0x80,0x3F,0x00,0x20,0x80,0x3F,
+ 0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_380_196_196[34] U8G_FONT_SECTION("fontpage_380_196_196") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x89,0x89,0x89,0xF9,0x89,0x89,0x89,0xF9,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_385_172_172[45] U8G_FONT_SECTION("fontpage_385_172_172") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x61,
+ 0x80,0x51,0x00,0x99,0x00,0x89,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_385_189_189[45] U8G_FONT_SECTION("fontpage_385_189_189") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x21,0x00,0x21,0x00,0x21,0x00,0x51,0x80,0xD9,
+ 0x00,0x89,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
+const u8g_fntpgm_uint8_t fontpage_385_200_200[34] U8G_FONT_SECTION("fontpage_385_200_200") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x25,0x25,0x25,0x45,0x67,0x65,0x95,0x95,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_386_164_164[34] U8G_FONT_SECTION("fontpage_386_164_164") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x27,0x51,0x89,0x00,0x3F,0x01,0x3F,
+ 0x40,0x3F};
+const u8g_fntpgm_uint8_t fontpage_387_140_141[69] U8G_FONT_SECTION("fontpage_387_140_141") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x12,0x00,0x31,
+ 0x00,0x44,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x04,
+ 0x00,0x0C,0x00,0x13,0x00,0x65,0x80,0x04,0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x00,
+ 0x80,0x00,0x80,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_389_164_164[41] U8G_FONT_SECTION("fontpage_389_164_164") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x12,0x00,0x31,
+ 0x00,0x40,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_389_172_172[45] U8G_FONT_SECTION("fontpage_389_172_172") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x04,0x00,0x1A,0x00,0x61,0x80,0x00,0x00,0xFF,
+ 0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_389_220_221[51] U8G_FONT_SECTION("fontpage_389_220_221") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xDC,0xDD,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x21,0x21,0x21,0x51,0xC9,0x89,0x01,
+ 0x01,0x01,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x21,0x21,0x21,0x51,0xD9,0x89,0x00,0x7F,
+ 0x01,0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_395_180_180[34] U8G_FONT_SECTION("fontpage_395_180_180") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x8F,0x89,0x89,0x89,0x71,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_395_198_198[45] U8G_FONT_SECTION("fontpage_395_198_198") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x89,0x00,0x8F,0x00,0x89,0x00,0x89,
+ 0x00,0x71,0x00,0x00,0x00,0x4A,0x00,0x72,0x00,0x4D,0x00,0x74,0x80};
+const u8g_fntpgm_uint8_t fontpage_395_209_209[34] U8G_FONT_SECTION("fontpage_395_209_209") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x65,0x95,0x95,0x9D,0x95,0x65,0x00,0x7F,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_395_212_212[45] U8G_FONT_SECTION("fontpage_395_212_212") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x65,0x00,0x95,0x00,0x95,0x00,0x9D,0x00,0x95,
+ 0x00,0x65,0x00,0x05,0x00,0x25,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_395_244_244[34] U8G_FONT_SECTION("fontpage_395_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x8F,0x89,0x8F,0x71,0x00,0x3F,0x01,0x3F,
+ 0x40,0x3F};
+const u8g_fntpgm_uint8_t fontpage_396_136_136[34] U8G_FONT_SECTION("fontpage_396_136_136") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x65,0x95,0x9D,0x95,0x95,0x9D,0x95,0x65,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_396_164_164[41] U8G_FONT_SECTION("fontpage_396_164_164") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
+ 0x00,0x1E,0x00,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_396_168_168[45] U8G_FONT_SECTION("fontpage_396_168_168") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,
+ 0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x20,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_396_196_196[45] U8G_FONT_SECTION("fontpage_396_196_196") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x44,0x80,0x44,0x80,0x44,0x80,0x38,
+ 0xC0,0x10,0x80,0xFE,0x80,0x00,0x80,0x20,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_397_208_208[34] U8G_FONT_SECTION("fontpage_397_208_208") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x71,0x01,0xFF,0x21,0x27,0x41,
+ 0x40,0x7F};
+const u8g_fntpgm_uint8_t fontpage_398_132_132[45] U8G_FONT_SECTION("fontpage_398_132_132") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x44,0x80,0x42,0x80,0x44,0x80,0x38,
+ 0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
+const u8g_fntpgm_uint8_t fontpage_398_188_188[41] U8G_FONT_SECTION("fontpage_398_188_188") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x21,
+ 0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_398_204_204[45] U8G_FONT_SECTION("fontpage_398_204_204") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x21,0x00,0x21,0x00,0x1E,0x00,0x00,
+ 0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x20,0x80,0x20,0x80,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_398_244_244[34] U8G_FONT_SECTION("fontpage_398_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x49,0x89,0x89,0x89,0x89,0x49,0x71,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_398_252_253[51] U8G_FONT_SECTION("fontpage_398_252_253") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFC,0xFD,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x71,0x00,0x3F,0x01,0x3F,
+ 0x40,0x3F,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x71,0x00,0x77,0x11,
+ 0x71,0x41,0x79};
+const u8g_fntpgm_uint8_t fontpage_399_133_133[34] U8G_FONT_SECTION("fontpage_399_133_133") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x89,0x89,0x89,0x89,0x71,0x00,0x41,0x3F,
+ 0x41,0x3F};
+const u8g_fntpgm_uint8_t fontpage_399_144_145[73] U8G_FONT_SECTION("fontpage_399_144_145") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x11,0x00,0x21,
+ 0x80,0x71,0x00,0xC9,0x00,0x85,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x0B,0x16,
+ 0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x49,0x00,0x85,0x00,0x00,
+ 0x00,0x7E,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_399_152_152[45] U8G_FONT_SECTION("fontpage_399_152_152") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x11,0x00,0x11,0x80,0x79,0x00,0x85,
+ 0x00,0x00,0x00,0x7E,0x00,0x01,0x00,0x7E,0x00,0x40,0x00,0x7F,0x00};
+const u8g_fntpgm_uint8_t fontpage_399_165_165[45] U8G_FONT_SECTION("fontpage_399_165_165") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x11,0x00,0x31,0x80,0x79,
+ 0x00,0x85,0x00,0x00,0x00,0x3E,0x00,0x41,0x00,0x41,0x00,0x3E,0x00};
+const u8g_fntpgm_uint8_t fontpage_399_172_172[45] U8G_FONT_SECTION("fontpage_399_172_172") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7A,0x80,0x0A,0x80,0x0A,0x80,0x12,0x80,0x13,
+ 0x80,0x2A,0x80,0x6A,0x80,0xC6,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
+const u8g_fntpgm_uint8_t fontpage_400_128_128[34] U8G_FONT_SECTION("fontpage_400_128_128") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x11,0x17,0x31,0x71,0xC9,0x85,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_400_132_132[34] U8G_FONT_SECTION("fontpage_400_132_132") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x17,0x31,0x49,0x85,0x01,0x21,0x20,
+ 0x20,0x3F};
+const u8g_fntpgm_uint8_t fontpage_400_149_149[34] U8G_FONT_SECTION("fontpage_400_149_149") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x17,0x31,0x49,0x85,0x00,0x3E,0x21,
+ 0x21,0x3E};
+const u8g_fntpgm_uint8_t fontpage_400_156_156[45] U8G_FONT_SECTION("fontpage_400_156_156") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x7A,0x80,0x0A,0x80,0x0A,0x80,0x16,0x80,0x12,
+ 0x80,0x2A,0x80,0x4A,0x80,0x86,0x80,0x02,0x80,0x02,0x80,0x02,0x80};
+const u8g_fntpgm_uint8_t fontpage_401_253_253[45] U8G_FONT_SECTION("fontpage_401_253_253") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
+ 0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x00,0x80,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_402_128_128[45] U8G_FONT_SECTION("fontpage_402_128_128") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
+ 0x00,0xFF,0xC0,0x04,0x00,0x24,0x00,0x24,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_402_145_145[45] U8G_FONT_SECTION("fontpage_402_145_145") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x01,0x00,0x0E,0x00,0x71,0x80,0x00,
+ 0x00,0xFF,0xC0,0x04,0x00,0x1F,0x00,0x20,0x80,0x20,0x80,0x1F,0x00};
+const u8g_fntpgm_uint8_t fontpage_403_144_144[45] U8G_FONT_SECTION("fontpage_403_144_144") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x3F,0x00,0x0E,0x00,0x71,0x80,0x00,0x00,0xFF,
+ 0xC0,0x00,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_403_192_192[34] U8G_FONT_SECTION("fontpage_403_192_192") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x09,0x11,0x31,0x31,0xC9,0x85,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_409_152_152[34] U8G_FONT_SECTION("fontpage_409_152_152") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x11,0x17,0x31,0x49,0x85,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_410_136_136[41] U8G_FONT_SECTION("fontpage_410_136_136") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x02,0x00,0x0E,
+ 0x00,0x71,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_411_149_149[45] U8G_FONT_SECTION("fontpage_411_149_149") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x00,0x00,0x3F,0x00,0x0C,0x00,0x73,
+ 0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_411_156_156[47] U8G_FONT_SECTION("fontpage_411_156_156") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFD,0x00,
+ 0x00,0x0A,0x0C,0x18,0x0A,0x00,0xFD,0x1E,0x00,0x00,0x00,0x3F,0x00,0x1A,0x00,0x21,
+ 0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x00,0x80,0x3F,0x00,0x20,0x00,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_411_164_164[45] U8G_FONT_SECTION("fontpage_411_164_164") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x1E,0x00,0x00,0x00,0x3F,0x00,0x0C,0x00,0x73,
+ 0x80,0x00,0x00,0xFF,0xC0,0x04,0x00,0x3F,0x00,0x20,0x80,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_411_232_232[45] U8G_FONT_SECTION("fontpage_411_232_232") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x00,0x80,0x7C,0x80,0x18,0x80,0x66,
+ 0x80,0x00,0x80,0xFE,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};
+const u8g_fntpgm_uint8_t fontpage_412_216_216[34] U8G_FONT_SECTION("fontpage_412_216_216") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x09,0x11,0x31,0x49,0x85,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_412_232_232[34] U8G_FONT_SECTION("fontpage_412_232_232") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xF9,0x09,0x31,0xCD,0x00,0x3F,0x41,
+ 0x41,0x3F};
+const u8g_fntpgm_uint8_t fontpage_412_244_244[45] U8G_FONT_SECTION("fontpage_412_244_244") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x09,0x00,0x09,0x00,0xF1,0x00,0x11,
+ 0x80,0x21,0x00,0x41,0x00,0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_414_156_156[34] U8G_FONT_SECTION("fontpage_414_156_156") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x09,0x0F,0xF1,0x11,0x2F,0x41,0x81,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_417_209_209[45] U8G_FONT_SECTION("fontpage_417_209_209") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0xF9,0x00,0x81,0x00,0xF9,0x80,0x81,0x00,0x81,
+ 0x00,0xFD,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
+const u8g_fntpgm_uint8_t fontpage_418_176_176[34] U8G_FONT_SECTION("fontpage_418_176_176") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF9,0x81,0x81,0xF7,0x81,0x81,0x81,0xF9,0x01,
+ 0x01,0x01};
+const u8g_fntpgm_uint8_t fontpage_418_204_204[34] U8G_FONT_SECTION("fontpage_418_204_204") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0xF5,0x85,0x85,0xED,0x85,0x85,0x85,0xFD,0x05,
+ 0x05,0x05};
+const u8g_fntpgm_uint8_t fontpage_419_160_160[41] U8G_FONT_SECTION("fontpage_419_160_160") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x3F,0x00,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_421_184_184[41] U8G_FONT_SECTION("fontpage_421_184_184") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xB8,0xB8,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x20,0x00,0x3F,0x00,0x20,0x00,0x20,
+ 0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_423_156_156[45] U8G_FONT_SECTION("fontpage_423_156_156") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0xFA,0x80,0x4A,0x80,0x4E,0x80,0x4A,0x80,0x4A,
+ 0x80,0xFE,0x80,0x02,0x80,0x12,0x80,0x10,0x00,0x10,0x00,0x1F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_426_132_132[41] U8G_FONT_SECTION("fontpage_426_132_132") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x09,0x00,0x00,
+ 0x00,0x0A,0x09,0x12,0x0A,0x00,0x00,0x3F,0x80,0x12,0x00,0x12,0x00,0x12,0x00,0x12,
+ 0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_426_216_216[45] U8G_FONT_SECTION("fontpage_426_216_216") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x01,0x00,0xFD,0x00,0x01,0x00,0x71,
+ 0x80,0x89,0x00,0x89,0x00,0x89,0x00,0x71,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_426_233_233[45] U8G_FONT_SECTION("fontpage_426_233_233") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x09,0xFE,0x00,
+ 0x00,0x09,0x0B,0x16,0x0A,0x01,0xFE,0x71,0x00,0x01,0x00,0xFD,0x00,0x49,0x80,0x89,
+ 0x00,0x79,0x00,0x00,0x00,0x41,0x00,0x7E,0x00,0x41,0x00,0x7E,0x00};
+const u8g_fntpgm_uint8_t fontpage_428_200_200[45] U8G_FONT_SECTION("fontpage_428_200_200") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x0E,0x00,0x00,0x00,0x7F,0x80,0x21,0x00,0x1E,
+ 0x00,0x04,0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x20,0x80,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_428_212_212[45] U8G_FONT_SECTION("fontpage_428_212_212") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x09,0xFE,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0A,0x00,0xFE,0x38,0x80,0x00,0x80,0x7E,0x80,0x00,0x80,0x38,
+ 0x80,0x44,0xC0,0x3C,0x80,0x10,0x80,0xFE,0x80,0x00,0x80,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_431_136_136[34] U8G_FONT_SECTION("fontpage_431_136_136") = {
+ 0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x09,0xFE,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xFD,0x01,0x71,0x49,0x89,0x49,0x71,
+ 0x01,0x01};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거'
+ FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고'
+ FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그'
+ FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급'
+ FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기'
+ FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅'
+ FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄'
+ FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내'
+ FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노'
+ FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누'
+ FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴'
+ FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니'
+ FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다'
+ FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당'
+ FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도'
+ FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌'
+ FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동'
+ FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되'
+ FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // '된' -- '된'
+ FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨'
+ FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤'
+ FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드'
+ FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디'
+ FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라'
+ FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // '러' -- '러'
+ FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레'
+ FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력'
+ FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로'
+ FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료'
+ FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르'
+ FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리'
+ FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // '린' -- '린'
+ FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립'
+ FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링'
+ FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈'
+ FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메'
+ FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면'
+ FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모'
+ FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // '못' -- '못'
+ FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // '미' -- '미'
+ FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀'
+ FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바'
+ FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버'
+ FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베'
+ FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨'
+ FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // '본' -- '본'
+ FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비'
+ FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // '사' -- '사'
+ FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽'
+ FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새'
+ FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설'
+ FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속'
+ FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스'
+ FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬'
+ FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식'
+ FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어'
+ FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없'
+ FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑'
+ FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔'
+ FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열'
+ FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예'
+ FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오'
+ FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온'
+ FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완'
+ FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원'
+ FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위'
+ FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으'
+ FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음'
+ FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이'
+ FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽'
+ FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입'
+ FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작'
+ FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // '잘' -- '잘'
+ FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장'
+ FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재'
+ FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저'
+ FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전'
+ FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정'
+ FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제'
+ FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽'
+ FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준'
+ FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중'
+ FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐'
+ FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지'
+ FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처'
+ FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초'
+ FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축'
+ FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출'
+ FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤'
+ FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취'
+ FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치'
+ FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침'
+ FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카'
+ FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜'
+ FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑'
+ FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터'
+ FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테'
+ FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토'
+ FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트'
+ FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜'
+ FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프'
+ FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하'
+ FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합'
+ FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈'
+ FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화'
+ FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_nl.h b/Marlin/src/lcd/dogm/fontdata/langdata_nl.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_nl.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h
new file mode 100644
index 0000000..926f075
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h
@@ -0,0 +1,40 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_132_133[45] U8G_FONT_SECTION("fontpage_2_132_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x85,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x10,0x08,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x08,0x78,0x88,0x78,0x20,0x30};
+const u8g_fntpgm_uint8_t fontpage_2_135_135[31] U8G_FONT_SECTION("fontpage_2_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_2_153_153[30] U8G_FONT_SECTION("fontpage_2_153_153") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x05,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0xFE,0x70,0x88,0xF0,0x80,0x70,0x20,0x30};
+const u8g_fntpgm_uint8_t fontpage_2_193_196[73] U8G_FONT_SECTION("fontpage_2_193_196") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC4,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0x60,0xC0,0x40,0x40,0x78,0x03,0x07,
+ 0x07,0x06,0x01,0x00,0xC0,0x40,0x60,0xC0,0x40,0x40,0xE0,0x05,0x0A,0x0A,0x06,0x00,
+ 0x00,0x10,0x20,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x05,0x08,0x08,0x06,0x00,
+ 0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_2_218_219[47] U8G_FONT_SECTION("fontpage_2_218_219") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDA,0xDB,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x10,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
+const u8g_fntpgm_uint8_t fontpage_2_252_252[30] U8G_FONT_SECTION("fontpage_2_252_252") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // 'Ą' -- 'ą'
+ FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
+ FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę'
+ FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń'
+ FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś'
+ FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pt.h b/Marlin/src/lcd/dogm/fontdata/langdata_pt.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pt.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h b/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ro.h b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h
new file mode 100644
index 0000000..ffda827
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h
@@ -0,0 +1,9 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ru.h b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h
new file mode 100644
index 0000000..4edd6e7
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h
@@ -0,0 +1,73 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_8_144_168[348] U8G_FONT_SECTION("fontpage_8_144_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0x00,0x0A,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
+ 0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,
+ 0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
+ 0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,
+ 0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,
+ 0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
+ 0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,
+ 0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,
+ 0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8};
+const u8g_fntpgm_uint8_t fontpage_8_171_173[56] U8G_FONT_SECTION("fontpage_8_171_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAD,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xC8,0xA8,0xA8,0xC8,0x04,0x07,
+ 0x07,0x06,0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x08,0x78,0x08,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_8_175_207[400] U8G_FONT_SECTION("fontpage_8_175_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xCF,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
+ 0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
+ 0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
+ 0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
+ 0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
+ 0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
+ 0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
+ 0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
+ 0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
+ 0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
+ 0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,0xA8,0xA8,
+ 0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
+ 0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
+ 0x88,0xC8,0xA8,0xC8,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0xE0,0x04,
+ 0x05,0x05,0x06,0x01,0x00,0xE0,0x10,0x70,0x10,0xE0,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x90,0x70,0x50,0x90
+ };
+const u8g_fntpgm_uint8_t fontpage_8_209_209[30] U8G_FONT_SECTION("fontpage_8_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // 'А' -- 'Ш'
+ FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э'
+ FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // 'Я' -- 'я'
+ FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_sk.h b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h
new file mode 100644
index 0000000..491006e
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h
@@ -0,0 +1,49 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_140_143[79] U8G_FONT_SECTION("fontpage_2_140_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8F,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x88,0x70,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x06,
+ 0x0A,0x0A,0x06,0x00,0x00,0x14,0x08,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_2_186_186[33] U8G_FONT_SECTION("fontpage_2_186_186") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBA,0x00,0x0A,0x00,0x00,
+ 0x00,0x03,0x0A,0x0A,0x06,0x01,0x00,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,
+ 0xE0};
+const u8g_fntpgm_uint8_t fontpage_2_189_190[49] U8G_FONT_SECTION("fontpage_2_189_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xBE,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x80,0x80,0x80,0x80,0x80,0x80,
+ 0xF8,0x03,0x0A,0x0A,0x06,0x01,0x00,0xA0,0x40,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,
+ 0xE0};
+const u8g_fntpgm_uint8_t fontpage_2_199_200[47] U8G_FONT_SECTION("fontpage_2_199_200") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC8,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,
+ 0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88};
+const u8g_fntpgm_uint8_t fontpage_2_224_225[47] U8G_FONT_SECTION("fontpage_2_224_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE1,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,
+ 0x70,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0x78,0x80,0x70,0x08,0xF0};
+const u8g_fntpgm_uint8_t fontpage_2_229_229[33] U8G_FONT_SECTION("fontpage_2_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,
+ 0x18};
+const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253_254") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFE,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
+ 0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď'
+ FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // 'ĺ' -- 'ĺ'
+ FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ'
+ FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň'
+ FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
+ FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
+ FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_test.h b/Marlin/src/lcd/dogm/fontdata/langdata_test.h
new file mode 100644
index 0000000..c397d8b
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_test.h
@@ -0,0 +1,231 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_8_128_255[1677] U8G_FONT_SECTION("fontpage_8_128_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x0A,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,
+ 0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x50,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
+ 0x05,0x09,0x09,0x06,0x00,0xFE,0xE0,0x40,0x40,0x70,0x48,0x48,0x48,0x08,0x30,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0xF0,0x80,0x88,0x70,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,
+ 0x40,0x40,0x40,0x40,0x40,0xE0,0x03,0x09,0x09,0x06,0x01,0x00,0xA0,0x00,0xE0,0x40,
+ 0x40,0x40,0x40,0x40,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x10,0x10,0x10,0x10,
+ 0x90,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x60,0xA0,0xA0,0xB0,0xA8,0xA8,0xB0,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xA0,0xA0,0xA0,0xF0,0xA8,0xA8,0xB0,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xE0,0x40,0x40,0x70,0x48,0x48,0x48,0x05,0x0A,0x0A,0x06,0x00,0x00,0x10,
+ 0x20,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x40,
+ 0x20,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,
+ 0x70,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0xF8,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,
+ 0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,
+ 0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,
+ 0x00,0xFF,0x30,0x50,0x50,0x50,0x50,0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,
+ 0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,
+ 0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,
+ 0x0A,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,
+ 0xA8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,
+ 0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
+ 0x88,0x80,0x80,0x80,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,
+ 0x90,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,
+ 0x88,0x88,0x78,0x08,0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
+ 0xA8,0xA8,0xF8,0x05,0x09,0x09,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,
+ 0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x70,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xC8,0xA8,0xA8,0xC8,0x04,0x07,0x07,0x06,
+ 0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
+ 0x88,0x08,0x78,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0xA8,0xA8,0xE8,
+ 0xA8,0xA8,0x90,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,
+ 0xF0,0x88,0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,
+ 0x06,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0x70,0x88,0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x88,0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,
+ 0x98,0xA8,0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,
+ 0x05,0x05,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,
+ 0x88,0xD8,0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0xF8,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,
+ 0xF0,0x80,0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,
+ 0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,
+ 0xA8,0xA8,0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,
+ 0xA8,0xA8,0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0xC0,0x40,0x70,0x48,0x70,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x88,0x88,0xC8,0xA8,0xC8,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,
+ 0xE0,0x04,0x05,0x05,0x06,0x01,0x00,0xE0,0x10,0x70,0x10,0xE0,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x90,0x70,
+ 0x50,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF0,0x80,0x70,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70,0x05,0x09,0x09,
+ 0x06,0x00,0xFE,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x08,0x10,0x05,0x08,0x08,0x06,
+ 0x00,0x00,0x10,0x20,0x00,0xF8,0x80,0x80,0x80,0x80,0x04,0x05,0x05,0x06,0x01,0x00,
+ 0x70,0x80,0xE0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x78,0x80,0x70,0x08,0xF0,
+ 0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,0x06,
+ 0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0,0x04,0x08,0x08,0x06,0x01,0xFE,0x10,0x00,
+ 0x30,0x10,0x10,0x10,0x90,0x60,0x05,0x05,0x05,0x06,0x00,0x00,0x60,0xA0,0xB0,0xA8,
+ 0xB0,0x05,0x05,0x05,0x06,0x00,0x00,0xA0,0xA0,0xF0,0xA8,0xB0,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x04,0x08,0x08,0x06,0x01,0x00,0x20,
+ 0x40,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x08,0x08,0x06,0x00,0x00,0x40,0x20,0x00,
+ 0x88,0x98,0xA8,0xC8,0x88,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x88,0x70,0x00,0x88,0x88,
+ 0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,0x88,0xF8,
+ 0x20,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x05,
+ 0x05,0x05,0x06,0x00,0x00,0x50,0x88,0xA8,0xA8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x40,0xF0,0x40,0x70,0x48,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF0,
+ 0x40,0x70,0x48,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x98,0xA0,0xA0,0xF8,0xA0,0xA0,
+ 0x98,0x05,0x05,0x05,0x06,0x00,0x00,0x98,0xA0,0xF8,0xA0,0x98,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x20,0x50,0x50,0x88,0xF8,0xA8,0xA8,0x05,0x06,0x06,0x06,0x00,0x00,0x20,
+ 0x50,0x50,0x88,0xF8,0xA8,0x05,0x07,0x07,0x06,0x00,0x00,0x90,0x90,0xB8,0xF8,0xB8,
+ 0xB8,0xB8,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0x90,0xF8,0xB8,0xB8,0x05,0x08,0x08,
+ 0x06,0x00,0x00,0xF8,0x88,0x50,0x50,0x70,0xA8,0xA8,0xA8,0x05,0x06,0x06,0x06,0x00,
+ 0x00,0xF8,0x88,0x50,0x70,0xA8,0xA8,0x06,0x08,0x08,0x06,0x00,0x00,0xFC,0xC4,0xA8,
+ 0x90,0xF8,0xB8,0xB8,0xA8,0x06,0x06,0x06,0x06,0x00,0x00,0xFC,0xA8,0x90,0xF8,0xB8,
+ 0xA8,0x05,0x0C,0x0C,0x06,0x00,0xFE,0x50,0x20,0x00,0x70,0x88,0x08,0x30,0x08,0x08,
+ 0x70,0x80,0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x50,0x20,0x00,0x70,0x88,0x30,0x08,
+ 0x70,0x80,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x20,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x20,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
+ 0xF8,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0x90,0x50,0x50,0x50,0x20,
+ 0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x0A,0x0A,0x06,0x00,
+ 0x00,0x90,0x48,0x00,0x88,0x90,0x90,0x50,0x50,0x50,0x20,0x05,0x08,0x08,0x06,0x00,
+ 0x00,0x90,0x48,0x00,0x88,0x90,0x50,0x50,0x20,0x05,0x09,0x09,0x06,0x00,0xFE,0x40,
+ 0xA0,0xA0,0xB8,0xB8,0xB8,0x58,0x08,0x10,0x05,0x07,0x07,0x06,0x00,0xFE,0x58,0xB8,
+ 0xB8,0xB8,0x58,0x08,0x10,0x05,0x0A,0x0A,0x06,0x00,0xFF,0x20,0x70,0xA8,0x88,0x88,
+ 0x88,0x88,0xA8,0x70,0x20,0x05,0x08,0x08,0x06,0x00,0xFF,0x20,0x70,0xA8,0x88,0x88,
+ 0xA8,0x70,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x70,0x00,0x20,0x20,0x88,0x88,0x88,
+ 0xA8,0x50,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0x20,0xA8,0x88,0xA8,0x50,0x05,
+ 0x0A,0x0A,0x06,0x00,0x00,0xF8,0xA8,0x00,0x50,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x05,
+ 0x08,0x08,0x06,0x00,0x00,0xF8,0xA8,0x00,0x50,0x88,0xA8,0xA8,0x50};
+const u8g_fntpgm_uint8_t fontpage_97_129_191[911] U8G_FONT_SECTION("fontpage_97_129_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x81,0xBF,0x00,0x0D,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x04,0x00,0x4E,0x00,0x55,0x00,0x64,
+ 0x80,0x48,0x40,0xA8,0x40,0x90,0x40,0x90,0x80,0x61,0x00,0x06,0x00,0x08,0x0B,0x0B,
+ 0x0C,0x01,0xFF,0x20,0x10,0x70,0x1C,0x28,0xE2,0x39,0x21,0x21,0x12,0x0C,0x08,0x07,
+ 0x07,0x0C,0x02,0xFF,0x28,0x2E,0xF5,0x21,0x16,0x10,0x10,0x0B,0x0B,0x16,0x0C,0x00,
+ 0xFF,0x02,0x00,0x37,0x00,0x20,0x00,0x13,0xC0,0x9C,0x20,0x70,0x20,0x09,0xC0,0x08,
+ 0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x07,0x07,0x07,0x0C,0x03,0xFF,0x10,0x9C,0xB2,
+ 0xD2,0x9C,0x10,0x20,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x82,0x00,0x47,0x80,
+ 0x4A,0x40,0x52,0x20,0x62,0x20,0x6A,0x40,0x47,0x80,0x42,0x00,0x04,0x00,0x08,0x00,
+ 0x07,0x07,0x07,0x0C,0x02,0xFF,0x10,0x1C,0x10,0x10,0x78,0x96,0x60,0x09,0x0B,0x16,
+ 0x0C,0x01,0xFF,0x10,0x00,0x08,0x00,0x09,0x80,0x0E,0x00,0x08,0x00,0x08,0x00,0x08,
+ 0x00,0x78,0x00,0x8E,0x00,0x89,0x80,0x70,0x00,0x07,0x0B,0x0B,0x0C,0x02,0xFF,0x20,
+ 0x18,0x40,0x80,0x80,0xBC,0xC2,0x82,0x02,0x0C,0x70,0x07,0x0B,0x0B,0x0C,0x02,0xFF,
+ 0x88,0x54,0x52,0x62,0x62,0x42,0x42,0x04,0x04,0x08,0x10,0x08,0x0A,0x0A,0x0C,0x01,
+ 0xFF,0x4E,0x34,0x08,0x10,0x3E,0x61,0x81,0x19,0x26,0x1C,0x0B,0x0B,0x16,0x0C,0x00,
+ 0xFF,0x20,0x00,0x10,0x00,0x13,0x00,0x34,0x80,0xD8,0x80,0x10,0x80,0x10,0x80,0x30,
+ 0x80,0x50,0x80,0xB0,0x60,0x10,0x00,0x08,0x0A,0x0A,0x0C,0x01,0xFF,0x4E,0x34,0x08,
+ 0x10,0x3E,0x61,0x81,0x01,0x06,0x18,0x08,0x07,0x07,0x0C,0x02,0xFF,0x40,0x30,0xEE,
+ 0x31,0x61,0xA2,0x24,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x10,0x00,0x10,0x00,
+ 0x9B,0x80,0x7C,0x40,0x10,0x20,0x10,0x20,0x30,0x20,0x50,0x40,0xB1,0x80,0x10,0x00,
+ 0x0A,0x0A,0x14,0x0C,0x01,0xFF,0x4E,0x00,0x34,0x00,0x04,0x00,0x1F,0x00,0x28,0x80,
+ 0x48,0x40,0x90,0x40,0x96,0x40,0x69,0x80,0x47,0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,
+ 0x20,0x00,0x1F,0x00,0x04,0x00,0x1F,0x00,0x20,0x80,0x4C,0x80,0x13,0x00,0x0C,0x00,
+ 0x00,0x00,0x59,0x80,0x86,0x40,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,
+ 0x9E,0x00,0x70,0x00,0x21,0x80,0x72,0x00,0x8C,0x00,0x14,0x00,0x24,0x00,0x20,0x00,
+ 0x1F,0x00,0x0A,0x0A,0x14,0x0C,0x01,0xFF,0x10,0x00,0x08,0x00,0x08,0x00,0x10,0x00,
+ 0x10,0x00,0x38,0x00,0x24,0x00,0x44,0x40,0x44,0x80,0x83,0x00,0x0A,0x0B,0x16,0x0C,
+ 0x00,0xFF,0x10,0x00,0x0C,0x80,0x00,0x40,0x1D,0x00,0xE2,0x80,0x02,0x00,0x02,0x00,
+ 0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0xFF,0xFF,0xFF,0xFF,0x04,0x03,0x03,0x06,
+ 0x00,0x05,0x20,0x90,0x40,0xFF,0x04,0x03,0x03,0x06,0x00,0x05,0x20,0x90,0x40,0x03,
+ 0x03,0x03,0x06,0x00,0x05,0x40,0xA0,0x40,0xFF,0xFF,0xFF,0x05,0x03,0x03,0x06,0x00,
+ 0x03,0xF8,0x00,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0x60,0x40,0x80,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF8,0x08,0x28,0x30,0x20,0x20,0x40,0x04,0x05,0x05,0x06,
+ 0x00,0x00,0x10,0x20,0x60,0xA0,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x10,0x20,
+ 0x60,0xA0,0x20,0x20,0x04,0x05,0x05,0x06,0x00,0x00,0x20,0xF0,0x90,0x10,0x20,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x88,0x88,0x08,0x10,0x60,0x03,0x04,0x04,0x06,
+ 0x00,0x00,0xE0,0x40,0x40,0xE0,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,
+ 0x20,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0x20,0xF0,0x20,0x60,0xA0,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x10,0xF8,0x10,0x30,0x50,0x90,0x10,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x40,0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,
+ 0xF8,0x48,0x48,0x48,0x48,0x98,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0xF8,0x20,0x20,
+ 0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x20,0x20,0xF8,
+ 0x10,0x10,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0x88,0x08,0x10,0x60,0x05,
+ 0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x40,0x78,0x48,0x88,0x08,0x10,0x60,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x09,0x09,0x06,0x00,
+ 0x00,0x28,0x28,0x80,0xF8,0x90,0x90,0x10,0x10,0x20,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0xF8,0x08,0x08,0x08,0x08,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xF8,
+ 0x08,0x08,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0xF8,0x50,0x50,0x50,
+ 0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x50,0xF8,0x50,0x50,0x50,0x10,
+ 0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0xC8,0x08,0x10,0xE0,0x07,0x0D,0x0D,
+ 0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x28,0x28,0x00,0xC0,0x08,0xC8,0x08,0x10,0xE0,
+ 0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,0x09,0x09,0x06,
+ 0x00,0x00,0x28,0x28,0x00,0x70,0x10,0x10,0x20,0x50,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x38,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,
+ 0x40,0x40,0xF8,0x48,0x50,0x40,0x38,0x05,0x06,0x06,0x06,0x00,0x00,0x88,0x48,0x48,
+ 0x10,0x10,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x88,0x48,0x48,0x10,
+ 0x10,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x78,0x48,0xA8,0x18,0x10,0x60};
+const u8g_fntpgm_uint8_t fontpage_97_193_255[822] U8G_FONT_SECTION("fontpage_97_193_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xFF,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0x60,0x20,0xF8,0x20,0x20,0x40,0x05,0x09,
+ 0x09,0x06,0x00,0x00,0x28,0x08,0x10,0x60,0x20,0xF8,0x20,0x20,0x40,0x05,0x04,0x04,
+ 0x06,0x00,0x00,0xA8,0xA8,0x08,0x30,0x05,0x06,0x06,0x06,0x00,0x00,0xA8,0xA8,0xA8,
+ 0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xA8,0xA8,0xA8,0x08,
+ 0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x00,0xF8,0x20,0x20,0x20,0x40,0x05,
+ 0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x70,0x00,0xF8,0x20,0x20,0x20,0x40,0x04,0x07,
+ 0x07,0x06,0x01,0x00,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x04,0x09,0x09,0x06,0x01,
+ 0x00,0x50,0x10,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x20,0x20,0xF8,0x20,0x20,0x40,0x80,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x00,0x00,
+ 0x00,0x00,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,0x78,0x08,0x28,0x10,0x28,0xC0,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0x20,0x70,0x10,0x20,0x70,0xA8,0x20,0x03,0x06,0x06,0x06,
+ 0x01,0x00,0x20,0x20,0x20,0x40,0x40,0x80,0x05,0x06,0x06,0x06,0x00,0x00,0x10,0x50,
+ 0x50,0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x10,0x50,0x50,
+ 0x48,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,0x10,0x50,0x50,0x48,
+ 0x88,0x88,0x04,0x06,0x06,0x06,0x00,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x09,
+ 0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x09,0x09,
+ 0x06,0x00,0x00,0x18,0x18,0x00,0x80,0x90,0xE0,0x80,0x80,0x70,0x05,0x06,0x06,0x06,
+ 0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,
+ 0x00,0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x18,0x18,0x00,
+ 0xF8,0x08,0x08,0x08,0x10,0x60,0x05,0x05,0x05,0x06,0x00,0x01,0x60,0xA0,0x10,0x10,
+ 0x08,0x05,0x08,0x08,0x06,0x00,0x01,0x28,0x28,0x00,0x60,0xA0,0x10,0x10,0x08,0x05,
+ 0x08,0x08,0x06,0x00,0x01,0x18,0x18,0x00,0x60,0xA0,0x10,0x10,0x08,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,0x09,0x06,0x00,0x00,
+ 0x28,0x08,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x09,0x09,0x06,0x00,0x00,0x18,
+ 0x18,0x20,0xF8,0x20,0xA8,0xA8,0xA8,0x20,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x08,
+ 0x08,0x50,0x20,0x10,0x04,0x06,0x06,0x06,0x01,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x30,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0x20,0x40,0x48,0xF8,0x08,0x05,0x06,0x06,
+ 0x06,0x00,0x00,0x08,0x48,0x30,0x10,0x28,0xC0,0x05,0x06,0x06,0x06,0x00,0x00,0xF0,
+ 0x40,0xF8,0x40,0x40,0x38,0x05,0x05,0x05,0x06,0x00,0x00,0x40,0xF8,0x48,0x50,0x40,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0x40,0x40,0xF8,0x48,0x50,0x40,0x40,0x04,0x05,0x05,
+ 0x06,0x00,0x00,0x60,0x20,0x20,0x20,0xF0,0x05,0x06,0x06,0x06,0x00,0x00,0x70,0x10,
+ 0x10,0x10,0x10,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,0xF0,0x10,0xF0,0x10,0xF0,0x05,
+ 0x06,0x06,0x06,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0xF8,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x00,0xF8,0x08,0x08,0x10,0x60,0x04,0x07,0x07,0x06,0x00,0x00,0x10,0x90,
+ 0x90,0x90,0x90,0x10,0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x20,0xA0,0xA0,0xA8,
+ 0xA8,0xB0,0x05,0x06,0x06,0x06,0x00,0x00,0x80,0x80,0x80,0x88,0xB0,0xC0,0x05,0x06,
+ 0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xF8,0x04,0x05,0x05,0x06,0x00,0x00,
+ 0xF0,0x90,0x10,0x10,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xF8,0x88,0x88,0x08,0x10,
+ 0x60,0x05,0x07,0x07,0x06,0x00,0x00,0x10,0xF8,0x50,0x50,0xF8,0x10,0x10,0x05,0x06,
+ 0x06,0x06,0x00,0x00,0x70,0x10,0x20,0x20,0x20,0xF8,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0xF8,0x08,0xF8,0x08,0x10,0x60,0x05,0x06,0x06,0x06,0x00,0x00,0xC0,0x08,0x08,0x08,
+ 0x10,0xE0,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x20,0xF8,0x88,0x88,0x08,0x10,
+ 0x60,0x04,0x05,0x05,0x06,0x00,0x00,0x40,0xF0,0x50,0x50,0xB0,0x04,0x05,0x05,0x06,
+ 0x00,0x00,0x80,0xF0,0xA0,0x20,0x40,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,
+ 0xF8,0x88,0x88,0x08,0x10,0x60,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x08,0x10,0xF8,
+ 0x50,0x50,0xF8,0x10,0x10,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0x70,0x10,
+ 0x20,0x20,0x20,0xF8,0x05,0x09,0x09,0x06,0x00,0x00,0x28,0x28,0x00,0xF8,0x08,0xF8,
+ 0x08,0x10,0x60,0x02,0x02,0x02,0x06,0x02,0x03,0xC0,0xC0,0x05,0x02,0x02,0x06,0x00,
+ 0x03,0x80,0x78,0x05,0x04,0x04,0x06,0x00,0x02,0x80,0x60,0x10,0x08,0x05,0x07,0x07,
+ 0x06,0x00,0x02,0x28,0x28,0x00,0x80,0x60,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x00,
+ 0xF8,0x08,0x08,0x08,0x08,0x08};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ'
+ FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ'
+ FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_tr.h b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h
new file mode 100644
index 0000000..a4068e1
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h
@@ -0,0 +1,27 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_158_159[49] U8G_FONT_SECTION("fontpage_2_158_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9E,0x9F,0x00,0x0A,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x80,0x80,0x98,0x88,
+ 0x70,0x05,0x0A,0x0A,0x06,0x00,0xFE,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x78,0x08,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_2_176_177[43] U8G_FONT_SECTION("fontpage_2_176_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB1,0x00,0x09,0x00,0x00,
+ 0x00,0x03,0x09,0x09,0x06,0x01,0x00,0x40,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0,
+ 0x03,0x05,0x05,0x06,0x01,0x00,0xC0,0x40,0x40,0x40,0xE0};
+const u8g_fntpgm_uint8_t fontpage_2_222_223[45] U8G_FONT_SECTION("fontpage_2_222_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDF,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x10,0x60,
+ 0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x80,0x70,0x08,0xF0,0x10,0x60};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // 'Ğ' -- 'ğ'
+ FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı'
+ FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_uk.h b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h
new file mode 100644
index 0000000..47ec939
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h
@@ -0,0 +1,85 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_8_134_134[30] U8G_FONT_SECTION("fontpage_8_134_134") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x07,0x00,0x00,
+ 0x00,0x03,0x07,0x07,0x06,0x01,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0xE0};
+const u8g_fntpgm_uint8_t fontpage_8_144_169[363] U8G_FONT_SECTION("fontpage_8_144_169") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0xA9,0x00,0x0A,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0xF0,0x80,0x80,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x05,0x08,0x08,0x06,0x00,0xFF,0x30,0x50,0x50,0x50,0x50,
+ 0x50,0xF8,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,
+ 0x05,0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0x05,0x07,0x07,
+ 0x06,0x00,0x00,0x70,0x88,0x08,0x70,0x08,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,
+ 0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x0A,0x0A,0x06,0x00,0x00,0x88,0x70,0x00,
+ 0x88,0x88,0x98,0xA8,0xC8,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x90,0xA0,
+ 0xC0,0xA0,0x90,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,
+ 0x88,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,
+ 0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0xF8,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x88,0x88,0xF0,0x80,
+ 0x80,0x80,0x05,0x07,0x07,0x06,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,
+ 0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x70,0x05,0x07,0x07,0x06,0x00,0x00,0x20,
+ 0x70,0xA8,0xA8,0xA8,0x70,0x20,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x50,0x20,
+ 0x50,0x88,0x88,0x05,0x09,0x09,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,
+ 0x08,0x08,0x05,0x07,0x07,0x06,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x05,
+ 0x07,0x07,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x05,0x09,0x09,0x06,
+ 0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08};
+const u8g_fntpgm_uint8_t fontpage_8_172_172[30] U8G_FONT_SECTION("fontpage_8_172_172") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x07,0x00,0x00,
+ 0x00,0x04,0x07,0x07,0x06,0x01,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0xE0};
+const u8g_fntpgm_uint8_t fontpage_8_175_201[334] U8G_FONT_SECTION("fontpage_8_175_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xC9,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x78,0x88,0x88,0x78,0x28,0x48,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x05,0x07,0x07,0x06,0x00,0x00,0x70,
+ 0x80,0xF0,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF0,0x88,0xF0,0x88,
+ 0xF0,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x05,0x06,0x06,0x06,
+ 0x00,0xFF,0x30,0x50,0x50,0x50,0xF8,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,
+ 0xF0,0x80,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0x70,0x20,0x70,0xA8,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x30,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0x88,
+ 0x98,0xA8,0xC8,0x88,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x88,0x98,0xA8,
+ 0xC8,0x88,0x04,0x05,0x05,0x06,0x01,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x05,0x05,0x05,
+ 0x06,0x00,0x00,0x38,0x48,0x48,0x48,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0xD8,
+ 0xA8,0x88,0x88,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x05,0x05,
+ 0x05,0x06,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x05,0x05,0x05,0x06,0x00,0x00,0xF8,
+ 0x88,0x88,0x88,0x88,0x05,0x07,0x07,0x06,0x00,0xFE,0xF0,0x88,0x88,0x88,0xF0,0x80,
+ 0x80,0x05,0x05,0x05,0x06,0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x05,0x05,0x05,0x06,
+ 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x05,0x07,0x07,0x06,0x00,0xFE,0x88,0x88,0x88,
+ 0x88,0x78,0x08,0x70,0x05,0x09,0x09,0x06,0x00,0xFE,0x20,0x20,0x70,0xA8,0xA8,0xA8,
+ 0x70,0x20,0x20,0x05,0x05,0x05,0x06,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x05,0x07,
+ 0x07,0x06,0x00,0xFE,0x90,0x90,0x90,0x90,0xF8,0x08,0x08,0x05,0x05,0x05,0x06,0x00,
+ 0x00,0x88,0x88,0x78,0x08,0x08,0x05,0x05,0x05,0x06,0x00,0x00,0xA8,0xA8,0xA8,0xA8,
+ 0xF8,0x05,0x07,0x07,0x06,0x00,0xFE,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08};
+const u8g_fntpgm_uint8_t fontpage_8_204_204[28] U8G_FONT_SECTION("fontpage_8_204_204") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x05,0x00,0x00,
+ 0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x80,0x80,0xE0,0x90,0xE0};
+const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCF,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,
+ 0x01,0x00,0x70,0x90,0x70,0x50,0x90};
+const u8g_fntpgm_uint8_t fontpage_8_212_212[28] U8G_FONT_SECTION("fontpage_8_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x05,0x00,0x00,
+ 0x00,0x04,0x05,0x05,0x06,0x01,0x00,0x70,0x80,0xE0,0x80,0x70};
+const u8g_fntpgm_uint8_t fontpage_8_214_215[41] U8G_FONT_SECTION("fontpage_8_214_215") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD6,0xD7,0x00,0x06,0x00,0x00,
+ 0x00,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,
+ 0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І'
+ FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // 'А' -- 'Щ'
+ FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // 'Ь' -- 'Ь'
+ FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ'
+ FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь'
+ FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
+ FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є'
+ FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // 'і' -- 'ї'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_vi.h b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h
new file mode 100644
index 0000000..a8a0c5c
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h
@@ -0,0 +1,227 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_2_131_131[31] U8G_FONT_SECTION("fontpage_2_131_131") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_2_144_145[44] U8G_FONT_SECTION("fontpage_2_144_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x91,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0xF0,0x48,0x48,0xE8,0x48,0x48,0xF0,0x06,0x08,
+ 0x08,0x06,0x00,0x00,0x08,0x1C,0x08,0x78,0x88,0x88,0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_2_169_169[31] U8G_FONT_SECTION("fontpage_2_169_169") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x08,0x00,0x00,
+ 0x00,0x04,0x08,0x08,0x06,0x00,0x00,0x50,0xA0,0x00,0x60,0x20,0x20,0x20,0x70};
+const u8g_fntpgm_uint8_t fontpage_3_161_161[30] U8G_FONT_SECTION("fontpage_3_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x08,0x08,0x70,0x88,0x88,0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_3_175_176[43] U8G_FONT_SECTION("fontpage_3_175_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xB0,0x00,0x08,0x00,0x00,
+ 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x08,0x98,0x90,0x90,0x90,0x90,0x90,0x60,0x05,
+ 0x06,0x06,0x06,0x00,0x00,0x08,0x98,0x90,0x90,0xB0,0x50};
+const u8g_fntpgm_uint8_t fontpage_6_131_131[25] U8G_FONT_SECTION("fontpage_6_131_131") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x02,0x02,0x06,0x00,0x08,0x68,0xB0};
+const u8g_fntpgm_uint8_t fontpage_6_137_137[26] U8G_FONT_SECTION("fontpage_6_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0x00,0x00,
+ 0x00,0x03,0x03,0x03,0x06,0x01,0x07,0xC0,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_6_163_163[24] U8G_FONT_SECTION("fontpage_6_163_163") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA3,0x00,0x00,0xFE,0x00,
+ 0x00,0x01,0x01,0x01,0x06,0x02,0xFE,0x80};
+const u8g_fntpgm_uint8_t fontpage_6_192_193[33] U8G_FONT_SECTION("fontpage_6_192_193") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC1,0x00,0x0A,0x00,0x00,
+ 0x00,0x02,0x02,0x02,0x06,0x01,0x08,0x80,0x40,0x02,0x02,0x02,0x06,0x02,0x08,0x40,
+ 0x80};
+const u8g_fntpgm_uint8_t fontpage_61_161_161[30] U8G_FONT_SECTION("fontpage_61_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x05,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x70,0x08,0x78,0x88,0x78,0x00,0x20};
+const u8g_fntpgm_uint8_t fontpage_61_163_163[32] U8G_FONT_SECTION("fontpage_61_163_163") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA3,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x78
+ };
+const u8g_fntpgm_uint8_t fontpage_61_165_165[33] U8G_FONT_SECTION("fontpage_61_165_165") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0x00,0x00,
+ 0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_167_167[33] U8G_FONT_SECTION("fontpage_61_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x30,0x48,0x00,0x70,0x08,0x78,0x88,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_169_169[34] U8G_FONT_SECTION("fontpage_61_169_169") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x0B,0x00,0x00,
+ 0x00,0x06,0x0B,0x0B,0x07,0x00,0x00,0x0C,0x04,0x08,0x30,0x48,0x00,0x70,0x08,0x78,
+ 0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_61_173_173[33] U8G_FONT_SECTION("fontpage_61_173_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
+ 0x20};
+const u8g_fntpgm_uint8_t fontpage_61_175_175[33] U8G_FONT_SECTION("fontpage_61_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_177_177[33] U8G_FONT_SECTION("fontpage_61_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x40,0x20,0x48,0x30,0x00,0x70,0x08,0x78,0x88,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_179_179[34] U8G_FONT_SECTION("fontpage_61_179_179") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB3,0xB3,0x00,0x0B,0x00,0x00,
+ 0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x18,0x08,0x10,0x48,0x30,0x00,0x70,0x08,0x78,
+ 0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_61_181_181[34] U8G_FONT_SECTION("fontpage_61_181_181") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB5,0xB5,0x00,0x0B,0x00,0x00,
+ 0x00,0x06,0x0B,0x0B,0x07,0x00,0x00,0x14,0x28,0x00,0x48,0x30,0x00,0x70,0x08,0x78,
+ 0x88,0x78};
+const u8g_fntpgm_uint8_t fontpage_61_183_183[33] U8G_FONT_SECTION("fontpage_61_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x48,0x30,0x00,0x70,0x08,0x78,0x88,0x78,0x00,
+ 0x20};
+const u8g_fntpgm_uint8_t fontpage_61_191_191[33] U8G_FONT_SECTION("fontpage_61_191_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x0A,0x00,0x00,
+ 0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_193_193[33] U8G_FONT_SECTION("fontpage_61_193_193") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,
+ 0x78};
+const u8g_fntpgm_uint8_t fontpage_61_195_195[34] U8G_FONT_SECTION("fontpage_61_195_195") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0x00,0x0B,0x00,0x00,
+ 0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x18,0x08,0x10,0x60,0x90,0x00,0x60,0x90,0xF0,
+ 0x80,0x70};
+const u8g_fntpgm_uint8_t fontpage_61_199_199[33] U8G_FONT_SECTION("fontpage_61_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x20,0x50,0x00,0x70,0x88,0xF0,0x80,0x78,0x00,
+ 0x20};
+const u8g_fntpgm_uint8_t fontpage_61_201_201[32] U8G_FONT_SECTION("fontpage_61_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x09,0x00,0x00,
+ 0x00,0x03,0x09,0x09,0x07,0x02,0x00,0x60,0x20,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0
+ };
+const u8g_fntpgm_uint8_t fontpage_61_203_203[32] U8G_FONT_SECTION("fontpage_61_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x07,0xFE,0x00,
+ 0x00,0x03,0x09,0x09,0x07,0x02,0xFE,0x40,0x00,0xC0,0x40,0x40,0x40,0xE0,0x00,0x40
+ };
+const u8g_fntpgm_uint8_t fontpage_61_205_205[30] U8G_FONT_SECTION("fontpage_61_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x05,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x70,0x88,0x88,0x88,0x70,0x00,0x20};
+const u8g_fntpgm_uint8_t fontpage_61_207_207[32] U8G_FONT_SECTION("fontpage_61_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_209_209[33] U8G_FONT_SECTION("fontpage_61_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0x00,0x00,
+ 0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x04,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_211_211[33] U8G_FONT_SECTION("fontpage_61_211_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x10,0x08,0x20,0x50,0x00,0x70,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_213_213[33] U8G_FONT_SECTION("fontpage_61_213_213") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD5,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x18,0x08,0x30,0x50,0x00,0x70,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_215_215[34] U8G_FONT_SECTION("fontpage_61_215_215") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD7,0xD7,0x00,0x0B,0x00,0x00,
+ 0x00,0x05,0x0B,0x0B,0x07,0x00,0x00,0x28,0x50,0x00,0x20,0x50,0x00,0x70,0x88,0x88,
+ 0x88,0x70};
+const u8g_fntpgm_uint8_t fontpage_61_217_217[33] U8G_FONT_SECTION("fontpage_61_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x08,0xFE,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0xFE,0x20,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,
+ 0x20};
+const u8g_fntpgm_uint8_t fontpage_61_219_219[32] U8G_FONT_SECTION("fontpage_61_219_219") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDB,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x20,0x40,0x10,0x08,0x70,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_221_221[32] U8G_FONT_SECTION("fontpage_61_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x80,0x40,0x10,0x08,0x70,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_223_223[33] U8G_FONT_SECTION("fontpage_61_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x60,0x20,0x40,0x10,0x08,0x70,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_225_225[32] U8G_FONT_SECTION("fontpage_61_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x09,0x00,0x00,
+ 0x00,0x05,0x09,0x09,0x07,0x00,0x00,0x50,0xA0,0x10,0x08,0x70,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_227_227[32] U8G_FONT_SECTION("fontpage_61_227_227") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE3,0xE3,0x00,0x07,0xFE,0x00,
+ 0x00,0x05,0x09,0x09,0x00,0x00,0xFE,0x10,0x08,0x70,0x88,0x88,0x88,0x70,0x00,0x20
+ };
+const u8g_fntpgm_uint8_t fontpage_61_229_229[30] U8G_FONT_SECTION("fontpage_61_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x05,0xFE,0x00,
+ 0x00,0x05,0x07,0x07,0x07,0x00,0xFE,0x88,0x88,0x88,0x88,0x70,0x00,0x20};
+const u8g_fntpgm_uint8_t fontpage_61_231_231[33] U8G_FONT_SECTION("fontpage_61_231_231") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE7,0xE7,0x00,0x0A,0x00,0x00,
+ 0x00,0x05,0x0A,0x0A,0x07,0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x88,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_233_233[32] U8G_FONT_SECTION("fontpage_61_233_233") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x09,0x00,0x00,
+ 0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x10,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_235_235[32] U8G_FONT_SECTION("fontpage_61_235_235") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEB,0xEB,0x00,0x09,0x00,0x00,
+ 0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x40,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_237_237[33] U8G_FONT_SECTION("fontpage_61_237_237") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xED,0xED,0x00,0x0A,0x00,0x00,
+ 0x00,0x06,0x0A,0x0A,0x07,0x00,0x00,0x30,0x10,0x20,0x0C,0x04,0x88,0x88,0x88,0x88,
+ 0x70};
+const u8g_fntpgm_uint8_t fontpage_61_239_239[32] U8G_FONT_SECTION("fontpage_61_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x09,0x00,0x00,
+ 0x00,0x06,0x09,0x09,0x07,0x00,0x00,0x28,0x50,0x0C,0x04,0x88,0x88,0x88,0x88,0x70
+ };
+const u8g_fntpgm_uint8_t fontpage_61_241_241[32] U8G_FONT_SECTION("fontpage_61_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x07,0xFE,0x00,
+ 0x00,0x06,0x09,0x09,0x07,0x00,0xFE,0x0C,0x04,0x88,0x88,0x88,0x88,0x70,0x00,0x20
+ };
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă'
+ FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ'
+ FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ'
+ FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ'
+ FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư'
+ FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃'
+ FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉'
+ FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣'
+ FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́'
+ FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ'
+ FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả'
+ FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ'
+ FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ'
+ FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ'
+ FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ'
+ FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ'
+ FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ'
+ FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ'
+ FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ'
+ FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ'
+ FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế'
+ FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề'
+ FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể'
+ FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ'
+ FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ'
+ FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị'
+ FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ'
+ FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ'
+ FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố'
+ FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ'
+ FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ'
+ FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ'
+ FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ'
+ FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ'
+ FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ'
+ FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở'
+ FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ'
+ FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ'
+ FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ'
+ FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ'
+ FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ'
+ FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ'
+ FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử'
+ FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ'
+ FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
new file mode 100644
index 0000000..491d480
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
@@ -0,0 +1,1823 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_64_157_157[26] U8G_FONT_SECTION("fontpage_64_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x07,0x00,0x00,
+ 0x00,0x05,0x03,0x03,0x06,0x00,0x04,0xD8,0x48,0x90};
+const u8g_fntpgm_uint8_t fontpage_69_191_191[28] U8G_FONT_SECTION("fontpage_69_191_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x08,0x18,0x28,0x48,0xF8};
+const u8g_fntpgm_uint8_t fontpage_156_128_128[27] U8G_FONT_SECTION("fontpage_156_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x06,0x00,0x00,
+ 0x00,0x0B,0x02,0x04,0x0C,0x00,0x04,0x00,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_137_139[97] U8G_FONT_SECTION("fontpage_156_137_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+ 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x0B,0x0B,0x16,0x0C,0x00,
+ 0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x04,0x00,0x04,
+ 0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0xFF,0xE0,0x04,
+ 0x00,0x04,0x00,0x06,0x00,0x05,0x00,0x04,0x80,0x04,0x80,0x04,0x00,0x04,0x00,0x04,
+ 0x00};
+const u8g_fntpgm_uint8_t fontpage_156_141_141[45] U8G_FONT_SECTION("fontpage_156_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x02,0x00,0x02,0x00,0x04,0x00,0x0D,
+ 0x00,0x14,0x80,0x24,0x40,0x44,0x20,0x84,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_147_147[45] U8G_FONT_SECTION("fontpage_156_147_147") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x93,0x93,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x3F,0xC0,0x04,0x00,0x04,0x00,0xFF,
+ 0xE0,0x08,0x00,0x1F,0xC0,0x00,0x80,0x0D,0x00,0x02,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_157_157[45] U8G_FONT_SECTION("fontpage_156_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x29,0x40,0x4A,0x40,0xF7,
+ 0x80,0x10,0x80,0x21,0x00,0x42,0x00,0xF7,0xC0,0x00,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_170_170[45] U8G_FONT_SECTION("fontpage_156_170_170") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAA,0xAA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0x14,0x00,0x22,0x00,0x49,
+ 0x00,0x88,0xC0,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_173_173[45] U8G_FONT_SECTION("fontpage_156_173_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0xFF,0x80,0x88,0x80,0x88,
+ 0x80,0x88,0x80,0xFF,0x80,0x88,0x80,0x08,0x00,0x08,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_186_187[73] U8G_FONT_SECTION("fontpage_156_186_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x48,0x00,0x28,0x00,0x08,0x00,0xFF,0x80,0x08,
+ 0x80,0x0C,0x80,0x12,0x80,0x12,0x80,0x20,0x80,0x44,0x80,0x83,0x00,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,
+ 0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_201_201[45] U8G_FONT_SECTION("fontpage_156_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x80,0x24,0x80,0x24,0x80,0x21,0x00,0x11,
+ 0x00,0x12,0x00,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_156_203_203[45] U8G_FONT_SECTION("fontpage_156_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0x7F,0xC0,0x00,0x80,0x01,
+ 0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x48,0x00,0x87,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_134_134[45] U8G_FONT_SECTION("fontpage_157_134_134") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0x80,0x01,0x00,0x02,0x00,0x0C,0x00,0x08,
+ 0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x28,0x00,0x10,0x00};
+const u8g_fntpgm_uint8_t fontpage_157_140_140[39] U8G_FONT_SECTION("fontpage_157_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x08,0x00,0x00,
+ 0x00,0x0B,0x08,0x10,0x0C,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_142_142[45] U8G_FONT_SECTION("fontpage_157_142_142") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8E,0x8E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,
+ 0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x1C,0x00};
+const u8g_fntpgm_uint8_t fontpage_157_164_164[45] U8G_FONT_SECTION("fontpage_157_164_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x20,
+ 0x80,0x51,0x40,0x11,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0x60,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_174_174[45] U8G_FONT_SECTION("fontpage_157_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x11,0x00,0x1F,0x00,0x00,
+ 0x00,0xFF,0xE0,0x80,0x20,0x1F,0x00,0x11,0x00,0x21,0x20,0xC0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_206_206[45] U8G_FONT_SECTION("fontpage_157_206_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0x2A,0x80,0x2A,0x80,0x44,0x40,0x88,0x40,0x10,0x20};
+const u8g_fntpgm_uint8_t fontpage_157_228_229[73] U8G_FONT_SECTION("fontpage_157_228_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE4,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x24,
+ 0x80,0xC2,0x60,0x3F,0x80,0x01,0x00,0x0A,0x00,0x04,0x00,0x02,0x00,0x0A,0x0B,0x16,
+ 0x0C,0x01,0xFF,0x01,0x00,0x81,0x00,0x91,0x00,0x89,0x00,0x89,0x00,0x81,0x00,0x91,
+ 0x00,0xA1,0x00,0xC2,0x80,0x84,0x40,0x18,0x40};
+const u8g_fntpgm_uint8_t fontpage_157_246_246[45] U8G_FONT_SECTION("fontpage_157_246_246") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF6,0xF6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x15,0x00,0x25,0x00,0x2F,0xC0,0x71,
+ 0x00,0xA1,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_157_253_253[45] U8G_FONT_SECTION("fontpage_157_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x80,0x12,0x80,0x22,0x40,0x24,0x40,0x68,
+ 0x20,0xA7,0xC0,0x22,0x40,0x22,0x40,0x22,0x40,0x24,0x40,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_158_145_145[45] U8G_FONT_SECTION("fontpage_158_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x21,0x00,0x3F,0xE0,0x61,
+ 0x00,0xA3,0x80,0x23,0x80,0x25,0x40,0x29,0x20,0x31,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_158_160_160[45] U8G_FONT_SECTION("fontpage_158_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x27,0xE0,0x21,0x00,0x6F,
+ 0xE0,0xA2,0x00,0x27,0xE0,0x20,0x40,0x22,0x80,0x21,0x00,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_158_205_206[73] U8G_FONT_SECTION("fontpage_158_205_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x11,0x00,0x20,0x00,0x2F,0xE0,0x60,
+ 0x00,0xA4,0x40,0x22,0x40,0x22,0x80,0x20,0x80,0x21,0x00,0x2F,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x10,0xC0,0x1F,0x00,0x29,0x00,0x29,0x00,0x69,0x00,0xAF,0xE0,0x29,
+ 0x00,0x29,0x20,0x2A,0xA0,0x2D,0x60,0x28,0xA0};
+const u8g_fntpgm_uint8_t fontpage_158_211_211[45] U8G_FONT_SECTION("fontpage_158_211_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x22,0x00,0x5F,0xC0,0x42,0x00,0xC7,
+ 0x00,0x4A,0x80,0x52,0x40,0x62,0x20,0x4F,0x80,0x42,0x00,0x42,0x00};
+const u8g_fntpgm_uint8_t fontpage_158_217_217[45] U8G_FONT_SECTION("fontpage_158_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,
+ 0x60,0x04,0x00,0x7F,0xC0,0x04,0x00,0x15,0x00,0x24,0x80,0x4C,0x40};
+const u8g_fntpgm_uint8_t fontpage_158_220_220[45] U8G_FONT_SECTION("fontpage_158_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x14,0x00,0x14,0x00,0x27,0xE0,0x2A,0x00,0x72,
+ 0x00,0xA3,0xC0,0x22,0x00,0x22,0x00,0x23,0xE0,0x22,0x00,0x22,0x00};
+const u8g_fntpgm_uint8_t fontpage_158_255_255[45] U8G_FONT_SECTION("fontpage_158_255_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x1F,0xE0,0x21,0x00,0x2F,0xE0,0x69,
+ 0x20,0xAF,0xE0,0x29,0x00,0x25,0x00,0x22,0x00,0x25,0x80,0x38,0x60};
+const u8g_fntpgm_uint8_t fontpage_159_155_155[45] U8G_FONT_SECTION("fontpage_159_155_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9B,0x9B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x14,0x80,0x14,0x80,0x24,0x80,0x2F,0xE0,0x64,
+ 0x80,0xA4,0x80,0x3F,0xE0,0x20,0x00,0x24,0x80,0x28,0x40,0x30,0x20};
+const u8g_fntpgm_uint8_t fontpage_159_181_181[45] U8G_FONT_SECTION("fontpage_159_181_181") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB5,0xB5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xC0,0x20,0x40,0x4F,0xC0,0x40,0x40,0xDF,
+ 0xE0,0x50,0x20,0x4F,0xC0,0x44,0x80,0x43,0x00,0x44,0x80,0x58,0x60};
+const u8g_fntpgm_uint8_t fontpage_159_221_221[45] U8G_FONT_SECTION("fontpage_159_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x17,0xC0,0x14,0x40,0x24,0x40,0x27,0xC0,0x61,
+ 0x00,0xAF,0xE0,0x21,0x00,0x23,0x80,0x25,0x40,0x29,0x20,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_159_225_225[45] U8G_FONT_SECTION("fontpage_159_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x11,0x00,0x2F,0xE0,0x20,0x00,0x67,
+ 0xC0,0xA0,0x00,0x27,0xC0,0x20,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0};
+const u8g_fntpgm_uint8_t fontpage_160_188_188[45] U8G_FONT_SECTION("fontpage_160_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x1F,0xE0,0x22,0x00,0x27,0xC0,0x64,
+ 0x40,0xA7,0xC0,0x24,0x40,0x27,0x40,0x25,0xC0,0x24,0x40,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_160_190_190[45] U8G_FONT_SECTION("fontpage_160_190_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBE,0xBE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x13,0xE0,0x19,0x00,0x2B,0xE0,0x2E,0x20,0x6A,
+ 0xA0,0xAA,0xA0,0x2A,0xA0,0x2E,0xA0,0x2A,0xA0,0x21,0x40,0x26,0x20};
+const u8g_fntpgm_uint8_t fontpage_160_207_207[45] U8G_FONT_SECTION("fontpage_160_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x28,0x20,0x2F,0xE0,0x68,
+ 0x00,0xAF,0xE0,0x2A,0xA0,0x2F,0xE0,0x2A,0xA0,0x3A,0xA0,0x28,0x60};
+const u8g_fntpgm_uint8_t fontpage_160_220_220[45] U8G_FONT_SECTION("fontpage_160_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x3F,0xE0,0x20,0x00,0x4F,0xC0,0x48,
+ 0x40,0xDF,0xE0,0x50,0x20,0x4F,0xC0,0x41,0x00,0x41,0x00,0x47,0x00};
+const u8g_fntpgm_uint8_t fontpage_161_168_168[45] U8G_FONT_SECTION("fontpage_161_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x61,0x20,0x57,0xC0,0x41,0x40,0x77,0xE0,0xD1,
+ 0x00,0x53,0xC0,0x56,0x40,0x53,0xC0,0x5A,0x40,0x52,0x40,0x43,0xC0};
+const u8g_fntpgm_uint8_t fontpage_161_207_207[45] U8G_FONT_SECTION("fontpage_161_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x13,0xC0,0x14,0x80,0x2F,0xE0,0x35,0x20,0x67,
+ 0xE0,0xA2,0x20,0x2D,0x40,0x22,0x80,0x2D,0xC0,0x22,0xA0,0x2D,0x80};
+const u8g_fntpgm_uint8_t fontpage_162_197_197[45] U8G_FONT_SECTION("fontpage_162_197_197") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x04,0x00,0xFF,0xC0,0x08,0x00,0x11,0x00,0x7F,
+ 0x80,0x12,0x80,0x12,0x00,0x12,0x00,0x22,0x40,0x22,0x40,0xC1,0xC0};
+const u8g_fntpgm_uint8_t fontpage_162_200_201[73] U8G_FONT_SECTION("fontpage_162_200_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x84,
+ 0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x24,0x80,0x04,0x00,0xFF,0xE0,0x12,0x00,0x12,
+ 0x00,0x12,0x20,0x12,0x20,0x22,0x20,0xC1,0xE0};
+const u8g_fntpgm_uint8_t fontpage_162_229_229[45] U8G_FONT_SECTION("fontpage_162_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x18,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,
+ 0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x80,0x20};
+const u8g_fntpgm_uint8_t fontpage_162_232_232[45] U8G_FONT_SECTION("fontpage_162_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,
+ 0x60,0x04,0x00,0x04,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_162_241_241[45] U8G_FONT_SECTION("fontpage_162_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x20,0x80,0x40,0x40};
+const u8g_fntpgm_uint8_t fontpage_162_243_243[45] U8G_FONT_SECTION("fontpage_162_243_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF3,0xF3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x11,0x00,0x7F,0xC0,0x04,0x00,0x04,
+ 0x00,0xFF,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_162_247_247[45] U8G_FONT_SECTION("fontpage_162_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,
+ 0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x11,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_151_151[43] U8G_FONT_SECTION("fontpage_163_151_151") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x00,0x09,0xFF,0x00,
+ 0x00,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0x7F,0xE0,0x40,0x20,0x9F,0x40,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0x11,0x00,0x21,0x20,0x41,0x20,0x80,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_183_183[45] U8G_FONT_SECTION("fontpage_163_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x82,0x00,0x42,0x00,0x05,0x00,0x28,0x80,0x32,
+ 0x60,0x41,0x00,0x4F,0xC0,0x80,0x80,0x87,0x00,0x81,0x00,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_163_198_198[45] U8G_FONT_SECTION("fontpage_163_198_198") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0A,0x00,0x89,0x00,0x4F,0xE0,0x59,0x00,0x09,
+ 0x00,0x2F,0xC0,0x29,0x00,0xCF,0xC0,0x49,0x00,0x49,0x00,0x4F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_250_251[73] U8G_FONT_SECTION("fontpage_163_250_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,
+ 0xC0,0x04,0x00,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0xFF,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,
+ 0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_164_134_135[73] U8G_FONT_SECTION("fontpage_164_134_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,
+ 0x40,0xBF,0xA0,0x08,0x80,0x08,0x80,0x10,0x80,0x20,0x80,0xC3,0x00,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x20,0x00,0x27,0xE0,0x21,0x20,0x39,0x20,0xE1,0x20,0x21,0x20,0x29,
+ 0x20,0x32,0x20,0x22,0x20,0x04,0x20,0x08,0xC0};
+const u8g_fntpgm_uint8_t fontpage_164_155_155[45] U8G_FONT_SECTION("fontpage_164_155_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9B,0x9B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x20,0x18,0x20,0x24,0xA0,0x42,0xA0,0xBC,
+ 0xA0,0x24,0xA0,0x24,0xA0,0x38,0xA0,0x22,0x20,0x22,0x20,0x1E,0x60};
+const u8g_fntpgm_uint8_t fontpage_164_157_157[45] U8G_FONT_SECTION("fontpage_164_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x27,0xE0,0xF9,0x20,0x11,0x20,0x21,
+ 0x20,0x69,0x20,0xB1,0x20,0x29,0x20,0x22,0x20,0x24,0x20,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_164_171_171[45] U8G_FONT_SECTION("fontpage_164_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7C,0x20,0x44,0x20,0x44,0xA0,0x7C,0xA0,0x10,
+ 0xA0,0xFE,0xA0,0x12,0xA0,0x22,0xA0,0x22,0x20,0x42,0x20,0x8C,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_176_176[45] U8G_FONT_SECTION("fontpage_164_176_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFE,0x20,0x10,0x20,0x20,0xA0,0x44,0xA0,0xFE,
+ 0xA0,0x10,0xA0,0x7C,0xA0,0x10,0xA0,0x10,0x20,0x1E,0x20,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_182_183[73] U8G_FONT_SECTION("fontpage_164_182_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x20,0x50,0xA0,0x7E,0xA0,0x90,0xA0,0xFE,
+ 0xA0,0x10,0xA0,0x7E,0xA0,0x52,0xA0,0x52,0x20,0x56,0x20,0x10,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x7E,0x20,0x42,0x20,0x7E,0xA0,0x48,0xA0,0x48,0xA0,0x7E,0xA0,0x6A,
+ 0xA0,0xAA,0xA0,0xAA,0xA0,0x2E,0x20,0x08,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_242_242[45] U8G_FONT_SECTION("fontpage_164_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x20,0xFE,0x20,0x92,0xA0,0x7C,0xA0,0x10,
+ 0xA0,0x7C,0xA0,0x10,0xA0,0xFE,0xA0,0x44,0x20,0x44,0x20,0x7C,0xE0};
+const u8g_fntpgm_uint8_t fontpage_165_155_155[45] U8G_FONT_SECTION("fontpage_165_155_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9B,0x9B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0x80,0x08,
+ 0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x87,0x00};
+const u8g_fntpgm_uint8_t fontpage_165_159_160[73] U8G_FONT_SECTION("fontpage_165_159_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0x01,0x00,0xF9,0x00,0x27,0xE0,0x21,
+ 0x20,0x21,0x20,0x21,0x20,0x3A,0x20,0xC2,0x20,0x04,0x20,0x18,0xC0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x20,0x00,0x20,0x00,0xFD,0xE0,0x25,0x20,0x25,0x20,0x25,0x20,0x25,
+ 0x20,0x25,0x20,0x45,0x20,0x55,0xE0,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_165_168_168[45] U8G_FONT_SECTION("fontpage_165_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0x79,0x00,0x01,0x00,0x03,0xE0,0xFD,
+ 0x20,0x21,0x20,0x21,0x20,0x49,0x20,0xFA,0x20,0x0A,0x20,0x04,0xC0};
+const u8g_fntpgm_uint8_t fontpage_166_150_150[45] U8G_FONT_SECTION("fontpage_166_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x12,0x00,0x22,0x40,0x22,0x80,0x63,
+ 0x00,0xA2,0x00,0x26,0x00,0x2A,0x00,0x22,0x20,0x22,0x20,0x21,0xE0};
+const u8g_fntpgm_uint8_t fontpage_166_199_199[45] U8G_FONT_SECTION("fontpage_166_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x0D,0x00,0x71,0x00,0x11,0x00,0x11,0x00,0x11,
+ 0x00,0xFF,0xC0,0x11,0x00,0x11,0x00,0x21,0x00,0x41,0x00,0x81,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_202_202[45] U8G_FONT_SECTION("fontpage_166_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x24,0x80,0x15,0x00,0x7F,
+ 0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_207_207[45] U8G_FONT_SECTION("fontpage_166_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x42,0x00,0x4F,0x80,0xE2,0x80,0x42,
+ 0x80,0x4A,0xC0,0x52,0xA0,0x44,0x80,0x44,0x80,0x4A,0x80,0x51,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_213_213[45] U8G_FONT_SECTION("fontpage_166_213_213") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x0A,0x00,0x7F,0xC0,0x44,0x40,0x7F,
+ 0xC0,0x44,0x40,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_225_225[45] U8G_FONT_SECTION("fontpage_166_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x0F,0x80,0x08,0x00,0x08,0x00,0xFF,
+ 0xE0,0x08,0x00,0x0A,0x00,0x09,0x00,0x08,0x80,0x08,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_240_241[73] U8G_FONT_SECTION("fontpage_166_240_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x10,0x00,0xE7,0xC0,0x84,0x40,0x84,0x40,0xF4,
+ 0x40,0x84,0x40,0x84,0x40,0x94,0x40,0xE5,0x80,0x84,0x00,0x04,0x00,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x10,0x00,0x1F,0x80,0x21,0x00,0x7F,0xE0,0x20,0x00,0x2F,0x80,0x28,
+ 0x80,0x28,0x80,0x2B,0x20,0x48,0x20,0x87,0xE0};
+const u8g_fntpgm_uint8_t fontpage_166_244_244[45] U8G_FONT_SECTION("fontpage_166_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x11,0xE0,0x7D,0x20,0x11,0x20,0x11,
+ 0x20,0xFF,0x20,0x11,0x20,0x21,0x20,0x4D,0x60,0x75,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_248_248[45] U8G_FONT_SECTION("fontpage_166_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x7D,0xE0,0x91,0x20,0x11,0x20,0xFF,
+ 0x20,0x11,0x20,0x5D,0x20,0x51,0x20,0x51,0xA0,0x5D,0x40,0xE1,0x00};
+const u8g_fntpgm_uint8_t fontpage_167_139_139[45] U8G_FONT_SECTION("fontpage_167_139_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8B,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xE0,0x20,0x00,0x22,0x00,0x22,0x00,0x22,
+ 0x00,0x3F,0xC0,0x22,0x00,0x22,0x80,0x42,0x40,0x42,0x00,0xBF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_167_159_159[45] U8G_FONT_SECTION("fontpage_167_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xE0,0x22,0x00,0x2F,0xC0,0x28,0x40,0x2F,
+ 0xC0,0x28,0x40,0x2F,0xC0,0x22,0x00,0x2A,0x80,0x52,0x60,0xA6,0x20};
+const u8g_fntpgm_uint8_t fontpage_167_204_205[71] U8G_FONT_SECTION("fontpage_167_204_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0xFF,0xE0,0x0A,0x40,0x4A,0x40,0x2A,0x40,0x11,
+ 0x40,0x11,0x40,0x28,0x80,0x45,0x80,0x82,0x40,0x04,0x20,0x0B,0x0B,0x16,0x0C,0x00,
+ 0xFF,0x01,0xC0,0x3E,0x00,0x20,0x00,0x20,0x00,0x3F,0xC0,0x28,0x80,0x25,0x00,0x22,
+ 0x00,0x45,0x00,0x48,0x80,0xB0,0x60};
+const u8g_fntpgm_uint8_t fontpage_167_214_214[45] U8G_FONT_SECTION("fontpage_167_214_214") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD6,0xD6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFC,0x00,0x4B,0xE0,0x4A,0x20,0x7A,0x20,0x49,
+ 0x40,0x79,0x40,0x48,0x80,0x4C,0x80,0xF9,0x40,0x0A,0x40,0x0C,0x20};
+const u8g_fntpgm_uint8_t fontpage_167_216_216[45] U8G_FONT_SECTION("fontpage_167_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0xFF,0xC0,0x12,0x00,0x52,0x80,0x92,
+ 0x40,0x00,0x00,0x7F,0x80,0x12,0x00,0x0C,0x00,0x12,0x00,0xE1,0xC0};
+const u8g_fntpgm_uint8_t fontpage_167_240_240[45] U8G_FONT_SECTION("fontpage_167_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x10,0x00,0x22,0x00,0x41,0x00,0xFF,
+ 0x80,0x00,0x80,0x7F,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x7F,0x00};
+const u8g_fntpgm_uint8_t fontpage_168_131_131[45] U8G_FONT_SECTION("fontpage_168_131_131") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0xF2,0x00,0x97,0xE0,0x98,0x00,0x97,
+ 0xC0,0x90,0x80,0x91,0x00,0xF2,0x00,0x94,0x20,0x04,0x20,0x03,0xE0};
+const u8g_fntpgm_uint8_t fontpage_168_136_136[45] U8G_FONT_SECTION("fontpage_168_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,
+ 0x60,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_168_141_142[73] U8G_FONT_SECTION("fontpage_168_141_142") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x1F,0xC0,0x10,0x80,0x29,0x00,0x46,
+ 0x00,0x04,0x00,0x1F,0xC0,0xF0,0x40,0x10,0x40,0x10,0x40,0x1F,0xC0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x01,0xC0,0x3E,0x00,0x20,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x2F,
+ 0xC0,0x28,0x40,0x48,0x40,0x4F,0xC0,0x88,0x40};
+const u8g_fntpgm_uint8_t fontpage_168_145_145[45] U8G_FONT_SECTION("fontpage_168_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x10,0x00,0xFF,0xC0,0x80,0x40,0x9E,
+ 0x40,0x92,0x40,0x92,0x40,0x9E,0x40,0x80,0x40,0x80,0x40,0x81,0xC0};
+const u8g_fntpgm_uint8_t fontpage_168_166_166[45] U8G_FONT_SECTION("fontpage_168_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x04,0x00,0x0D,0x80,0x34,0x40,0xC4,
+ 0x20,0x04,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_168_175_175[45] U8G_FONT_SECTION("fontpage_168_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,
+ 0xC0,0x20,0x00,0x3F,0xC0,0x30,0x40,0x50,0x40,0x5F,0xC0,0x90,0x40};
+const u8g_fntpgm_uint8_t fontpage_168_202_202[45] U8G_FONT_SECTION("fontpage_168_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x04,
+ 0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_168_232_232[45] U8G_FONT_SECTION("fontpage_168_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xE0,0x22,0x20,0x2F,0xA0,0x22,0x20,0x3F,
+ 0xE0,0x20,0x20,0x2F,0xA0,0x28,0xA0,0x4F,0xA0,0x40,0x20,0x80,0x60};
+const u8g_fntpgm_uint8_t fontpage_168_253_253[45] U8G_FONT_SECTION("fontpage_168_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0xEE,0xE0,0x00,
+ 0x00,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7A,0x40,0x4A,0xC0,0x02,0x00};
+const u8g_fntpgm_uint8_t fontpage_169_140_140[45] U8G_FONT_SECTION("fontpage_169_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0C,0x00,0x70,0x00,0x11,0xE0,0xFD,0x20,0x11,
+ 0x20,0x39,0x20,0x35,0x20,0x55,0x20,0x91,0x20,0x11,0xE0,0x10,0x00};
+const u8g_fntpgm_uint8_t fontpage_169_205_205[45] U8G_FONT_SECTION("fontpage_169_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0x02,0x00,0xEF,0xE0,0xA8,0x20,0xAB,
+ 0xA0,0xAA,0xA0,0xAA,0xA0,0xEB,0xA0,0x08,0x20,0x08,0x20,0x08,0x60};
+const u8g_fntpgm_uint8_t fontpage_171_183_183[45] U8G_FONT_SECTION("fontpage_171_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xEF,0xE0,0xA5,0x40,0xAF,0xE0,0xA4,
+ 0x40,0xAF,0xE0,0xE8,0x20,0xA9,0x20,0x09,0x20,0x02,0x80,0x0C,0x60};
+const u8g_fntpgm_uint8_t fontpage_172_180_180[45] U8G_FONT_SECTION("fontpage_172_180_180") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0xA0,0xEB,0xC0,0xAA,0xA0,0xBF,0xE0,0xA4,
+ 0x80,0xAF,0xE0,0xF9,0x20,0x0F,0xE0,0x09,0x20,0x0F,0xE0,0x11,0x20};
+const u8g_fntpgm_uint8_t fontpage_172_232_232[45] U8G_FONT_SECTION("fontpage_172_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x04,
+ 0x80,0xFF,0xE0,0x11,0x00,0xFB,0xE0,0x4A,0x40,0x4A,0x40,0x7B,0xC0};
+const u8g_fntpgm_uint8_t fontpage_172_244_244[45] U8G_FONT_SECTION("fontpage_172_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xEF,0xE0,0xA5,0x40,0xAF,0xE0,0xA4,
+ 0x40,0xA7,0xC0,0xE4,0x40,0x07,0xC0,0x04,0x40,0x07,0xC0,0x0C,0x60};
+const u8g_fntpgm_uint8_t fontpage_173_222_222[45] U8G_FONT_SECTION("fontpage_173_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x80,0x40,0x80,0x40,0x9E,0x40,0x92,
+ 0x40,0x92,0x40,0x9E,0x40,0x92,0x40,0x80,0x40,0xFF,0xC0,0x80,0x40};
+const u8g_fntpgm_uint8_t fontpage_173_224_224[45] U8G_FONT_SECTION("fontpage_173_224_224") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x84,0x20,0x84,0x20,0xBF,0xA0,0x84,
+ 0x20,0x84,0x20,0x8A,0x20,0x91,0x20,0xA0,0xA0,0x80,0x20,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_173_250_250[45] U8G_FONT_SECTION("fontpage_173_250_250") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x88,0x40,0x88,0x40,0xFF,0x40,0x88,
+ 0x40,0xBE,0x40,0xA2,0x40,0xA2,0x40,0xBE,0x40,0x80,0x40,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_173_254_254[45] U8G_FONT_SECTION("fontpage_173_254_254") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x90,0x40,0x9F,0x40,0xB2,0x40,0xCC,
+ 0x40,0x92,0x40,0xE9,0xC0,0x84,0x40,0x88,0x40,0x84,0x40,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_174_168_168[45] U8G_FONT_SECTION("fontpage_174_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0xFF,0xC0,0x10,0x00,0x22,
+ 0x00,0x62,0x00,0xAF,0x80,0x22,0x00,0x22,0x00,0x22,0x00,0x3F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_174_207_207[45] U8G_FONT_SECTION("fontpage_174_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x2F,0xE0,0x20,0x80,0xF8,0x80,0x21,
+ 0x00,0x21,0x80,0x23,0x40,0x35,0x20,0xC9,0x20,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_174_215_215[45] U8G_FONT_SECTION("fontpage_174_215_215") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD7,0xD7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x27,0xC0,0xF9,0x40,0x21,
+ 0x40,0x21,0x40,0x2F,0xE0,0x31,0x00,0xC2,0x80,0x04,0x40,0x18,0x20};
+const u8g_fntpgm_uint8_t fontpage_175_139_139[45] U8G_FONT_SECTION("fontpage_175_139_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8B,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7E,0x40,0x29,0x40,0x29,0x40,0xFF,0x40,0x29,
+ 0x40,0x28,0x40,0x4C,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_175_171_171[45] U8G_FONT_SECTION("fontpage_175_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0xFF,0x80,0x22,0x80,0x36,0xA0,0xE3,
+ 0xA0,0x2C,0xE0,0x64,0x00,0x04,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_176_235_235[45] U8G_FONT_SECTION("fontpage_176_235_235") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEB,0xEB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x21,0x00,0xF7,0xC0,0x24,
+ 0x40,0x27,0x40,0x25,0xC0,0x34,0x40,0xEF,0xE0,0x02,0x80,0x0C,0x60};
+const u8g_fntpgm_uint8_t fontpage_177_243_243[45] U8G_FONT_SECTION("fontpage_177_243_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF3,0xF3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0xC0,0x00,
+ 0x00,0xFF,0xE0,0x80,0x20,0x1F,0x00,0x11,0x20,0x21,0x20,0xC0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_178_135_135[45] U8G_FONT_SECTION("fontpage_178_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x1F,0x80,0x31,0x00,0x4E,0x00,0x0B,
+ 0x00,0x30,0xE0,0xFF,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_178_141_141[45] U8G_FONT_SECTION("fontpage_178_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x3F,0xE0,0x60,0x80,0xBF,0x80,0x20,
+ 0x80,0x3F,0x80,0x10,0x00,0x3F,0x80,0xC9,0x00,0x06,0x00,0xF9,0xE0};
+const u8g_fntpgm_uint8_t fontpage_178_150_150[45] U8G_FONT_SECTION("fontpage_178_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x3D,0x00,0x25,0x00,0x45,
+ 0x80,0xA5,0x40,0x19,0x20,0x09,0x00,0x11,0x00,0x21,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_178_154_154[45] U8G_FONT_SECTION("fontpage_178_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x1F,0x00,0x21,0x00,0x52,0x00,0x0C,
+ 0x00,0x34,0x00,0xCF,0x80,0x10,0x80,0x69,0x00,0x06,0x00,0xF8,0x00};
+const u8g_fntpgm_uint8_t fontpage_178_167_167[45] U8G_FONT_SECTION("fontpage_178_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,
+ 0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_178_169_170[73] U8G_FONT_SECTION("fontpage_178_169_170") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xAA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,
+ 0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A,
+ 0x00,0x11,0x00,0x19,0x00,0x24,0x80,0xC4,0x60};
+const u8g_fntpgm_uint8_t fontpage_178_177_177[45] U8G_FONT_SECTION("fontpage_178_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_178_180_180[45] U8G_FONT_SECTION("fontpage_178_180_180") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x0A,0x00,0x22,0x00,0x12,0x00,0x02,
+ 0x00,0xFF,0xE0,0x02,0x00,0x05,0x00,0x08,0x80,0x10,0x40,0x60,0x20};
+const u8g_fntpgm_uint8_t fontpage_178_253_253[45] U8G_FONT_SECTION("fontpage_178_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x23,0xE0,0xF8,0x40,0x28,0x80,0x28,
+ 0x80,0x4F,0xE0,0x50,0x80,0x30,0x80,0x28,0x80,0x48,0x80,0x83,0x80};
+const u8g_fntpgm_uint8_t fontpage_179_203_203[45] U8G_FONT_SECTION("fontpage_179_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0xFA,0x40,0x2A,0x20,0x2F,
+ 0xE0,0x48,0x00,0x53,0xE0,0x32,0x20,0x2A,0x20,0x4B,0xE0,0x82,0x20};
+const u8g_fntpgm_uint8_t fontpage_182_208_208[45] U8G_FONT_SECTION("fontpage_182_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x14,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_182_216_216[45] U8G_FONT_SECTION("fontpage_182_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0xFF,0xE0,0x10,0x00,0x2F,0xC0,0x20,
+ 0x80,0x61,0x00,0xBF,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x27,0x00};
+const u8g_fntpgm_uint8_t fontpage_183_137_137[45] U8G_FONT_SECTION("fontpage_183_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x88,0x40,0x08,
+ 0x00,0xFF,0xE0,0x11,0x00,0x31,0x00,0x0E,0x00,0x09,0x80,0x70,0x60};
+const u8g_fntpgm_uint8_t fontpage_183_140_140[45] U8G_FONT_SECTION("fontpage_183_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x9F,0x40,0x00,
+ 0x00,0x7F,0xE0,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0x41,0xE0};
+const u8g_fntpgm_uint8_t fontpage_183_154_154[45] U8G_FONT_SECTION("fontpage_183_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x80,0x40,0x3F,
+ 0xC0,0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x54,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_183_162_162[45] U8G_FONT_SECTION("fontpage_183_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0xFF,0xC0,0x90,0x40,0x3F,0x00,0x52,
+ 0x00,0x8C,0x00,0x33,0x00,0xFF,0xC0,0x21,0x00,0x21,0x00,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_183_171_171[45] U8G_FONT_SECTION("fontpage_183_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0xFF,0xC0,0x80,0x40,0x3F,0x00,0x21,
+ 0x00,0x3F,0x00,0x00,0x00,0x7F,0x80,0x40,0x80,0x7F,0x80,0x40,0x80};
+const u8g_fntpgm_uint8_t fontpage_183_249_249[45] U8G_FONT_SECTION("fontpage_183_249_249") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x00,0x80,0xF0,0x80,0x1F,0xE0,0x90,0x80,0x50,
+ 0x80,0x24,0x80,0x22,0x80,0x50,0x80,0x50,0x80,0x82,0x80,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_184_134_134[45] U8G_FONT_SECTION("fontpage_184_134_134") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x27,0xC0,0xA4,0x80,0x6B,0x00,0x22,
+ 0x80,0x24,0x80,0x6F,0xE0,0xA4,0x80,0x22,0x80,0x20,0x80,0x21,0x80};
+const u8g_fntpgm_uint8_t fontpage_184_143_143[45] U8G_FONT_SECTION("fontpage_184_143_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x80,0x24,
+ 0x40,0x44,0x40,0x44,0x20,0x84,0x20,0x04,0x00,0x14,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_184_177_177[45] U8G_FONT_SECTION("fontpage_184_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFD,0x40,0x01,0x20,0x7F,0xE0,0x4A,
+ 0x80,0x7A,0x80,0x12,0x80,0x5A,0xA0,0x56,0xA0,0x92,0xA0,0x34,0x60};
+const u8g_fntpgm_uint8_t fontpage_184_207_207[45] U8G_FONT_SECTION("fontpage_184_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x28,0x40,0x24,
+ 0x80,0x3F,0xE0,0x24,0x80,0x3F,0xE0,0x24,0x80,0x48,0x80,0x90,0x80};
+const u8g_fntpgm_uint8_t fontpage_187_229_229[41] U8G_FONT_SECTION("fontpage_187_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x09,0x00,0x00,
+ 0x00,0x0B,0x09,0x12,0x0C,0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
+ 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_187_238_238[45] U8G_FONT_SECTION("fontpage_187_238_238") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEE,0xEE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x80,0x09,0x00,0xFF,0xE0,0x04,0x00,0x7F,
+ 0xC0,0x08,0x00,0xFF,0xE0,0x10,0x00,0x2F,0x80,0x42,0x00,0xBF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_187_242_242[43] U8G_FONT_SECTION("fontpage_187_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x09,0xFF,0x00,
+ 0x00,0x0A,0x0A,0x14,0x0C,0x01,0xFF,0xFF,0x00,0x01,0x00,0x01,0x00,0x81,0x00,0xFF,
+ 0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x7F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_188_243_243[45] U8G_FONT_SECTION("fontpage_188_243_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF3,0xF3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x24,0x80,0x15,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_188_246_246[45] U8G_FONT_SECTION("fontpage_188_246_246") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF6,0xF6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_189_138_138[45] U8G_FONT_SECTION("fontpage_189_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x7F,
+ 0xE0,0x42,0x00,0x47,0x00,0x4A,0x80,0x52,0x40,0xA2,0x20,0x82,0x00};
+const u8g_fntpgm_uint8_t fontpage_189_148_148[45] U8G_FONT_SECTION("fontpage_189_148_148") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x02,0x00,0x7F,0xE0,0x40,0x00,0x44,
+ 0x40,0x52,0x40,0x4A,0x40,0x48,0x80,0x40,0x80,0x81,0x00,0x9F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_189_159_159[45] U8G_FONT_SECTION("fontpage_189_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0x3F,0xE0,0x2A,0x80,0x2A,0x40,0x3F,
+ 0xE0,0x24,0x00,0x27,0xC0,0x2A,0x40,0x31,0x80,0x42,0x40,0x8C,0x20};
+const u8g_fntpgm_uint8_t fontpage_189_166_166[45] U8G_FONT_SECTION("fontpage_189_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x49,0x00,0x7F,0xC0,0x49,
+ 0x00,0x4F,0x00,0x40,0x00,0x5F,0x80,0x49,0x00,0x86,0x00,0xB9,0xC0};
+const u8g_fntpgm_uint8_t fontpage_190_128_128[45] U8G_FONT_SECTION("fontpage_190_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,
+ 0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x81,0x00};
+const u8g_fntpgm_uint8_t fontpage_190_131_131[45] U8G_FONT_SECTION("fontpage_190_131_131") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x08,0x00,0x10,0x80,0x3F,
+ 0xC0,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_190_143_143[45] U8G_FONT_SECTION("fontpage_190_143_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x80,0x02,0x40,0x02,0x00,0xFF,0xE0,0x02,
+ 0x00,0x7A,0x00,0x12,0x00,0x11,0x00,0x11,0x20,0x18,0xA0,0xE0,0x60};
+const u8g_fntpgm_uint8_t fontpage_190_149_149[45] U8G_FONT_SECTION("fontpage_190_149_149") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFC,0x40,0x04,0x40,0x04,0x40,0x7C,0x40,0x40,
+ 0x40,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x28,0x40,0x10,0x40};
+const u8g_fntpgm_uint8_t fontpage_190_185_185[45] U8G_FONT_SECTION("fontpage_190_185_185") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB9,0xB9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xE4,0x40,0x22,0x80,0x2F,0xE0,0xE9,0x20,0x8F,
+ 0xE0,0x89,0x20,0xEF,0xE0,0x21,0x00,0x2F,0xE0,0xA1,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_190_210_210[45] U8G_FONT_SECTION("fontpage_190_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x10,0x00,0x17,0xC0,0x90,0x40,0x90,0x40,0x90,
+ 0x40,0x97,0xC0,0x90,0x40,0x90,0x40,0x20,0x40,0x4F,0xC0,0x80,0x40};
+const u8g_fntpgm_uint8_t fontpage_191_132_133[73] U8G_FONT_SECTION("fontpage_191_132_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x17,0xC0,0x20,0x80,0x49,0x00,0x92,0x80,0x24,
+ 0x40,0x68,0x20,0xA7,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x11,0x00,0x21,0x00,0x47,0xC0,0x91,0x00,0x1F,0xE0,0x20,0x80,0x6F,
+ 0xE0,0xA4,0x80,0x22,0x80,0x20,0x80,0x21,0x80};
+const u8g_fntpgm_uint8_t fontpage_191_170_170[45] U8G_FONT_SECTION("fontpage_191_170_170") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAA,0xAA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x1F,0xE0,0x28,0x80,0x4F,0xE0,0x98,0x80,0x2B,
+ 0xE0,0x6A,0x20,0xAB,0xE0,0x2A,0x20,0x2B,0xE0,0x2A,0x20,0x33,0xE0};
+const u8g_fntpgm_uint8_t fontpage_191_174_174[45] U8G_FONT_SECTION("fontpage_191_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2A,0x80,0x6A,0x80,0xBE,0x80,0x01,0xE0,0x5D,
+ 0x40,0xC3,0x40,0x5D,0x40,0x54,0x80,0x56,0x80,0x55,0x40,0x62,0x20};
+const u8g_fntpgm_uint8_t fontpage_191_195_195[45] U8G_FONT_SECTION("fontpage_191_195_195") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x02,0x00,0x12,0x00,0x12,0x00,0x10,
+ 0x40,0x50,0x20,0x50,0x20,0x50,0xA0,0x90,0x80,0x10,0x80,0x0F,0x80};
+const u8g_fntpgm_uint8_t fontpage_191_253_253[45] U8G_FONT_SECTION("fontpage_191_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x3F,0xC0,0x2A,0x40,0x4A,0x40,0x14,
+ 0x40,0x28,0x40,0x05,0x80,0x12,0x40,0x50,0xA0,0x50,0xA0,0x8F,0x80};
+const u8g_fntpgm_uint8_t fontpage_192_167_167[45] U8G_FONT_SECTION("fontpage_192_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x25,0x00,0xB5,0x00,0xAF,0xE0,0xA9,
+ 0x00,0xB1,0x00,0x27,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_192_187_187[45] U8G_FONT_SECTION("fontpage_192_187_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x0A,0x00,0x3F,0x80,0x20,0x80,0x20,
+ 0x80,0x3F,0x80,0x20,0x80,0x04,0x40,0x52,0xA0,0x50,0xA0,0x8F,0x80};
+const u8g_fntpgm_uint8_t fontpage_192_226_226[45] U8G_FONT_SECTION("fontpage_192_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x2F,0xE0,0xB2,0x00,0xAA,0x80,0xA4,
+ 0x80,0xA5,0xA0,0x2A,0xC0,0x30,0x80,0x21,0x40,0x22,0x40,0x24,0x20};
+const u8g_fntpgm_uint8_t fontpage_192_239_239[45] U8G_FONT_SECTION("fontpage_192_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,
+ 0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x54,0x40,0x52,0xA0,0x8F,0x80};
+const u8g_fntpgm_uint8_t fontpage_194_159_159[45] U8G_FONT_SECTION("fontpage_194_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x40,0x7F,0xE0,0x41,0x00,0x7F,0x40,0x5D,
+ 0x40,0x52,0x80,0x9D,0xA0,0x82,0x60,0x24,0x40,0xA2,0xA0,0x9F,0x80};
+const u8g_fntpgm_uint8_t fontpage_196_143_144[73] U8G_FONT_SECTION("fontpage_196_143_144") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x90,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x80,0x7A,0x40,0x0A,0x00,0x4F,0xE0,0x2A,
+ 0x00,0x12,0x40,0x12,0x80,0x29,0x00,0x41,0x20,0x86,0xA0,0x00,0x60,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x02,0x80,0x02,0x40,0x7F,0xE0,0x42,0x00,0x42,0x00,0x7A,0x40,0x4A,
+ 0x40,0x4A,0x80,0x49,0x20,0x52,0xA0,0x84,0x60};
+const u8g_fntpgm_uint8_t fontpage_196_183_183[45] U8G_FONT_SECTION("fontpage_196_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x02,0x00,0x3F,0xC0,0x20,0x40,0x20,
+ 0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x80,0x00};
+const u8g_fntpgm_uint8_t fontpage_196_192_192[45] U8G_FONT_SECTION("fontpage_196_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x18,0x60,0x63,0x80,0x42,0x00,0x7A,0x00,0x4B,
+ 0xE0,0x4A,0x40,0x7A,0x40,0x42,0x40,0x42,0x40,0x44,0x40,0x88,0x40};
+const u8g_fntpgm_uint8_t fontpage_196_199_199[45] U8G_FONT_SECTION("fontpage_196_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x7F,0xE0,0x40,
+ 0x00,0x7D,0xE0,0x44,0x20,0x54,0xA0,0x4C,0x60,0x54,0xA0,0xA9,0x60};
+const u8g_fntpgm_uint8_t fontpage_196_203_203[45] U8G_FONT_SECTION("fontpage_196_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x03,0xC0,0x7C,0x00,0x04,0x00,0x7F,0xC0,0x04,
+ 0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00};
+const u8g_fntpgm_uint8_t fontpage_196_211_211[45] U8G_FONT_SECTION("fontpage_196_211_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xE0,0xF8,0x80,0x20,0x80,0x28,
+ 0x80,0x30,0x80,0x60,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0xE3,0x80};
+const u8g_fntpgm_uint8_t fontpage_196_231_231[45] U8G_FONT_SECTION("fontpage_196_231_231") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE7,0xE7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x22,0x00,0xFF,0x80,0x22,0x80,0x2A,
+ 0x80,0x36,0x80,0x62,0x80,0xA7,0xA0,0x24,0xA0,0xA8,0xA0,0x50,0x60};
+const u8g_fntpgm_uint8_t fontpage_196_249_249[45] U8G_FONT_SECTION("fontpage_196_249_249") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x80,0x24,0x80,0xFC,0x80,0x24,0xA0,0x2F,
+ 0xC0,0x34,0x80,0x64,0x80,0xA4,0x80,0x25,0xA0,0x26,0xA0,0xE4,0x60};
+const u8g_fntpgm_uint8_t fontpage_197_150_150[45] U8G_FONT_SECTION("fontpage_197_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x40,0x22,0x40,0xF9,0x40,0x20,0x40,0x2A,
+ 0x40,0x31,0x40,0x60,0xE0,0xAF,0x40,0x20,0x40,0x20,0x40,0xE0,0x40};
+const u8g_fntpgm_uint8_t fontpage_197_165_165[45] U8G_FONT_SECTION("fontpage_197_165_165") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x24,0x40,0xFC,0x40,0x25,0x80,0x2C,
+ 0x00,0x37,0xE0,0x65,0x40,0xA5,0x40,0x24,0x80,0x25,0x40,0xE6,0x20};
+const u8g_fntpgm_uint8_t fontpage_197_172_172[45] U8G_FONT_SECTION("fontpage_197_172_172") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0xFA,0x40,0x27,0xA0,0x28,
+ 0x20,0x30,0x00,0x67,0xE0,0xA4,0x20,0x24,0x20,0x27,0xE0,0xE4,0x20};
+const u8g_fntpgm_uint8_t fontpage_197_189_189[45] U8G_FONT_SECTION("fontpage_197_189_189") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x20,0x80,0xF8,0x80,0x27,0xE0,0x2C,
+ 0xA0,0x34,0xA0,0x67,0xE0,0xA4,0xA0,0x24,0xA0,0x27,0xE0,0xE4,0x20};
+const u8g_fntpgm_uint8_t fontpage_197_212_212[45] U8G_FONT_SECTION("fontpage_197_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x22,0x40,0xFF,0xE0,0x22,0x00,0x2B,
+ 0xC0,0x32,0x40,0x65,0x40,0xA4,0x80,0x28,0x80,0x29,0x40,0xE6,0x20};
+const u8g_fntpgm_uint8_t fontpage_197_233_233[45] U8G_FONT_SECTION("fontpage_197_233_233") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xE0,0x22,0x40,0xF9,0x80,0x22,0x40,0x2C,
+ 0x20,0x31,0x00,0x67,0xC0,0xA1,0x00,0x2F,0xE0,0x21,0x00,0xE1,0x00};
+const u8g_fntpgm_uint8_t fontpage_198_137_137[45] U8G_FONT_SECTION("fontpage_198_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x20,0x80,0xFF,0xE0,0x25,0x20,0x29,
+ 0x00,0x37,0xE0,0x62,0x40,0xA6,0x40,0x21,0x80,0x22,0x80,0xEC,0x60};
+const u8g_fntpgm_uint8_t fontpage_198_161_161[45] U8G_FONT_SECTION("fontpage_198_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x25,0x20,0xFB,0x40,0x21,0x00,0x2F,
+ 0xE0,0x30,0x20,0x60,0x20,0xA7,0xE0,0x20,0x20,0x20,0x20,0xEF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_198_164_164[45] U8G_FONT_SECTION("fontpage_198_164_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xE0,0xFA,0x40,0x21,0x80,0x2E,
+ 0x60,0x30,0x00,0x62,0x40,0xA2,0x40,0x22,0x40,0x24,0x40,0xE8,0x40};
+const u8g_fntpgm_uint8_t fontpage_198_223_223[45] U8G_FONT_SECTION("fontpage_198_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xC0,0x22,0x40,0xFB,0xC0,0x20,0x00,0x2F,
+ 0xE0,0x34,0x20,0x65,0x20,0xA5,0x20,0x25,0x20,0x22,0x80,0xEC,0x60};
+const u8g_fntpgm_uint8_t fontpage_198_226_226[45] U8G_FONT_SECTION("fontpage_198_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0xFC,0x80,0x27,0xC0,0x2D,
+ 0x40,0x35,0x40,0x6F,0xE0,0xA1,0x00,0x22,0x80,0x24,0x40,0xE8,0x20};
+const u8g_fntpgm_uint8_t fontpage_199_137_137[45] U8G_FONT_SECTION("fontpage_199_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0xE0,0xF9,0x00,0x27,0xC0,0x2C,
+ 0x40,0x37,0xC0,0x64,0x40,0xA7,0xC0,0x21,0x00,0x2F,0xE0,0xE1,0x00};
+const u8g_fntpgm_uint8_t fontpage_199_162_162[45] U8G_FONT_SECTION("fontpage_199_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xE0,0x28,0x20,0xF2,0x80,0x24,0x40,0x29,
+ 0x20,0x31,0x00,0x6F,0xE0,0xA1,0x00,0x25,0x80,0x29,0x40,0xF1,0x20};
+const u8g_fntpgm_uint8_t fontpage_199_165_165[45] U8G_FONT_SECTION("fontpage_199_165_165") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0xF4,0x40,0x22,0x80,0x2F,
+ 0xE0,0x31,0x00,0x6F,0xE0,0xA2,0x40,0x26,0x80,0x21,0x40,0xEE,0x20};
+const u8g_fntpgm_uint8_t fontpage_199_167_167[45] U8G_FONT_SECTION("fontpage_199_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0xF8,0x20,0x22,0x80,0x24,
+ 0x40,0x38,0x20,0x67,0xC0,0xA1,0x00,0x21,0x00,0x21,0x00,0xEF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_199_208_208[45] U8G_FONT_SECTION("fontpage_199_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x24,0x40,0xFF,0xC0,0x24,0x40,0x27,
+ 0xC0,0x30,0x00,0x6F,0xE0,0xA5,0x00,0x25,0xE0,0x2B,0x00,0xF1,0xE0};
+const u8g_fntpgm_uint8_t fontpage_199_210_210[45] U8G_FONT_SECTION("fontpage_199_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0xC0,0x27,0x00,0xF1,0x00,0x2F,0xE0,0x21,
+ 0x00,0x35,0x60,0x69,0x20,0xAD,0x60,0x29,0x20,0x29,0x20,0xEF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_202_182_182[45] U8G_FONT_SECTION("fontpage_202_182_182") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x12,0x00,0x93,0xE0,0x94,0x40,0x9A,
+ 0x40,0x92,0x40,0xB2,0x80,0xD1,0x00,0x91,0x80,0x12,0x40,0x14,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_190_190[45] U8G_FONT_SECTION("fontpage_202_190_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBE,0xBE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x11,0x00,0xFD,0xE0,0x22,0x40,0x25,
+ 0x40,0x39,0x40,0x29,0x40,0x28,0x80,0x49,0x80,0x4A,0x40,0x94,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_240_240[45] U8G_FONT_SECTION("fontpage_202_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x95,0x00,0x59,0x00,0xFD,0xE0,0x33,0x40,0x59,
+ 0x40,0x95,0x40,0xFD,0x40,0x29,0x40,0x68,0x80,0x11,0x40,0xEE,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_242_242[45] U8G_FONT_SECTION("fontpage_202_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x80,0xFE,0xE0,0x00,0x80,0x78,0x80,0x4B,
+ 0xE0,0x79,0x40,0x01,0x40,0xFF,0x40,0xAA,0x80,0xBB,0x40,0x86,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_244_244[45] U8G_FONT_SECTION("fontpage_202_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x55,0x40,0x7C,0x80,0x39,
+ 0x40,0x56,0x20,0x7F,0xC0,0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_203_135_135[45] U8G_FONT_SECTION("fontpage_203_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_203_153_153[45] U8G_FONT_SECTION("fontpage_203_153_153") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0xAC,0x80,0x72,0x80,0x20,0x80,0xFC,
+ 0x80,0x22,0x80,0x30,0xE0,0x6F,0x80,0xA0,0x80,0x20,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_203_156_156[45] U8G_FONT_SECTION("fontpage_203_156_156") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x40,0x29,0x40,0x44,0xC0,0xB8,0x40,0x12,
+ 0x40,0x7D,0x40,0x10,0x60,0x55,0xC0,0x52,0x40,0x92,0x40,0x30,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_173_173[45] U8G_FONT_SECTION("fontpage_203_173_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x60,0xD5,0x80,0xB9,0x00,0x91,0x00,0xFD,
+ 0xE0,0xB1,0x40,0xD9,0x40,0xD5,0x40,0x91,0x40,0xFA,0x40,0x04,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_176_176[45] U8G_FONT_SECTION("fontpage_203_176_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x60,0xFD,0x80,0x45,0x00,0x29,0x00,0xFD,
+ 0xE0,0x11,0x40,0xFD,0x40,0x11,0x40,0x55,0x40,0x92,0x40,0x34,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_185_185[45] U8G_FONT_SECTION("fontpage_203_185_185") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB9,0xB9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x08,
+ 0x00,0x0F,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x87,0x00};
+const u8g_fntpgm_uint8_t fontpage_203_224_224[45] U8G_FONT_SECTION("fontpage_203_224_224") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,
+ 0xE0,0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0};
+const u8g_fntpgm_uint8_t fontpage_203_246_246[45] U8G_FONT_SECTION("fontpage_203_246_246") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF6,0xF6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x00,0x80,0xF0,0x80,0x9F,0xE0,0x90,0x80,0x94,
+ 0x80,0xF2,0x80,0x92,0x80,0x90,0x80,0x90,0x80,0xF0,0x80,0x03,0x80};
+const u8g_fntpgm_uint8_t fontpage_204_142_142[45] U8G_FONT_SECTION("fontpage_204_142_142") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8E,0x8E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x03,0xE0,0xF2,0x20,0x92,0x20,0x93,0xE0,0xF2,
+ 0x20,0x92,0x20,0x93,0xE0,0xF2,0x20,0x04,0x20,0x08,0xA0,0x30,0x40};
+const u8g_fntpgm_uint8_t fontpage_204_175_175[45] U8G_FONT_SECTION("fontpage_204_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,
+ 0x80,0x00,0x00,0xFF,0xE0,0x24,0x00,0x27,0x80,0x54,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_205_130_130[45] U8G_FONT_SECTION("fontpage_205_130_130") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x82,0x82,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x40,0xFB,0x80,0x52,0x00,0xFB,0xE0,0x12,
+ 0x80,0xF4,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_205_171_171[45] U8G_FONT_SECTION("fontpage_205_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0xE0,0xFF,0x00,0x55,0xE0,0x7D,0x40,0x55,
+ 0x40,0xFF,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40};
+const u8g_fntpgm_uint8_t fontpage_205_244_244[45] U8G_FONT_SECTION("fontpage_205_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xE0,0x02,0x00,0x3F,0xC0,0x22,0x40,0x3F,
+ 0xC0,0x22,0x40,0x3F,0xC0,0x0A,0x00,0x04,0x00,0x1B,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_206_128_128[45] U8G_FONT_SECTION("fontpage_206_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,
+ 0xE0,0x48,0x00,0x7F,0xC0,0x4A,0x40,0x79,0x80,0xC9,0x80,0x0E,0x60};
+const u8g_fntpgm_uint8_t fontpage_206_137_137[45] U8G_FONT_SECTION("fontpage_206_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x30,
+ 0x80,0x5F,0x80,0x90,0x80,0x1F,0x80,0x10,0x80,0x10,0x80,0x11,0x80};
+const u8g_fntpgm_uint8_t fontpage_206_159_159[45] U8G_FONT_SECTION("fontpage_206_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x49,0xE0,0xFD,0x20,0x49,0x20,0x79,0xE0,0x49,
+ 0x20,0x79,0x20,0x49,0xE0,0xFD,0x20,0x01,0x20,0x49,0x20,0x86,0x60};
+const u8g_fntpgm_uint8_t fontpage_206_186_186[45] U8G_FONT_SECTION("fontpage_206_186_186") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0x80,0x24,0x80,0xFC,0x80,0x24,
+ 0x80,0x74,0x80,0x6C,0x80,0xA4,0x80,0xA4,0x80,0x28,0xA0,0x30,0xE0};
+const u8g_fntpgm_uint8_t fontpage_206_192_192[45] U8G_FONT_SECTION("fontpage_206_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x19,0x00,0x06,0x00,0x19,0x00,0x64,
+ 0xC0,0x04,0x00,0xFF,0xE0,0x15,0x00,0x24,0x80,0xC4,0x60,0x0C,0x00};
+const u8g_fntpgm_uint8_t fontpage_206_223_223[45] U8G_FONT_SECTION("fontpage_206_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x24,
+ 0x80,0x24,0x80,0x3F,0x80,0x0E,0x00,0x15,0x00,0x24,0x80,0xC4,0x60};
+const u8g_fntpgm_uint8_t fontpage_206_225_225[45] U8G_FONT_SECTION("fontpage_206_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x1F,0x80,0x29,0x00,0x46,0x00,0x0A,
+ 0x00,0x35,0x80,0xC4,0x60,0x3F,0x80,0x15,0x00,0x24,0x80,0xDC,0x40};
+const u8g_fntpgm_uint8_t fontpage_206_229_229[45] U8G_FONT_SECTION("fontpage_206_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x24,0x80,0x15,0x00,0xFF,
+ 0xE0,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0xC4,0x60,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_206_255_255[45] U8G_FONT_SECTION("fontpage_206_255_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0xC0,0x27,0x00,0xFC,0x00,0x24,0x00,0x27,
+ 0xC0,0x74,0x40,0x6E,0x40,0xA5,0x80,0x28,0x80,0x29,0x40,0x36,0x20};
+const u8g_fntpgm_uint8_t fontpage_207_151_151[45] U8G_FONT_SECTION("fontpage_207_151_151") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x71,
+ 0x00,0x6B,0x80,0xA5,0x40,0xA9,0x20,0x21,0x00,0x21,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_207_241_241[45] U8G_FONT_SECTION("fontpage_207_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x71,
+ 0x00,0x69,0x00,0xA7,0xC0,0xA1,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_208_161_161[45] U8G_FONT_SECTION("fontpage_208_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x21,0x00,0x2F,0xE0,0xF0,0x00,0x22,
+ 0x80,0x74,0x40,0x6A,0xA0,0xA2,0x80,0x21,0x00,0x22,0x80,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_208_188_188[45] U8G_FONT_SECTION("fontpage_208_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0xF4,0x40,0x2A,0x80,0x21,
+ 0x00,0x72,0x80,0x6C,0x60,0xA7,0xC0,0x24,0x40,0x24,0x40,0x27,0xC0};
+const u8g_fntpgm_uint8_t fontpage_209_175_175[45] U8G_FONT_SECTION("fontpage_209_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x40,0x22,0x80,0x27,0xC0,0xF9,0x40,0x27,
+ 0xC0,0x75,0x00,0x6F,0xE0,0xA3,0x20,0x25,0x20,0x29,0xC0,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_209_192_192[45] U8G_FONT_SECTION("fontpage_209_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x22,0x80,0xFC,0x40,0x28,0x20,0x27,
+ 0xC0,0x70,0x00,0x69,0x20,0xA4,0xA0,0x22,0x40,0x22,0x80,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_211_253_253[45] U8G_FONT_SECTION("fontpage_211_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x2F,0xE0,0xFA,0xA0,0x2F,0xE0,0x2A,
+ 0xA0,0x3F,0xE0,0x64,0x40,0xA7,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40};
+const u8g_fntpgm_uint8_t fontpage_212_161_161[45] U8G_FONT_SECTION("fontpage_212_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x2F,0xE0,0xF2,0x80,0x27,0xC0,0x34,
+ 0x40,0x6F,0xC0,0x64,0x40,0xAF,0xE0,0x21,0x00,0x22,0x80,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_212_217_217[45] U8G_FONT_SECTION("fontpage_212_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0x40,0x2A,0xA0,0xF4,0x40,0x27,0xC0,0x38,
+ 0x20,0x27,0xC0,0x64,0x40,0xA7,0xC0,0x24,0x40,0x22,0x80,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_214_226_227[71] U8G_FONT_SECTION("fontpage_214_226_227") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x00,0x27,
+ 0x80,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0xFF,0xC0,0x0B,0x0A,0x14,
+ 0x0C,0x00,0xFF,0xFF,0xE0,0x04,0x00,0x04,0x00,0x24,0x00,0x27,0xC0,0x24,0x00,0x24,
+ 0x00,0x24,0x00,0x24,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_214_229_229[45] U8G_FONT_SECTION("fontpage_214_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x27,0xC0,0x24,0x00,0x24,0x00,0xFF,
+ 0xE0,0x04,0x00,0x14,0x40,0x24,0x80,0x41,0x00,0x06,0x00,0xF8,0x00};
+const u8g_fntpgm_uint8_t fontpage_215_212_212[45] U8G_FONT_SECTION("fontpage_215_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x84,0x00,0x84,0x00,0x84,0x80,0x85,0x00,0xF6,
+ 0x00,0x84,0x00,0x84,0x00,0x84,0x00,0xB4,0x40,0xC4,0x40,0x83,0xC0};
+const u8g_fntpgm_uint8_t fontpage_217_161_161[45] U8G_FONT_SECTION("fontpage_217_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0x80,0x24,0x80,0x84,0x80,0x48,0xE0,0x10,
+ 0x00,0x2F,0xC0,0x24,0x80,0x42,0x80,0xC3,0x00,0x44,0x80,0x58,0x60};
+const u8g_fntpgm_uint8_t fontpage_217_226_226[45] U8G_FONT_SECTION("fontpage_217_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x21,0x00,0x8F,0xE0,0x49,0x20,0x19,
+ 0x00,0x2F,0xC0,0x28,0x40,0xCA,0x80,0x49,0x00,0x52,0x80,0x6C,0x60};
+const u8g_fntpgm_uint8_t fontpage_217_232_232[45] U8G_FONT_SECTION("fontpage_217_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x21,0x00,0x8F,0xE0,0x51,0x00,0x11,
+ 0x00,0x21,0x00,0x27,0xC0,0xC1,0x00,0x41,0x00,0x41,0x00,0x4F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_218_151_151[45] U8G_FONT_SECTION("fontpage_218_151_151") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x25,0x00,0x87,0xC0,0x49,0x00,0x21,
+ 0x00,0x3F,0xE0,0x42,0x80,0xC2,0x80,0x44,0xA0,0x48,0xA0,0x50,0xE0};
+const u8g_fntpgm_uint8_t fontpage_218_187_187[45] U8G_FONT_SECTION("fontpage_218_187_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0xC0,0x27,0x00,0x81,0x00,0x5F,0xE0,0x11,
+ 0x00,0x21,0x00,0x27,0xC0,0xC4,0x40,0x44,0x40,0x47,0xC0,0x44,0x40};
+const u8g_fntpgm_uint8_t fontpage_218_193_193[45] U8G_FONT_SECTION("fontpage_218_193_193") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x82,0x00,0x5F,0xE0,0x04,0x00,0x88,0x80,0x5F,
+ 0xC0,0x20,0x40,0x2A,0x80,0xCA,0x80,0x4A,0xA0,0x4A,0xA0,0x52,0x60};
+const u8g_fntpgm_uint8_t fontpage_218_203_203[45] U8G_FONT_SECTION("fontpage_218_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xBE,0x20,0x62,0xA0,0x2A,0xA0,0xAA,0xA0,0x6A,
+ 0xA0,0x2A,0xA0,0x2A,0xA0,0xC8,0xA0,0x54,0x20,0x62,0x20,0x40,0xE0};
+const u8g_fntpgm_uint8_t fontpage_219_136_136[45] U8G_FONT_SECTION("fontpage_219_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x49,0x20,0x25,0x40,0x81,0x00,0x57,0xE0,0x14,
+ 0x20,0x27,0xE0,0x24,0x20,0xC7,0xE0,0x44,0x20,0x44,0x20,0x44,0x60};
+const u8g_fntpgm_uint8_t fontpage_219_225_225[45] U8G_FONT_SECTION("fontpage_219_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x25,0x40,0x09,0x80,0x82,0x80,0x54,
+ 0x40,0x29,0x20,0x25,0x40,0xC5,0x80,0x49,0x00,0x42,0x80,0x5C,0x60};
+const u8g_fntpgm_uint8_t fontpage_219_247_247[45] U8G_FONT_SECTION("fontpage_219_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xC0,0x28,0x40,0x0F,0xC0,0x88,0x40,0x5F,
+ 0xC0,0x29,0x20,0x29,0x40,0xCF,0x80,0x49,0x20,0x4B,0x20,0x4C,0xE0};
+const u8g_fntpgm_uint8_t fontpage_220_133_133[45] U8G_FONT_SECTION("fontpage_220_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x2F,0xE0,0x01,0x00,0x97,0xC0,0x51,
+ 0x00,0x2F,0xE0,0x24,0x40,0xC7,0x40,0x45,0xC0,0x44,0x40,0x44,0xC0};
+const u8g_fntpgm_uint8_t fontpage_220_169_169[45] U8G_FONT_SECTION("fontpage_220_169_169") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0x24,0x40,0x07,0xC0,0x94,0x40,0x57,
+ 0xC0,0x20,0x00,0x2F,0xE0,0xCA,0xA0,0x4A,0xA0,0x4A,0xA0,0x5F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_220_184_184[45] U8G_FONT_SECTION("fontpage_220_184_184") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB8,0xB8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x48,0x80,0x24,0xE0,0x1F,0x00,0x88,0xE0,0x5E,
+ 0x20,0x2A,0x40,0x2B,0xE0,0xCA,0x40,0x4A,0x40,0x52,0x40,0x66,0xC0};
+const u8g_fntpgm_uint8_t fontpage_221_144_144[45] U8G_FONT_SECTION("fontpage_221_144_144") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x28,0x80,0x8B,0xE0,0x4A,0x20,0x1B,
+ 0xE0,0x2A,0x20,0x2B,0xE0,0xC8,0x80,0x4A,0xC0,0x54,0xA0,0x69,0xA0};
+const u8g_fntpgm_uint8_t fontpage_221_162_162[45] U8G_FONT_SECTION("fontpage_221_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x40,0x22,0x80,0x0F,0xE0,0x82,0x80,0x44,
+ 0x40,0x28,0x20,0x3F,0xE0,0xCA,0xA0,0x4A,0xA0,0x4A,0xA0,0x5F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_221_209_209[45] U8G_FONT_SECTION("fontpage_221_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0x24,0x40,0x07,0x40,0x85,0x40,0x5F,
+ 0xE0,0x34,0x60,0x27,0xC0,0xC4,0x40,0x47,0xC0,0x44,0x40,0x44,0xC0};
+const u8g_fntpgm_uint8_t fontpage_222_143_143[45] U8G_FONT_SECTION("fontpage_222_143_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x28,0x20,0x0F,0xE0,0x98,0x00,0x5F,
+ 0xE0,0x29,0x00,0x2F,0xE0,0xCD,0xA0,0x4B,0x60,0x5D,0xA0,0x49,0x60};
+const u8g_fntpgm_uint8_t fontpage_223_192_192[45] U8G_FONT_SECTION("fontpage_223_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x80,0x3E,0x80,0x12,0xE0,0x9E,0xA0,0x53,
+ 0xA0,0x3E,0xA0,0x28,0xA0,0xDF,0xA0,0x4A,0x40,0x52,0xA0,0x65,0x20};
+const u8g_fntpgm_uint8_t fontpage_224_239_239[45] U8G_FONT_SECTION("fontpage_224_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x17,0xE0,0x54,0x80,0x58,0x80,0x50,
+ 0x80,0x90,0x80,0x10,0x80,0x10,0x80,0x28,0x80,0x44,0x80,0x81,0x80};
+const u8g_fntpgm_uint8_t fontpage_225_185_185[45] U8G_FONT_SECTION("fontpage_225_185_185") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB9,0xB9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x3F,
+ 0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x52,0x40,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_225_237_237[45] U8G_FONT_SECTION("fontpage_225_237_237") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xED,0xED,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0xF7,0x80,0x22,0x80,0x32,0x80,0x66,
+ 0x80,0xA3,0x80,0x24,0xA0,0x68,0x60,0x00,0x00,0x52,0x40,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_228_199_199[45] U8G_FONT_SECTION("fontpage_228_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,
+ 0x00,0x20,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x40,0x80,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_228_233_233[45] U8G_FONT_SECTION("fontpage_228_233_233") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0xA2,0x00,0xA7,0xE0,0xFA,0xA0,0xA2,
+ 0xA0,0x32,0xA0,0x64,0xA0,0xA9,0x20,0x22,0x20,0x25,0x20,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_228_249_249[45] U8G_FONT_SECTION("fontpage_228_249_249") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xA7,0xC0,0xF1,0x00,0xA1,0x00,0xAF,
+ 0xE0,0x30,0x80,0x6F,0xE0,0xA4,0x80,0x22,0x80,0x20,0x80,0x23,0x80};
+const u8g_fntpgm_uint8_t fontpage_231_135_135[45] U8G_FONT_SECTION("fontpage_231_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x88,0x40,0x52,0x80,0x0C,
+ 0x00,0x2A,0x80,0xDF,0x40,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_231_175_175[45] U8G_FONT_SECTION("fontpage_231_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x07,0xE0,0xF9,0x00,0x21,0x00,0x23,0x00,0x73,
+ 0x80,0x25,0x40,0x25,0x20,0x39,0x20,0xC1,0x00,0x01,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_234_168_168[45] U8G_FONT_SECTION("fontpage_234_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,
+ 0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x84,0x40,0x84,0xC0};
+const u8g_fntpgm_uint8_t fontpage_234_181_181[45] U8G_FONT_SECTION("fontpage_234_181_181") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB5,0xB5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0xFF,0x80,0x88,0x80,0xFF,
+ 0x80,0x88,0x80,0x88,0x80,0xFF,0x80,0x08,0x40,0x08,0x40,0x07,0xC0};
+const u8g_fntpgm_uint8_t fontpage_234_229_229[45] U8G_FONT_SECTION("fontpage_234_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0xFB,0xC0,0xAE,0x40,0xA9,0x80,0xFA,
+ 0x40,0xAC,0x20,0xAB,0xC0,0xAA,0x40,0xFA,0x40,0x8B,0xC0,0x02,0x40};
+const u8g_fntpgm_uint8_t fontpage_236_253_253[34] U8G_FONT_SECTION("fontpage_236_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0C,0x02,0xFF,0x10,0x20,0xFF,0x81,0x81,0xFF,0x81,0x81,0x81,
+ 0xFF,0x81};
+const u8g_fntpgm_uint8_t fontpage_237_132_132[45] U8G_FONT_SECTION("fontpage_237_132_132") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x22,0x00,0x42,0x00,0xF7,0xC0,0x98,0x40,0x90,
+ 0x40,0xF4,0x40,0x92,0x40,0x92,0x40,0x90,0x40,0xF0,0x40,0x91,0x80};
+const u8g_fntpgm_uint8_t fontpage_237_209_209[45] U8G_FONT_SECTION("fontpage_237_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0A,0x00,0x4A,0x00,0x4B,0xE0,0x4A,0x00,0x4C,
+ 0x80,0x48,0x40,0x08,0x00,0x7F,0xC0,0x4A,0x40,0x4A,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_237_244_244[45] U8G_FONT_SECTION("fontpage_237_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,
+ 0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_238_129_129[45] U8G_FONT_SECTION("fontpage_238_129_129") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x81,0x81,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x14,0x80,0x25,0x60,0x46,0x20,0x1F,
+ 0x80,0x30,0x80,0xDF,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80};
+const u8g_fntpgm_uint8_t fontpage_238_160_160[45] U8G_FONT_SECTION("fontpage_238_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x07,0xE0,0xF4,0x20,0x97,0xE0,0xF4,0x80,0x94,
+ 0x80,0x97,0xE0,0xF4,0x80,0x94,0x80,0xF4,0xA0,0x96,0x60,0x04,0x20};
+const u8g_fntpgm_uint8_t fontpage_240_238_238[45] U8G_FONT_SECTION("fontpage_240_238_238") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEE,0xEE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0xF3,0xC0,0x24,0x80,0x4F,0xE0,0xF5,
+ 0x20,0x57,0xE0,0x55,0x20,0x57,0xE0,0x75,0x20,0x45,0x20,0x08,0x60};
+const u8g_fntpgm_uint8_t fontpage_243_187_187[45] U8G_FONT_SECTION("fontpage_243_187_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x2A,0x80,0x24,0x80,0x2A,
+ 0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x49,0x40,0x5F,0x40,0x40,0xC0};
+const u8g_fntpgm_uint8_t fontpage_243_251_251[45] U8G_FONT_SECTION("fontpage_243_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xE3,0xE0,0x24,0x20,0xFA,0x40,0x21,
+ 0x80,0x36,0x80,0x29,0xE0,0x62,0x20,0xA5,0x40,0x20,0x80,0x27,0x00};
+const u8g_fntpgm_uint8_t fontpage_244_250_250[45] U8G_FONT_SECTION("fontpage_244_250_250") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x89,0x00,0x10,
+ 0x80,0x60,0x40,0x1F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_245_239_239[45] U8G_FONT_SECTION("fontpage_245_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x81,0x00,0x45,0x20,0xF7,0xE0,0x00,0x00,0xAF,
+ 0xE0,0xA1,0x00,0xAF,0xE0,0x4A,0xA0,0x6A,0xA0,0x8A,0xA0,0x08,0x60};
+const u8g_fntpgm_uint8_t fontpage_246_172_172[45] U8G_FONT_SECTION("fontpage_246_172_172") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x54,0x80,0xBF,0xC0,0x04,
+ 0x40,0x7F,0xC0,0x44,0x00,0x7F,0xE0,0x14,0x20,0x24,0xC0,0xC4,0x00};
+const u8g_fntpgm_uint8_t fontpage_246_201_201[45] U8G_FONT_SECTION("fontpage_246_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x94,0x80,0x7F,0xC0,0x04,
+ 0x00,0xFF,0xE0,0x01,0x00,0x7F,0xC0,0x11,0x00,0x09,0x00,0x03,0x00};
+const u8g_fntpgm_uint8_t fontpage_247_128_128[45] U8G_FONT_SECTION("fontpage_247_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x94,0x80,0x27,0xC0,0x50,
+ 0x40,0x4F,0x40,0x49,0x40,0x4F,0x40,0x49,0x40,0x4F,0x40,0x40,0xC0};
+const u8g_fntpgm_uint8_t fontpage_247_177_177[45] U8G_FONT_SECTION("fontpage_247_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x3D,0xE0,0x4A,0x80,0x94,0x40,0x7F,
+ 0xC0,0x12,0x40,0x3B,0xC0,0x56,0x40,0x93,0xC0,0x12,0x40,0x13,0xC0};
+const u8g_fntpgm_uint8_t fontpage_248_251_251[45] U8G_FONT_SECTION("fontpage_248_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x80,0x15,0x00,0xFF,0xE0,0x15,0x00,0x24,
+ 0x80,0x40,0x40,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x11,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_250_162_162[45] U8G_FONT_SECTION("fontpage_250_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x91,
+ 0x20,0x3E,0x00,0x08,0x80,0x7F,0xC0,0x04,0x40,0x24,0x80,0xCC,0x60};
+const u8g_fntpgm_uint8_t fontpage_250_171_171[45] U8G_FONT_SECTION("fontpage_250_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x51,0x40,0x5D,0x80,0x51,0x20,0xFD,
+ 0xE0,0x08,0x80,0x3F,0x00,0x08,0x80,0x7F,0xC0,0x24,0x80,0xCC,0x60};
+const u8g_fntpgm_uint8_t fontpage_253_162_162[45] U8G_FONT_SECTION("fontpage_253_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xC0,0x41,0x00,0x51,0x00,0xE1,
+ 0x00,0x21,0x00,0x41,0x00,0xF1,0x00,0x01,0x00,0x31,0x00,0xCF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_253_167_167[45] U8G_FONT_SECTION("fontpage_253_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xC0,0x22,0x40,0x4A,0x40,0x52,0x80,0xE2,
+ 0xE0,0x22,0x20,0x42,0x20,0xF5,0x40,0x0C,0x80,0x35,0x40,0xCA,0x20};
+const u8g_fntpgm_uint8_t fontpage_253_191_191[45] U8G_FONT_SECTION("fontpage_253_191_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x22,0x40,0x43,0xC0,0x4E,0x00,0xE3,
+ 0xE0,0x2E,0x00,0x42,0x40,0xF2,0x80,0x09,0x20,0x32,0xA0,0xCC,0x60};
+const u8g_fntpgm_uint8_t fontpage_253_198_198[45] U8G_FONT_SECTION("fontpage_253_198_198") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xE0,0x44,0xA0,0x54,0xA0,0xE4,
+ 0xA0,0x27,0xE0,0x44,0xA0,0xF4,0xA0,0x04,0xA0,0x37,0xE0,0xC4,0x20};
+const u8g_fntpgm_uint8_t fontpage_253_200_200[45] U8G_FONT_SECTION("fontpage_253_200_200") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0x54,0x40,0xEA,0x80,0x21,
+ 0x00,0x42,0x80,0xEC,0x60,0x01,0x00,0x30,0xC0,0xC3,0x00,0x00,0xC0};
+const u8g_fntpgm_uint8_t fontpage_253_211_211[45] U8G_FONT_SECTION("fontpage_253_211_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x4F,0xE0,0x51,0x00,0xE7,
+ 0xC0,0x20,0x00,0x47,0xC0,0xF4,0x40,0x0C,0x40,0x37,0xC0,0xC4,0x40};
+const u8g_fntpgm_uint8_t fontpage_253_217_217[45] U8G_FONT_SECTION("fontpage_253_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x42,0x80,0x54,0x40,0xE8,
+ 0x20,0x27,0xC0,0x40,0x00,0xF7,0xC0,0x0C,0x40,0x34,0x40,0xC7,0xC0};
+const u8g_fntpgm_uint8_t fontpage_253_223_223[45] U8G_FONT_SECTION("fontpage_253_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x42,0x00,0x54,0x40,0xEF,
+ 0xE0,0x22,0xA0,0x42,0x80,0xF2,0x80,0x02,0xA0,0x34,0xA0,0xC8,0xE0};
+const u8g_fntpgm_uint8_t fontpage_253_231_231[45] U8G_FONT_SECTION("fontpage_253_231_231") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE7,0xE7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x80,0x26,0xA0,0x45,0xC0,0x54,0x80,0xE7,
+ 0xE0,0x24,0x80,0x45,0xC0,0xF6,0xA0,0x04,0x80,0x34,0x80,0xC7,0xE0};
+const u8g_fntpgm_uint8_t fontpage_253_234_234[45] U8G_FONT_SECTION("fontpage_253_234_234") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEA,0xEA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xA0,0x49,0x40,0x57,0xE0,0xE1,
+ 0x00,0x23,0xE0,0x46,0x20,0xF3,0xE0,0x0A,0x20,0x33,0xE0,0xC2,0x20};
+const u8g_fntpgm_uint8_t fontpage_253_237_237[45] U8G_FONT_SECTION("fontpage_253_237_237") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xED,0xED,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xC0,0x41,0x00,0x57,0xE0,0xE4,
+ 0xA0,0x2A,0x80,0x44,0x80,0xEF,0xE0,0x01,0x00,0x32,0xC0,0xCC,0x20};
+const u8g_fntpgm_uint8_t fontpage_253_255_255[45] U8G_FONT_SECTION("fontpage_253_255_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x20,0x40,0x43,0xC0,0xF0,0x40,0x2F,
+ 0xE0,0x41,0x20,0xF5,0x40,0x03,0x80,0x35,0x40,0xC9,0x20,0x03,0x00};
+const u8g_fntpgm_uint8_t fontpage_254_150_150[45] U8G_FONT_SECTION("fontpage_254_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x48,0x20,0x5F,0xE0,0xE8,
+ 0x00,0x2F,0xE0,0x4A,0xA0,0xFF,0xE0,0x0A,0xA0,0x3A,0xA0,0xC8,0x60};
+const u8g_fntpgm_uint8_t fontpage_254_186_186[45] U8G_FONT_SECTION("fontpage_254_186_186") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x41,0x00,0x7B,0xC0,0xA1,0x40,0x21,
+ 0x40,0xFF,0xE0,0x21,0x00,0xA9,0x00,0xAA,0x80,0xFA,0x40,0x04,0x20};
+const u8g_fntpgm_uint8_t fontpage_254_209_209[45] U8G_FONT_SECTION("fontpage_254_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x80,0x40,0x91,0x40,0xD5,0x40,0xA2,
+ 0x40,0x92,0x40,0xAD,0x40,0xC5,0x40,0x88,0x40,0x80,0x40,0x81,0xC0};
+const u8g_fntpgm_uint8_t fontpage_254_238_238[45] U8G_FONT_SECTION("fontpage_254_238_238") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEE,0xEE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x4A,0x40,0x7F,0xC0,0x04,0x00,0xFF,
+ 0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_254_242_242[45] U8G_FONT_SECTION("fontpage_254_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xE0,0x49,0x20,0x7F,0xE0,0x04,0x40,0x3F,
+ 0x80,0x05,0x00,0xFF,0xE0,0x30,0x80,0xDF,0x80,0x10,0x80,0x1F,0x80};
+const u8g_fntpgm_uint8_t fontpage_256_133_133[45] U8G_FONT_SECTION("fontpage_256_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x3F,0x40,0x04,0x80,0x05,0x00,0xFF,
+ 0xE0,0x08,0x00,0x3F,0x80,0xD0,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80};
+const u8g_fntpgm_uint8_t fontpage_256_234_234[45] U8G_FONT_SECTION("fontpage_256_234_234") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEA,0xEA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x40,0xFA,0x80,0x57,0xC0,0x54,0x40,0x74,
+ 0x40,0x57,0xC0,0x71,0x00,0x5A,0xA0,0xF6,0xA0,0x1A,0x40,0x11,0xC0};
+const u8g_fntpgm_uint8_t fontpage_257_253_253[45] U8G_FONT_SECTION("fontpage_257_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x49,0x40,0xFD,0x80,0x01,0x20,0x7D,
+ 0xE0,0x44,0x00,0x7D,0x40,0x45,0x80,0x7D,0x20,0x45,0x20,0x4D,0xE0};
+const u8g_fntpgm_uint8_t fontpage_259_234_234[34] U8G_FONT_SECTION("fontpage_259_234_234") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEA,0xEA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x07,0x0B,0x0B,0x0C,0x02,0xFF,0x20,0xFE,0x82,0x82,0xFE,0x82,0xFE,0x82,0x82,
+ 0xFE,0x82};
+const u8g_fntpgm_uint8_t fontpage_259_243_243[45] U8G_FONT_SECTION("fontpage_259_243_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF3,0xF3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x08,0x00,0x11,0x00,0x20,0x80,0x7F,
+ 0xC0,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_263_220_220[45] U8G_FONT_SECTION("fontpage_263_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x11,0x00,0x01,0xC0,0x7E,
+ 0x80,0x28,0x80,0x15,0x00,0xFF,0xE0,0x15,0x00,0x24,0x80,0xC4,0x60};
+const u8g_fntpgm_uint8_t fontpage_265_221_221[45] U8G_FONT_SECTION("fontpage_265_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x11,0x00,0x52,0x00,0x53,
+ 0xC0,0x55,0x00,0x10,0x80,0x7F,0xC0,0x4A,0x40,0x4A,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_269_199_199[45] U8G_FONT_SECTION("fontpage_269_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x20,0x80,0x27,0xE0,0xFC,0x20,0xAA,
+ 0x00,0xAA,0x40,0xFB,0x80,0x22,0x00,0x2A,0x20,0x3A,0x20,0xC9,0xE0};
+const u8g_fntpgm_uint8_t fontpage_272_204_204[45] U8G_FONT_SECTION("fontpage_272_204_204") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x40,0x00,0x80,0x00,0x10,0x00,0x2F,
+ 0xE0,0x60,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x23,0x80};
+const u8g_fntpgm_uint8_t fontpage_273_171_171[45] U8G_FONT_SECTION("fontpage_273_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x80,0x20,0x80,0xFF,0xE0,0x14,0xA0,0x2C,
+ 0x80,0x77,0xE0,0xAD,0x40,0x25,0x40,0x24,0x80,0x29,0x40,0x36,0x20};
+const u8g_fntpgm_uint8_t fontpage_273_197_197[45] U8G_FONT_SECTION("fontpage_273_197_197") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x9F,0xE0,0x51,0x00,0x31,0x00,0xD7,
+ 0xC0,0x12,0x00,0xFF,0xE0,0x0C,0x40,0x32,0x80,0xD1,0x00,0x18,0xE0};
+const u8g_fntpgm_uint8_t fontpage_275_129_129[45] U8G_FONT_SECTION("fontpage_275_129_129") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x81,0x81,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x0A,0x00,0x7F,0xC0,0x4A,0x40,0x7F,
+ 0xC0,0x08,0x00,0xFF,0xE0,0x11,0x00,0x3A,0x00,0x0F,0x00,0x70,0xC0};
+const u8g_fntpgm_uint8_t fontpage_275_210_210[45] U8G_FONT_SECTION("fontpage_275_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x1F,0x00,0x22,0x00,0x7F,0xC0,0xA4,
+ 0x40,0x3F,0xC0,0x24,0x40,0x3F,0xC0,0x24,0x40,0x45,0x40,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_279_161_161[45] U8G_FONT_SECTION("fontpage_279_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x21,0x00,0x01,0x00,0x0F,0xE0,0xE1,
+ 0x00,0x21,0x00,0x21,0x00,0x29,0x00,0x31,0x00,0x21,0x00,0x01,0x00};
+const u8g_fntpgm_uint8_t fontpage_279_174_174[45] U8G_FONT_SECTION("fontpage_279_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x21,0x40,0x05,0x40,0x04,0x40,0xE4,
+ 0x40,0x22,0x80,0x22,0x80,0x29,0x00,0x32,0x80,0x24,0x40,0x08,0x20};
+const u8g_fntpgm_uint8_t fontpage_279_190_190[45] U8G_FONT_SECTION("fontpage_279_190_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBE,0xBE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0x80,0x24,0x80,0x04,0x80,0x08,0xE0,0xE0,
+ 0x00,0x2F,0xC0,0x24,0x40,0x22,0x80,0x31,0x00,0x22,0x80,0x1C,0x60};
+const u8g_fntpgm_uint8_t fontpage_279_213_213[45] U8G_FONT_SECTION("fontpage_279_213_213") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x40,0x21,0x20,0x1F,0xE0,0x01,0x00,0xEF,
+ 0x00,0x25,0x00,0x25,0x00,0x24,0xA0,0x26,0xA0,0x38,0x60,0x20,0x20};
+const u8g_fntpgm_uint8_t fontpage_279_239_239[45] U8G_FONT_SECTION("fontpage_279_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0x24,0x40,0x04,0x40,0x07,0xC0,0xE0,
+ 0x00,0x27,0xC0,0x21,0x00,0x2F,0xE0,0x32,0x80,0x24,0x40,0x08,0x20};
+const u8g_fntpgm_uint8_t fontpage_279_247_247[45] U8G_FONT_SECTION("fontpage_279_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x2F,0xE0,0x21,0x00,0x07,0xC0,0xE1,
+ 0x00,0x2F,0xE0,0x24,0x40,0x27,0xC0,0x24,0x40,0x37,0xC0,0x24,0x40};
+const u8g_fntpgm_uint8_t fontpage_279_251_251[45] U8G_FONT_SECTION("fontpage_279_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x27,0xC0,0x01,0x00,0xEF,0xE0,0x22,
+ 0xA0,0x25,0x80,0x22,0x80,0x2F,0xE0,0x31,0x80,0x22,0x40,0x0C,0x20};
+const u8g_fntpgm_uint8_t fontpage_280_131_131[45] U8G_FONT_SECTION("fontpage_280_131_131") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x29,0x20,0x0B,0xA0,0xE9,0x20,0x2F,
+ 0xE0,0x28,0x20,0x2B,0xA0,0x2A,0xA0,0x3B,0xA0,0x28,0x20,0x10,0xE0};
+const u8g_fntpgm_uint8_t fontpage_282_165_165[45] U8G_FONT_SECTION("fontpage_282_165_165") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF9,0x00,0x89,0x00,0xA9,0xE0,0xA9,0x40,0xAB,
+ 0x40,0xAD,0x40,0xA9,0x40,0x21,0x40,0x50,0x80,0x49,0x40,0x8A,0x20};
+const u8g_fntpgm_uint8_t fontpage_282_170_170[45] U8G_FONT_SECTION("fontpage_282_170_170") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAA,0xAA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x35,0x80,0xDF,0x60,0x01,
+ 0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x2A,0x80,0x11,0x00,0x60,0xC0};
+const u8g_fntpgm_uint8_t fontpage_282_247_247[45] U8G_FONT_SECTION("fontpage_282_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x13,0xC0,0x7C,0x40,0x10,0x40,0xFF,
+ 0xC0,0x12,0x00,0x52,0x20,0x5E,0x20,0x53,0xE0,0xB0,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_283_133_133[45] U8G_FONT_SECTION("fontpage_283_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x17,0xC0,0x11,0x40,0x7D,0x40,0x12,0xC0,0xFC,
+ 0x00,0x13,0xC0,0x5E,0x40,0x52,0x40,0x73,0xC0,0x98,0x00,0x87,0xE0};
+const u8g_fntpgm_uint8_t fontpage_283_221_221[45] U8G_FONT_SECTION("fontpage_283_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7B,0xE0,0x4A,0x00,0x4A,0x00,0x7B,0xE0,0x12,
+ 0x20,0x52,0x20,0x5A,0x20,0x53,0xE0,0x52,0x00,0x5E,0x00,0xE3,0xE0};
+const u8g_fntpgm_uint8_t fontpage_286_236_236[45] U8G_FONT_SECTION("fontpage_286_236_236") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEC,0xEC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xF7,0xC0,0x41,0x00,0x6F,0xE0,0xA2,
+ 0x00,0xF7,0xC0,0x20,0x40,0x3A,0x80,0xE1,0x00,0x20,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_286_239_239[45] U8G_FONT_SECTION("fontpage_286_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x42,0x00,0xFB,0xE0,0x42,0x20,0xA5,
+ 0x40,0xF9,0x00,0x21,0x00,0x3A,0x80,0xE2,0x80,0x24,0x40,0x28,0x20};
+const u8g_fntpgm_uint8_t fontpage_286_244_244[45] U8G_FONT_SECTION("fontpage_286_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0xF8,0x80,0x47,0xE0,0x64,0xA0,0xA4,
+ 0xA0,0xFC,0xA0,0x27,0xE0,0x3C,0xA0,0xE4,0xA0,0x27,0xE0,0x24,0x20};
+const u8g_fntpgm_uint8_t fontpage_286_253_253[45] U8G_FONT_SECTION("fontpage_286_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x7D,0x40,0x11,0x20,0xFF,0xE0,0x21,
+ 0x00,0xFD,0x20,0x51,0x40,0x7C,0x80,0x10,0xA0,0xFD,0x60,0x12,0x20};
+const u8g_fntpgm_uint8_t fontpage_287_145_145[45] U8G_FONT_SECTION("fontpage_287_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xC0,0xFA,0x40,0x43,0xC0,0x60,0x00,0xA7,
+ 0xE0,0xFA,0x40,0x23,0x40,0x3A,0xC0,0xE2,0x60,0x2F,0xC0,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_287_147_147[45] U8G_FONT_SECTION("fontpage_287_147_147") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x93,0x93,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x42,0x80,0xF4,0x40,0x4B,0xA0,0xA0,
+ 0x00,0xFE,0x20,0x2A,0xA0,0x3E,0xA0,0xEA,0xA0,0x2E,0xA0,0x2A,0x60};
+const u8g_fntpgm_uint8_t fontpage_287_185_185[45] U8G_FONT_SECTION("fontpage_287_185_185") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB9,0xB9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x21,0x00,0x2F,0xE0,0x01,0x20,0xE1,
+ 0x20,0x21,0x20,0x22,0x20,0x24,0x20,0x28,0xC0,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_193_193[45] U8G_FONT_SECTION("fontpage_287_193_193") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC1,0xC1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0xC0,0x27,0x00,0x21,0x00,0x01,0x00,0xEF,
+ 0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_208_209[73] U8G_FONT_SECTION("fontpage_287_208_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0x20,0x00,0x20,0x00,0x0F,0xE0,0xE2,
+ 0x00,0x22,0x80,0x24,0x40,0x2F,0xA0,0x24,0x20,0x50,0x00,0x8F,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x40,0xC0,0x27,0x00,0x24,0x00,0x07,0xE0,0xE4,0x80,0x24,0x80,0x24,
+ 0x80,0x24,0x80,0x28,0x80,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_212_212[45] U8G_FONT_SECTION("fontpage_287_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x60,0x27,0x80,0x24,0x00,0x07,0xE0,0xE6,
+ 0x20,0x25,0x40,0x24,0x80,0x29,0x40,0x26,0x20,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_216_216[45] U8G_FONT_SECTION("fontpage_287_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x20,0x80,0x21,0x00,0x01,0x00,0xE3,
+ 0x40,0x25,0x20,0x29,0x20,0x21,0x00,0x21,0x00,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_219_219[45] U8G_FONT_SECTION("fontpage_287_219_219") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x80,0x24,0x80,0x2F,0xC0,0x04,0x80,0xE4,
+ 0x80,0x3F,0xE0,0x24,0x80,0x24,0x80,0x28,0x80,0x50,0x80,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_222_222[45] U8G_FONT_SECTION("fontpage_287_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x2F,0xE0,0x22,0x00,0x05,0x00,0xEF,
+ 0xC0,0x21,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_247_247[45] U8G_FONT_SECTION("fontpage_287_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x29,0x20,0x25,0x40,0x01,0x00,0xEF,
+ 0xE0,0x21,0x00,0x23,0x80,0x25,0x40,0x29,0x20,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_128_128[45] U8G_FONT_SECTION("fontpage_288_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x8F,0xC0,0x48,0x40,0x4F,0xC0,0x08,0x40,0xCF,
+ 0xC0,0x48,0x00,0x4B,0x40,0x48,0x80,0x4E,0x40,0xB0,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_137_137[45] U8G_FONT_SECTION("fontpage_288_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x45,0x00,0x25,0x00,0x27,0xC0,0x09,0x00,0xEF,
+ 0xE0,0x22,0x80,0x22,0xA0,0x24,0xA0,0x28,0x60,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_159_159[45] U8G_FONT_SECTION("fontpage_288_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x3F,0xE0,0x21,0x00,0x0F,0xE0,0xE9,
+ 0x20,0x2F,0xE0,0x23,0x80,0x25,0x40,0x29,0x20,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_289_232_232[45] U8G_FONT_SECTION("fontpage_289_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0xE0,0xFF,0x20,0x45,0x20,0x29,0x40,0xFF,
+ 0x80,0x01,0x40,0x7D,0x20,0x45,0x20,0x45,0xA0,0x7D,0x40,0x45,0x00};
+const u8g_fntpgm_uint8_t fontpage_290_205_205[45] U8G_FONT_SECTION("fontpage_290_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x50,0x20,0x50,0x20,0xF8,0x20,0xAB,
+ 0xE0,0xDA,0x00,0x8A,0x00,0xFA,0x00,0x8A,0x20,0xFA,0x20,0x8B,0xE0};
+const u8g_fntpgm_uint8_t fontpage_291_202_202[45] U8G_FONT_SECTION("fontpage_291_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x1F,0xC0,0xE2,0x80,0xA9,0x00,0x72,0x80,0xFD,
+ 0x60,0x31,0x00,0x6F,0xC0,0xA1,0x00,0xAF,0xE0,0x21,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_291_205_205[45] U8G_FONT_SECTION("fontpage_291_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x24,0x80,0x3F,
+ 0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_291_207_207[45] U8G_FONT_SECTION("fontpage_291_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,
+ 0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_297_136_136[45] U8G_FONT_SECTION("fontpage_297_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x80,0x40,0x80,0x78,0x80,0x80,0x80,0xFB,
+ 0xE0,0x20,0x80,0xF8,0x80,0x20,0x80,0x28,0x80,0x30,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_297_174_174[45] U8G_FONT_SECTION("fontpage_297_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x47,0xC0,0x79,0x40,0x81,0x40,0xF9,
+ 0x40,0x27,0xC0,0xFA,0x40,0x22,0x40,0x2A,0x40,0x32,0x40,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_298_153_153[45] U8G_FONT_SECTION("fontpage_298_153_153") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x80,0x4F,0xE0,0x72,0x80,0x82,0x80,0xEF,
+ 0xE0,0x40,0x00,0xF7,0xC0,0x44,0x40,0x47,0xC0,0x54,0x40,0x67,0xC0};
+const u8g_fntpgm_uint8_t fontpage_298_220_220[45] U8G_FONT_SECTION("fontpage_298_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x4F,0xE0,0x72,0x80,0x8F,0xE0,0xF4,
+ 0x40,0x27,0xC0,0xF4,0x40,0x27,0xC0,0x2A,0x80,0x32,0xA0,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_298_255_255[45] U8G_FONT_SECTION("fontpage_298_255_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x21,0x00,0x22,0x00,0x24,0x00,0x28,0x00,0x30,
+ 0x00,0xFF,0xC0,0x28,0x00,0x24,0x00,0x22,0x00,0x29,0x00,0x30,0xC0};
+const u8g_fntpgm_uint8_t fontpage_299_237_237[45] U8G_FONT_SECTION("fontpage_299_237_237") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xED,0xED,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xE0,0x20,0x20,0x82,0x20,0x82,0x20,0xBF,
+ 0xA0,0x86,0x20,0x8A,0x20,0x92,0x20,0xA2,0x20,0x86,0x20,0x80,0xE0};
+const u8g_fntpgm_uint8_t fontpage_299_242_242[45] U8G_FONT_SECTION("fontpage_299_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x20,0x20,0x84,0x20,0x84,0x20,0xBF,
+ 0xA0,0x84,0x20,0x8E,0x20,0x95,0x20,0xA4,0xA0,0x84,0x20,0x80,0xE0};
+const u8g_fntpgm_uint8_t fontpage_299_244_244[45] U8G_FONT_SECTION("fontpage_299_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x4F,0xC0,0x20,0x40,0x80,0x40,0x9E,0x40,0x92,
+ 0x40,0x9E,0x40,0x92,0x40,0x92,0x40,0x9E,0x40,0x80,0x40,0x81,0xC0};
+const u8g_fntpgm_uint8_t fontpage_300_136_136[45] U8G_FONT_SECTION("fontpage_300_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xE0,0x11,0x20,0x82,0xA0,0xBF,0xE0,0x82,
+ 0x20,0xBA,0xA0,0xAA,0xA0,0xB9,0x20,0x81,0x20,0xBA,0xA0,0x84,0x60};
+const u8g_fntpgm_uint8_t fontpage_300_205_205[45] U8G_FONT_SECTION("fontpage_300_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF2,0x00,0x93,0xE0,0xA6,0x40,0xC1,0x80,0xA6,
+ 0x60,0x91,0x00,0x97,0xE0,0xD5,0x00,0xAF,0xE0,0x81,0x00,0x81,0x00};
+const u8g_fntpgm_uint8_t fontpage_300_208_208[45] U8G_FONT_SECTION("fontpage_300_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF7,0xC0,0x94,0x40,0xA7,0xC0,0xC4,0x40,0xA7,
+ 0xC0,0x95,0x00,0x95,0x20,0xD5,0x40,0xA4,0x80,0x85,0x40,0x86,0x20};
+const u8g_fntpgm_uint8_t fontpage_300_228_228[45] U8G_FONT_SECTION("fontpage_300_228_228") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE4,0xE4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF1,0x00,0x92,0x80,0xA4,0x40,0xCB,0xA0,0xA1,
+ 0x00,0x9F,0xE0,0x91,0x00,0xE5,0x40,0x89,0x20,0x91,0x20,0x83,0x00};
+const u8g_fntpgm_uint8_t fontpage_300_233_233[45] U8G_FONT_SECTION("fontpage_300_233_233") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF1,0x00,0x92,0x80,0xA4,0x40,0xC8,0x20,0xA7,
+ 0xC0,0x90,0x00,0x9A,0x40,0xD5,0x40,0xA5,0x40,0x80,0x80,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_301_246_246[45] U8G_FONT_SECTION("fontpage_301_246_246") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF6,0xF6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x95,0x20,0x0E,
+ 0x00,0x31,0x80,0xC4,0x60,0x3F,0x80,0x01,0x00,0x0E,0x00,0x03,0x00};
+const u8g_fntpgm_uint8_t fontpage_302_128_128[45] U8G_FONT_SECTION("fontpage_302_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0xB5,0xA0,0x04,
+ 0x00,0xFF,0xE0,0x08,0x00,0x7F,0xC0,0x4A,0x40,0x4A,0x40,0x4A,0xC0};
+const u8g_fntpgm_uint8_t fontpage_302_210_210[45] U8G_FONT_SECTION("fontpage_302_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,
+ 0x00,0xFF,0xE0,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80};
+const u8g_fntpgm_uint8_t fontpage_302_222_222[45] U8G_FONT_SECTION("fontpage_302_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0A,0x00,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0x0A,
+ 0x00,0x7B,0xC0,0x0A,0x00,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0x0A,0x00};
+const u8g_fntpgm_uint8_t fontpage_302_224_224[45] U8G_FONT_SECTION("fontpage_302_224_224") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x3F,0xC0,0x44,0x00,0xFF,0xE0,0x20,
+ 0x80,0x3F,0x80,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0xFB,0xE0,0x0A,0x00};
+const u8g_fntpgm_uint8_t fontpage_302_226_226[45] U8G_FONT_SECTION("fontpage_302_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x08,0x00,0x10,0x00,0xFF,0xC0,0x92,
+ 0x40,0x9E,0x40,0x92,0x40,0x9E,0x40,0x92,0x40,0xFF,0xC0,0x80,0x40};
+const u8g_fntpgm_uint8_t fontpage_304_245_245[45] U8G_FONT_SECTION("fontpage_304_245_245") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF5,0xF5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,0x80,0x24,
+ 0x80,0x24,0x80,0x24,0x80,0x26,0x80,0x09,0x00,0x10,0xC0,0x60,0x40};
+const u8g_fntpgm_uint8_t fontpage_304_249_249[45] U8G_FONT_SECTION("fontpage_304_249_249") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x07,0xE0,0xF9,0x00,0x27,0xE0,0x24,0x20,0x25,
+ 0x20,0x25,0x20,0x25,0x20,0x3D,0x20,0xC1,0x80,0x02,0x40,0x0C,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_132_132[45] U8G_FONT_SECTION("fontpage_305_132_132") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x10,0x80,0x63,0xE0,0x22,0x20,0xFA,
+ 0xA0,0x2A,0xA0,0x22,0xA0,0x22,0xA0,0x22,0xA0,0x21,0x40,0x66,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_145_145[45] U8G_FONT_SECTION("fontpage_305_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x13,0xE0,0x50,0x80,0x5F,0xE0,0x52,0x20,0xFE,
+ 0xA0,0x12,0xA0,0x56,0xA0,0x5A,0xA0,0x92,0xA0,0x21,0x40,0xC6,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_157_157[45] U8G_FONT_SECTION("fontpage_305_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xE0,0xFC,0x80,0x87,0xE0,0x7A,0x20,0xCA,
+ 0xA0,0x32,0xA0,0x4A,0xA0,0xFE,0xA0,0x4A,0xA0,0x79,0x40,0x4E,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_206_206[45] U8G_FONT_SECTION("fontpage_305_206_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCE,0xCE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0x80,0x40,0x80,0x42,0x80,0x52,0x80,0x4C,
+ 0x80,0x44,0x80,0x4C,0x80,0x52,0x80,0x62,0xA0,0x80,0x60,0x80,0x20};
+const u8g_fntpgm_uint8_t fontpage_306_241_241[45] U8G_FONT_SECTION("fontpage_306_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x00,0x47,0xC0,0x7C,0x40,0x97,0x40,0xAD,
+ 0x40,0x25,0x40,0x27,0x40,0x24,0xC0,0x2C,0x20,0x34,0x20,0x23,0xE0};
+const u8g_fntpgm_uint8_t fontpage_308_236_236[45] U8G_FONT_SECTION("fontpage_308_236_236") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEC,0xEC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0x80,0x00,0x80,0x10,0x80,0x11,0x00,0x21,
+ 0x00,0x3F,0xE0,0x00,0x20,0x00,0x20,0xFF,0x20,0x00,0x20,0x00,0xC0};
+const u8g_fntpgm_uint8_t fontpage_308_241_241[45] U8G_FONT_SECTION("fontpage_308_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF3,0xE0,0x12,0x00,0x52,0x20,0x53,0x20,0x52,
+ 0xA0,0x7A,0x40,0x0A,0x40,0xEA,0xA0,0x0B,0x20,0x0A,0x00,0x33,0xE0};
+const u8g_fntpgm_uint8_t fontpage_309_216_216[45] U8G_FONT_SECTION("fontpage_309_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x00,0x00,0x1F,0x00,0x11,
+ 0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x40,0xC0};
+const u8g_fntpgm_uint8_t fontpage_317_196_196[45] U8G_FONT_SECTION("fontpage_317_196_196") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x04,
+ 0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x60,0xC0};
+const u8g_fntpgm_uint8_t fontpage_317_222_222[45] U8G_FONT_SECTION("fontpage_317_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF8,0x80,0xA8,0x80,0xF8,0xE0,0xA8,0x80,0xF8,
+ 0x80,0x23,0xE0,0xFA,0x20,0x22,0x20,0xFA,0x20,0x52,0x20,0xAB,0xE0};
+const u8g_fntpgm_uint8_t fontpage_318_208_208[45] U8G_FONT_SECTION("fontpage_318_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x10,0x80,0x09,0x00,0x06,
+ 0x00,0x19,0x80,0xE0,0x60,0x09,0x00,0x09,0x00,0x11,0x00,0x61,0x00};
+const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x08,0x00,0x00,
+ 0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(64, 157, 157, fontpage_64_157_157), // '”' -- '”'
+ FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
+ FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
+ FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
+ FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
+ FONTDATA_ITEM(156, 147, 147, fontpage_156_147_147), // '专' -- '专'
+ FONTDATA_ITEM(156, 157, 157, fontpage_156_157_157), // '丝' -- '丝'
+ FONTDATA_ITEM(156, 170, 170, fontpage_156_170_170), // '个' -- '个'
+ FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
+ FONTDATA_ITEM(156, 186, 187, fontpage_156_186_187), // '为' -- '主'
+ FONTDATA_ITEM(156, 201, 201, fontpage_156_201_201), // '义' -- '义'
+ FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
+ FONTDATA_ITEM(157, 134, 134, fontpage_157_134_134), // '了' -- '了'
+ FONTDATA_ITEM(157, 140, 140, fontpage_157_140_140), // '二' -- '二'
+ FONTDATA_ITEM(157, 142, 142, fontpage_157_142_142), // '于' -- '于'
+ FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
+ FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
+ FONTDATA_ITEM(157, 206, 206, fontpage_157_206_206), // '从' -- '从'
+ FONTDATA_ITEM(157, 228, 229, fontpage_157_228_229), // '令' -- '以'
+ FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
+ FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
+ FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
+ FONTDATA_ITEM(158, 160, 160, fontpage_158_160_160), // '传' -- '传'
+ FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
+ FONTDATA_ITEM(158, 211, 211, fontpage_158_211_211), // '体' -- '体'
+ FONTDATA_ITEM(158, 217, 217, fontpage_158_217_217), // '余' -- '余'
+ FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
+ FONTDATA_ITEM(158, 255, 255, fontpage_158_255_255), // '使' -- '使'
+ FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
+ FONTDATA_ITEM(159, 181, 181, fontpage_159_181_181), // '侵' -- '侵'
+ FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
+ FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
+ FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
+ FONTDATA_ITEM(160, 190, 190, fontpage_160_190_190), // '倾' -- '倾'
+ FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
+ FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
+ FONTDATA_ITEM(161, 168, 168, fontpage_161_168_168), // '储' -- '储'
+ FONTDATA_ITEM(161, 207, 207, fontpage_161_207_207), // '像' -- '像'
+ FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
+ FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
+ FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
+ FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
+ FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
+ FONTDATA_ITEM(162, 243, 243, fontpage_162_243_243), // '关' -- '关'
+ FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
+ FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
+ FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
+ FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
+ FONTDATA_ITEM(163, 250, 251, fontpage_163_250_251), // '出' -- '击'
+ FONTDATA_ITEM(164, 134, 135, fontpage_164_134_135), // '分' -- '切'
+ FONTDATA_ITEM(164, 155, 155, fontpage_164_155_155), // '创' -- '创'
+ FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
+ FONTDATA_ITEM(164, 171, 171, fontpage_164_171_171), // '别' -- '别'
+ FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
+ FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
+ FONTDATA_ITEM(164, 242, 242, fontpage_164_242_242), // '割' -- '割'
+ FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
+ FONTDATA_ITEM(165, 159, 160, fontpage_165_159_160), // '功' -- '加'
+ FONTDATA_ITEM(165, 168, 168, fontpage_165_168_168), // '动' -- '动'
+ FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
+ FONTDATA_ITEM(166, 199, 199, fontpage_166_199_199), // '升' -- '升'
+ FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
+ FONTDATA_ITEM(166, 207, 207, fontpage_166_207_207), // '协' -- '协'
+ FONTDATA_ITEM(166, 213, 213, fontpage_166_213_213), // '单' -- '单'
+ FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
+ FONTDATA_ITEM(166, 240, 241, fontpage_166_240_241), // '印' -- '危'
+ FONTDATA_ITEM(166, 244, 244, fontpage_166_244_244), // '却' -- '却'
+ FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
+ FONTDATA_ITEM(167, 139, 139, fontpage_167_139_139), // '压' -- '压'
+ FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
+ FONTDATA_ITEM(167, 204, 205, fontpage_167_204_205), // '双' -- '反'
+ FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
+ FONTDATA_ITEM(167, 216, 216, fontpage_167_216_216), // '变' -- '变'
+ FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
+ FONTDATA_ITEM(168, 131, 131, fontpage_168_131_131), // '吃' -- '吃'
+ FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
+ FONTDATA_ITEM(168, 141, 142, fontpage_168_141_142), // '名' -- '后'
+ FONTDATA_ITEM(168, 145, 145, fontpage_168_145_145), // '向' -- '向'
+ FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
+ FONTDATA_ITEM(168, 175, 175, fontpage_168_175_175), // '启' -- '启'
+ FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
+ FONTDATA_ITEM(168, 232, 232, fontpage_168_232_232), // '周' -- '周'
+ FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
+ FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
+ FONTDATA_ITEM(169, 205, 205, fontpage_169_205_205), // '响' -- '响'
+ FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // '喷' -- '喷'
+ FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
+ FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
+ FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
+ FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
+ FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
+ FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
+ FONTDATA_ITEM(173, 254, 254, fontpage_173_254_254), // '图' -- '图'
+ FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
+ FONTDATA_ITEM(174, 207, 207, fontpage_174_207_207), // '坏' -- '坏'
+ FONTDATA_ITEM(174, 215, 215, fontpage_174_215_215), // '块' -- '块'
+ FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
+ FONTDATA_ITEM(175, 171, 171, fontpage_175_171_171), // '垫' -- '垫'
+ FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
+ FONTDATA_ITEM(177, 243, 243, fontpage_177_243_243), // '壳' -- '壳'
+ FONTDATA_ITEM(178, 135, 135, fontpage_178_135_135), // '备' -- '备'
+ FONTDATA_ITEM(178, 141, 141, fontpage_178_141_141), // '复' -- '复'
+ FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
+ FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
+ FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
+ FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
+ FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
+ FONTDATA_ITEM(178, 180, 180, fontpage_178_180_180), // '头' -- '头'
+ FONTDATA_ITEM(178, 253, 253, fontpage_178_253_253), // '好' -- '好'
+ FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
+ FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
+ FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
+ FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
+ FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
+ FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
+ FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
+ FONTDATA_ITEM(183, 171, 171, fontpage_183_171_171), // '宫' -- '宫'
+ FONTDATA_ITEM(183, 249, 249, fontpage_183_249_249), // '对' -- '对'
+ FONTDATA_ITEM(184, 134, 134, fontpage_184_134_134), // '将' -- '将'
+ FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
+ FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
+ FONTDATA_ITEM(184, 207, 207, fontpage_184_207_207), // '屏' -- '屏'
+ FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
+ FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
+ FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
+ FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
+ FONTDATA_ITEM(188, 246, 246, fontpage_188_246_246), // '并' -- '并'
+ FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
+ FONTDATA_ITEM(189, 148, 148, fontpage_189_148_148), // '应' -- '应'
+ FONTDATA_ITEM(189, 159, 159, fontpage_189_159_159), // '废' -- '废'
+ FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
+ FONTDATA_ITEM(190, 128, 128, fontpage_190_128_128), // '开' -- '开'
+ FONTDATA_ITEM(190, 131, 131, fontpage_190_131_131), // '弃' -- '弃'
+ FONTDATA_ITEM(190, 143, 143, fontpage_190_143_143), // '式' -- '式'
+ FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
+ FONTDATA_ITEM(190, 185, 185, fontpage_190_185_185), // '弹' -- '弹'
+ FONTDATA_ITEM(190, 210, 210, fontpage_190_210_210), // '归' -- '归'
+ FONTDATA_ITEM(191, 132, 133, fontpage_191_132_133), // '径' -- '待'
+ FONTDATA_ITEM(191, 170, 170, fontpage_191_170_170), // '循' -- '循'
+ FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
+ FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
+ FONTDATA_ITEM(191, 253, 253, fontpage_191_253_253), // '忽' -- '忽'
+ FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
+ FONTDATA_ITEM(192, 187, 187, fontpage_192_187_187), // '总' -- '总'
+ FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
+ FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
+ FONTDATA_ITEM(194, 159, 159, fontpage_194_159_159), // '感' -- '感'
+ FONTDATA_ITEM(196, 143, 144, fontpage_196_143_144), // '戏' -- '成'
+ FONTDATA_ITEM(196, 183, 183, fontpage_196_183_183), // '户' -- '户'
+ FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
+ FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
+ FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
+ FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
+ FONTDATA_ITEM(196, 231, 231, fontpage_196_231_231), // '执' -- '执'
+ FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
+ FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
+ FONTDATA_ITEM(197, 165, 165, fontpage_197_165_165), // '报' -- '报'
+ FONTDATA_ITEM(197, 172, 172, fontpage_197_172_172), // '抬' -- '抬'
+ FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
+ FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
+ FONTDATA_ITEM(197, 233, 233, fontpage_197_233_233), // '择' -- '择'
+ FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
+ FONTDATA_ITEM(198, 161, 161, fontpage_198_161_161), // '挡' -- '挡'
+ FONTDATA_ITEM(198, 164, 164, fontpage_198_164_164), // '挤' -- '挤'
+ FONTDATA_ITEM(198, 223, 223, fontpage_198_223_223), // '损' -- '损'
+ FONTDATA_ITEM(198, 226, 226, fontpage_198_226_226), // '换' -- '换'
+ FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
+ FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
+ FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
+ FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
+ FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
+ FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
+ FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
+ FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
+ FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // '数' -- '数'
+ FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // '敲' -- '敲'
+ FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
+ FONTDATA_ITEM(203, 135, 135, fontpage_203_135_135), // '文' -- '文'
+ FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
+ FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
+ FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // '断' -- '断'
+ FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
+ FONTDATA_ITEM(203, 185, 185, fontpage_203_185_185), // '方' -- '方'
+ FONTDATA_ITEM(203, 224, 224, fontpage_203_224_224), // '无' -- '无'
+ FONTDATA_ITEM(203, 246, 246, fontpage_203_246_246), // '时' -- '时'
+ FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
+ FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
+ FONTDATA_ITEM(205, 130, 130, fontpage_205_130_130), // '暂' -- '暂'
+ FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
+ FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
+ FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
+ FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
+ FONTDATA_ITEM(206, 159, 159, fontpage_206_159_159), // '期' -- '期'
+ FONTDATA_ITEM(206, 186, 186, fontpage_206_186_186), // '机' -- '机'
+ FONTDATA_ITEM(206, 192, 192, fontpage_206_192_192), // '杀' -- '杀'
+ FONTDATA_ITEM(206, 223, 223, fontpage_206_223_223), // '束' -- '束'
+ FONTDATA_ITEM(206, 225, 225, fontpage_206_225_225), // '条' -- '条'
+ FONTDATA_ITEM(206, 229, 229, fontpage_206_229_229), // '来' -- '来'
+ FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
+ FONTDATA_ITEM(207, 151, 151, fontpage_207_151_151), // '林' -- '林'
+ FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
+ FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
+ FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
+ FONTDATA_ITEM(209, 175, 175, fontpage_209_175_175), // '梯' -- '梯'
+ FONTDATA_ITEM(209, 192, 192, fontpage_209_192_192), // '检' -- '检'
+ FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
+ FONTDATA_ITEM(212, 161, 161, fontpage_212_161_161), // '模' -- '模'
+ FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
+ FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
+ FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
+ FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
+ FONTDATA_ITEM(217, 161, 161, fontpage_217_161_161), // '没' -- '没'
+ FONTDATA_ITEM(217, 226, 226, fontpage_217_226_226), // '波' -- '波'
+ FONTDATA_ITEM(217, 232, 232, fontpage_217_232_232), // '注' -- '注'
+ FONTDATA_ITEM(218, 151, 151, fontpage_218_151_151), // '洗' -- '洗'
+ FONTDATA_ITEM(218, 187, 187, fontpage_218_187_187), // '活' -- '活'
+ FONTDATA_ITEM(218, 193, 193, fontpage_218_193_193), // '流' -- '流'
+ FONTDATA_ITEM(218, 203, 203, fontpage_218_203_203), // '测' -- '测'
+ FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
+ FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
+ FONTDATA_ITEM(219, 247, 247, fontpage_219_247_247), // '混' -- '混'
+ FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
+ FONTDATA_ITEM(220, 169, 169, fontpage_220_169_169), // '温' -- '温'
+ FONTDATA_ITEM(220, 184, 184, fontpage_220_184_184), // '游' -- '游'
+ FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
+ FONTDATA_ITEM(221, 162, 162, fontpage_221_162_162), // '溢' -- '溢'
+ FONTDATA_ITEM(221, 209, 209, fontpage_221_209_209), // '滑' -- '滑'
+ FONTDATA_ITEM(222, 143, 143, fontpage_222_143_143), // '漏' -- '漏'
+ FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
+ FONTDATA_ITEM(224, 239, 239, fontpage_224_239_239), // '灯' -- '灯'
+ FONTDATA_ITEM(225, 185, 185, fontpage_225_185_185), // '点' -- '点'
+ FONTDATA_ITEM(225, 237, 237, fontpage_225_237_237), // '热' -- '热'
+ FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
+ FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
+ FONTDATA_ITEM(228, 249, 249, fontpage_228_249_249), // '特' -- '特'
+ FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
+ FONTDATA_ITEM(231, 175, 175, fontpage_231_175_175), // '环' -- '环'
+ FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
+ FONTDATA_ITEM(234, 181, 181, fontpage_234_181_181), // '电' -- '电'
+ FONTDATA_ITEM(234, 229, 229, fontpage_234_229_229), // '略' -- '略'
+ FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
+ FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
+ FONTDATA_ITEM(237, 209, 209, fontpage_237_209_209), // '监' -- '监'
+ FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
+ FONTDATA_ITEM(238, 129, 129, fontpage_238_129_129), // '省' -- '省'
+ FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
+ FONTDATA_ITEM(240, 238, 238, fontpage_240_238_238), // '确' -- '确'
+ FONTDATA_ITEM(243, 187, 187, fontpage_243_187_187), // '离' -- '离'
+ FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
+ FONTDATA_ITEM(244, 250, 250, fontpage_244_250_250), // '空' -- '空'
+ FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
+ FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // '第' -- '第'
+ FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
+ FONTDATA_ITEM(247, 128, 128, fontpage_247_128_128), // '简' -- '简'
+ FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
+ FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // '类' -- '类'
+ FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
+ FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
+ FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
+ FONTDATA_ITEM(253, 167, 167, fontpage_253_167_167), // '级' -- '级'
+ FONTDATA_ITEM(253, 191, 191, fontpage_253_191_191), // '线' -- '线'
+ FONTDATA_ITEM(253, 198, 198, fontpage_253_198_198), // '细' -- '细'
+ FONTDATA_ITEM(253, 200, 200, fontpage_253_200_200), // '终' -- '终'
+ FONTDATA_ITEM(253, 211, 211, fontpage_253_211_211), // '结' -- '结'
+ FONTDATA_ITEM(253, 217, 217, fontpage_253_217_217), // '给' -- '给'
+ FONTDATA_ITEM(253, 223, 223, fontpage_253_223_223), // '统' -- '统'
+ FONTDATA_ITEM(253, 231, 231, fontpage_253_231_231), // '继' -- '继'
+ FONTDATA_ITEM(253, 234, 234, fontpage_253_234_234), // '绪' -- '绪'
+ FONTDATA_ITEM(253, 237, 237, fontpage_253_237_237), // '续' -- '续'
+ FONTDATA_ITEM(253, 255, 255, fontpage_253_255_255), // '绿' -- '绿'
+ FONTDATA_ITEM(254, 150, 150, fontpage_254_150_150), // '编' -- '编'
+ FONTDATA_ITEM(254, 186, 186, fontpage_254_186_186), // '缺' -- '缺'
+ FONTDATA_ITEM(254, 209, 209, fontpage_254_209_209), // '网' -- '网'
+ FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
+ FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
+ FONTDATA_ITEM(256, 133, 133, fontpage_256_133_133), // '者' -- '者'
+ FONTDATA_ITEM(256, 234, 234, fontpage_256_234_234), // '聪' -- '聪'
+ FONTDATA_ITEM(257, 253, 253, fontpage_257_253_253), // '能' -- '能'
+ FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
+ FONTDATA_ITEM(259, 243, 243, fontpage_259_243_243), // '至' -- '至'
+ FONTDATA_ITEM(263, 220, 220, fontpage_263_220_220), // '菜' -- '菜'
+ FONTDATA_ITEM(265, 221, 221, fontpage_265_221_221), // '蓝' -- '蓝'
+ FONTDATA_ITEM(269, 199, 199, fontpage_269_199_199), // '蛇' -- '蛇'
+ FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
+ FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
+ FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
+ FONTDATA_ITEM(275, 129, 129, fontpage_275_129_129), // '要' -- '要'
+ FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
+ FONTDATA_ITEM(279, 161, 161, fontpage_279_161_161), // '计' -- '计'
+ FONTDATA_ITEM(279, 174, 174, fontpage_279_174_174), // '议' -- '议'
+ FONTDATA_ITEM(279, 190, 190, fontpage_279_190_190), // '设' -- '设'
+ FONTDATA_ITEM(279, 213, 213, fontpage_279_213_213), // '试' -- '试'
+ FONTDATA_ITEM(279, 239, 239, fontpage_279_239_239), // '误' -- '误'
+ FONTDATA_ITEM(279, 247, 247, fontpage_279_247_247), // '请' -- '请'
+ FONTDATA_ITEM(279, 251, 251, fontpage_279_251_251), // '读' -- '读'
+ FONTDATA_ITEM(280, 131, 131, fontpage_280_131_131), // '调' -- '调'
+ FONTDATA_ITEM(282, 165, 165, fontpage_282_165_165), // '败' -- '败'
+ FONTDATA_ITEM(282, 170, 170, fontpage_282_170_170), // '贪' -- '贪'
+ FONTDATA_ITEM(282, 247, 247, fontpage_282_247_247), // '起' -- '起'
+ FONTDATA_ITEM(283, 133, 133, fontpage_283_133_133), // '超' -- '超'
+ FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
+ FONTDATA_ITEM(286, 236, 236, fontpage_286_236_236), // '转' -- '转'
+ FONTDATA_ITEM(286, 239, 239, fontpage_286_239_239), // '软' -- '软'
+ FONTDATA_ITEM(286, 244, 244, fontpage_286_244_244), // '轴' -- '轴'
+ FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // '载' -- '载'
+ FONTDATA_ITEM(287, 145, 145, fontpage_287_145_145), // '辑' -- '辑'
+ FONTDATA_ITEM(287, 147, 147, fontpage_287_147_147), // '输' -- '输'
+ FONTDATA_ITEM(287, 185, 185, fontpage_287_185_185), // '边' -- '边'
+ FONTDATA_ITEM(287, 193, 193, fontpage_287_193_193), // '迁' -- '迁'
+ FONTDATA_ITEM(287, 208, 209, fontpage_287_208_209), // '运' -- '近'
+ FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
+ FONTDATA_ITEM(287, 216, 216, fontpage_287_216_216), // '还' -- '还'
+ FONTDATA_ITEM(287, 219, 219, fontpage_287_219_219), // '进' -- '进'
+ FONTDATA_ITEM(287, 222, 222, fontpage_287_222_222), // '连' -- '连'
+ FONTDATA_ITEM(287, 247, 247, fontpage_287_247_247), // '迷' -- '迷'
+ FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
+ FONTDATA_ITEM(288, 137, 137, fontpage_288_137_137), // '选' -- '选'
+ FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
+ FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
+ FONTDATA_ITEM(290, 205, 205, fontpage_290_205_205), // '配' -- '配'
+ FONTDATA_ITEM(291, 202, 202, fontpage_291_202_202), // '释' -- '释'
+ FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
+ FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
+ FONTDATA_ITEM(297, 136, 136, fontpage_297_136_136), // '针' -- '针'
+ FONTDATA_ITEM(297, 174, 174, fontpage_297_174_174), // '钮' -- '钮'
+ FONTDATA_ITEM(298, 153, 153, fontpage_298_153_153), // '错' -- '错'
+ FONTDATA_ITEM(298, 220, 220, fontpage_298_220_220), // '镜' -- '镜'
+ FONTDATA_ITEM(298, 255, 255, fontpage_298_255_255), // '长' -- '长'
+ FONTDATA_ITEM(299, 237, 237, fontpage_299_237_237), // '闭' -- '闭'
+ FONTDATA_ITEM(299, 242, 242, fontpage_299_242_242), // '闲' -- '闲'
+ FONTDATA_ITEM(299, 244, 244, fontpage_299_244_244), // '间' -- '间'
+ FONTDATA_ITEM(300, 136, 136, fontpage_300_136_136), // '阈' -- '阈'
+ FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
+ FONTDATA_ITEM(300, 208, 208, fontpage_300_208_208), // '限' -- '限'
+ FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
+ FONTDATA_ITEM(300, 233, 233, fontpage_300_233_233), // '险' -- '险'
+ FONTDATA_ITEM(301, 246, 246, fontpage_301_246_246), // '零' -- '零'
+ FONTDATA_ITEM(302, 128, 128, fontpage_302_128_128), // '需' -- '需'
+ FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
+ FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
+ FONTDATA_ITEM(302, 224, 224, fontpage_302_224_224), // '靠' -- '靠'
+ FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
+ FONTDATA_ITEM(304, 245, 245, fontpage_304_245_245), // '页' -- '页'
+ FONTDATA_ITEM(304, 249, 249, fontpage_304_249_249), // '项' -- '项'
+ FONTDATA_ITEM(305, 132, 132, fontpage_305_132_132), // '预' -- '预'
+ FONTDATA_ITEM(305, 145, 145, fontpage_305_145_145), // '频' -- '频'
+ FONTDATA_ITEM(305, 157, 157, fontpage_305_157_157), // '额' -- '额'
+ FONTDATA_ITEM(305, 206, 206, fontpage_305_206_206), // '风' -- '风'
+ FONTDATA_ITEM(306, 241, 241, fontpage_306_241_241), // '饱' -- '饱'
+ FONTDATA_ITEM(308, 236, 236, fontpage_308_236_236), // '马' -- '马'
+ FONTDATA_ITEM(308, 241, 241, fontpage_308_241_241), // '驱' -- '驱'
+ FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
+ FONTDATA_ITEM(317, 196, 196, fontpage_317_196_196), // '黄' -- '黄'
+ FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
+ FONTDATA_ITEM(318, 208, 208, fontpage_318_208_208), // '齐' -- '齐'
+ FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
+};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
new file mode 100644
index 0000000..8eee544
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
@@ -0,0 +1,1521 @@
+/**
+ * Generated automatically by buildroot/share/fonts/uxggenpages.sh
+ * Contents will be REPLACED by future processing!
+ * Use genallfont.sh to generate font data for updated languages.
+ */
+#include
+
+const u8g_fntpgm_uint8_t fontpage_69_191_191[28] U8G_FONT_SECTION("fontpage_69_191_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x05,0x00,0x00,
+ 0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x08,0x18,0x28,0x48,0xF8};
+const u8g_fntpgm_uint8_t fontpage_156_128_128[27] U8G_FONT_SECTION("fontpage_156_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x06,0x00,0x00,
+ 0x00,0x0B,0x02,0x04,0x0C,0x00,0x04,0x00,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_137_139[97] U8G_FONT_SECTION("fontpage_156_137_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+ 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x0B,0x0B,0x16,0x0C,0x00,
+ 0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x04,0x00,0x04,
+ 0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0xFF,0xE0,0x04,
+ 0x00,0x04,0x00,0x06,0x00,0x05,0x00,0x04,0x80,0x04,0x80,0x04,0x00,0x04,0x00,0x04,
+ 0x00};
+const u8g_fntpgm_uint8_t fontpage_156_141_141[45] U8G_FONT_SECTION("fontpage_156_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x02,0x00,0x02,0x00,0x04,0x00,0x0D,
+ 0x00,0x14,0x80,0x24,0x40,0x44,0x20,0x84,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_166_166[45] U8G_FONT_SECTION("fontpage_156_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x4A,
+ 0x40,0x4A,0x40,0x2A,0x40,0x2A,0x80,0x0A,0x00,0x0A,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_173_173[45] U8G_FONT_SECTION("fontpage_156_173_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0xFF,0x80,0x88,0x80,0x88,
+ 0x80,0x88,0x80,0xFF,0x80,0x88,0x80,0x08,0x00,0x08,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_156_187_187[45] U8G_FONT_SECTION("fontpage_156_187_187") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBB,0xBB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,
+ 0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_156_203_203[45] U8G_FONT_SECTION("fontpage_156_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x04,0x00,0x7F,0xC0,0x00,0x80,0x01,
+ 0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x48,0x00,0x87,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_164_164[45] U8G_FONT_SECTION("fontpage_157_164_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x20,
+ 0x80,0x51,0x40,0x11,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0x60,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_174_174[45] U8G_FONT_SECTION("fontpage_157_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x11,0x00,0x1F,0x00,0x00,
+ 0x00,0xFF,0xE0,0x80,0x20,0x1F,0x00,0x11,0x00,0x21,0x20,0xC0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_157_228_228[45] U8G_FONT_SECTION("fontpage_157_228_228") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE4,0xE4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x24,
+ 0x80,0xC2,0x60,0x3F,0x80,0x01,0x00,0x0A,0x00,0x04,0x00,0x02,0x00};
+const u8g_fntpgm_uint8_t fontpage_157_246_246[45] U8G_FONT_SECTION("fontpage_157_246_246") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF6,0xF6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x15,0x00,0x25,0x00,0x2F,0xC0,0x71,
+ 0x00,0xA1,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_157_253_253[45] U8G_FONT_SECTION("fontpage_157_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x80,0x12,0x80,0x22,0x40,0x24,0x40,0x68,
+ 0x20,0xA7,0xC0,0x22,0x40,0x22,0x40,0x22,0x40,0x24,0x40,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_158_145_145[45] U8G_FONT_SECTION("fontpage_158_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x21,0x00,0x3F,0xE0,0x61,
+ 0x00,0xA3,0x80,0x23,0x80,0x25,0x40,0x29,0x20,0x31,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_158_205_206[73] U8G_FONT_SECTION("fontpage_158_205_206") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x11,0x00,0x20,0x00,0x2F,0xE0,0x60,
+ 0x00,0xA4,0x40,0x22,0x40,0x22,0x80,0x20,0x80,0x21,0x00,0x2F,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x10,0xC0,0x1F,0x00,0x29,0x00,0x29,0x00,0x69,0x00,0xAF,0xE0,0x29,
+ 0x00,0x29,0x20,0x2A,0xA0,0x2D,0x60,0x28,0xA0};
+const u8g_fntpgm_uint8_t fontpage_158_220_220[45] U8G_FONT_SECTION("fontpage_158_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x14,0x00,0x14,0x00,0x27,0xE0,0x2A,0x00,0x72,
+ 0x00,0xA3,0xC0,0x22,0x00,0x22,0x00,0x23,0xE0,0x22,0x00,0x22,0x00};
+const u8g_fntpgm_uint8_t fontpage_159_155_155[45] U8G_FONT_SECTION("fontpage_159_155_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9B,0x9B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x14,0x80,0x14,0x80,0x24,0x80,0x2F,0xE0,0x64,
+ 0x80,0xA4,0x80,0x3F,0xE0,0x20,0x00,0x24,0x80,0x28,0x40,0x30,0x20};
+const u8g_fntpgm_uint8_t fontpage_159_221_221[45] U8G_FONT_SECTION("fontpage_159_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x17,0xC0,0x14,0x40,0x24,0x40,0x27,0xC0,0x61,
+ 0x00,0xAF,0xE0,0x21,0x00,0x23,0x80,0x25,0x40,0x29,0x20,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_159_225_225[45] U8G_FONT_SECTION("fontpage_159_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x11,0x00,0x2F,0xE0,0x20,0x00,0x67,
+ 0xC0,0xA0,0x00,0x27,0xC0,0x20,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0};
+const u8g_fntpgm_uint8_t fontpage_160_139_139[45] U8G_FONT_SECTION("fontpage_160_139_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8B,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xE0,0x29,0x20,0x29,0x20,0x2F,0xE0,0x69,
+ 0x20,0xAB,0xA0,0x2A,0xA0,0x2B,0xA0,0x28,0x20,0x2F,0xE0,0x28,0x20};
+const u8g_fntpgm_uint8_t fontpage_160_188_188[45] U8G_FONT_SECTION("fontpage_160_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x1F,0xE0,0x22,0x00,0x27,0xC0,0x64,
+ 0x40,0xA7,0xC0,0x24,0x40,0x27,0x40,0x25,0xC0,0x24,0x40,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_160_207_207[45] U8G_FONT_SECTION("fontpage_160_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x28,0x20,0x2F,0xE0,0x68,
+ 0x00,0xAF,0xE0,0x2A,0xA0,0x2F,0xE0,0x2A,0xA0,0x3A,0xA0,0x28,0x60};
+const u8g_fntpgm_uint8_t fontpage_160_220_220[45] U8G_FONT_SECTION("fontpage_160_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x3F,0xE0,0x20,0x00,0x4F,0xC0,0x48,
+ 0x40,0xDF,0xE0,0x50,0x20,0x4F,0xC0,0x41,0x00,0x41,0x00,0x47,0x00};
+const u8g_fntpgm_uint8_t fontpage_160_245_245[45] U8G_FONT_SECTION("fontpage_160_245_245") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF5,0xF5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xE0,0x22,0x00,0x2F,0xC0,0x68,
+ 0x40,0xAF,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x38,0x60};
+const u8g_fntpgm_uint8_t fontpage_161_153_153[45] U8G_FONT_SECTION("fontpage_161_153_153") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x80,0x2F,0xC0,0x24,0x80,0x3F,0xE0,0x64,
+ 0x00,0xAF,0xE0,0x29,0x20,0x3F,0xE0,0x29,0x20,0x2F,0xE0,0x29,0x20};
+const u8g_fntpgm_uint8_t fontpage_161_179_179[45] U8G_FONT_SECTION("fontpage_161_179_179") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB3,0xB3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x3F,0xE0,0x2A,0x40,0x2F,0xC0,0x6A,
+ 0x40,0xBF,0xC0,0x22,0x80,0x3F,0xE0,0x28,0x80,0x24,0x80,0x21,0x80};
+const u8g_fntpgm_uint8_t fontpage_161_190_190[45] U8G_FONT_SECTION("fontpage_161_190_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBE,0xBE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x13,0xE0,0x10,0x80,0x2B,0xE0,0x2A,0x20,0x6F,
+ 0xE0,0xAA,0x20,0x2B,0xE0,0x2E,0x20,0x2B,0xE0,0x31,0x40,0x26,0x20};
+const u8g_fntpgm_uint8_t fontpage_162_178_178[45] U8G_FONT_SECTION("fontpage_162_178_178") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB2,0xB2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x28,0x80,0x3D,0xE0,0x40,0xA0,0x5D,0xE0,0xC0,
+ 0x80,0x5D,0xE0,0x43,0x20,0x5D,0xE0,0x55,0x20,0x5D,0xE0,0x55,0x20};
+const u8g_fntpgm_uint8_t fontpage_162_197_197[45] U8G_FONT_SECTION("fontpage_162_197_197") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x04,0x00,0xFF,0xC0,0x08,0x00,0x11,0x00,0x7F,
+ 0x80,0x12,0x80,0x12,0x00,0x12,0x00,0x22,0x40,0x22,0x40,0xC1,0xC0};
+const u8g_fntpgm_uint8_t fontpage_162_200_201[73] U8G_FONT_SECTION("fontpage_162_200_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x84,
+ 0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x24,0x80,0x04,0x00,0xFF,0xE0,0x12,0x00,0x12,
+ 0x00,0x12,0x20,0x12,0x20,0x22,0x20,0xC1,0xE0};
+const u8g_fntpgm_uint8_t fontpage_162_229_229[45] U8G_FONT_SECTION("fontpage_162_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x18,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,
+ 0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x80,0x20};
+const u8g_fntpgm_uint8_t fontpage_162_232_232[45] U8G_FONT_SECTION("fontpage_162_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,
+ 0x60,0x04,0x00,0x04,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_162_241_241[45] U8G_FONT_SECTION("fontpage_162_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x20,0x80,0x40,0x40};
+const u8g_fntpgm_uint8_t fontpage_162_247_247[45] U8G_FONT_SECTION("fontpage_162_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,
+ 0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x11,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_151_151[43] U8G_FONT_SECTION("fontpage_163_151_151") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x00,0x09,0xFF,0x00,
+ 0x00,0x0B,0x0A,0x14,0x0C,0x00,0xFF,0x7F,0xE0,0x40,0x20,0x9F,0x40,0x11,0x00,0x11,
+ 0x00,0x11,0x00,0x11,0x00,0x21,0x20,0x41,0x20,0x80,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_183_183[45] U8G_FONT_SECTION("fontpage_163_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x82,0x00,0x42,0x00,0x05,0x00,0x28,0x80,0x32,
+ 0x60,0x41,0x00,0x4F,0xC0,0x80,0x80,0x87,0x00,0x81,0x00,0x00,0x80};
+const u8g_fntpgm_uint8_t fontpage_163_198_198[45] U8G_FONT_SECTION("fontpage_163_198_198") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0A,0x00,0x89,0x00,0x4F,0xE0,0x59,0x00,0x09,
+ 0x00,0x2F,0xC0,0x29,0x00,0xCF,0xC0,0x49,0x00,0x49,0x00,0x4F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_163_250_250[45] U8G_FONT_SECTION("fontpage_163_250_250") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,
+ 0xC0,0x04,0x00,0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_134_134[45] U8G_FONT_SECTION("fontpage_164_134_134") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,
+ 0x40,0xBF,0xA0,0x08,0x80,0x08,0x80,0x10,0x80,0x20,0x80,0xC3,0x00};
+const u8g_fntpgm_uint8_t fontpage_164_151_151[45] U8G_FONT_SECTION("fontpage_164_151_151") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x97,0x97,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7E,0x20,0x10,0x20,0x11,0x20,0x3D,0x20,0x25,
+ 0x20,0x65,0x20,0x99,0x20,0x09,0x20,0x10,0x20,0x20,0x20,0xC0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_157_157[45] U8G_FONT_SECTION("fontpage_164_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x27,0xE0,0xF9,0x20,0x11,0x20,0x21,
+ 0x20,0x69,0x20,0xB1,0x20,0x29,0x20,0x22,0x20,0x24,0x20,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_164_176_176[45] U8G_FONT_SECTION("fontpage_164_176_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFE,0x20,0x10,0x20,0x20,0xA0,0x44,0xA0,0xFE,
+ 0xA0,0x10,0xA0,0x7C,0xA0,0x10,0xA0,0x10,0x20,0x1E,0x20,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_182_183[73] U8G_FONT_SECTION("fontpage_164_182_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x20,0x50,0xA0,0x7E,0xA0,0x90,0xA0,0xFE,
+ 0xA0,0x10,0xA0,0x7E,0xA0,0x52,0xA0,0x52,0x20,0x56,0x20,0x10,0xE0,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x7E,0x20,0x42,0x20,0x7E,0xA0,0x48,0xA0,0x48,0xA0,0x7E,0xA0,0x6A,
+ 0xA0,0xAA,0xA0,0xAA,0xA0,0x2E,0x20,0x08,0xE0};
+const u8g_fntpgm_uint8_t fontpage_164_245_245[45] U8G_FONT_SECTION("fontpage_164_245_245") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF5,0xF5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x20,0x28,0x20,0x54,0xA0,0xFE,0xA0,0x44,
+ 0xA0,0x7C,0xA0,0x44,0xA0,0x7C,0xA0,0xC4,0x20,0x44,0x20,0x7C,0xE0};
+const u8g_fntpgm_uint8_t fontpage_165_155_155[45] U8G_FONT_SECTION("fontpage_165_155_155") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9B,0x9B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0x80,0x08,
+ 0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x87,0x00};
+const u8g_fntpgm_uint8_t fontpage_165_160_160[45] U8G_FONT_SECTION("fontpage_165_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x20,0x00,0xFD,0xE0,0x25,0x20,0x25,
+ 0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x45,0x20,0x55,0xE0,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_165_213_213[45] U8G_FONT_SECTION("fontpage_165_213_213") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD5,0xD5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x78,0x80,0x10,0x80,0xFE,0x80,0x55,0xE0,0x7C,
+ 0xA0,0x54,0xA0,0x7C,0xA0,0x10,0xA0,0x7D,0x20,0x11,0x20,0xFE,0x60};
+const u8g_fntpgm_uint8_t fontpage_166_150_150[45] U8G_FONT_SECTION("fontpage_166_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x12,0x00,0x22,0x40,0x22,0x80,0x63,
+ 0x00,0xA2,0x00,0x26,0x00,0x2A,0x00,0x22,0x20,0x22,0x20,0x21,0xE0};
+const u8g_fntpgm_uint8_t fontpage_166_202_202[45] U8G_FONT_SECTION("fontpage_166_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x44,0x40,0x24,0x80,0x15,0x00,0x7F,
+ 0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_212_212[45] U8G_FONT_SECTION("fontpage_166_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x27,0xC0,0x22,0x40,0xFA,0x40,0x24,
+ 0x80,0x24,0x80,0x3F,0xE0,0x2A,0xA0,0x2A,0xA0,0x33,0x20,0x24,0x40};
+const u8g_fntpgm_uint8_t fontpage_166_225_225[45] U8G_FONT_SECTION("fontpage_166_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x0F,0x80,0x08,0x00,0x08,0x00,0xFF,
+ 0xE0,0x08,0x00,0x0A,0x00,0x09,0x00,0x08,0x80,0x08,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_240_240[45] U8G_FONT_SECTION("fontpage_166_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x10,0x00,0xE7,0xC0,0x84,0x40,0x84,0x40,0xF4,
+ 0x40,0x84,0x40,0x84,0x40,0x94,0x40,0xE5,0x80,0x84,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_248_248[45] U8G_FONT_SECTION("fontpage_166_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x7D,0xE0,0x91,0x20,0x11,0x20,0xFF,
+ 0x20,0x11,0x20,0x5D,0x20,0x51,0x20,0x51,0xA0,0x5D,0x40,0xE1,0x00};
+const u8g_fntpgm_uint8_t fontpage_166_251_251[45] U8G_FONT_SECTION("fontpage_166_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x28,0x00,0x25,0xE0,0x53,0x20,0x99,0x20,0x25,
+ 0x20,0x43,0x20,0xBD,0x20,0x25,0xA0,0x25,0x40,0x3D,0x00,0x25,0x00};
+const u8g_fntpgm_uint8_t fontpage_167_159_159[45] U8G_FONT_SECTION("fontpage_167_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xE0,0x22,0x00,0x2F,0xC0,0x28,0x40,0x2F,
+ 0xC0,0x28,0x40,0x2F,0xC0,0x22,0x00,0x2A,0x80,0x52,0x60,0xA6,0x20};
+const u8g_fntpgm_uint8_t fontpage_167_205_205[45] U8G_FONT_SECTION("fontpage_167_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0xC0,0x3E,0x00,0x20,0x00,0x20,0x00,0x3F,
+ 0xC0,0x28,0x80,0x25,0x00,0x22,0x00,0x45,0x00,0x48,0x80,0xB0,0x60};
+const u8g_fntpgm_uint8_t fontpage_167_214_214[45] U8G_FONT_SECTION("fontpage_167_214_214") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD6,0xD6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFC,0x00,0x4B,0xE0,0x4A,0x20,0x7A,0x20,0x49,
+ 0x40,0x79,0x40,0x48,0x80,0x4C,0x80,0xF9,0x40,0x0A,0x40,0x0C,0x20};
+const u8g_fntpgm_uint8_t fontpage_167_240_240[45] U8G_FONT_SECTION("fontpage_167_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x10,0x00,0x22,0x00,0x41,0x00,0xFF,
+ 0x80,0x00,0x80,0x7F,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x7F,0x00};
+const u8g_fntpgm_uint8_t fontpage_168_136_136[45] U8G_FONT_SECTION("fontpage_168_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,
+ 0x60,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_168_166_166[45] U8G_FONT_SECTION("fontpage_168_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x04,0x00,0x0D,0x80,0x34,0x40,0xC4,
+ 0x20,0x04,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_168_202_202[45] U8G_FONT_SECTION("fontpage_168_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x04,
+ 0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80};
+const u8g_fntpgm_uint8_t fontpage_168_253_253[45] U8G_FONT_SECTION("fontpage_168_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x0A,0x00,0x11,0x00,0xEE,0xE0,0x00,
+ 0x00,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7A,0x40,0x4A,0xC0,0x02,0x00};
+const u8g_fntpgm_uint8_t fontpage_169_140_140[45] U8G_FONT_SECTION("fontpage_169_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0C,0x00,0x70,0x00,0x11,0xE0,0xFD,0x20,0x11,
+ 0x20,0x39,0x20,0x35,0x20,0x55,0x20,0x91,0x20,0x11,0xE0,0x10,0x00};
+const u8g_fntpgm_uint8_t fontpage_170_223_223[45] U8G_FONT_SECTION("fontpage_170_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x7D,0x00,0x45,0xE0,0x7D,0x40,0x43,
+ 0x40,0x5D,0x40,0x55,0x40,0x54,0x80,0x94,0x80,0x9D,0x40,0x82,0x20};
+const u8g_fntpgm_uint8_t fontpage_171_174_174[45] U8G_FONT_SECTION("fontpage_171_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xF3,0xC0,0x92,0x40,0x92,0x40,0xFF,0xC0,0x44,
+ 0x80,0x7F,0x80,0x44,0x80,0x7F,0x80,0x04,0x00,0xFF,0xC0,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_172_180_180[45] U8G_FONT_SECTION("fontpage_172_180_180") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB4,0xB4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0xA0,0xEB,0xC0,0xAA,0xA0,0xBF,0xE0,0xA4,
+ 0x80,0xAF,0xE0,0xF9,0x20,0x0F,0xE0,0x09,0x20,0x0F,0xE0,0x11,0x20};
+const u8g_fntpgm_uint8_t fontpage_172_232_232[45] U8G_FONT_SECTION("fontpage_172_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x04,
+ 0x80,0xFF,0xE0,0x11,0x00,0xFB,0xE0,0x4A,0x40,0x4A,0x40,0x7B,0xC0};
+const u8g_fntpgm_uint8_t fontpage_172_244_244[45] U8G_FONT_SECTION("fontpage_172_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xEF,0xE0,0xA5,0x40,0xAF,0xE0,0xA4,
+ 0x40,0xA7,0xC0,0xE4,0x40,0x07,0xC0,0x04,0x40,0x07,0xC0,0x0C,0x60};
+const u8g_fntpgm_uint8_t fontpage_173_222_222[45] U8G_FONT_SECTION("fontpage_173_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x80,0x40,0x80,0x40,0x9E,0x40,0x92,
+ 0x40,0x92,0x40,0x9E,0x40,0x92,0x40,0x80,0x40,0xFF,0xC0,0x80,0x40};
+const u8g_fntpgm_uint8_t fontpage_173_224_224[45] U8G_FONT_SECTION("fontpage_173_224_224") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x84,0x20,0x84,0x20,0xBF,0xA0,0x84,
+ 0x20,0x84,0x20,0x8A,0x20,0x91,0x20,0xA0,0xA0,0x80,0x20,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_173_250_250[45] U8G_FONT_SECTION("fontpage_173_250_250") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x88,0x40,0x88,0x40,0xFF,0x40,0x88,
+ 0x40,0xBE,0x40,0xA2,0x40,0xA2,0x40,0xBE,0x40,0x80,0x40,0xFF,0xC0};
+const u8g_fntpgm_uint8_t fontpage_174_150_150[45] U8G_FONT_SECTION("fontpage_174_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x91,0x20,0x9F,0x20,0x84,0x20,0xFF,
+ 0xE0,0xAA,0xA0,0xAE,0xA0,0xA0,0xA0,0xBF,0xA0,0x80,0x20,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_174_168_168[45] U8G_FONT_SECTION("fontpage_174_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x08,0x00,0xFF,0xC0,0x10,0x00,0x22,
+ 0x00,0x62,0x00,0xAF,0x80,0x22,0x00,0x22,0x00,0x22,0x00,0x3F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_175_139_139[45] U8G_FONT_SECTION("fontpage_175_139_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8B,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7E,0x40,0x29,0x40,0x29,0x40,0xFF,0x40,0x29,
+ 0x40,0x28,0x40,0x4C,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_175_247_247[45] U8G_FONT_SECTION("fontpage_175_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xF9,0x00,0x27,0xC0,0xF9,0x40,0x55,
+ 0x40,0xFB,0x40,0x21,0x40,0xF9,0xC0,0x22,0x40,0x24,0x20,0x28,0x20};
+const u8g_fntpgm_uint8_t fontpage_176_202_202[45] U8G_FONT_SECTION("fontpage_176_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x2F,0xE0,0x29,0x20,0xFF,0xE0,0x29,
+ 0x20,0x2F,0xE0,0x21,0x40,0x33,0xA0,0xE5,0xE0,0x09,0x20,0x10,0xE0};
+const u8g_fntpgm_uint8_t fontpage_176_235_235[45] U8G_FONT_SECTION("fontpage_176_235_235") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEB,0xEB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x21,0x00,0xF7,0xC0,0x24,
+ 0x40,0x27,0x40,0x25,0xC0,0x34,0x40,0xEF,0xE0,0x02,0x80,0x0C,0x60};
+const u8g_fntpgm_uint8_t fontpage_177_138_138[45] U8G_FONT_SECTION("fontpage_177_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF9,0x00,0x23,0xC0,0xF9,0x40,0x51,0x40,0xFB,
+ 0x40,0x22,0xC0,0xFC,0x20,0x24,0x20,0x7F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_178_150_150[45] U8G_FONT_SECTION("fontpage_178_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x3D,0x00,0x25,0x00,0x45,
+ 0x80,0xA5,0x40,0x19,0x20,0x09,0x00,0x11,0x00,0x21,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_178_154_154[45] U8G_FONT_SECTION("fontpage_178_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0x1F,0x00,0x21,0x00,0x52,0x00,0x0C,
+ 0x00,0x34,0x00,0xCF,0x80,0x10,0x80,0x69,0x00,0x06,0x00,0xF8,0x00};
+const u8g_fntpgm_uint8_t fontpage_178_160_160[45] U8G_FONT_SECTION("fontpage_178_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x79,0xE0,0x8A,0x20,0x50,0x20,0x23,
+ 0xA0,0xFA,0xA0,0x2A,0xA0,0xCB,0xA0,0x28,0x20,0x11,0x20,0xE0,0xC0};
+const u8g_fntpgm_uint8_t fontpage_178_167_167[45] U8G_FONT_SECTION("fontpage_178_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,
+ 0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_178_169_170[73] U8G_FONT_SECTION("fontpage_178_169_170") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xAA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,
+ 0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A,
+ 0x00,0x11,0x00,0x19,0x00,0x24,0x80,0xC4,0x60};
+const u8g_fntpgm_uint8_t fontpage_178_177_177[45] U8G_FONT_SECTION("fontpage_178_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x24,0x00,0x3F,0xC0,0x44,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_179_203_203[45] U8G_FONT_SECTION("fontpage_179_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0xFA,0x40,0x2A,0x20,0x2F,
+ 0xE0,0x48,0x00,0x53,0xE0,0x32,0x20,0x2A,0x20,0x4B,0xE0,0x82,0x20};
+const u8g_fntpgm_uint8_t fontpage_181_146_146[45] U8G_FONT_SECTION("fontpage_181_146_146") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x92,0x92,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x40,0x2F,0xE0,0x24,0x40,0xF7,0xC0,0x54,
+ 0x40,0x57,0xC0,0x51,0x00,0x2F,0xE0,0x33,0x80,0x4D,0x40,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_182_208_208[45] U8G_FONT_SECTION("fontpage_182_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x14,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_182_216_216[45] U8G_FONT_SECTION("fontpage_182_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0xFF,0xE0,0x10,0x00,0x2F,0xC0,0x20,
+ 0x80,0x61,0x00,0xBF,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x27,0x00};
+const u8g_fntpgm_uint8_t fontpage_183_137_137[45] U8G_FONT_SECTION("fontpage_183_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x88,0x40,0x08,
+ 0x00,0xFF,0xE0,0x11,0x00,0x31,0x00,0x0E,0x00,0x09,0x80,0x70,0x60};
+const u8g_fntpgm_uint8_t fontpage_183_140_140[45] U8G_FONT_SECTION("fontpage_183_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x9F,0x40,0x00,
+ 0x00,0x7F,0xE0,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0x41,0xE0};
+const u8g_fntpgm_uint8_t fontpage_183_154_154[45] U8G_FONT_SECTION("fontpage_183_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x80,0x40,0x3F,
+ 0xC0,0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x54,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_183_162_162[45] U8G_FONT_SECTION("fontpage_183_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x08,0x00,0xFF,0xC0,0x90,0x40,0x3F,0x00,0x52,
+ 0x00,0x8C,0x00,0x33,0x00,0xFF,0xC0,0x21,0x00,0x21,0x00,0x3F,0x00};
+const u8g_fntpgm_uint8_t fontpage_183_185_185[45] U8G_FONT_SECTION("fontpage_183_185_185") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB9,0xB9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x91,0x20,0x24,0x80,0x4A,
+ 0x40,0x11,0x00,0x20,0x80,0xDF,0x60,0x11,0x00,0x11,0x00,0x1F,0x00};
+const u8g_fntpgm_uint8_t fontpage_184_141_141[45] U8G_FONT_SECTION("fontpage_184_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x28,0x40,0xAA,0x40,0x6C,0x40,0xFF,0xE0,0x28,
+ 0x40,0x7D,0x40,0x10,0xC0,0x7C,0x40,0x10,0x40,0x1D,0x40,0xE0,0x80};
+const u8g_fntpgm_uint8_t fontpage_184_143_143[45] U8G_FONT_SECTION("fontpage_184_143_143") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8F,0x8F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x80,0x24,
+ 0x40,0x44,0x40,0x44,0x20,0x84,0x20,0x04,0x00,0x14,0x00,0x08,0x00};
+const u8g_fntpgm_uint8_t fontpage_184_177_177[45] U8G_FONT_SECTION("fontpage_184_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFD,0x40,0x01,0x20,0x7F,0xE0,0x4A,
+ 0x80,0x7A,0x80,0x12,0x80,0x5A,0xA0,0x56,0xA0,0x92,0xA0,0x34,0x60};
+const u8g_fntpgm_uint8_t fontpage_187_229_229[41] U8G_FONT_SECTION("fontpage_187_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x09,0x00,0x00,
+ 0x00,0x0B,0x09,0x12,0x0C,0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
+ 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_187_238_238[45] U8G_FONT_SECTION("fontpage_187_238_238") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEE,0xEE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x80,0x09,0x00,0xFF,0xE0,0x04,0x00,0x7F,
+ 0xC0,0x08,0x00,0xFF,0xE0,0x10,0x00,0x2F,0x80,0x42,0x00,0xBF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_187_242_242[43] U8G_FONT_SECTION("fontpage_187_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x09,0xFF,0x00,
+ 0x00,0x0A,0x0A,0x14,0x0C,0x01,0xFF,0xFF,0x00,0x01,0x00,0x01,0x00,0x81,0x00,0xFF,
+ 0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x7F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_188_243_243[45] U8G_FONT_SECTION("fontpage_188_243_243") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF3,0xF3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0x24,0x80,0x15,0x00,0x04,
+ 0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_189_138_138[45] U8G_FONT_SECTION("fontpage_189_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x7F,
+ 0xE0,0x42,0x00,0x47,0x00,0x4A,0x80,0x52,0x40,0xA2,0x20,0x82,0x00};
+const u8g_fntpgm_uint8_t fontpage_189_166_166[45] U8G_FONT_SECTION("fontpage_189_166_166") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x49,0x00,0x7F,0xC0,0x49,
+ 0x00,0x4F,0x00,0x40,0x00,0x5F,0x80,0x49,0x00,0x86,0x00,0xB9,0xC0};
+const u8g_fntpgm_uint8_t fontpage_189_226_226[45] U8G_FONT_SECTION("fontpage_189_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x55,0x40,0x48,0xA0,0x7D,
+ 0xC0,0x45,0x20,0x5E,0x00,0x51,0xC0,0x5D,0x40,0x84,0x80,0x9B,0x60};
+const u8g_fntpgm_uint8_t fontpage_189_250_250[45] U8G_FONT_SECTION("fontpage_189_250_250") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0xEF,0xC0,0x22,0x40,0x5F,0xE0,0xE2,
+ 0x40,0x2F,0xC0,0xA2,0x00,0x6F,0xE0,0x22,0x00,0x52,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_190_149_149[45] U8G_FONT_SECTION("fontpage_190_149_149") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFC,0x40,0x04,0x40,0x04,0x40,0x7C,0x40,0x40,
+ 0x40,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x28,0x40,0x10,0x40};
+const u8g_fntpgm_uint8_t fontpage_191_133_133[45] U8G_FONT_SECTION("fontpage_191_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x21,0x00,0x47,0xC0,0x91,0x00,0x1F,
+ 0xE0,0x20,0x80,0x6F,0xE0,0xA4,0x80,0x22,0x80,0x20,0x80,0x21,0x80};
+const u8g_fntpgm_uint8_t fontpage_191_140_140[45] U8G_FONT_SECTION("fontpage_191_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x24,0x80,0x47,0x00,0x92,0x40,0x2F,
+ 0xE0,0x64,0x20,0xA7,0xC0,0x2C,0x40,0x32,0x80,0x23,0x80,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_191_145_145[45] U8G_FONT_SECTION("fontpage_191_145_145") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x91,0x91,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x1F,0xE0,0x25,0x40,0x45,0x40,0x9A,0x80,0x25,
+ 0x40,0x65,0x40,0xA0,0x00,0x27,0xC0,0x21,0x00,0x21,0x00,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_191_158_158[45] U8G_FONT_SECTION("fontpage_191_158_158") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9E,0x9E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x40,0x22,0x40,0x45,0xA0,0x99,0x20,0x20,
+ 0x00,0x65,0x00,0xA5,0x00,0x25,0xE0,0x25,0x00,0x2B,0x00,0x31,0xE0};
+const u8g_fntpgm_uint8_t fontpage_191_169_169[45] U8G_FONT_SECTION("fontpage_191_169_169") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA9,0xA9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x14,0x00,0x27,0xE0,0x4C,0x40,0x97,0xC0,0x24,
+ 0x40,0x67,0xC0,0xA4,0x00,0x27,0xC0,0x2C,0x80,0x33,0x00,0x2C,0xE0};
+const u8g_fntpgm_uint8_t fontpage_191_174_174[45] U8G_FONT_SECTION("fontpage_191_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2A,0x80,0x6A,0x80,0xBE,0x80,0x01,0xE0,0x5D,
+ 0x40,0xC3,0x40,0x5D,0x40,0x54,0x80,0x56,0x80,0x55,0x40,0x62,0x20};
+const u8g_fntpgm_uint8_t fontpage_191_195_195[45] U8G_FONT_SECTION("fontpage_191_195_195") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x02,0x00,0x12,0x00,0x12,0x00,0x10,
+ 0x40,0x50,0x20,0x50,0x20,0x50,0xA0,0x90,0x80,0x10,0x80,0x0F,0x80};
+const u8g_fntpgm_uint8_t fontpage_192_167_167[45] U8G_FONT_SECTION("fontpage_192_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x25,0x00,0xB5,0x00,0xAF,0xE0,0xA9,
+ 0x00,0xB1,0x00,0x27,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_192_226_226[45] U8G_FONT_SECTION("fontpage_192_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x2F,0xE0,0xB2,0x00,0xAA,0x80,0xA4,
+ 0x80,0xA5,0xA0,0x2A,0xC0,0x30,0x80,0x21,0x40,0x22,0x40,0x24,0x20};
+const u8g_fntpgm_uint8_t fontpage_192_239_239[45] U8G_FONT_SECTION("fontpage_192_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,
+ 0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x54,0x40,0x52,0xA0,0x8F,0x80};
+const u8g_fntpgm_uint8_t fontpage_195_182_182[45] U8G_FONT_SECTION("fontpage_195_182_182") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xE0,0xB2,0x80,0xAF,0xE0,0xA4,
+ 0x40,0x27,0xC0,0x24,0x40,0x27,0xC0,0x25,0x40,0x2C,0xA0,0x33,0xA0};
+const u8g_fntpgm_uint8_t fontpage_195_201_201[45] U8G_FONT_SECTION("fontpage_195_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0x7F,0xE0,0x4A,0x80,0x57,0xE0,0x7C,
+ 0x80,0x57,0xC0,0x54,0x80,0x57,0xE0,0x4A,0x40,0xA8,0xA0,0x4F,0xA0};
+const u8g_fntpgm_uint8_t fontpage_196_144_144[45] U8G_FONT_SECTION("fontpage_196_144_144") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x80,0x02,0x40,0x7F,0xE0,0x42,0x00,0x42,
+ 0x00,0x7A,0x40,0x4A,0x40,0x4A,0x80,0x49,0x20,0x52,0xA0,0x84,0x60};
+const u8g_fntpgm_uint8_t fontpage_196_182_182[45] U8G_FONT_SECTION("fontpage_196_182_182") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x01,0xC0,0x3E,0x00,0x20,0x00,0x3F,0xC0,0x20,
+ 0x40,0x20,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x40,0x00,0x80,0x00};
+const u8g_fntpgm_uint8_t fontpage_196_192_192[45] U8G_FONT_SECTION("fontpage_196_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x18,0x60,0x63,0x80,0x42,0x00,0x7A,0x00,0x4B,
+ 0xE0,0x4A,0x40,0x7A,0x40,0x42,0x40,0x42,0x40,0x44,0x40,0x88,0x40};
+const u8g_fntpgm_uint8_t fontpage_196_199_199[45] U8G_FONT_SECTION("fontpage_196_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xE0,0x40,0x20,0x7F,0xE0,0x40,
+ 0x00,0x7D,0xE0,0x44,0x20,0x54,0xA0,0x4C,0x60,0x54,0xA0,0xA9,0x60};
+const u8g_fntpgm_uint8_t fontpage_196_203_203[45] U8G_FONT_SECTION("fontpage_196_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x03,0xC0,0x7C,0x00,0x04,0x00,0x7F,0xC0,0x04,
+ 0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00};
+const u8g_fntpgm_uint8_t fontpage_196_211_211[45] U8G_FONT_SECTION("fontpage_196_211_211") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD3,0xD3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xE0,0xF8,0x80,0x20,0x80,0x28,
+ 0x80,0x30,0x80,0x60,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0xE3,0x80};
+const u8g_fntpgm_uint8_t fontpage_196_249_249[45] U8G_FONT_SECTION("fontpage_196_249_249") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF9,0xF9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x80,0x24,0x80,0xFC,0x80,0x24,0xA0,0x2F,
+ 0xC0,0x34,0x80,0x64,0x80,0xA4,0x80,0x25,0xA0,0x26,0xA0,0xE4,0x60};
+const u8g_fntpgm_uint8_t fontpage_197_150_150[45] U8G_FONT_SECTION("fontpage_197_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x40,0x22,0x40,0xF9,0x40,0x20,0x40,0x2A,
+ 0x40,0x31,0x40,0x60,0xE0,0xAF,0x40,0x20,0x40,0x20,0x40,0xE0,0x40};
+const u8g_fntpgm_uint8_t fontpage_197_189_189[45] U8G_FONT_SECTION("fontpage_197_189_189") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x20,0x80,0xF8,0x80,0x27,0xE0,0x2C,
+ 0xA0,0x34,0xA0,0x67,0xE0,0xA4,0xA0,0x24,0xA0,0x27,0xE0,0xE4,0x20};
+const u8g_fntpgm_uint8_t fontpage_197_212_212[45] U8G_FONT_SECTION("fontpage_197_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x22,0x40,0xFF,0xE0,0x22,0x00,0x2B,
+ 0xC0,0x32,0x40,0x65,0x40,0xA4,0x80,0x28,0x80,0x29,0x40,0xE6,0x20};
+const u8g_fntpgm_uint8_t fontpage_198_137_137[45] U8G_FONT_SECTION("fontpage_198_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x20,0x80,0xFF,0xE0,0x25,0x20,0x29,
+ 0x00,0x37,0xE0,0x62,0x40,0xA6,0x40,0x21,0x80,0x22,0x80,0xEC,0x60};
+const u8g_fntpgm_uint8_t fontpage_199_137_137[45] U8G_FONT_SECTION("fontpage_199_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0xE0,0xF9,0x00,0x27,0xC0,0x2C,
+ 0x40,0x37,0xC0,0x64,0x40,0xA7,0xC0,0x21,0x00,0x2F,0xE0,0xE1,0x00};
+const u8g_fntpgm_uint8_t fontpage_199_162_162[45] U8G_FONT_SECTION("fontpage_199_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xE0,0x28,0x20,0xF2,0x80,0x24,0x40,0x29,
+ 0x20,0x31,0x00,0x6F,0xE0,0xA1,0x00,0x25,0x80,0x29,0x40,0xF1,0x20};
+const u8g_fntpgm_uint8_t fontpage_199_165_165[45] U8G_FONT_SECTION("fontpage_199_165_165") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA5,0xA5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0xF4,0x40,0x22,0x80,0x2F,
+ 0xE0,0x31,0x00,0x6F,0xE0,0xA2,0x40,0x26,0x80,0x21,0x40,0xEE,0x20};
+const u8g_fntpgm_uint8_t fontpage_199_167_167[45] U8G_FONT_SECTION("fontpage_199_167_167") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA7,0xA7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0xF8,0x20,0x22,0x80,0x24,
+ 0x40,0x38,0x20,0x67,0xC0,0xA1,0x00,0x21,0x00,0x21,0x00,0xEF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_199_208_208[45] U8G_FONT_SECTION("fontpage_199_208_208") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x24,0x40,0xFF,0xC0,0x24,0x40,0x27,
+ 0xC0,0x30,0x00,0x6F,0xE0,0xA5,0x00,0x25,0xE0,0x2B,0x00,0xF1,0xE0};
+const u8g_fntpgm_uint8_t fontpage_199_210_210[45] U8G_FONT_SECTION("fontpage_199_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0xC0,0x27,0x00,0xF1,0x00,0x2F,0xE0,0x21,
+ 0x00,0x35,0x60,0x69,0x20,0xAD,0x60,0x29,0x20,0x29,0x20,0xEF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_199_219_219[45] U8G_FONT_SECTION("fontpage_199_219_219") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDB,0xDB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0xF4,0x80,0x2F,0xE0,0x2A,
+ 0xA0,0x3A,0xA0,0x6C,0x60,0xA1,0x00,0x2F,0xE0,0x22,0x80,0xEC,0x60};
+const u8g_fntpgm_uint8_t fontpage_201_199_199[45] U8G_FONT_SECTION("fontpage_201_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xE0,0x2A,0xA0,0xFF,0xE0,0x21,0x00,0x2F,
+ 0xE0,0x32,0x80,0xE7,0xC0,0x21,0x00,0x2F,0xE0,0xA1,0x00,0x61,0x00};
+const u8g_fntpgm_uint8_t fontpage_201_202_203[73] U8G_FONT_SECTION("fontpage_201_202_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFD,0xC0,0xA9,0x40,0xF9,0x60,0xAB,0xC0,0xFD,
+ 0x40,0xA9,0x80,0xAB,0x60,0xFE,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x29,0x20,0x25,0x40,0xFF,0xE0,0x2A,0xA0,0x2B,0x80,0x30,0x00,0xEF,
+ 0xE0,0x29,0x20,0x2F,0xE0,0xA9,0x20,0x6F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_201_224_224[45] U8G_FONT_SECTION("fontpage_201_224_224") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0xFA,0xA0,0x25,0x40,0x2D,
+ 0x60,0x35,0x40,0xE4,0x40,0x27,0xC0,0x24,0x40,0xA7,0xC0,0x68,0x40};
+const u8g_fntpgm_uint8_t fontpage_202_182_182[45] U8G_FONT_SECTION("fontpage_202_182_182") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB6,0xB6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x12,0x00,0x12,0x00,0x93,0xE0,0x94,0x40,0x9A,
+ 0x40,0x92,0x40,0xB2,0x80,0xD1,0x00,0x91,0x80,0x12,0x40,0x14,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_190_190[45] U8G_FONT_SECTION("fontpage_202_190_190") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBE,0xBE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x11,0x00,0xFD,0xE0,0x22,0x40,0x25,
+ 0x40,0x39,0x40,0x29,0x40,0x28,0x80,0x49,0x80,0x4A,0x40,0x94,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_215_215[45] U8G_FONT_SECTION("fontpage_202_215_215") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD7,0xD7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7D,0x00,0x45,0x00,0x7D,0xE0,0x47,0x40,0x7D,
+ 0x40,0x45,0x40,0x7D,0x40,0x45,0x40,0x28,0x80,0x45,0x40,0x86,0x20};
+const u8g_fntpgm_uint8_t fontpage_202_244_244[45] U8G_FONT_SECTION("fontpage_202_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x55,0x40,0x7C,0x80,0x39,
+ 0x40,0x56,0x20,0x7F,0xC0,0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_202_248_248[45] U8G_FONT_SECTION("fontpage_202_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x7D,0x00,0x55,0xE0,0xFF,0x40,0x55,
+ 0x40,0xFD,0x40,0x95,0x40,0xFF,0x40,0x28,0x80,0x19,0x40,0xE6,0x20};
+const u8g_fntpgm_uint8_t fontpage_203_153_153[45] U8G_FONT_SECTION("fontpage_203_153_153") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x99,0x99,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0xAC,0x80,0x72,0x80,0x20,0x80,0xFC,
+ 0x80,0x22,0x80,0x30,0xE0,0x6F,0x80,0xA0,0x80,0x20,0x80,0x20,0x80};
+const u8g_fntpgm_uint8_t fontpage_203_156_156[45] U8G_FONT_SECTION("fontpage_203_156_156") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9C,0x9C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x40,0x29,0x40,0x44,0xC0,0xB8,0x40,0x12,
+ 0x40,0x7D,0x40,0x10,0x60,0x55,0xC0,0x52,0x40,0x92,0x40,0x30,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_176_176[45] U8G_FONT_SECTION("fontpage_203_176_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x60,0xFD,0x80,0x45,0x00,0x29,0x00,0xFD,
+ 0xE0,0x11,0x40,0xFD,0x40,0x11,0x40,0x55,0x40,0x92,0x40,0x34,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_183_183[45] U8G_FONT_SECTION("fontpage_203_183_183") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB7,0xB7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xAA,0x40,0xFD,0x80,0x95,0x00,0xAB,0x00,0xFF,
+ 0xE0,0xA9,0x40,0xAB,0x40,0xFD,0x40,0x95,0x40,0xAB,0x40,0xFE,0x40};
+const u8g_fntpgm_uint8_t fontpage_203_188_188[45] U8G_FONT_SECTION("fontpage_203_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x10,0x80,0xFD,0x40,0x21,0x40,0x3A,
+ 0x20,0x2C,0x80,0x28,0x40,0x28,0x40,0x49,0x00,0x48,0x80,0x98,0x40};
+const u8g_fntpgm_uint8_t fontpage_204_135_135[45] U8G_FONT_SECTION("fontpage_204_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x3F,
+ 0xC0,0x79,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0xC1,0x00};
+const u8g_fntpgm_uint8_t fontpage_204_142_142[45] U8G_FONT_SECTION("fontpage_204_142_142") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8E,0x8E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x03,0xE0,0xF2,0x20,0x92,0x20,0x93,0xE0,0xF2,
+ 0x20,0x92,0x20,0x93,0xE0,0xF2,0x20,0x04,0x20,0x08,0xA0,0x30,0x40};
+const u8g_fntpgm_uint8_t fontpage_204_175_175[45] U8G_FONT_SECTION("fontpage_204_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,
+ 0x80,0x00,0x00,0xFF,0xE0,0x24,0x00,0x27,0x80,0x54,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_204_194_194[45] U8G_FONT_SECTION("fontpage_204_194_194") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC2,0xC2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xF7,0xC0,0x91,0x00,0x91,0x00,0xFF,
+ 0xE0,0x90,0x80,0x9F,0xE0,0x94,0x80,0xF2,0x80,0x00,0x80,0x03,0x80};
+const u8g_fntpgm_uint8_t fontpage_205_171_171[45] U8G_FONT_SECTION("fontpage_205_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0xE0,0xFF,0x00,0x55,0xE0,0x7D,0x40,0x55,
+ 0x40,0xFF,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40};
+const u8g_fntpgm_uint8_t fontpage_205_244_244[45] U8G_FONT_SECTION("fontpage_205_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xE0,0x02,0x00,0x3F,0xC0,0x22,0x40,0x3F,
+ 0xC0,0x22,0x40,0x3F,0xC0,0x0A,0x00,0x04,0x00,0x1B,0x00,0xE0,0xE0};
+const u8g_fntpgm_uint8_t fontpage_206_128_128[45] U8G_FONT_SECTION("fontpage_206_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,
+ 0xE0,0x48,0x00,0x7F,0xC0,0x4A,0x40,0x79,0x80,0xC9,0x80,0x0E,0x60};
+const u8g_fntpgm_uint8_t fontpage_206_137_137[45] U8G_FONT_SECTION("fontpage_206_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x08,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x30,
+ 0x80,0x5F,0x80,0x90,0x80,0x1F,0x80,0x10,0x80,0x10,0x80,0x11,0x80};
+const u8g_fntpgm_uint8_t fontpage_206_255_255[45] U8G_FONT_SECTION("fontpage_206_255_255") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0xC0,0x27,0x00,0xFC,0x00,0x24,0x00,0x27,
+ 0xC0,0x74,0x40,0x6E,0x40,0xA5,0x80,0x28,0x80,0x29,0x40,0x36,0x20};
+const u8g_fntpgm_uint8_t fontpage_207_241_241[45] U8G_FONT_SECTION("fontpage_207_241_241") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x71,
+ 0x00,0x69,0x00,0xA7,0xC0,0xA1,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_208_161_161[45] U8G_FONT_SECTION("fontpage_208_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x21,0x00,0x2F,0xE0,0xF0,0x00,0x22,
+ 0x80,0x74,0x40,0x6A,0xA0,0xA2,0x80,0x21,0x00,0x22,0x80,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_208_188_188[45] U8G_FONT_SECTION("fontpage_208_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0xF4,0x40,0x2A,0x80,0x21,
+ 0x00,0x72,0x80,0x6C,0x60,0xA7,0xC0,0x24,0x40,0x24,0x40,0x27,0xC0};
+const u8g_fntpgm_uint8_t fontpage_209_157_157[45] U8G_FONT_SECTION("fontpage_209_157_157") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x24,0x00,0x27,0xE0,0x5A,0x40,0x51,0x80,0xDE,
+ 0x60,0x51,0x00,0x5F,0xE0,0x51,0x00,0x45,0x40,0x49,0x20,0x53,0x20};
+const u8g_fntpgm_uint8_t fontpage_209_196_196[45] U8G_FONT_SECTION("fontpage_209_196_196") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x20,0x80,0x7F,0xC0,0x24,
+ 0x80,0xFF,0xE0,0x24,0x80,0xFF,0xE0,0x15,0x00,0x24,0x80,0xC4,0x60};
+const u8g_fntpgm_uint8_t fontpage_211_253_253[45] U8G_FONT_SECTION("fontpage_211_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x80,0x2F,0xE0,0xFA,0xA0,0x2F,0xE0,0x2A,
+ 0xA0,0x3F,0xE0,0x64,0x40,0xA7,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40};
+const u8g_fntpgm_uint8_t fontpage_212_217_217[45] U8G_FONT_SECTION("fontpage_212_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0x40,0x2A,0xA0,0xF4,0x40,0x27,0xC0,0x38,
+ 0x20,0x27,0xC0,0x64,0x40,0xA7,0xC0,0x24,0x40,0x22,0x80,0x2F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_212_223_223[45] U8G_FONT_SECTION("fontpage_212_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x25,0x40,0x29,0xA0,0xFF,0x40,0x25,0x20,0x6F,
+ 0xE0,0x75,0x40,0xAF,0xE0,0xA5,0x40,0x26,0xA0,0x29,0x60,0x32,0x20};
+const u8g_fntpgm_uint8_t fontpage_213_162_162[45] U8G_FONT_SECTION("fontpage_213_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x22,0x80,0xF4,0x40,0x2B,0xA0,0x60,
+ 0x00,0x7E,0xE0,0xAA,0xA0,0xAE,0xE0,0x24,0x40,0x2A,0xC0,0x31,0x20};
+const u8g_fntpgm_uint8_t fontpage_214_226_227[71] U8G_FONT_SECTION("fontpage_214_226_227") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x00,0x27,
+ 0x80,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0xFF,0xC0,0x0B,0x0A,0x14,
+ 0x0C,0x00,0xFF,0xFF,0xE0,0x04,0x00,0x04,0x00,0x24,0x00,0x27,0xC0,0x24,0x00,0x24,
+ 0x00,0x24,0x00,0x24,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_214_229_229[45] U8G_FONT_SECTION("fontpage_214_229_229") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE5,0xE5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x27,0xC0,0x24,0x00,0x24,0x00,0xFF,
+ 0xE0,0x04,0x00,0x14,0x40,0x24,0x80,0x41,0x00,0x06,0x00,0xF8,0x00};
+const u8g_fntpgm_uint8_t fontpage_214_248_248[45] U8G_FONT_SECTION("fontpage_214_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x43,0xC0,0xF0,0x40,0x93,0xC0,0xF8,0x40,0x8F,
+ 0xE0,0xFC,0xA0,0x20,0x80,0xBB,0xE0,0xA2,0xA0,0xBA,0xE0,0xE0,0x80};
+const u8g_fntpgm_uint8_t fontpage_215_188_188[45] U8G_FONT_SECTION("fontpage_215_188_188") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBC,0xBC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0xC0,0xFD,0x40,0x11,0x40,0xFF,0x60,0x84,
+ 0x00,0x7B,0xE0,0x01,0x40,0x79,0x40,0x4A,0x80,0x4D,0x40,0x82,0x20};
+const u8g_fntpgm_uint8_t fontpage_215_212_212[45] U8G_FONT_SECTION("fontpage_215_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x84,0x00,0x84,0x00,0x84,0x80,0x85,0x00,0xF6,
+ 0x00,0x84,0x00,0x84,0x00,0x84,0x00,0xB4,0x40,0xC4,0x40,0x83,0xC0};
+const u8g_fntpgm_uint8_t fontpage_217_146_146[45] U8G_FONT_SECTION("fontpage_217_146_146") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x92,0x92,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x23,0xC0,0x84,0x40,0x59,0x40,0x10,
+ 0x80,0x27,0xC0,0x24,0x40,0xC2,0x80,0x41,0x00,0x46,0x80,0x58,0x60};
+const u8g_fntpgm_uint8_t fontpage_219_136_136[45] U8G_FONT_SECTION("fontpage_219_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x49,0x20,0x25,0x40,0x81,0x00,0x57,0xE0,0x14,
+ 0x20,0x27,0xE0,0x24,0x20,0xC7,0xE0,0x44,0x20,0x44,0x20,0x44,0x60};
+const u8g_fntpgm_uint8_t fontpage_219_225_225[45] U8G_FONT_SECTION("fontpage_219_225_225") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE1,0xE1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x25,0x40,0x09,0x80,0x82,0x80,0x54,
+ 0x40,0x29,0x20,0x25,0x40,0xC5,0x80,0x49,0x00,0x42,0x80,0x5C,0x60};
+const u8g_fntpgm_uint8_t fontpage_220_133_133[45] U8G_FONT_SECTION("fontpage_220_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x2F,0xE0,0x01,0x00,0x97,0xC0,0x51,
+ 0x00,0x2F,0xE0,0x24,0x40,0xC7,0x40,0x45,0xC0,0x44,0x40,0x44,0xC0};
+const u8g_fntpgm_uint8_t fontpage_220_172_172[45] U8G_FONT_SECTION("fontpage_220_172_172") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4E,0x20,0x2A,0xA0,0x0A,0xA0,0x8E,0xA0,0x5A,
+ 0xA0,0x2E,0xA0,0x2A,0xA0,0xCA,0xA0,0x4E,0x20,0x4A,0x20,0x51,0x60};
+const u8g_fntpgm_uint8_t fontpage_221_144_144[45] U8G_FONT_SECTION("fontpage_221_144_144") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x28,0x80,0x8B,0xE0,0x4A,0x20,0x1B,
+ 0xE0,0x2A,0x20,0x2B,0xE0,0xC8,0x80,0x4A,0xC0,0x54,0xA0,0x69,0xA0};
+const u8g_fntpgm_uint8_t fontpage_221_150_150[45] U8G_FONT_SECTION("fontpage_221_150_150") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x96,0x96,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x85,0x00,0x4F,0xE0,0x99,0x00,0x4F,0xC0,0x49,
+ 0x00,0xCF,0xC0,0x49,0x00,0x4F,0xE0,0x04,0x00,0xFF,0xE0,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_221_171_171[45] U8G_FONT_SECTION("fontpage_221_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0x25,0x40,0x06,0xC0,0x84,0x40,0x47,
+ 0xC0,0x20,0x00,0x2F,0xE0,0xCA,0xA0,0x4A,0xA0,0x4A,0xA0,0x5F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_223_192_192[45] U8G_FONT_SECTION("fontpage_223_192_192") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x80,0x3E,0x80,0x12,0xE0,0x9E,0xA0,0x53,
+ 0xA0,0x3E,0xA0,0x28,0xA0,0xDF,0xA0,0x4A,0x40,0x52,0xA0,0x65,0x20};
+const u8g_fntpgm_uint8_t fontpage_226_161_161[45] U8G_FONT_SECTION("fontpage_226_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0x7F,0xE0,0xAA,0x80,0x2A,0x80,0xFF,
+ 0xE0,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x12,0x40,0x49,0x20,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_227_177_177[45] U8G_FONT_SECTION("fontpage_227_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xF9,0x00,0x23,0xC0,0xFD,0x40,0x53,
+ 0x40,0xA9,0x40,0xFA,0xE0,0x22,0x20,0xFA,0x40,0x49,0x20,0x89,0x20};
+const u8g_fntpgm_uint8_t fontpage_227_200_200[45] U8G_FONT_SECTION("fontpage_227_200_200") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2F,0xA0,0x2B,0x40,0xAC,0x80,0xB7,0xC0,0xA8,
+ 0x20,0x37,0xC0,0x24,0x40,0x27,0xC0,0x52,0x80,0x49,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_228_199_199[45] U8G_FONT_SECTION("fontpage_228_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,
+ 0x00,0x20,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x40,0x80,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_228_233_233[45] U8G_FONT_SECTION("fontpage_228_233_233") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE9,0xE9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0xA2,0x00,0xA7,0xE0,0xFA,0xA0,0xA2,
+ 0xA0,0x32,0xA0,0x64,0xA0,0xA9,0x20,0x22,0x20,0x25,0x20,0x28,0xC0};
+const u8g_fntpgm_uint8_t fontpage_231_135_135[45] U8G_FONT_SECTION("fontpage_231_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x88,0x40,0x52,0x80,0x0C,
+ 0x00,0x2A,0x80,0xDF,0x40,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_234_168_168[45] U8G_FONT_SECTION("fontpage_234_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,
+ 0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x84,0x40,0x84,0xC0};
+const u8g_fntpgm_uint8_t fontpage_234_204_204[45] U8G_FONT_SECTION("fontpage_234_204_204") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,
+ 0xC0,0x0A,0x00,0x31,0x80,0xD1,0x60,0x11,0x00,0x21,0x00,0x41,0x00};
+const u8g_fntpgm_uint8_t fontpage_236_253_253[34] U8G_FONT_SECTION("fontpage_236_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x08,0x0B,0x0B,0x0C,0x02,0xFF,0x10,0x20,0xFF,0x81,0x81,0xFF,0x81,0x81,0x81,
+ 0xFF,0x81};
+const u8g_fntpgm_uint8_t fontpage_237_132_132[45] U8G_FONT_SECTION("fontpage_237_132_132") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x22,0x00,0x42,0x00,0xF7,0xC0,0x98,0x40,0x90,
+ 0x40,0xF4,0x40,0x92,0x40,0x92,0x40,0x90,0x40,0xF0,0x40,0x91,0x80};
+const u8g_fntpgm_uint8_t fontpage_237_227_227[45] U8G_FONT_SECTION("fontpage_237_227_227") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE3,0xE3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF9,0x00,0xA1,0x00,0xF9,0xE0,0x8A,0x00,0xFA,
+ 0x80,0xA0,0x40,0xFC,0x00,0x00,0x00,0x7F,0xC0,0x4A,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_237_244_244[45] U8G_FONT_SECTION("fontpage_237_244_244") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF4,0xF4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,
+ 0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_238_160_160[45] U8G_FONT_SECTION("fontpage_238_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x07,0xE0,0xF4,0x20,0x97,0xE0,0xF4,0x80,0x94,
+ 0x80,0x97,0xE0,0xF4,0x80,0x94,0x80,0xF4,0xA0,0x96,0x60,0x04,0x20};
+const u8g_fntpgm_uint8_t fontpage_240_141_141[45] U8G_FONT_SECTION("fontpage_240_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x02,0x00,0xFA,0x00,0x23,0xE0,0x24,0x20,0x79,
+ 0x40,0xC9,0x00,0x49,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x08,0x20};
+const u8g_fntpgm_uint8_t fontpage_241_186_186[45] U8G_FONT_SECTION("fontpage_241_186_186") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBA,0xBA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x01,0x00,0xFF,0xE0,0x2A,0x20,0x22,0x80,0x77,
+ 0xE0,0xD4,0x80,0x5F,0xE0,0x54,0x80,0x77,0xE0,0x54,0x80,0x07,0xE0};
+const u8g_fntpgm_uint8_t fontpage_243_251_251[45] U8G_FONT_SECTION("fontpage_243_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xE3,0xE0,0x24,0x20,0xFA,0x40,0x21,
+ 0x80,0x36,0x80,0x29,0xE0,0x62,0x20,0xA5,0x40,0x20,0x80,0x27,0x00};
+const u8g_fntpgm_uint8_t fontpage_244_205_205[45] U8G_FONT_SECTION("fontpage_244_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xEF,0xE0,0x21,0x00,0xFF,0xC0,0x21,
+ 0x00,0x2F,0xE0,0x34,0x40,0x6F,0xC0,0xA4,0x40,0x27,0xC0,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_245_239_239[45] U8G_FONT_SECTION("fontpage_245_239_239") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0xEF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x81,0x00,0x45,0x20,0xF7,0xE0,0x00,0x00,0xAF,
+ 0xE0,0xA1,0x00,0xAF,0xE0,0x4A,0xA0,0x6A,0xA0,0x8A,0xA0,0x08,0x60};
+const u8g_fntpgm_uint8_t fontpage_246_201_201[45] U8G_FONT_SECTION("fontpage_246_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x7B,0xE0,0x94,0x80,0x7F,0xC0,0x04,
+ 0x00,0xFF,0xE0,0x01,0x00,0x7F,0xC0,0x11,0x00,0x09,0x00,0x03,0x00};
+const u8g_fntpgm_uint8_t fontpage_247_161_161[45] U8G_FONT_SECTION("fontpage_247_161_161") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x3D,0xE0,0x52,0x80,0xFF,0xE0,0x80,
+ 0x20,0x3F,0x80,0x20,0x80,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0};
+const u8g_fntpgm_uint8_t fontpage_247_177_177[45] U8G_FONT_SECTION("fontpage_247_177_177") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB1,0xB1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x3D,0xE0,0x4A,0x80,0x94,0x40,0x7F,
+ 0xC0,0x12,0x40,0x3B,0xC0,0x56,0x40,0x93,0xC0,0x12,0x40,0x13,0xC0};
+const u8g_fntpgm_uint8_t fontpage_249_251_251[45] U8G_FONT_SECTION("fontpage_249_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x09,0x0B,0x16,0x0C,0x01,0xFF,0x03,0x80,0xFC,0x00,0x11,0x00,0x7E,0x00,0x08,
+ 0x00,0x11,0x00,0xFF,0x80,0x08,0x80,0x2A,0x00,0x49,0x00,0x98,0x80};
+const u8g_fntpgm_uint8_t fontpage_250_133_133[45] U8G_FONT_SECTION("fontpage_250_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xC0,0x41,0x00,0xF1,0x00,0x21,
+ 0x00,0x51,0x00,0xE9,0x00,0x01,0x00,0x51,0x00,0xA9,0x00,0xAF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_250_162_162[45] U8G_FONT_SECTION("fontpage_250_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x91,
+ 0x20,0x3E,0x00,0x08,0x80,0x7F,0xC0,0x04,0x40,0x24,0x80,0xCC,0x60};
+const u8g_fntpgm_uint8_t fontpage_250_171_171[45] U8G_FONT_SECTION("fontpage_250_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x51,0x40,0x5D,0x80,0x51,0x20,0xFD,
+ 0xE0,0x08,0x80,0x3F,0x00,0x08,0x80,0x7F,0xC0,0x24,0x80,0xCC,0x60};
+const u8g_fntpgm_uint8_t fontpage_250_176_176[45] U8G_FONT_SECTION("fontpage_250_176_176") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xE0,0x55,0x20,0xF5,0x20,0x25,
+ 0x20,0x57,0xE0,0xED,0x20,0x05,0x20,0x55,0x20,0xAF,0xE0,0xAC,0x20};
+const u8g_fntpgm_uint8_t fontpage_250_194_194[45] U8G_FONT_SECTION("fontpage_250_194_194") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC2,0xC2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x23,0xC0,0x54,0x40,0xF2,0x80,0x21,
+ 0x00,0x52,0x80,0xEC,0x60,0x01,0x00,0x50,0x80,0xAB,0x00,0x80,0xC0};
+const u8g_fntpgm_uint8_t fontpage_250_241_242[73] U8G_FONT_SECTION("fontpage_250_241_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x20,0x80,0x57,0xE0,0xF1,0x00,0x22,
+ 0x40,0x57,0xA0,0xE8,0x00,0x02,0x80,0x52,0xA0,0xAC,0xA0,0xA8,0x60,0x0B,0x0B,0x16,
+ 0x0C,0x00,0xFF,0x21,0x00,0x21,0x00,0x52,0x40,0xF7,0x80,0x21,0x40,0x57,0xE0,0xE8,
+ 0x80,0x02,0xC0,0x54,0xA0,0xA8,0xA0,0xA9,0x80};
+const u8g_fntpgm_uint8_t fontpage_251_160_160[45] U8G_FONT_SECTION("fontpage_251_160_160") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xC0,0x22,0x40,0x57,0x80,0xF0,0x80,0x2F,
+ 0xE0,0x51,0x20,0xED,0x40,0x03,0x80,0x55,0x40,0xA9,0x20,0xAF,0x20};
+const u8g_fntpgm_uint8_t fontpage_251_178_178[45] U8G_FONT_SECTION("fontpage_251_178_178") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB2,0xB2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xE0,0x24,0x20,0x55,0x60,0xF4,0xA0,0x27,
+ 0xE0,0x54,0xA0,0xEF,0xE0,0x05,0x20,0x55,0xE0,0xAC,0x20,0xAC,0x60};
+const u8g_fntpgm_uint8_t fontpage_251_210_210[45] U8G_FONT_SECTION("fontpage_251_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x20,0x27,0xA0,0x51,0x40,0xFF,0xE0,0x21,
+ 0x00,0x53,0xE0,0xEE,0x20,0x03,0xE0,0x52,0x20,0xAB,0xE0,0xAA,0x20};
+const u8g_fntpgm_uint8_t fontpage_251_218_218[45] U8G_FONT_SECTION("fontpage_251_218_218") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDA,0xDA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xC0,0x54,0x40,0xF7,0xC0,0x24,
+ 0x40,0x57,0xC0,0xE9,0x20,0x07,0x40,0x53,0x80,0xAD,0x40,0xAB,0x20};
+const u8g_fntpgm_uint8_t fontpage_251_232_232[45] U8G_FONT_SECTION("fontpage_251_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x2F,0xE0,0x58,0x20,0xFF,0xE0,0x28,
+ 0x00,0x5F,0xE0,0xEA,0xA0,0x0F,0xE0,0x5A,0xA0,0xAA,0xA0,0xAA,0x60};
+const u8g_fntpgm_uint8_t fontpage_252_174_174[45] U8G_FONT_SECTION("fontpage_252_174_174") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAE,0xAE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xE0,0x44,0x20,0xFB,0xE0,0x24,
+ 0x80,0x5D,0xE0,0xF5,0x20,0x05,0xE0,0x55,0x20,0xAD,0xE0,0xA5,0x20};
+const u8g_fntpgm_uint8_t fontpage_252_189_189[45] U8G_FONT_SECTION("fontpage_252_189_189") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBD,0xBD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x27,0xE0,0x55,0x60,0xF6,0xA0,0x25,
+ 0x20,0x56,0xA0,0xEF,0xE0,0x01,0x40,0x56,0xA0,0xAA,0x60,0xA9,0xC0};
+const u8g_fntpgm_uint8_t fontpage_252_252_252[45] U8G_FONT_SECTION("fontpage_252_252_252") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4A,0x40,0x4D,0xA0,0x8A,0x40,0xFD,0xA0,0x28,
+ 0x00,0x4F,0xE0,0xFA,0x40,0x0D,0xA0,0x5A,0x40,0xAD,0xA0,0xAF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_253_140_140[45] U8G_FONT_SECTION("fontpage_253_140_140") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8C,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x4F,0xE0,0x91,0x00,0xEF,0xE0,0x2A,
+ 0xA0,0x5F,0xE0,0xF4,0x40,0x07,0xC0,0x54,0x40,0xAF,0xC0,0xAC,0x60};
+const u8g_fntpgm_uint8_t fontpage_253_162_162[45] U8G_FONT_SECTION("fontpage_253_162_162") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA2,0xA2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x00,0x27,0xC0,0x41,0x00,0x51,0x00,0xE1,
+ 0x00,0x21,0x00,0x41,0x00,0xF1,0x00,0x01,0x00,0x31,0x00,0xCF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_254_238_238[45] U8G_FONT_SECTION("fontpage_254_238_238") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEE,0xEE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x4A,0x40,0x7F,0xC0,0x04,0x00,0xFF,
+ 0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_254_242_242[45] U8G_FONT_SECTION("fontpage_254_242_242") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF2,0xF2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xE0,0x49,0x20,0x7F,0xE0,0x04,0x40,0x3F,
+ 0x80,0x05,0x00,0xFF,0xE0,0x30,0x80,0xDF,0x80,0x10,0x80,0x1F,0x80};
+const u8g_fntpgm_uint8_t fontpage_256_240_240[45] U8G_FONT_SECTION("fontpage_256_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF9,0x00,0x57,0xE0,0x56,0xA0,0x75,0x20,0x56,
+ 0xA0,0x77,0xE0,0x51,0x00,0x52,0xC0,0xFE,0x20,0x12,0x60,0x11,0xC0};
+const u8g_fntpgm_uint8_t fontpage_259_234_234[34] U8G_FONT_SECTION("fontpage_259_234_234") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEA,0xEA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x07,0x0B,0x0B,0x0C,0x02,0xFF,0x20,0xFE,0x82,0x82,0xFE,0x82,0xFE,0x82,0x82,
+ 0xFE,0x82};
+const u8g_fntpgm_uint8_t fontpage_267_205_205[45] U8G_FONT_SECTION("fontpage_267_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x91,0x00,0xF9,0xE0,0x8A,
+ 0x80,0xFC,0x40,0x90,0x00,0xFF,0xC0,0x4A,0x40,0x4A,0x40,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_272_204_204[45] U8G_FONT_SECTION("fontpage_272_204_204") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x40,0x00,0x80,0x00,0x10,0x00,0x2F,
+ 0xE0,0x60,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x23,0x80};
+const u8g_fntpgm_uint8_t fontpage_272_232_232[45] U8G_FONT_SECTION("fontpage_272_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,
+ 0x00,0xFF,0xE0,0x0A,0x40,0x12,0x80,0x31,0x00,0xD4,0x80,0x18,0x60};
+const u8g_fntpgm_uint8_t fontpage_273_171_171[45] U8G_FONT_SECTION("fontpage_273_171_171") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAB,0xAB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x80,0x20,0x80,0xFF,0xE0,0x14,0xA0,0x2C,
+ 0x80,0x77,0xE0,0xAD,0x40,0x25,0x40,0x24,0x80,0x29,0x40,0x36,0x20};
+const u8g_fntpgm_uint8_t fontpage_273_197_197[45] U8G_FONT_SECTION("fontpage_273_197_197") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0x9F,0xE0,0x51,0x00,0x31,0x00,0xD7,
+ 0xC0,0x12,0x00,0xFF,0xE0,0x0C,0x40,0x32,0x80,0xD1,0x00,0x18,0xE0};
+const u8g_fntpgm_uint8_t fontpage_273_221_221[45] U8G_FONT_SECTION("fontpage_273_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x51,0x00,0x7F,0xE0,0x11,0x00,0xF1,0x00,0x57,
+ 0xC0,0x84,0x00,0xFF,0xE0,0x14,0x80,0x33,0x00,0xD5,0x80,0x18,0x60};
+const u8g_fntpgm_uint8_t fontpage_274_135_135[45] U8G_FONT_SECTION("fontpage_274_135_135") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x00,0x27,0xE0,0xF8,0x00,0x17,0xC0,0x2C,
+ 0x40,0x77,0xC0,0xAC,0x40,0x27,0xC0,0x2C,0x40,0x33,0x80,0x2C,0x60};
+const u8g_fntpgm_uint8_t fontpage_275_210_210[45] U8G_FONT_SECTION("fontpage_275_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x00,0xFF,0x10,0x00,0x1F,0x00,0x22,0x00,0x7F,0xC0,0xA4,
+ 0x40,0x3F,0xC0,0x24,0x40,0x3F,0xC0,0x24,0x40,0x45,0x40,0x80,0x80};
+const u8g_fntpgm_uint8_t fontpage_276_136_136[45] U8G_FONT_SECTION("fontpage_276_136_136") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x10,0x80,0xFC,0x80,0x00,0x80,0x7F,
+ 0xE0,0x00,0x80,0x78,0x80,0x00,0x80,0x78,0x80,0x48,0x80,0x78,0x80};
+const u8g_fntpgm_uint8_t fontpage_276_138_138[45] U8G_FONT_SECTION("fontpage_276_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xC0,0xF2,0x40,0x02,0x40,0xF2,0x40,0x02,
+ 0x40,0xFF,0xC0,0x02,0x40,0xF2,0x40,0x92,0x60,0xF2,0x60,0x92,0x20};
+const u8g_fntpgm_uint8_t fontpage_276_152_152[45] U8G_FONT_SECTION("fontpage_276_152_152") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x00,0xF7,0xC0,0x00,0x40,0xF0,0x40,0x07,
+ 0xC0,0xF4,0x40,0x04,0x00,0xF4,0x00,0x94,0x20,0xF4,0x20,0x93,0xE0};
+const u8g_fntpgm_uint8_t fontpage_276_173_173[45] U8G_FONT_SECTION("fontpage_276_173_173") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAD,0xAD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0x80,0xF4,0x80,0x04,0x80,0xF4,0xE0,0x08,
+ 0x00,0xF7,0xC0,0x04,0x40,0xF2,0x80,0x91,0x00,0xF2,0x80,0x9C,0x60};
+const u8g_fntpgm_uint8_t fontpage_276_230_230[45] U8G_FONT_SECTION("fontpage_276_230_230") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE6,0xE6,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0xC0,0xF0,0xA0,0x0F,0xE0,0xF0,0x80,0x07,
+ 0x80,0xF2,0x80,0x02,0x80,0xF2,0x80,0x93,0xA0,0xFC,0x60,0x90,0x20};
+const u8g_fntpgm_uint8_t fontpage_277_141_141[45] U8G_FONT_SECTION("fontpage_277_141_141") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8D,0x8D,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xE0,0xF9,0x20,0x05,0x20,0xF5,0x20,0x02,
+ 0xE0,0xF4,0x40,0x03,0x00,0xF2,0xA0,0x96,0x20,0xFA,0x40,0x91,0xC0};
+const u8g_fntpgm_uint8_t fontpage_277_164_164[45] U8G_FONT_SECTION("fontpage_277_164_164") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA4,0xA4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xC0,0xF4,0x40,0x04,0x40,0xF7,0xC0,0x00,
+ 0x00,0xF7,0xC0,0x01,0x00,0xFF,0xE0,0x92,0x80,0xF4,0x40,0x98,0x20};
+const u8g_fntpgm_uint8_t fontpage_277_191_191[45] U8G_FONT_SECTION("fontpage_277_191_191") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x47,0xE0,0xF4,0x20,0x05,0x20,0xF7,0xA0,0x05,
+ 0x20,0xF7,0xE0,0x04,0x20,0xF7,0xA0,0x96,0xA0,0xF7,0xA0,0x98,0x60};
+const u8g_fntpgm_uint8_t fontpage_277_203_203[45] U8G_FONT_SECTION("fontpage_277_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0xFF,0xE0,0x01,0x00,0xF7,0xC0,0x01,
+ 0x00,0xFF,0xE0,0x04,0x40,0xF7,0xC0,0x94,0x40,0xF7,0xC0,0x94,0x40};
+const u8g_fntpgm_uint8_t fontpage_278_240_240[45] U8G_FONT_SECTION("fontpage_278_240_240") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x40,0xFF,0xE0,0x01,0x00,0xF7,0xC0,0x01,
+ 0x00,0xFF,0xE0,0x04,0xA0,0xFF,0xE0,0x94,0xA0,0xFE,0x40,0x95,0xA0};
+const u8g_fntpgm_uint8_t fontpage_279_128_128[45] U8G_FONT_SECTION("fontpage_279_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0xFF,0xE0,0x01,0x00,0xFF,0xE0,0x0A,
+ 0xA0,0xFF,0xE0,0x04,0x40,0xF7,0xC0,0x94,0x40,0xF7,0xC0,0x9C,0x60};
+const u8g_fntpgm_uint8_t fontpage_279_138_138[45] U8G_FONT_SECTION("fontpage_279_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x44,0x40,0xAE,0xA0,0x40,0x40,0xAE,0xA0,0xEA,
+ 0xE0,0x5E,0x40,0xA0,0xA0,0x1F,0xC0,0x69,0x00,0x06,0x00,0x79,0xE0};
+const u8g_fntpgm_uint8_t fontpage_281_199_199[45] U8G_FONT_SECTION("fontpage_281_199_199") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC7,0xC7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x88,0x00,0x5F,0xC0,0x22,0x40,0xFF,0x00,0x61,
+ 0xC0,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0xE1,0xC0};
+const u8g_fntpgm_uint8_t fontpage_283_221_221[45] U8G_FONT_SECTION("fontpage_283_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7B,0xE0,0x4A,0x00,0x4A,0x00,0x7B,0xE0,0x12,
+ 0x20,0x52,0x20,0x5A,0x20,0x53,0xE0,0x52,0x00,0x5E,0x00,0xE3,0xE0};
+const u8g_fntpgm_uint8_t fontpage_285_202_202[45] U8G_FONT_SECTION("fontpage_285_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x24,
+ 0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00};
+const u8g_fntpgm_uint8_t fontpage_285_223_223[45] U8G_FONT_SECTION("fontpage_285_223_223") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDF,0xDF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0xFA,0x00,0x23,0xE0,0xFD,0x20,0xA9,
+ 0x40,0xF9,0x00,0xA9,0x00,0xF9,0x80,0x22,0x80,0xFA,0x40,0x24,0x20};
+const u8g_fntpgm_uint8_t fontpage_285_248_248[45] U8G_FONT_SECTION("fontpage_285_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0xF8,0x80,0x23,0xE0,0xFA,0xA0,0xAA,
+ 0xA0,0xFA,0xA0,0xAB,0xE0,0xFA,0xA0,0x22,0xA0,0xFB,0xE0,0x22,0x20};
+const u8g_fntpgm_uint8_t fontpage_286_137_137[45] U8G_FONT_SECTION("fontpage_286_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x80,0x7D,0x40,0x11,0x00,0xFF,0xE0,0x11,
+ 0x00,0xFF,0x20,0x55,0x40,0x7C,0x80,0x54,0xA0,0xFF,0x60,0x12,0x20};
+const u8g_fntpgm_uint8_t fontpage_286_175_175[45] U8G_FONT_SECTION("fontpage_286_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xC0,0xFA,0x40,0x23,0xC0,0xF8,0x00,0xAF,
+ 0xE0,0xFA,0x40,0xAB,0xC0,0xFA,0x40,0x22,0xE0,0xFF,0x40,0x20,0x40};
+const u8g_fntpgm_uint8_t fontpage_286_184_184[45] U8G_FONT_SECTION("fontpage_286_184_184") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB8,0xB8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xFA,0x80,0x24,0x60,0xFB,0x80,0xAE,
+ 0x20,0xFA,0xA0,0xAE,0xA0,0xFA,0xA0,0x2E,0xA0,0xFA,0x20,0x2A,0x60};
+const u8g_fntpgm_uint8_t fontpage_286_201_201[45] U8G_FONT_SECTION("fontpage_286_201_201") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC9,0xC9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0xFF,0xE0,0x25,0x40,0xFF,0xC0,0xAD,
+ 0x40,0xFF,0xC0,0xA9,0x60,0xFF,0xE0,0x24,0x40,0xFA,0x40,0x20,0xC0};
+const u8g_fntpgm_uint8_t fontpage_287_209_209[45] U8G_FONT_SECTION("fontpage_287_209_209") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0xC0,0x27,0x00,0x24,0x00,0x07,0xE0,0xE4,
+ 0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x28,0x80,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_287_212_212[45] U8G_FONT_SECTION("fontpage_287_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x40,0x60,0x27,0x80,0x24,0x00,0x07,0xE0,0xE6,
+ 0x20,0x25,0x40,0x24,0x80,0x29,0x40,0x26,0x20,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_128_128[45] U8G_FONT_SECTION("fontpage_288_128_128") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x8F,0xC0,0x48,0x40,0x4F,0xC0,0x08,0x40,0xCF,
+ 0xC0,0x48,0x00,0x4B,0x40,0x48,0x80,0x4E,0x40,0xB0,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_159_159[45] U8G_FONT_SECTION("fontpage_288_159_159") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9F,0x9F,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x3F,0xE0,0x21,0x00,0x0F,0xE0,0xE9,
+ 0x20,0x2F,0xE0,0x23,0x80,0x25,0x40,0x29,0x20,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_163_163[45] U8G_FONT_SECTION("fontpage_288_163_163") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA3,0xA3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x2F,0xE0,0x25,0x40,0x07,0xC0,0xE5,
+ 0x40,0x27,0xC0,0x21,0x00,0x2F,0xE0,0x21,0x00,0x50,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_178_178[45] U8G_FONT_SECTION("fontpage_288_178_178") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xB2,0xB2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x43,0x00,0x24,0x80,0x27,0xE0,0x0C,0x80,0xF7,
+ 0xE0,0x24,0x80,0x27,0xE0,0x24,0x80,0x27,0xE0,0x54,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_203_203[45] U8G_FONT_SECTION("fontpage_288_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4F,0xE0,0x29,0x20,0x2F,0xE0,0x05,0x40,0xE7,
+ 0xC0,0x25,0x40,0x27,0xC0,0x21,0x00,0x2F,0xE0,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_212_212[45] U8G_FONT_SECTION("fontpage_288_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x41,0x00,0x27,0xC0,0x21,0x00,0x0F,0xE0,0xE2,
+ 0x80,0x2F,0xE0,0x21,0x00,0x2F,0xE0,0x21,0x00,0x51,0x00,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_288_248_248[45] U8G_FONT_SECTION("fontpage_288_248_248") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x4E,0xE0,0x2A,0xA0,0x2E,0xE0,0x08,0x80,0xEA,
+ 0xA0,0x2F,0xE0,0x22,0x80,0x2F,0xE0,0x22,0x40,0x54,0x20,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_289_132_132[45] U8G_FONT_SECTION("fontpage_289_132_132") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x9F,0xC0,0x55,0x40,0x5F,0xC0,0x00,0x00,0xFF,
+ 0xE0,0x28,0x80,0x2F,0xA0,0x27,0x40,0x2A,0x80,0x52,0x40,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_289_138_138[45] U8G_FONT_SECTION("fontpage_289_138_138") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8A,0x8A,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x42,0x00,0x2F,0xC0,0x28,0x40,0x1F,0xE0,0xF4,
+ 0xA0,0x29,0x40,0x3F,0xE0,0x22,0x00,0x27,0xC0,0x58,0xC0,0x8F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_289_232_232[45] U8G_FONT_SECTION("fontpage_289_232_232") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE8,0xE8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0xE0,0xFF,0x20,0x45,0x20,0x29,0x40,0xFF,
+ 0x80,0x01,0x40,0x7D,0x20,0x45,0x20,0x45,0xA0,0x7D,0x40,0x45,0x00};
+const u8g_fntpgm_uint8_t fontpage_291_203_203[45] U8G_FONT_SECTION("fontpage_291_203_203") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCB,0xCB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x2A,0xA0,0xAF,0xE0,0x71,0x00,0xFF,
+ 0xE0,0x22,0x80,0x77,0xE0,0x69,0x00,0xA7,0xE0,0xA1,0x00,0x21,0x00};
+const u8g_fntpgm_uint8_t fontpage_291_205_205[45] U8G_FONT_SECTION("fontpage_291_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x24,0x80,0x3F,
+ 0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_291_207_207[45] U8G_FONT_SECTION("fontpage_291_207_207") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCF,0xCF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,
+ 0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0};
+const u8g_fntpgm_uint8_t fontpage_291_221_221[45] U8G_FONT_SECTION("fontpage_291_221_221") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDD,0xDD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x20,0x80,0x50,0x80,0x88,0x80,0x78,0x80,0x27,
+ 0xE0,0xF8,0x80,0x20,0x80,0xA8,0x80,0x70,0x80,0x38,0x80,0xC0,0x80};
+const u8g_fntpgm_uint8_t fontpage_292_149_149[45] U8G_FONT_SECTION("fontpage_292_149_149") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x95,0x95,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x27,0xC0,0x31,0x40,0x49,0x40,0xF9,0x40,0x21,
+ 0x40,0xFF,0xC0,0x22,0x40,0xAA,0x40,0x72,0x40,0x3A,0x40,0xC7,0xE0};
+const u8g_fntpgm_uint8_t fontpage_294_175_175[45] U8G_FONT_SECTION("fontpage_294_175_175") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAF,0xAF,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x40,0x57,0xE0,0x8A,0x40,0x7A,0x40,0x27,
+ 0xE0,0xF8,0x00,0x23,0xE0,0xAA,0x20,0x73,0xE0,0x3A,0x20,0xE3,0xE0};
+const u8g_fntpgm_uint8_t fontpage_294_245_245[45] U8G_FONT_SECTION("fontpage_294_245_245") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF5,0xF5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2C,0x80,0x25,0xE0,0x54,0xA0,0xFB,0xE0,0x2C,
+ 0xA0,0xF7,0xE0,0x24,0x80,0xB7,0xE0,0x6C,0x80,0x34,0x80,0xCB,0xE0};
+const u8g_fntpgm_uint8_t fontpage_298_247_247[45] U8G_FONT_SECTION("fontpage_298_247_247") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF7,0xF7,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0x3F,0x80,0x20,0x00,0x3F,0x00,0x20,0x00,0x3F,
+ 0x00,0x20,0x00,0xFF,0xC0,0x24,0x80,0x23,0x00,0x29,0x00,0x30,0xC0};
+const u8g_fntpgm_uint8_t fontpage_299_137_137[45] U8G_FONT_SECTION("fontpage_299_137_137") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x89,0x89,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x8A,0x20,0xFB,0xE0,0x8A,0x20,0xFB,
+ 0xE0,0x82,0x20,0xBF,0xA0,0x8A,0x20,0x92,0x20,0xA2,0x20,0x86,0xE0};
+const u8g_fntpgm_uint8_t fontpage_299_139_139[45] U8G_FONT_SECTION("fontpage_299_139_139") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8B,0x8B,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x8A,0x20,0xFB,0xE0,0x8A,0x20,0xFB,
+ 0xE0,0x80,0x20,0x9F,0x20,0x8A,0x20,0xBF,0xA0,0x8A,0x20,0x92,0xE0};
+const u8g_fntpgm_uint8_t fontpage_299_147_147[45] U8G_FONT_SECTION("fontpage_299_147_147") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x93,0x93,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x8A,0x20,0xFB,0xE0,0x8A,0x20,0xFB,
+ 0xE0,0x9F,0x20,0x91,0x20,0x9F,0x20,0x91,0x20,0x9F,0x20,0x80,0xE0};
+const u8g_fntpgm_uint8_t fontpage_299_220_220[45] U8G_FONT_SECTION("fontpage_299_220_220") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDC,0xDC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFB,0xE0,0x8A,0x20,0xFB,0xE0,0x8A,0x20,0xF5,
+ 0xE0,0xAA,0xA0,0xBB,0xA0,0xAA,0xA0,0xBB,0xA0,0x8A,0x20,0xB2,0x60};
+const u8g_fntpgm_uint8_t fontpage_300_205_205[45] U8G_FONT_SECTION("fontpage_300_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF2,0x00,0x93,0xE0,0xA6,0x40,0xC1,0x80,0xA6,
+ 0x60,0x91,0x00,0x97,0xE0,0xD5,0x00,0xAF,0xE0,0x81,0x00,0x81,0x00};
+const u8g_fntpgm_uint8_t fontpage_300_228_228[45] U8G_FONT_SECTION("fontpage_300_228_228") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE4,0xE4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF1,0x00,0x92,0x80,0xA4,0x40,0xCB,0xA0,0xA1,
+ 0x00,0x9F,0xE0,0x91,0x00,0xE5,0x40,0x89,0x20,0x91,0x20,0x83,0x00};
+const u8g_fntpgm_uint8_t fontpage_301_142_142[45] U8G_FONT_SECTION("fontpage_301_142_142") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8E,0x8E,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF8,0x80,0x98,0xA0,0xAE,0xC0,0xC8,0xA0,0xAE,
+ 0xE0,0x92,0x00,0x97,0xC0,0xF4,0x40,0xA7,0xC0,0x84,0x40,0x87,0xC0};
+const u8g_fntpgm_uint8_t fontpage_301_217_217[45] U8G_FONT_SECTION("fontpage_301_217_217") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD9,0xD9,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x2A,0x80,0x3F,0xE0,0x6A,0x80,0xBF,0xC0,0x2A,
+ 0x80,0x3F,0xE0,0x00,0x00,0x3F,0xC0,0x08,0x80,0x07,0x00,0x78,0xE0};
+const u8g_fntpgm_uint8_t fontpage_301_226_226[45] U8G_FONT_SECTION("fontpage_301_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x80,0xFD,0x40,0x55,0xE0,0x6F,0x40,0x55,
+ 0xE0,0x7D,0x40,0x21,0x40,0xFD,0xE0,0xAD,0x40,0xB5,0x40,0x8D,0xE0};
+const u8g_fntpgm_uint8_t fontpage_301_251_251[45] U8G_FONT_SECTION("fontpage_301_251_251") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFB,0xFB,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0xA4,0xA0,0x7F,
+ 0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x04,0x20,0x07,0xE0};
+const u8g_fntpgm_uint8_t fontpage_302_210_210[45] U8G_FONT_SECTION("fontpage_302_210_210") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD2,0xD2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,
+ 0x00,0xFF,0xE0,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80};
+const u8g_fntpgm_uint8_t fontpage_302_222_222[45] U8G_FONT_SECTION("fontpage_302_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x0A,0x00,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0x0A,
+ 0x00,0x7B,0xC0,0x0A,0x00,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0x0A,0x00};
+const u8g_fntpgm_uint8_t fontpage_302_226_226[45] U8G_FONT_SECTION("fontpage_302_226_226") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xE2,0xE2,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0A,0x0B,0x16,0x0C,0x01,0xFF,0xFF,0xC0,0x08,0x00,0x10,0x00,0xFF,0xC0,0x92,
+ 0x40,0x9E,0x40,0x92,0x40,0x9E,0x40,0x92,0x40,0xFF,0xC0,0x80,0x40};
+const u8g_fntpgm_uint8_t fontpage_304_133_133[45] U8G_FONT_SECTION("fontpage_304_133_133") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x85,0x85,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x07,0xE0,0xF9,0x00,0x27,0xE0,0x24,0x20,0x27,
+ 0xE0,0x24,0x20,0x3F,0xE0,0xC4,0x20,0x07,0xE0,0x02,0x40,0x0C,0x20};
+const u8g_fntpgm_uint8_t fontpage_304_144_144[45] U8G_FONT_SECTION("fontpage_304_144_144") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xFF,0xE0,0x91,0x00,0x67,0xC0,0x24,0x40,0xFF,
+ 0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x27,0xC0,0x22,0x80,0xEC,0x60};
+const u8g_fntpgm_uint8_t fontpage_304_205_205[45] U8G_FONT_SECTION("fontpage_304_205_205") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCD,0xCD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x23,0xE0,0xFC,0x80,0xA7,0xE0,0x3A,0x20,0x4B,
+ 0xE0,0xB2,0x20,0x4B,0xE0,0xFE,0x20,0x4B,0xE0,0x79,0x40,0x4E,0x20};
+const u8g_fntpgm_uint8_t fontpage_304_222_222[45] U8G_FONT_SECTION("fontpage_304_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xAB,0xE0,0x70,0x80,0x23,0xE0,0xFA,0x20,0x73,
+ 0xE0,0xAA,0x20,0x23,0xE0,0xFA,0x20,0x23,0xE0,0x51,0x40,0x8E,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_168_168[45] U8G_FONT_SECTION("fontpage_305_168_168") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xC0,0x21,0x40,0x2E,0x40,0x24,0x40,0x3F,
+ 0x40,0x35,0x40,0x3F,0x40,0x25,0x40,0x27,0x60,0x5C,0xA0,0x88,0x20};
+const u8g_fntpgm_uint8_t fontpage_305_253_253[45] U8G_FONT_SECTION("fontpage_305_253_253") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFD,0xFD,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x22,0x00,0x52,0x00,0xAB,0xE0,0xFC,0x20,0x8B,
+ 0xA0,0xFA,0xA0,0x8B,0xA0,0xFA,0x40,0x92,0x20,0xAA,0x20,0xC9,0xE0};
+const u8g_fntpgm_uint8_t fontpage_306_152_152[45] U8G_FONT_SECTION("fontpage_306_152_152") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x98,0x98,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x21,0x00,0x52,0x80,0xAC,0x40,0xF8,0x20,0x8F,
+ 0xC0,0xF9,0x00,0x8F,0xE0,0xF9,0x00,0x95,0x40,0xB9,0x20,0xCB,0x00};
+const u8g_fntpgm_uint8_t fontpage_307_172_172[45] U8G_FONT_SECTION("fontpage_307_172_172") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xAC,0xAC,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x3F,0xC0,0x24,0x00,0x3F,0x80,0x24,0x00,0x3F,
+ 0x80,0x24,0x00,0x3F,0xE0,0x00,0x20,0x55,0x20,0x4A,0xA0,0x8A,0xC0};
+const u8g_fntpgm_uint8_t fontpage_308_197_197[45] U8G_FONT_SECTION("fontpage_308_197_197") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC5,0xC5,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x7F,0xE0,0x54,0x00,0x7D,0xC0,0x55,0x40,0x7D,
+ 0xC0,0x54,0x00,0x7F,0xE0,0x5E,0xA0,0xAF,0xE0,0xAC,0x00,0x17,0xE0};
+const u8g_fntpgm_uint8_t fontpage_309_212_212[45] U8G_FONT_SECTION("fontpage_309_212_212") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD4,0xD4,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x79,0x40,0x6B,0xE0,0x5A,0xA0,0xFF,0xE0,0x86,
+ 0xA0,0x7F,0xE0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x79,0x80,0x4F,0xE0};
+const u8g_fntpgm_uint8_t fontpage_309_216_216[45] U8G_FONT_SECTION("fontpage_309_216_216") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x00,0x00,0x1F,0x00,0x11,
+ 0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x40,0xC0};
+const u8g_fntpgm_uint8_t fontpage_317_195_195[45] U8G_FONT_SECTION("fontpage_317_195_195") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x11,0x00,0xFF,0xE0,0x11,0x00,0x1F,0x00,0x00,
+ 0x00,0xFF,0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0xC0,0x60};
+const u8g_fntpgm_uint8_t fontpage_317_222_222[45] U8G_FONT_SECTION("fontpage_317_222_222") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xDE,0xDE,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0xF8,0x80,0xA8,0x80,0xF8,0xE0,0xA8,0x80,0xF8,
+ 0x80,0x23,0xE0,0xFA,0x20,0x22,0x20,0xFA,0x20,0x52,0x20,0xAB,0xE0};
+const u8g_fntpgm_uint8_t fontpage_318_202_202[45] U8G_FONT_SECTION("fontpage_318_202_202") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xCA,0xCA,0x00,0x0A,0xFF,0x00,
+ 0x00,0x0B,0x0B,0x16,0x0C,0x00,0xFF,0x04,0x00,0xFF,0xE0,0x0A,0x40,0xF5,0x80,0x55,
+ 0x40,0x95,0xA0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xC0,0x80};
+const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510_154_154") = {
+ 0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x08,0x00,0x00,
+ 0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0};
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
+static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
+ FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
+ FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
+ FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
+ FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
+ FONTDATA_ITEM(156, 166, 166, fontpage_156_166_166), // '並' -- '並'
+ FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
+ FONTDATA_ITEM(156, 187, 187, fontpage_156_187_187), // '主' -- '主'
+ FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
+ FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
+ FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
+ FONTDATA_ITEM(157, 228, 228, fontpage_157_228_228), // '令' -- '令'
+ FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
+ FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
+ FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
+ FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
+ FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
+ FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
+ FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
+ FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
+ FONTDATA_ITEM(160, 139, 139, fontpage_160_139_139), // '個' -- '個'
+ FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
+ FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
+ FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
+ FONTDATA_ITEM(160, 245, 245, fontpage_160_245_245), // '偵' -- '偵'
+ FONTDATA_ITEM(161, 153, 153, fontpage_161_153_153), // '備' -- '備'
+ FONTDATA_ITEM(161, 179, 179, fontpage_161_179_179), // '傳' -- '傳'
+ FONTDATA_ITEM(161, 190, 190, fontpage_161_190_190), // '傾' -- '傾'
+ FONTDATA_ITEM(162, 178, 178, fontpage_162_178_178), // '儲' -- '儲'
+ FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
+ FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
+ FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
+ FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
+ FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
+ FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
+ FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
+ FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
+ FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
+ FONTDATA_ITEM(163, 250, 250, fontpage_163_250_250), // '出' -- '出'
+ FONTDATA_ITEM(164, 134, 134, fontpage_164_134_134), // '分' -- '分'
+ FONTDATA_ITEM(164, 151, 151, fontpage_164_151_151), // '列' -- '列'
+ FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
+ FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
+ FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
+ FONTDATA_ITEM(164, 245, 245, fontpage_164_245_245), // '創' -- '創'
+ FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
+ FONTDATA_ITEM(165, 160, 160, fontpage_165_160_160), // '加' -- '加'
+ FONTDATA_ITEM(165, 213, 213, fontpage_165_213_213), // '動' -- '動'
+ FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
+ FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
+ FONTDATA_ITEM(166, 212, 212, fontpage_166_212_212), // '協' -- '協'
+ FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
+ FONTDATA_ITEM(166, 240, 240, fontpage_166_240_240), // '印' -- '印'
+ FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
+ FONTDATA_ITEM(166, 251, 251, fontpage_166_251_251), // '卻' -- '卻'
+ FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
+ FONTDATA_ITEM(167, 205, 205, fontpage_167_205_205), // '反' -- '反'
+ FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
+ FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
+ FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
+ FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
+ FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
+ FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
+ FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
+ FONTDATA_ITEM(170, 223, 223, fontpage_170_223_223), // '啟' -- '啟'
+ FONTDATA_ITEM(171, 174, 174, fontpage_171_174_174), // '單' -- '單'
+ FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
+ FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
+ FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
+ FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
+ FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
+ FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
+ FONTDATA_ITEM(174, 150, 150, fontpage_174_150_150), // '圖' -- '圖'
+ FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
+ FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
+ FONTDATA_ITEM(175, 247, 247, fontpage_175_247_247), // '執' -- '執'
+ FONTDATA_ITEM(176, 202, 202, fontpage_176_202_202), // '塊' -- '塊'
+ FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
+ FONTDATA_ITEM(177, 138, 138, fontpage_177_138_138), // '墊' -- '墊'
+ FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
+ FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
+ FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // '夠' -- '夠'
+ FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
+ FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
+ FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
+ FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
+ FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // '媒' -- '媒'
+ FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
+ FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
+ FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
+ FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
+ FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
+ FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
+ FONTDATA_ITEM(183, 185, 185, fontpage_183_185_185), // '容' -- '容'
+ FONTDATA_ITEM(184, 141, 141, fontpage_184_141_141), // '對' -- '對'
+ FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
+ FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
+ FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
+ FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
+ FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
+ FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
+ FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
+ FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
+ FONTDATA_ITEM(189, 226, 226, fontpage_189_226_226), // '廢' -- '廢'
+ FONTDATA_ITEM(189, 250, 250, fontpage_189_250_250), // '建' -- '建'
+ FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
+ FONTDATA_ITEM(191, 133, 133, fontpage_191_133_133), // '待' -- '待'
+ FONTDATA_ITEM(191, 140, 140, fontpage_191_140_140), // '後' -- '後'
+ FONTDATA_ITEM(191, 145, 145, fontpage_191_145_145), // '徑' -- '徑'
+ FONTDATA_ITEM(191, 158, 158, fontpage_191_158_158), // '從' -- '從'
+ FONTDATA_ITEM(191, 169, 169, fontpage_191_169_169), // '復' -- '復'
+ FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
+ FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
+ FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
+ FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
+ FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
+ FONTDATA_ITEM(195, 182, 182, fontpage_195_182_182), // '憶' -- '憶'
+ FONTDATA_ITEM(195, 201, 201, fontpage_195_201_201), // '應' -- '應'
+ FONTDATA_ITEM(196, 144, 144, fontpage_196_144_144), // '成' -- '成'
+ FONTDATA_ITEM(196, 182, 182, fontpage_196_182_182), // '戶' -- '戶'
+ FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
+ FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
+ FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
+ FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
+ FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
+ FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
+ FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
+ FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
+ FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
+ FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
+ FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
+ FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
+ FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
+ FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
+ FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
+ FONTDATA_ITEM(199, 219, 219, fontpage_199_219_219), // '換' -- '換'
+ FONTDATA_ITEM(201, 199, 199, fontpage_201_199_199), // '擇' -- '擇'
+ FONTDATA_ITEM(201, 202, 203, fontpage_201_202_203), // '擊' -- '擋'
+ FONTDATA_ITEM(201, 224, 224, fontpage_201_224_224), // '擠' -- '擠'
+ FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
+ FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
+ FONTDATA_ITEM(202, 215, 215, fontpage_202_215_215), // '敗' -- '敗'
+ FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
+ FONTDATA_ITEM(202, 248, 248, fontpage_202_248_248), // '數' -- '數'
+ FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
+ FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
+ FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
+ FONTDATA_ITEM(203, 183, 183, fontpage_203_183_183), // '斷' -- '斷'
+ FONTDATA_ITEM(203, 188, 188, fontpage_203_188_188), // '於' -- '於'
+ FONTDATA_ITEM(204, 135, 135, fontpage_204_135_135), // '昇' -- '昇'
+ FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
+ FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
+ FONTDATA_ITEM(204, 194, 194, fontpage_204_194_194), // '時' -- '時'
+ FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
+ FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
+ FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
+ FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
+ FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
+ FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
+ FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
+ FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
+ FONTDATA_ITEM(209, 157, 157, fontpage_209_157_157), // '條' -- '條'
+ FONTDATA_ITEM(209, 196, 196, fontpage_209_196_196), // '棄' -- '棄'
+ FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
+ FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
+ FONTDATA_ITEM(212, 223, 223, fontpage_212_223_223), // '機' -- '機'
+ FONTDATA_ITEM(213, 162, 162, fontpage_213_162_162), // '檢' -- '檢'
+ FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
+ FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
+ FONTDATA_ITEM(214, 248, 248, fontpage_214_248_248), // '歸' -- '歸'
+ FONTDATA_ITEM(215, 188, 188, fontpage_215_188_188), // '殼' -- '殼'
+ FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
+ FONTDATA_ITEM(217, 146, 146, fontpage_217_146_146), // '沒' -- '沒'
+ FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
+ FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
+ FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
+ FONTDATA_ITEM(220, 172, 172, fontpage_220_172_172), // '測' -- '測'
+ FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
+ FONTDATA_ITEM(221, 150, 150, fontpage_221_150_150), // '準' -- '準'
+ FONTDATA_ITEM(221, 171, 171, fontpage_221_171_171), // '溫' -- '溫'
+ FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
+ FONTDATA_ITEM(226, 161, 161, fontpage_226_161_161), // '無' -- '無'
+ FONTDATA_ITEM(227, 177, 177, fontpage_227_177_177), // '熱' -- '熱'
+ FONTDATA_ITEM(227, 200, 200, fontpage_227_200_200), // '燈' -- '燈'
+ FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
+ FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
+ FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
+ FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
+ FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // '界' -- '界'
+ FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
+ FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
+ FONTDATA_ITEM(237, 227, 227, fontpage_237_227_227), // '監' -- '監'
+ FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
+ FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
+ FONTDATA_ITEM(240, 141, 141, fontpage_240_141_141), // '砍' -- '砍'
+ FONTDATA_ITEM(241, 186, 186, fontpage_241_186_186), // '確' -- '確'
+ FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
+ FONTDATA_ITEM(244, 205, 205, fontpage_244_205_205), // '積' -- '積'
+ FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
+ FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
+ FONTDATA_ITEM(247, 161, 161, fontpage_247_161_161), // '管' -- '管'
+ FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
+ FONTDATA_ITEM(249, 251, 251, fontpage_249_251_251), // '系' -- '系'
+ FONTDATA_ITEM(250, 133, 133, fontpage_250_133_133), // '紅' -- '紅'
+ FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
+ FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
+ FONTDATA_ITEM(250, 176, 176, fontpage_250_176_176), // '細' -- '細'
+ FONTDATA_ITEM(250, 194, 194, fontpage_250_194_194), // '終' -- '終'
+ FONTDATA_ITEM(250, 241, 242, fontpage_250_241_242), // '統' -- '絲'
+ FONTDATA_ITEM(251, 160, 160, fontpage_251_160_160), // '綠' -- '綠'
+ FONTDATA_ITEM(251, 178, 178, fontpage_251_178_178), // '網' -- '網'
+ FONTDATA_ITEM(251, 210, 210, fontpage_251_210_210), // '緒' -- '緒'
+ FONTDATA_ITEM(251, 218, 218, fontpage_251_218_218), // '線' -- '線'
+ FONTDATA_ITEM(251, 232, 232, fontpage_251_232_232), // '編' -- '編'
+ FONTDATA_ITEM(252, 174, 174, fontpage_252_174_174), // '縮' -- '縮'
+ FONTDATA_ITEM(252, 189, 189, fontpage_252_189_189), // '總' -- '總'
+ FONTDATA_ITEM(252, 252, 252, fontpage_252_252_252), // '繼' -- '繼'
+ FONTDATA_ITEM(253, 140, 140, fontpage_253_140_140), // '續' -- '續'
+ FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
+ FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
+ FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
+ FONTDATA_ITEM(256, 240, 240, fontpage_256_240_240), // '聰' -- '聰'
+ FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
+ FONTDATA_ITEM(267, 205, 205, fontpage_267_205_205), // '藍' -- '藍'
+ FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
+ FONTDATA_ITEM(272, 232, 232, fontpage_272_232_232), // '表' -- '表'
+ FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
+ FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
+ FONTDATA_ITEM(273, 221, 221, fontpage_273_221_221), // '裝' -- '裝'
+ FONTDATA_ITEM(274, 135, 135, fontpage_274_135_135), // '複' -- '複'
+ FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
+ FONTDATA_ITEM(276, 136, 136, fontpage_276_136_136), // '計' -- '計'
+ FONTDATA_ITEM(276, 138, 138, fontpage_276_138_138), // '訊' -- '訊'
+ FONTDATA_ITEM(276, 152, 152, fontpage_276_152_152), // '記' -- '記'
+ FONTDATA_ITEM(276, 173, 173, fontpage_276_173_173), // '設' -- '設'
+ FONTDATA_ITEM(276, 230, 230, fontpage_276_230_230), // '試' -- '試'
+ FONTDATA_ITEM(277, 141, 141, fontpage_277_141_141), // '認' -- '認'
+ FONTDATA_ITEM(277, 164, 164, fontpage_277_164_164), // '誤' -- '誤'
+ FONTDATA_ITEM(277, 191, 191, fontpage_277_191_191), // '調' -- '調'
+ FONTDATA_ITEM(277, 203, 203, fontpage_277_203_203), // '請' -- '請'
+ FONTDATA_ITEM(278, 240, 240, fontpage_278_240_240), // '議' -- '議'
+ FONTDATA_ITEM(279, 128, 128, fontpage_279_128_128), // '讀' -- '讀'
+ FONTDATA_ITEM(279, 138, 138, fontpage_279_138_138), // '變' -- '變'
+ FONTDATA_ITEM(281, 199, 199, fontpage_281_199_199), // '資' -- '資'
+ FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
+ FONTDATA_ITEM(285, 202, 202, fontpage_285_202_202), // '車' -- '車'
+ FONTDATA_ITEM(285, 223, 223, fontpage_285_223_223), // '軟' -- '軟'
+ FONTDATA_ITEM(285, 248, 248, fontpage_285_248_248), // '軸' -- '軸'
+ FONTDATA_ITEM(286, 137, 137, fontpage_286_137_137), // '載' -- '載'
+ FONTDATA_ITEM(286, 175, 175, fontpage_286_175_175), // '輯' -- '輯'
+ FONTDATA_ITEM(286, 184, 184, fontpage_286_184_184), // '輸' -- '輸'
+ FONTDATA_ITEM(286, 201, 201, fontpage_286_201_201), // '轉' -- '轉'
+ FONTDATA_ITEM(287, 209, 209, fontpage_287_209_209), // '近' -- '近'
+ FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
+ FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
+ FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
+ FONTDATA_ITEM(288, 163, 163, fontpage_288_163_163), // '連' -- '連'
+ FONTDATA_ITEM(288, 178, 178, fontpage_288_178_178), // '進' -- '進'
+ FONTDATA_ITEM(288, 203, 203, fontpage_288_203_203), // '運' -- '運'
+ FONTDATA_ITEM(288, 212, 212, fontpage_288_212_212), // '達' -- '達'
+ FONTDATA_ITEM(288, 248, 248, fontpage_288_248_248), // '選' -- '選'
+ FONTDATA_ITEM(289, 132, 132, fontpage_289_132_132), // '還' -- '還'
+ FONTDATA_ITEM(289, 138, 138, fontpage_289_138_138), // '邊' -- '邊'
+ FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
+ FONTDATA_ITEM(291, 203, 203, fontpage_291_203_203), // '釋' -- '釋'
+ FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
+ FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
+ FONTDATA_ITEM(291, 221, 221, fontpage_291_221_221), // '針' -- '針'
+ FONTDATA_ITEM(292, 149, 149, fontpage_292_149_149), // '鈕' -- '鈕'
+ FONTDATA_ITEM(294, 175, 175, fontpage_294_175_175), // '錯' -- '錯'
+ FONTDATA_ITEM(294, 245, 245, fontpage_294_245_245), // '鍵' -- '鍵'
+ FONTDATA_ITEM(298, 247, 247, fontpage_298_247_247), // '長' -- '長'
+ FONTDATA_ITEM(299, 137, 137, fontpage_299_137_137), // '閉' -- '閉'
+ FONTDATA_ITEM(299, 139, 139, fontpage_299_139_139), // '開' -- '開'
+ FONTDATA_ITEM(299, 147, 147, fontpage_299_147_147), // '間' -- '間'
+ FONTDATA_ITEM(299, 220, 220, fontpage_299_220_220), // '關' -- '關'
+ FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
+ FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
+ FONTDATA_ITEM(301, 142, 142, fontpage_301_142_142), // '階' -- '階'
+ FONTDATA_ITEM(301, 217, 217, fontpage_301_217_217), // '雙' -- '雙'
+ FONTDATA_ITEM(301, 226, 226, fontpage_301_226_226), // '離' -- '離'
+ FONTDATA_ITEM(301, 251, 251, fontpage_301_251_251), // '電' -- '電'
+ FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
+ FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
+ FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
+ FONTDATA_ITEM(304, 133, 133, fontpage_304_133_133), // '項' -- '項'
+ FONTDATA_ITEM(304, 144, 144, fontpage_304_144_144), // '預' -- '預'
+ FONTDATA_ITEM(304, 205, 205, fontpage_304_205_205), // '額' -- '額'
+ FONTDATA_ITEM(304, 222, 222, fontpage_304_222_222), // '類' -- '類'
+ FONTDATA_ITEM(305, 168, 168, fontpage_305_168_168), // '風' -- '風'
+ FONTDATA_ITEM(305, 253, 253, fontpage_305_253_253), // '飽' -- '飽'
+ FONTDATA_ITEM(306, 152, 152, fontpage_306_152_152), // '餘' -- '餘'
+ FONTDATA_ITEM(307, 172, 172, fontpage_307_172_172), // '馬' -- '馬'
+ FONTDATA_ITEM(308, 197, 197, fontpage_308_197_197), // '驅' -- '驅'
+ FONTDATA_ITEM(309, 212, 212, fontpage_309_212_212), // '體' -- '體'
+ FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
+ FONTDATA_ITEM(317, 195, 195, fontpage_317_195_195), // '黃' -- '黃'
+ FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
+ FONTDATA_ITEM(318, 202, 202, fontpage_318_202_202), // '齊' -- '齊'
+ FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
+};
diff --git a/Marlin/src/lcd/dogm/lcdprint_u8g.cpp b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp
new file mode 100644
index 0000000..a85dc9f
--- /dev/null
+++ b/Marlin/src/lcd/dogm/lcdprint_u8g.cpp
@@ -0,0 +1,56 @@
+/**
+ * @file lcdprint_u8g.cpp
+ * @brief LCD print api for u8glib
+ * @author Yunhui Fu (yhfudev@gmail.com)
+ * @version 1.0
+ * @date 2016-08-19
+ * @copyright GPL/BSD
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include "marlinui_DOGM.h"
+
+#include "../marlinui.h"
+#include "../../MarlinCore.h"
+
+#include "../fontutils.h"
+#include "u8g_fontutf8.h"
+#include "../lcdprint.h"
+
+int lcd_glyph_height() { return u8g_GetFontBBXHeight(u8g.getU8g()); }
+
+void lcd_moveto(const lcd_uint_t col, const lcd_uint_t row) { u8g.setPrintPos(col, row); }
+
+void lcd_put_int(const int i) { u8g.print(i); }
+
+// return < 0 on error
+// return the advanced pixels
+int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
+ if (c < 256) {
+ u8g.print((char)c);
+ return u8g_GetFontBBXWidth(u8g.getU8g());
+ }
+ u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
+ ret = uxg_DrawWchar(u8g.getU8g(), x, y, c, max_length);
+ u8g.setPrintPos(x + ret, y);
+ return ret;
+}
+
+int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length) {
+ u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
+ ret = uxg_DrawUtf8Str(u8g.getU8g(), x, y, utf8_str, max_length);
+ u8g.setPrintPos(x + ret, y);
+ return ret;
+}
+
+int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
+ u8g_uint_t x = u8g.getPrintCol(), y = u8g.getPrintRow(),
+ ret = uxg_DrawUtf8StrP(u8g.getU8g(), x, y, utf8_str_P, max_length);
+ u8g.setPrintPos(x + ret, y);
+ return ret;
+}
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp
new file mode 100644
index 0000000..c7c5908
--- /dev/null
+++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp
@@ -0,0 +1,707 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * lcd/dogm/marlinui_DOGM.h
+ *
+ * Implementation of the LCD display routines for a DOGM128 graphic display.
+ * by STB for ErikZalm/Marlin. Common LCD 128x64 pixel graphic displays.
+ *
+ * Demonstrator: https://www.reprap.org/wiki/STB_Electronics
+ * License: https://opensource.org/licenses/BSD-3-Clause
+ *
+ * With the use of:
+ * u8glib by Oliver Kraus
+ * https://github.com/olikraus/U8glib_Arduino
+ * License: https://opensource.org/licenses/BSD-3-Clause
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include "marlinui_DOGM.h"
+#include "u8g_fontutf8.h"
+
+#if ENABLED(SHOW_BOOTSCREEN)
+ #include "dogm_Bootscreen.h"
+#endif
+
+#include "../lcdprint.h"
+#include "../fontutils.h"
+#include "../../libs/numtostr.h"
+#include "../marlinui.h"
+
+#include "../../sd/cardreader.h"
+#include "../../module/temperature.h"
+#include "../../module/printcounter.h"
+#include "../../MarlinCore.h"
+
+#if ENABLED(SDSUPPORT)
+ #include "../../libs/duration_t.h"
+#endif
+
+#if ENABLED(AUTO_BED_LEVELING_UBL)
+ #include "../../feature/bedlevel/bedlevel.h"
+#endif
+
+/**
+ * Include all needed font files
+ * (See https://marlinfw.org/docs/development/fonts.html)
+ */
+#include "fontdata/fontdata_ISO10646_1.h"
+#if ENABLED(USE_SMALL_INFOFONT)
+ #include "fontdata/fontdata_6x9_marlin.h"
+ #define FONT_STATUSMENU_NAME u8g_font_6x9
+#else
+ #define FONT_STATUSMENU_NAME MENU_FONT_NAME
+#endif
+
+U8G_CLASS u8g(U8G_PARAM);
+
+#include LANGUAGE_DATA_INCL(LCD_LANGUAGE)
+
+#if HAS_LCD_CONTRAST
+
+ int16_t MarlinUI::contrast = DEFAULT_LCD_CONTRAST;
+
+ void MarlinUI::set_contrast(const int16_t value) {
+ contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX);
+ u8g.setContrast(contrast);
+ }
+
+#endif
+
+void MarlinUI::set_font(const MarlinFont font_nr) {
+ static char currentfont = 0;
+ if (font_nr != currentfont) {
+ switch ((currentfont = font_nr)) {
+ case FONT_STATUSMENU : u8g.setFont(FONT_STATUSMENU_NAME); break;
+ case FONT_EDIT : u8g.setFont(EDIT_FONT_NAME); break;
+ default:
+ case FONT_MENU : u8g.setFont(MENU_FONT_NAME); break;
+ }
+ }
+}
+
+bool MarlinUI::detected() { return true; }
+
+#if ENABLED(SHOW_BOOTSCREEN)
+
+ #if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
+ // Draws a slice of a particular frame of the custom bootscreen, without the u8g loop
+ void MarlinUI::draw_custom_bootscreen(const uint8_t frame/*=0*/) {
+ constexpr u8g_uint_t left = u8g_uint_t((LCD_PIXEL_WIDTH - (CUSTOM_BOOTSCREEN_BMPWIDTH)) / 2),
+ top = u8g_uint_t(CUSTOM_BOOTSCREEN_Y);
+ #if ENABLED(CUSTOM_BOOTSCREEN_INVERTED)
+ constexpr u8g_uint_t right = left + CUSTOM_BOOTSCREEN_BMPWIDTH,
+ bottom = top + CUSTOM_BOOTSCREEN_BMPHEIGHT;
+ #endif
+
+ #if ENABLED(CUSTOM_BOOTSCREEN_ANIMATED)
+ const void * const frame_ptr = pgm_read_ptr(&custom_bootscreen_animation[frame]);
+ #if ENABLED(CUSTOM_BOOTSCREEN_TIME_PER_FRAME)
+ const boot_frame_t * const frame_info = (boot_frame_t*)frame_ptr;
+ const u8g_pgm_uint8_t * const bmp = (u8g_pgm_uint8_t*)pgm_read_ptr(&frame_info->bitmap);
+ #else
+ const u8g_pgm_uint8_t * const bmp = (u8g_pgm_uint8_t*)frame_ptr;
+ #endif
+ #else
+ const u8g_pgm_uint8_t * const bmp = custom_start_bmp;
+ #endif
+
+ UNUSED(frame);
+
+ u8g.drawBitmapP(left, top, CUSTOM_BOOTSCREEN_BMP_BYTEWIDTH, CUSTOM_BOOTSCREEN_BMPHEIGHT, bmp);
+
+ #if ENABLED(CUSTOM_BOOTSCREEN_INVERTED)
+ if (frame == 0) {
+ u8g.setColorIndex(1);
+ if (top) u8g.drawBox(0, 0, LCD_PIXEL_WIDTH, top);
+ if (left) u8g.drawBox(0, top, left, CUSTOM_BOOTSCREEN_BMPHEIGHT);
+ if (right < LCD_PIXEL_WIDTH) u8g.drawBox(right, top, LCD_PIXEL_WIDTH - right, CUSTOM_BOOTSCREEN_BMPHEIGHT);
+ if (bottom < LCD_PIXEL_HEIGHT) u8g.drawBox(0, bottom, LCD_PIXEL_WIDTH, LCD_PIXEL_HEIGHT - bottom);
+ }
+ #endif
+ }
+
+ // Shows the custom bootscreen, with the u8g loop, animations and delays
+ void MarlinUI::show_custom_bootscreen() {
+ #if DISABLED(CUSTOM_BOOTSCREEN_ANIMATED)
+ constexpr millis_t frame_time = 0;
+ constexpr uint8_t f = 0;
+ #else
+ #if DISABLED(CUSTOM_BOOTSCREEN_TIME_PER_FRAME)
+ constexpr millis_t frame_time = CUSTOM_BOOTSCREEN_FRAME_TIME;
+ #endif
+ LOOP_L_N(f, COUNT(custom_bootscreen_animation))
+ #endif
+ {
+ #if ENABLED(CUSTOM_BOOTSCREEN_TIME_PER_FRAME)
+ const uint8_t fr = _MIN(f, COUNT(custom_bootscreen_animation) - 1);
+ const boot_frame_t * const frame_info = (boot_frame_t*)pgm_read_ptr(&custom_bootscreen_animation[fr]);
+ const millis_t frame_time = pgm_read_word(&frame_info->duration);
+ #endif
+ u8g.firstPage();
+ do { draw_custom_bootscreen(f); } while (u8g.nextPage());
+ if (frame_time) safe_delay(frame_time);
+ }
+
+ #ifndef CUSTOM_BOOTSCREEN_TIMEOUT
+ #define CUSTOM_BOOTSCREEN_TIMEOUT 2500
+ #endif
+ #if CUSTOM_BOOTSCREEN_TIMEOUT
+ safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT);
+ #endif
+ }
+ #endif // SHOW_CUSTOM_BOOTSCREEN
+
+ // Two-part needed to display all info
+ constexpr bool two_part = ((LCD_PIXEL_HEIGHT) - (START_BMPHEIGHT)) < ((MENU_FONT_ASCENT) * 2);
+
+ // Draw the static Marlin bootscreen from a u8g loop
+ // or the animated boot screen within its own u8g loop
+ void MarlinUI::draw_marlin_bootscreen(const bool line2/*=false*/) {
+
+ // Determine text space needed
+ constexpr u8g_uint_t text_width_1 = u8g_uint_t((sizeof(SHORT_BUILD_VERSION) - 1) * (MENU_FONT_WIDTH)),
+ text_width_2 = u8g_uint_t((sizeof(MARLIN_WEBSITE_URL) - 1) * (MENU_FONT_WIDTH)),
+ text_max_width = _MAX(text_width_1, text_width_2),
+ text_total_height = (MENU_FONT_HEIGHT) * 2,
+ width = LCD_PIXEL_WIDTH, height = LCD_PIXEL_HEIGHT,
+ rspace = width - (START_BMPWIDTH);
+
+ u8g_int_t offx, offy, txt_base, txt_offx_1, txt_offx_2;
+
+ // Can the text fit to the right of the bitmap?
+ if (text_max_width < rspace) {
+ constexpr int8_t inter = (width - text_max_width - (START_BMPWIDTH)) / 3; // Evenly distribute horizontal space
+ offx = inter; // First the boot logo...
+ offy = (height - (START_BMPHEIGHT)) / 2; // ...V-aligned in the full height
+ txt_offx_1 = txt_offx_2 = inter + (START_BMPWIDTH) + inter; // Text right of the bitmap
+ txt_base = (height + MENU_FONT_ASCENT + text_total_height - (MENU_FONT_HEIGHT)) / 2; // Text vertical center
+ }
+ else {
+ constexpr int8_t inter = (height - text_total_height - (START_BMPHEIGHT)) / 3; // Evenly distribute vertical space
+ offx = rspace / 2; // Center the boot logo in the whole space
+ offy = inter; // V-align boot logo proportionally
+ txt_offx_1 = (width - text_width_1) / 2; // Text 1 centered
+ txt_offx_2 = (width - text_width_2) / 2; // Text 2 centered
+ txt_base = offy + START_BMPHEIGHT + offy + text_total_height - (MENU_FONT_DESCENT); // Even spacing looks best
+ }
+ NOLESS(offx, 0);
+ NOLESS(offy, 0);
+
+ auto _draw_bootscreen_bmp = [&](const uint8_t *bitmap) {
+ u8g.drawBitmapP(offx, offy, START_BMP_BYTEWIDTH, START_BMPHEIGHT, bitmap);
+ set_font(FONT_MENU);
+ if (!two_part || !line2) lcd_put_u8str_P(txt_offx_1, txt_base - (MENU_FONT_HEIGHT), PSTR(SHORT_BUILD_VERSION));
+ if (!two_part || line2) lcd_put_u8str_P(txt_offx_2, txt_base, PSTR(MARLIN_WEBSITE_URL));
+ };
+
+ auto draw_bootscreen_bmp = [&](const uint8_t *bitmap) {
+ u8g.firstPage(); do { _draw_bootscreen_bmp(bitmap); } while (u8g.nextPage());
+ };
+
+ #if DISABLED(BOOT_MARLIN_LOGO_ANIMATED)
+ draw_bootscreen_bmp(start_bmp);
+ #else
+ constexpr millis_t frame_time = MARLIN_BOOTSCREEN_FRAME_TIME;
+ LOOP_L_N(f, COUNT(marlin_bootscreen_animation)) {
+ draw_bootscreen_bmp((uint8_t*)pgm_read_ptr(&marlin_bootscreen_animation[f]));
+ if (frame_time) safe_delay(frame_time);
+ }
+ #endif
+ }
+
+ // Show the Marlin bootscreen, with the u8g loop and delays
+ void MarlinUI::show_marlin_bootscreen() {
+ constexpr uint8_t pages = two_part ? 2 : 1;
+ for (uint8_t q = pages; q--;) {
+ draw_marlin_bootscreen(q == 0);
+ safe_delay((BOOTSCREEN_TIMEOUT) / pages);
+ }
+ }
+
+ void MarlinUI::show_bootscreen() {
+ TERN_(SHOW_CUSTOM_BOOTSCREEN, show_custom_bootscreen());
+ show_marlin_bootscreen();
+ }
+
+#endif // SHOW_BOOTSCREEN
+
+#if ENABLED(LIGHTWEIGHT_UI)
+ #include "status_screen_lite_ST7920.h"
+#endif
+
+// Initialize or re-initialize the LCD
+void MarlinUI::init_lcd() {
+ #if PIN_EXISTS(LCD_BACKLIGHT)
+ OUT_WRITE(LCD_BACKLIGHT_PIN, DISABLED(DELAYED_BACKLIGHT_INIT)); // Illuminate after reset or right away
+ #endif
+
+ #if ANY(MKS_12864OLED, MKS_12864OLED_SSD1306, FYSETC_242_OLED_12864, ZONESTAR_12864OLED)
+ SET_OUTPUT(LCD_PINS_DC);
+ #ifndef LCD_RESET_PIN
+ #define LCD_RESET_PIN LCD_PINS_RS
+ #endif
+ #endif
+
+ #if PIN_EXISTS(LCD_RESET)
+ // Perform a clean hardware reset with needed delays
+ OUT_WRITE(LCD_RESET_PIN, LOW);
+ _delay_ms(5);
+ WRITE(LCD_RESET_PIN, HIGH);
+ _delay_ms(5);
+ u8g.begin();
+ #endif
+
+ #if PIN_EXISTS(LCD_BACKLIGHT) && ENABLED(DELAYED_BACKLIGHT_INIT)
+ WRITE(LCD_BACKLIGHT_PIN, HIGH);
+ #endif
+
+ TERN_(HAS_LCD_CONTRAST, refresh_contrast());
+
+ TERN_(LCD_SCREEN_ROT_90, u8g.setRot90());
+ TERN_(LCD_SCREEN_ROT_180, u8g.setRot180());
+ TERN_(LCD_SCREEN_ROT_270, u8g.setRot270());
+
+ uxg_SetUtf8Fonts(g_fontinfo, COUNT(g_fontinfo));
+}
+
+// The kill screen is displayed for unrecoverable conditions
+void MarlinUI::draw_kill_screen() {
+ TERN_(LIGHTWEIGHT_UI, ST7920_Lite_Status_Screen::clear_text_buffer());
+ const u8g_uint_t h4 = u8g.getHeight() / 4;
+ u8g.firstPage();
+ do {
+ set_font(FONT_MENU);
+ lcd_put_u8str(0, h4 * 1, status_message);
+ lcd_put_u8str_P(0, h4 * 2, GET_TEXT(MSG_HALTED));
+ lcd_put_u8str_P(0, h4 * 3, GET_TEXT(MSG_PLEASE_RESET));
+ } while (u8g.nextPage());
+}
+
+void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
+
+#if HAS_LCD_MENU
+
+ #include "../menu/menu.h"
+
+ u8g_uint_t row_y1, row_y2;
+
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+
+ void MarlinUI::draw_hotend_status(const uint8_t row, const uint8_t extruder) {
+ row_y1 = row * (MENU_FONT_HEIGHT) + 1;
+ row_y2 = row_y1 + MENU_FONT_HEIGHT - 1;
+
+ if (!PAGE_CONTAINS(row_y1 + 1, row_y2 + 2)) return;
+
+ lcd_put_wchar(LCD_PIXEL_WIDTH - 11 * (MENU_FONT_WIDTH), row_y2, 'E');
+ lcd_put_wchar((char)('1' + extruder));
+ lcd_put_wchar(' ');
+ lcd_put_u8str(i16tostr3rj(thermalManager.degHotend(extruder)));
+ lcd_put_wchar('/');
+
+ if (get_blink() || !thermalManager.heater_idle[extruder].timed_out)
+ lcd_put_u8str(i16tostr3rj(thermalManager.degTargetHotend(extruder)));
+ }
+
+ #endif // ADVANCED_PAUSE_FEATURE
+
+ // Mark a menu item and set font color if selected.
+ // Return 'false' if the item is not on screen.
+ static bool mark_as_selected(const uint8_t row, const bool sel) {
+ row_y1 = row * (MENU_FONT_HEIGHT) + 1;
+ row_y2 = row_y1 + MENU_FONT_HEIGHT - 1;
+
+ if (!PAGE_CONTAINS(row_y1 + 1, row_y2 + 2)) return false;
+
+ if (sel) {
+ #if ENABLED(MENU_HOLLOW_FRAME)
+ u8g.drawHLine(0, row_y1 + 1, LCD_PIXEL_WIDTH);
+ u8g.drawHLine(0, row_y2 + 2, LCD_PIXEL_WIDTH);
+ #else
+ u8g.setColorIndex(1); // solid outline
+ u8g.drawBox(0, row_y1 + 2, LCD_PIXEL_WIDTH, MENU_FONT_HEIGHT - 1);
+ u8g.setColorIndex(0); // inverted text
+ #endif
+ }
+ #if DISABLED(MENU_HOLLOW_FRAME)
+ else u8g.setColorIndex(1); // solid text
+ #endif
+
+ if (!PAGE_CONTAINS(row_y1, row_y2)) return false;
+
+ lcd_moveto(0, row_y2);
+ return true;
+ }
+
+ // Draw a static line of text in the same idiom as a menu item
+ void MenuItem_static::draw(const uint8_t row, PGM_P const pstr, const uint8_t style/*=SS_DEFAULT*/, const char * const vstr/*=nullptr*/) {
+
+ if (mark_as_selected(row, style & SS_INVERT)) {
+
+ pixel_len_t n = LCD_PIXEL_WIDTH; // pixel width of string allowed
+
+ const int8_t plen = pstr ? utf8_strlen_P(pstr) : 0,
+ vlen = vstr ? utf8_strlen(vstr) : 0;
+ if (style & SS_CENTER) {
+ int8_t pad = (LCD_WIDTH - plen - vlen) / 2;
+ while (--pad >= 0) n -= lcd_put_wchar(' ');
+ }
+
+ if (plen) n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, n / (MENU_FONT_WIDTH)) * (MENU_FONT_WIDTH);
+ if (vlen) n -= lcd_put_u8str_max(vstr, n);
+ while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
+ }
+ }
+
+ // Draw a generic menu item
+ void MenuItemBase::_draw(const bool sel, const uint8_t row, PGM_P const pstr, const char, const char post_char) {
+ if (mark_as_selected(row, sel)) {
+ pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 1) * (MENU_FONT_WIDTH);
+ while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
+ lcd_put_wchar(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH), row_y2, post_char);
+ lcd_put_wchar(' ');
+ }
+ }
+
+ // Draw a menu item with an editable value
+ void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const inStr, const bool pgm) {
+ if (mark_as_selected(row, sel)) {
+ const uint8_t vallen = (pgm ? utf8_strlen_P(inStr) : utf8_strlen((char*)inStr)),
+ pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), inStr) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)inStr));
+
+ pixel_len_t n = lcd_put_u8str_ind_P(pstr, itemIndex, itemString, LCD_WIDTH - 2 - vallen) * (MENU_FONT_WIDTH);
+ if (vallen) {
+ lcd_put_wchar(':');
+ while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
+ lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
+ if (pgm) lcd_put_u8str_P(inStr); else lcd_put_u8str((char*)inStr);
+ }
+ }
+ }
+
+ void MenuEditItemBase::draw_edit_screen(PGM_P const pstr, const char* const value/*=nullptr*/) {
+ ui.encoder_direction_normal();
+
+ const u8g_uint_t labellen = utf8_strlen_P(pstr), vallen = utf8_strlen(value);
+ bool extra_row = labellen > LCD_WIDTH - 2 - vallen;
+
+ #if ENABLED(USE_BIG_EDIT_FONT)
+ // Use the menu font if the label won't fit on a single line
+ constexpr u8g_uint_t lcd_edit_width = (LCD_PIXEL_WIDTH) / (EDIT_FONT_WIDTH);
+ u8g_uint_t lcd_chr_fit, one_chr_width;
+ if (labellen <= lcd_edit_width - 1) {
+ if (labellen + vallen + 1 > lcd_edit_width) extra_row = true;
+ lcd_chr_fit = lcd_edit_width + 1;
+ one_chr_width = EDIT_FONT_WIDTH;
+ ui.set_font(FONT_EDIT);
+ }
+ else {
+ lcd_chr_fit = LCD_WIDTH;
+ one_chr_width = MENU_FONT_WIDTH;
+ ui.set_font(FONT_MENU);
+ }
+ #else
+ constexpr u8g_uint_t lcd_chr_fit = LCD_WIDTH,
+ one_chr_width = MENU_FONT_WIDTH;
+ #endif
+
+ // Center the label and value lines on the middle line
+ u8g_uint_t baseline = extra_row ? (LCD_PIXEL_HEIGHT) / 2 - 1
+ : (LCD_PIXEL_HEIGHT + EDIT_FONT_ASCENT) / 2;
+
+ // Assume the label is alpha-numeric (with a descender)
+ bool onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline + EDIT_FONT_DESCENT);
+ if (onpage) lcd_put_u8str_ind_P(0, baseline, pstr, itemIndex, itemString);
+
+ // If a value is included, print a colon, then print the value right-justified
+ if (value) {
+ lcd_put_wchar(':');
+ if (extra_row) {
+ // Assume that value is numeric (with no descender)
+ baseline += EDIT_FONT_ASCENT + 2;
+ onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline);
+ }
+ if (onpage) {
+ lcd_put_wchar(((lcd_chr_fit - 1) - (vallen + 1)) * one_chr_width, baseline, ' '); // Right-justified, padded, add a leading space
+ lcd_put_u8str(value);
+ }
+ }
+ TERN_(USE_BIG_EDIT_FONT, ui.set_font(FONT_MENU));
+ }
+
+ inline void draw_boxed_string(const u8g_uint_t x, const u8g_uint_t y, PGM_P const pstr, const bool inv) {
+ const u8g_uint_t len = utf8_strlen_P(pstr),
+ by = (y + 1) * (MENU_FONT_HEIGHT);
+ const u8g_uint_t prop = USE_WIDE_GLYPH ? 2 : 1;
+ const pixel_len_t bw = len * prop * (MENU_FONT_WIDTH), bx = x * prop * (MENU_FONT_WIDTH);
+ if (inv) {
+ u8g.setColorIndex(1);
+ u8g.drawBox(bx / prop - 1, by - (MENU_FONT_ASCENT) + 1, bw / prop + 2, MENU_FONT_HEIGHT - 1);
+ u8g.setColorIndex(0);
+ }
+ lcd_put_u8str_P(bx / prop, by, pstr);
+ if (inv) u8g.setColorIndex(1);
+ }
+
+ void MenuItem_confirm::draw_select_screen(PGM_P const yes, PGM_P const no, const bool yesno, PGM_P const pref, const char * const string/*=nullptr*/, PGM_P const suff/*=nullptr*/) {
+ ui.draw_select_screen_prompt(pref, string, suff);
+ draw_boxed_string(1, LCD_HEIGHT - 1, no, !yesno);
+ const u8g_uint_t xpos = (LCD_WIDTH) / (USE_WIDE_GLYPH ? 2 : 1);
+ draw_boxed_string(xpos - (utf8_strlen_P(yes) + 1), LCD_HEIGHT - 1, yes, yesno);
+ }
+
+ #if ENABLED(SDSUPPORT)
+
+ void MenuItem_sdbase::draw(const bool sel, const uint8_t row, PGM_P const, CardReader &theCard, const bool isDir) {
+ if (mark_as_selected(row, sel)) {
+ const uint8_t maxlen = LCD_WIDTH - isDir;
+ if (isDir) lcd_put_wchar(LCD_STR_FOLDER[0]);
+ const pixel_len_t pixw = maxlen * (MENU_FONT_WIDTH);
+ pixel_len_t n = pixw - lcd_put_u8str_max(ui.scrolled_filename(theCard, maxlen, row, sel), pixw);
+ while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
+ }
+ }
+
+ #endif // SDSUPPORT
+
+ #if ENABLED(AUTO_BED_LEVELING_UBL)
+
+ /**
+ * UBL LCD "radar" map data
+ */
+ #define MAP_UPPER_LEFT_CORNER_X 35 // These probably should be moved to the .h file But for now,
+ #define MAP_UPPER_LEFT_CORNER_Y 8 // it is easier to play with things having them here
+ #define MAP_MAX_PIXELS_X 53
+ #define MAP_MAX_PIXELS_Y 49
+
+ void MarlinUI::ubl_plot(const uint8_t x_plot, const uint8_t y_plot) {
+ // Scale the box pixels appropriately
+ u8g_uint_t x_map_pixels = ((MAP_MAX_PIXELS_X - 4) / (GRID_MAX_POINTS_X)) * (GRID_MAX_POINTS_X),
+ y_map_pixels = ((MAP_MAX_PIXELS_Y - 4) / (GRID_MAX_POINTS_Y)) * (GRID_MAX_POINTS_Y),
+
+ pixels_per_x_mesh_pnt = x_map_pixels / (GRID_MAX_POINTS_X),
+ pixels_per_y_mesh_pnt = y_map_pixels / (GRID_MAX_POINTS_Y),
+
+ x_offset = MAP_UPPER_LEFT_CORNER_X + 1 + (MAP_MAX_PIXELS_X - x_map_pixels - 2) / 2,
+ y_offset = MAP_UPPER_LEFT_CORNER_Y + 1 + (MAP_MAX_PIXELS_Y - y_map_pixels - 2) / 2;
+
+ // Clear the Mesh Map
+
+ if (PAGE_CONTAINS(y_offset - 2, y_offset + y_map_pixels + 4)) {
+ u8g.setColorIndex(1); // First draw the bigger box in White so we have a border around the mesh map box
+ u8g.drawBox(x_offset - 2, y_offset - 2, x_map_pixels + 4, y_map_pixels + 4);
+ if (PAGE_CONTAINS(y_offset, y_offset + y_map_pixels)) {
+ u8g.setColorIndex(0); // Now actually clear the mesh map box
+ u8g.drawBox(x_offset, y_offset, x_map_pixels, y_map_pixels);
+ }
+ }
+
+ // Display Mesh Point Locations
+
+ u8g.setColorIndex(1);
+ const u8g_uint_t sx = x_offset + pixels_per_x_mesh_pnt / 2;
+ u8g_uint_t y = y_offset + pixels_per_y_mesh_pnt / 2;
+ for (uint8_t j = 0; j < GRID_MAX_POINTS_Y; j++, y += pixels_per_y_mesh_pnt)
+ if (PAGE_CONTAINS(y, y))
+ for (uint8_t i = 0, x = sx; i < GRID_MAX_POINTS_X; i++, x += pixels_per_x_mesh_pnt)
+ u8g.drawBox(x, y, 1, 1);
+
+ // Fill in the Specified Mesh Point
+
+ const uint8_t y_plot_inv = (GRID_MAX_POINTS_Y - 1) - y_plot; // The origin is typically in the lower right corner. We need to
+ // invert the Y to get it to plot in the right location.
+
+ const u8g_uint_t by = y_offset + y_plot_inv * pixels_per_y_mesh_pnt;
+ if (PAGE_CONTAINS(by, by + pixels_per_y_mesh_pnt))
+ u8g.drawBox(
+ x_offset + x_plot * pixels_per_x_mesh_pnt, by,
+ pixels_per_x_mesh_pnt, pixels_per_y_mesh_pnt
+ );
+
+ // Put Relevant Text on Display
+
+ // Show X and Y positions at top of screen
+ u8g.setColorIndex(1);
+ if (PAGE_UNDER(7)) {
+ const xy_pos_t pos = { ubl.mesh_index_to_xpos(x_plot), ubl.mesh_index_to_ypos(y_plot) },
+ lpos = pos.asLogical();
+ lcd_put_u8str_P(5, 7, X_LBL);
+ lcd_put_u8str(ftostr52(lpos.x));
+ lcd_put_u8str_P(74, 7, Y_LBL);
+ lcd_put_u8str(ftostr52(lpos.y));
+ }
+
+ // Print plot position
+ if (PAGE_CONTAINS(LCD_PIXEL_HEIGHT - (INFO_FONT_HEIGHT - 1), LCD_PIXEL_HEIGHT)) {
+ lcd_put_wchar(5, LCD_PIXEL_HEIGHT, '(');
+ u8g.print(x_plot);
+ lcd_put_wchar(',');
+ u8g.print(y_plot);
+ lcd_put_wchar(')');
+
+ // Show the location value
+ lcd_put_u8str_P(74, LCD_PIXEL_HEIGHT, Z_LBL);
+ if (!isnan(ubl.z_values[x_plot][y_plot]))
+ lcd_put_u8str(ftostr43sign(ubl.z_values[x_plot][y_plot]));
+ else
+ lcd_put_u8str_P(PSTR(" -----"));
+ }
+
+ }
+
+ #endif // AUTO_BED_LEVELING_UBL
+
+ #if EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY)
+
+ const unsigned char cw_bmp[] PROGMEM = {
+ B00000000,B11111110,B00000000,
+ B00000011,B11111111,B10000000,
+ B00000111,B11000111,B11000000,
+ B00000111,B00000001,B11100000,
+ B00000000,B00000000,B11100000,
+ B00000000,B00000000,B11110000,
+ B00000000,B00000000,B01110000,
+ B00000100,B00000000,B01110000,
+ B00001110,B00000000,B01110000,
+ B00011111,B00000000,B01110000,
+ B00111111,B10000000,B11110000,
+ B00001110,B00000000,B11100000,
+ B00001111,B00000001,B11100000,
+ B00000111,B11000111,B11000000,
+ B00000011,B11111111,B10000000,
+ B00000000,B11111110,B00000000
+ };
+
+ const unsigned char ccw_bmp[] PROGMEM = {
+ B00000000,B11111110,B00000000,
+ B00000011,B11111111,B10000000,
+ B00000111,B11000111,B11000000,
+ B00001111,B00000001,B11100000,
+ B00001110,B00000000,B11100000,
+ B00111111,B10000000,B11110000,
+ B00011111,B00000000,B01110000,
+ B00001110,B00000000,B01110000,
+ B00000100,B00000000,B01110000,
+ B00000000,B00000000,B01110000,
+ B00000000,B00000000,B11110000,
+ B00000000,B00000000,B11100000,
+ B00000111,B00000001,B11100000,
+ B00000111,B11000111,B11000000,
+ B00000011,B11111111,B10000000,
+ B00000000,B11111110,B00000000
+ };
+
+ const unsigned char up_arrow_bmp[] PROGMEM = {
+ B00000100,B00000000,
+ B00001110,B00000000,
+ B00011111,B00000000,
+ B00111111,B10000000,
+ B01111111,B11000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000
+ };
+
+ const unsigned char down_arrow_bmp[] PROGMEM = {
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B00001110,B00000000,
+ B01111111,B11000000,
+ B00111111,B10000000,
+ B00011111,B00000000,
+ B00001110,B00000000,
+ B00000100,B00000000
+ };
+
+ const unsigned char offset_bedline_bmp[] PROGMEM = {
+ B11111111,B11111111,B11111111
+ };
+
+ const unsigned char nozzle_bmp[] PROGMEM = {
+ B01111111,B10000000,
+ B11111111,B11000000,
+ B11111111,B11000000,
+ B11111111,B11000000,
+ B01111111,B10000000,
+ B01111111,B10000000,
+ B11111111,B11000000,
+ B11111111,B11000000,
+ B11111111,B11000000,
+ B00111111,B00000000,
+ B00011110,B00000000,
+ B00001100,B00000000
+ };
+
+ void _lcd_zoffset_overlay_gfx(const float zvalue) {
+ // Determine whether the user is raising or lowering the nozzle.
+ static int8_t dir;
+ static float old_zvalue;
+ if (zvalue != old_zvalue) {
+ dir = zvalue ? zvalue < old_zvalue ? -1 : 1 : 0;
+ old_zvalue = zvalue;
+ }
+
+ #if ENABLED(OVERLAY_GFX_REVERSE)
+ const unsigned char *rot_up = ccw_bmp, *rot_down = cw_bmp;
+ #else
+ const unsigned char *rot_up = cw_bmp, *rot_down = ccw_bmp;
+ #endif
+
+ #if ENABLED(USE_BIG_EDIT_FONT)
+ const int left = 0, right = 45, nozzle = 95;
+ #else
+ const int left = 5, right = 90, nozzle = 60;
+ #endif
+
+ // Draw a representation of the nozzle
+ if (PAGE_CONTAINS(3, 16)) u8g.drawBitmapP(nozzle + 6, 4 - dir, 2, 12, nozzle_bmp);
+ if (PAGE_CONTAINS(20, 20)) u8g.drawBitmapP(nozzle + 0, 20, 3, 1, offset_bedline_bmp);
+
+ // Draw cw/ccw indicator and up/down arrows.
+ if (PAGE_CONTAINS(47, 62)) {
+ u8g.drawBitmapP(right + 0, 48 - dir, 2, 13, up_arrow_bmp);
+ u8g.drawBitmapP(left + 0, 49 - dir, 2, 13, down_arrow_bmp);
+ u8g.drawBitmapP(left + 13, 47, 3, 16, rot_down);
+ u8g.drawBitmapP(right + 13, 47, 3, 16, rot_up);
+ }
+ }
+
+ #endif // BABYSTEP_ZPROBE_GFX_OVERLAY || MESH_EDIT_GFX_OVERLAY
+
+#endif // HAS_LCD_MENU
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.h b/Marlin/src/lcd/dogm/marlinui_DOGM.h
new file mode 100644
index 0000000..e5229cd
--- /dev/null
+++ b/Marlin/src/lcd/dogm/marlinui_DOGM.h
@@ -0,0 +1,232 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ * lcd/dogm/marlinui_DOGM.h
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#include
+#include "HAL_LCD_class_defines.h"
+
+//#define ALTERNATIVE_LCD
+
+#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
+
+ // RepRapWorld Graphical LCD
+
+ #define U8G_CLASS U8GLIB_ST7920_128X64_4X
+ #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN)
+ #define U8G_PARAM LCD_PINS_RS
+ #else
+ #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS
+ #endif
+
+#elif ENABLED(U8GLIB_ST7920)
+
+ // RepRap Discount Full Graphics Smart Controller
+ // and other variant LCDs using ST7920
+
+ #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN)
+ #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL // 2 stripes, HW SPI (Shared with SD card. Non-standard LCD adapter on AVR.)
+ #define U8G_PARAM LCD_PINS_RS
+ #else
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_ST7920_128X64_4X // 2 stripes, SW SPI (Original u8glib device)
+ #else
+ #define U8G_CLASS U8GLIB_ST7920_128X64_RRD // Adjust stripes with PAGE_HEIGHT in ultralcd_st7920_u8glib_rrd.h
+ #endif
+ #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS // AVR version ignores these pin settings
+ // HAL version uses these pin settings
+ #endif
+
+#elif ENABLED(CARTESIO_UI)
+
+ // CartesioUI LCD
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_DOGM128_2X // 4 stripes
+ #define FORCE_SOFT_SPI // SW-SPI
+ #else
+ #define U8G_CLASS U8GLIB_DOGM128_2X // 4 stripes (HW-SPI)
+ #endif
+
+#elif ENABLED(U8GLIB_LM6059_AF)
+
+ // Based on the Adafruit ST7565 (https://www.adafruit.com/products/250)
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_LM6059 // 8 stripes (HW-SPI)
+ #else
+ #define U8G_CLASS U8GLIB_LM6059_2X // 4 stripes (HW-SPI)
+ #endif
+
+#elif ENABLED(U8GLIB_ST7565_64128N)
+
+ // MaKrPanel, Mini Viki, Viki 2.0, AZSMZ 12864 ST7565 controller
+
+ #define SMART_RAMPS MB(RAMPS_SMART_EFB, RAMPS_SMART_EEB, RAMPS_SMART_EFF, RAMPS_SMART_EEF, RAMPS_SMART_SF)
+ #define U8G_CLASS U8GLIB_64128N_2X_HAL // 4 stripes (HW-SPI)
+ #if SMART_RAMPS || DOGLCD_SCK != SD_SCK_PIN || DOGLCD_MOSI != SD_MOSI_PIN
+ #define FORCE_SOFT_SPI // SW-SPI
+ #endif
+
+#elif ANY(FYSETC_MINI_12864, MKS_MINI_12864, ENDER2_STOCKDISPLAY)
+
+ // The FYSETC Mini 12864 display // "4 stripes"
+
+ // The MKS_MINI_12864 V1/V2 aren't exact copies of the MiniPanel.
+ // Panel management is in u8g_dev_uc1701_mini12864_HAL.cpp with
+ // extra delays added to remove glitches seen with fast MCUs.
+
+ #define U8G_CLASS U8GLIB_MINI12864_2X_HAL // 8 stripes (HW-SPI)
+
+#elif ENABLED(MINIPANEL)
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_MINI12864
+ #else
+ #define U8G_CLASS U8GLIB_MINI12864_2X // 8 stripes (HW-SPI)
+ #endif
+
+#elif ENABLED(MKS_12864OLED_SSD1306)
+
+ // MKS 128x64 (SSD1306) OLED I2C LCD
+
+ #define FORCE_SOFT_SPI // SW-SPI
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SSD1306_128X64 // 8 stripes
+ #endif
+
+#elif ENABLED(FYSETC_242_OLED_12864)
+
+ // FYSETC OLED 2.42" 128 × 64 FULL GRAPHICS CONTROLLER
+
+ #define FORCE_SOFT_SPI // SW-SPI
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SSD1309_128X64_HAL
+ #endif
+
+#elif ENABLED(ZONESTAR_12864OLED_SSD1306)
+
+ // Zonestar SSD1306 OLED SPI LCD
+
+ #define FORCE_SOFT_SPI // SW-SPI
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SH1306_128X64_2X // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SH1306_128X64 // 8 stripes
+ #endif
+
+#elif EITHER(MKS_12864OLED, ZONESTAR_12864OLED)
+
+ // MKS 128x64 (SH1106) OLED I2C LCD
+ // - or -
+ // Zonestar SH1106 OLED SPI LCD
+
+ #define FORCE_SOFT_SPI // SW-SPI
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SH1106_128X64_2X // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SH1106_128X64 // 8 stripes
+ #endif
+
+#elif ENABLED(U8GLIB_SH1106_EINSTART)
+
+ // Connected via motherboard header
+
+ #define U8G_CLASS U8GLIB_SH1106_128X64
+ #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, LCD_PINS_DC, LCD_PINS_RS
+
+#elif ENABLED(U8GLIB_SH1106)
+
+ // Generic SH1106 OLED I2C LCD
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SH1106_128X64_2X_I2C_2_WIRE // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SH1106_128X64_2X // 4 stripes
+ #endif
+ #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST) // I2C
+
+#elif ENABLED(U8GLIB_SSD1309)
+
+ // Generic support for SSD1309 OLED I2C LCDs
+
+ #define U8G_CLASS U8GLIB_SSD1309_128X64
+ #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST) // I2C
+
+#elif ENABLED(U8GLIB_SSD1306)
+
+ // Generic SSD1306 OLED I2C LCD
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE // 4 stripes
+ #else
+ #define U8G_CLASS U8GLIB_SSD1306_128X64_2X // 4 stripes
+ #endif
+ #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)
+
+#elif TFT_SCALED_DOGLCD
+
+ // Unspecified 320x240 TFT pre-initialized by built-in bootloader
+
+ #define U8G_CLASS U8GLIB_TFT_320X240_UPSCALE_FROM_128X64
+ #if HAS_FSMC_GRAPHICAL_TFT
+ #define U8G_PARAM FSMC_CS_PIN, FSMC_RS_PIN
+ #else
+ #define U8G_PARAM -1, -1
+ #endif
+
+#else
+
+ #if ENABLED(ALTERNATIVE_LCD)
+ #define U8G_CLASS U8GLIB_DOGM128 // 8 stripes (HW-SPI)
+ #else
+ #define U8G_CLASS U8GLIB_DOGM128_2X // 4 stripes (HW-SPI)
+ #endif
+
+#endif
+
+// Use HW-SPI if no other option is specified
+#ifndef U8G_PARAM
+ #if ENABLED(FORCE_SOFT_SPI)
+ #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0 // SW-SPI
+ #else
+ #define U8G_PARAM DOGLCD_CS, DOGLCD_A0 // HW-SPI
+ #endif
+#endif
+
+// For selective rendering within a Y range
+#define PAGE_OVER(ya) ((ya) <= u8g.getU8g()->current_page.y1) // Does the current page follow a region top?
+#define PAGE_UNDER(yb) ((yb) >= u8g.getU8g()->current_page.y0) // Does the current page precede a region bottom?
+#define PAGE_CONTAINS(ya, yb) ((yb) >= u8g.getU8g()->current_page.y0 && (ya) <= u8g.getU8g()->current_page.y1) // Do two vertical regions overlap?
+
+extern U8G_CLASS u8g;
diff --git a/Marlin/src/lcd/dogm/status/bed.h b/Marlin/src/lcd/dogm/status/bed.h
new file mode 100644
index 0000000..c484a12
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/bed.h
@@ -0,0 +1,110 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/bed.h - Status Screen Bed bitmaps
+//
+
+#if ENABLED(STATUS_ALT_BED_BITMAP)
+
+ #define STATUS_BED_ANIM
+ #define STATUS_BED_WIDTH 24
+ #ifndef STATUS_BED_X
+ #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+ #define STATUS_BED_TEXT_X (STATUS_BED_X + 11)
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B11111111,B11111111,B11000000,
+ B01000000,B00000000,B00100000,
+ B00100000,B00000000,B00010000,
+ B00010000,B00000000,B00001000,
+ B00001000,B00000000,B00000100,
+ B00000100,B00000000,B00000010,
+ B00000011,B11111111,B11111111
+ };
+
+ const unsigned char status_bed_on_bmp[] PROGMEM = {
+ B00000010,B00100010,B00000000,
+ B00000100,B01000100,B00000000,
+ B00000100,B01000100,B00000000,
+ B00000010,B00100010,B00000000,
+ B00000001,B00010001,B00000000,
+ B11111111,B11111111,B11000000,
+ B01000000,B10001000,B10100000,
+ B00100001,B00010001,B00010000,
+ B00010010,B00100010,B00001000,
+ B00001000,B00000000,B00000100,
+ B00000100,B00000000,B00000010,
+ B00000011,B11111111,B11111111
+ };
+
+#else
+
+ #define STATUS_BED_WIDTH 21
+ #ifndef STATUS_BED_X
+ #define STATUS_BED_X (LCD_PIXEL_WIDTH - (STATUS_BED_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #endif
+
+ #ifdef STATUS_BED_ANIM
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ const unsigned char status_bed_on_bmp[] PROGMEM = {
+ B00000100,B00010000,B01000000,
+ B00000010,B00001000,B00100000,
+ B00000010,B00001000,B00100000,
+ B00000100,B00010000,B01000000,
+ B00001000,B00100000,B10000000,
+ B00010000,B01000001,B00000000,
+ B00010000,B01000001,B00000000,
+ B00001000,B00100000,B10000000,
+ B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ #else
+
+ const unsigned char status_bed_bmp[] PROGMEM = {
+ B00000100,B00010000,B01000000,
+ B00000010,B00001000,B00100000,
+ B00000010,B00001000,B00100000,
+ B00000100,B00010000,B01000000,
+ B00001000,B00100000,B10000000,
+ B00010000,B01000001,B00000000,
+ B00010000,B01000001,B00000000,
+ B00001000,B00100000,B10000000,
+ B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+ #endif
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/chamber.h b/Marlin/src/lcd/dogm/status/chamber.h
new file mode 100644
index 0000000..787a908
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/chamber.h
@@ -0,0 +1,89 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/chamber.h - Status Screen Chamber bitmaps
+//
+
+#define STATUS_CHAMBER_WIDTH 21
+#if STATUS_HEATERS_WIDTH
+ #if ENABLED(STATUS_COMBINE_HEATERS)
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #elif HAS_FAN0 && HAS_HEATED_BED && HOTENDS <= 2
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - 2 - (STATUS_HEATERS_BYTEWIDTH - STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #elif HAS_FAN0 && !HAS_HEATED_BED
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8)
+ #else
+ #define STATUS_CHAMBER_X (LCD_PIXEL_WIDTH - (STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #endif
+#endif
+
+#ifdef STATUS_CHAMBER_ANIM
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+ const unsigned char status_chamber_on_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+#else
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B00011111,B11111111,B11111000,
+ B00010000,B00000000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B01000010,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010001,B00001000,B00001000,
+ B00010000,B10000100,B00001000,
+ B00010000,B00000000,B00001000,
+ B00011111,B11111111,B11111000,
+ B00011111,B11111111,B11111000
+ };
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/combined.h b/Marlin/src/lcd/dogm/status/combined.h
new file mode 100644
index 0000000..ca18f21
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/combined.h
@@ -0,0 +1,309 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/combined.h - Status Screen Combined Heater bitmaps
+//
+
+#undef STATUS_HOTEND_ANIM
+#undef STATUS_BED_ANIM
+#define STATUS_HEATERS_XSPACE 24
+
+//
+// Status Screen Combined Heater bitmaps
+//
+#if HAS_HEATED_BED && HOTENDS <= 4
+
+ #if HOTENDS == 0
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 1
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 2
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000000,B00000000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00000000,B00000000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00000000,B00000000,B00000000,B00001000,B00100000,B10000000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #elif HOTENDS == 3
+
+ #define STATUS_HEATERS_WIDTH 96
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00001000,B00100000,B10000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00010000,B01000001,B00000000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00010000,B01000001,B00000000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00001000,B00100000,B10000000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #else // HOTENDS > 3
+
+ #define STATUS_HEATERS_WIDTH 120
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00000100,B00010000,B01000000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00001000,B00100000,B10000000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00010000,B01000001,B00000000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00010000,B01000001,B00000000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00001000,B00100000,B10000000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00000010,B00001000,B00100000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00000100,B00010000,B01000000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00001000,B00100000,B10000000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00010000,B01000001,B00000000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00001000,B00100000,B10000000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00000100,B00010000,B01000000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00000000,B00000000,B00000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00011111,B11111111,B11111000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00011111,B11111111,B11111000
+ };
+
+ #endif // HOTENDS
+
+ #define STATUS_BED_TEXT_X (STATUS_HEATERS_WIDTH - 10)
+
+#else // !HAS_HEATED_BED || HOTENDS > 3
+
+ #if HOTENDS == 0
+
+ #define STATUS_HEATERS_WIDTH 0
+
+ #elif HOTENDS == 1
+
+ #define STATUS_HEATERS_WIDTH 12
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00011111,B11100000,
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #elif HOTENDS == 2
+
+ #define STATUS_HEATERS_WIDTH 36
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #elif HOTENDS == 3
+
+ #define STATUS_HEATERS_WIDTH 60
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #elif HOTENDS == 4
+
+ #define STATUS_HEATERS_WIDTH 84
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #else // HOTENDS > 4
+
+ #define STATUS_HEATERS_WIDTH 108
+
+ const unsigned char status_heaters_bmp[] PROGMEM = {
+ B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,B00000000,B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,
+ B00111011,B01110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,
+ B00111011,B01110000,B00000000,B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,
+ B00011011,B01100000,B00000000,B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,
+ B00111011,B01110000,B00000000,B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,
+ B00111100,B11110000,B00000000,B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,
+ #else
+ B00111110,B11110000,B00000000,B00111100,B11110000,B00000000,B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111000,B01110000,
+ B00111100,B11110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B01110000,B00000000,B00111011,B11110000,
+ B00111010,B11110000,B00000000,B00111111,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,B00000000,B00111000,B11110000,
+ B00011110,B11100000,B00000000,B00011110,B11100000,B00000000,B00011100,B11100000,B00000000,B00011011,B01100000,B00000000,B00011111,B01100000,
+ B00011110,B11100000,B00000000,B00011101,B11100000,B00000000,B00011111,B01100000,B00000000,B00011000,B00100000,B00000000,B00011111,B01100000,
+ B00111110,B11110000,B00000000,B00111011,B11110000,B00000000,B00111011,B01110000,B00000000,B00111111,B01110000,B00000000,B00111011,B01110000,
+ B00111110,B11110000,B00000000,B00111000,B01110000,B00000000,B00111100,B11110000,B00000000,B00111111,B01110000,B00000000,B00111100,B11110000,
+ #endif
+ B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,B00000000,B00111111,B11110000,
+ B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,B00000000,B00001111,B11000000,
+ B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,B00000000,B00000111,B10000000,
+ B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000,B00000000,B00000011,B00000000
+ };
+
+ #endif // HOTENDS
+
+#endif // !HAS_HEATED_BED || HOTENDS > 3
diff --git a/Marlin/src/lcd/dogm/status/cutter.h b/Marlin/src/lcd/dogm/status/cutter.h
new file mode 100644
index 0000000..0e3b9dd
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/cutter.h
@@ -0,0 +1,123 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/cutter.h - Status Screen Laser / Spindle bitmaps
+//
+
+#define STATUS_CUTTER_WIDTH 24
+#define STATUS_CUTTER_X 80
+
+#if ENABLED(LASER_FEATURE)
+ #ifdef STATUS_CUTTER_ANIM
+ const unsigned char status_cutter_on_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B11000011,B00000000,
+ B00000001,B10011001,B10000000,
+ B00000011,B00100100,B11000000,
+ B00000000,B01000010,B00000000,
+ B00000000,B01000010,B00000000,
+ B00000011,B00100100,B11000000,
+ B00000001,B10011001,B10000000,
+ B00000000,B11000011,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00000000,B00000000,
+ B00000001,B00000000,B10000000,
+ B00000011,B00000000,B11000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000011,B00000000,B11000000,
+ B00000001,B00000000,B10000000,
+ B00000000,B00000000,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ #else
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000000,B00100100,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B11000011,B00000000,
+ B00000001,B10000001,B10000000,
+ B00000011,B00000000,B11000000,
+ B00000000,B00000000,B00000000,
+ B00000000,B00000000,B00000000,
+ B00000011,B00000000,B11000000,
+ B00000001,B10000001,B10000000,
+ B00000000,B11000011,B00000000,
+ B00000000,B01100110,B00000000,
+ B00000000,B00100100,B00000000
+ };
+ #endif
+#else
+ #ifdef STATUS_CUTTER_ANIM
+ const unsigned char status_cutter_on_bmp[] PROGMEM = {
+ B00000001,B11111110,B10000000,
+ B00000000,B11000000,B00000000,
+ B00000001,B10000000,B10000000,
+ B00000001,B00000000,B10000000,
+ B00000001,B11111100,B10000000,
+ B00000000,B11100000,B00000000,
+ B00000001,B11000000,B10000000,
+ B00000000,B10000001,B00000000,
+ B00000000,B01111010,B00000000,
+ B00000000,B00110100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000001,B11111110,B10000000,
+ B00000000,B11000000,B00000000,
+ B00000001,B10000000,B10000000,
+ B00000001,B00000000,B10000000,
+ B00000001,B11111100,B10000000,
+ B00000000,B11100000,B00000000,
+ B00000001,B11000000,B10000000,
+ B00000000,B10000001,B00000000,
+ B00000000,B01111010,B00000000,
+ B00000000,B00110100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ #else
+ const unsigned char status_cutter_bmp[] PROGMEM = {
+ B00000001,B11000010,B10000000,
+ B00000001,B00011100,B10000000,
+ B00000000,B11100001,B00000000,
+ B00000001,B00001110,B10000000,
+ B00000001,B01110000,B10000000,
+ B00000000,B10000111,B10000000,
+ B00000001,B00111111,B10000000,
+ B00000000,B11111111,B00000000,
+ B00000000,B01111110,B00000000,
+ B00000000,B00111100,B00000000,
+ B00000000,B00011000,B00000000,
+ B00000000,B00000000,B00000000
+ };
+ #endif
+#endif
diff --git a/Marlin/src/lcd/dogm/status/fan.h b/Marlin/src/lcd/dogm/status/fan.h
new file mode 100644
index 0000000..65f8e9c
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/fan.h
@@ -0,0 +1,443 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/fan.h - Status Screen Fan bitmaps
+//
+
+#undef STATUS_FAN_WIDTH
+#define STATUS_FAN_WIDTH 20
+
+#if STATUS_FAN_FRAMES <= 2
+
+ #define STATUS_FAN_Y 2
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111110,B00000000,
+ B00000110,B00000001,B10000000,
+ B00001000,B11111100,B01000000,
+ B00010000,B11111100,B00100000,
+ B00010000,B01111000,B00100000,
+ B00100000,B00110000,B00010000,
+ B00101100,B00000000,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101100,B00000000,B11010000,
+ B00100000,B00110000,B00010000,
+ B00010000,B01111000,B00100000,
+ B00010000,B11111100,B00100000,
+ B00001000,B11111100,B01000000,
+ B00000110,B00000001,B10000000,
+ B00000001,B11111110,B00000000
+ };
+
+ #if STATUS_FAN_FRAMES == 2
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111110,B00000000,
+ B00000110,B00000001,B10000000,
+ B00001001,B10000110,B01000000,
+ B00010011,B10000111,B00100000,
+ B00010111,B10000111,B10100000,
+ B00101111,B10000111,B11010000,
+ B00101111,B00000011,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101111,B00000011,B11010000,
+ B00101111,B10000111,B11010000,
+ B00010111,B10000111,B10100000,
+ B00010011,B10000111,B00100000,
+ B00001001,B10000110,B01000000,
+ B00000110,B00000001,B10000000,
+ B00000001,B11111110,B00000000
+ };
+ #endif
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11110000,
+ B00111000,B00000000,B01110000,
+ B00110000,B11111100,B00110000,
+ B00100000,B11111100,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101100,B00000000,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101111,B01111011,B11010000,
+ B00101110,B00110001,B11010000,
+ B00101100,B00000000,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B11111100,B00010000,
+ B00110000,B11111100,B00110000,
+ B00111000,B00000000,B01110000,
+ B00111111,B11111111,B11110000
+ };
+
+ #if STATUS_FAN_FRAMES == 2
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11110000,
+ B00111000,B00000000,B01110000,
+ B00110001,B10000110,B00110000,
+ B00100011,B10000111,B00010000,
+ B00100111,B10000111,B10010000,
+ B00101111,B10000111,B11010000,
+ B00101111,B00000011,B11010000,
+ B00100000,B00110000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B01111000,B00010000,
+ B00100000,B00110000,B00010000,
+ B00101111,B00000011,B11010000,
+ B00101111,B10000111,B11010000,
+ B00100111,B10000111,B10010000,
+ B00100011,B10000111,B00010000,
+ B00110001,B10000110,B00110000,
+ B00111000,B00000000,B01110000,
+ B00111111,B11111111,B11110000
+ };
+ #endif
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#elif STATUS_FAN_FRAMES == 3
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001001,B00000001,B00100000,
+ B00010111,B10000011,B11010000,
+ B00010111,B10000011,B11010000,
+ B00101111,B11000111,B11101000,
+ B00100111,B11000111,B11001000,
+ B00100001,B11111111,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100001,B11111111,B00001000,
+ B00100111,B11000111,B11001000,
+ B00101111,B11000111,B11101000,
+ B00010111,B10000011,B11010000,
+ B00010111,B10000011,B11010000,
+ B00001001,B00000001,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00110000,B11000000,
+ B00001001,B11110000,B00100000,
+ B00010001,B11110000,B00010000,
+ B00010000,B11110000,B00010000,
+ B00100000,B11110000,B01101000,
+ B00100000,B00110001,B11101000,
+ B00100000,B00111001,B11101000,
+ B00100000,B01111111,B11111000,
+ B00111111,B11111111,B11111000,
+ B00111111,B11111100,B00001000,
+ B00101111,B00111000,B00001000,
+ B00101110,B00011000,B00001000,
+ B00101100,B00011110,B00001000,
+ B00010000,B00011110,B00010000,
+ B00010000,B00011111,B00010000,
+ B00001000,B00011111,B00100000,
+ B00000110,B00011000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00011000,B11000000,
+ B00001000,B00011111,B00100000,
+ B00010000,B00011111,B10010000,
+ B00010100,B00011111,B00010000,
+ B00101110,B00011110,B00001000,
+ B00101111,B00011100,B00001000,
+ B00101111,B10111000,B00001000,
+ B00111111,B11111100,B00001000,
+ B00111111,B11111111,B11111000,
+ B00100000,B01111111,B11111000,
+ B00100000,B00111011,B11101000,
+ B00100000,B01110001,B11101000,
+ B00100000,B11110000,B11101000,
+ B00010001,B11110000,B01010000,
+ B00010011,B11110000,B00010000,
+ B00001001,B11110000,B00100000,
+ B00000110,B00110000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111001,B00000001,B00111000,
+ B00110111,B10000011,B11011000,
+ B00110111,B10000011,B11011000,
+ B00101111,B11000111,B11101000,
+ B00100111,B11000111,B11001000,
+ B00100001,B11111111,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100000,B01111100,B00001000,
+ B00100001,B11111111,B00001000,
+ B00100111,B11000111,B11001000,
+ B00101111,B11000111,B11101000,
+ B00110111,B10000011,B11011000,
+ B00110111,B10000011,B11011000,
+ B00111001,B00000001,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00110000,B11111000,
+ B00111001,B11110000,B00111000,
+ B00110001,B11110000,B00011000,
+ B00110000,B11110000,B00011000,
+ B00100000,B11110000,B01101000,
+ B00100000,B00110001,B11101000,
+ B00100000,B00111001,B11101000,
+ B00100000,B01111111,B11111000,
+ B00111111,B11111111,B11111000,
+ B00111111,B11111100,B00001000,
+ B00101111,B00111000,B00001000,
+ B00101110,B00011000,B00001000,
+ B00101100,B00011110,B00001000,
+ B00110000,B00011110,B00011000,
+ B00110000,B00011111,B00011000,
+ B00111000,B00011111,B00111000,
+ B00111110,B00011000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00011000,B11111000,
+ B00111000,B00011111,B00111000,
+ B00110000,B00011111,B10011000,
+ B00110100,B00011111,B00011000,
+ B00101110,B00011110,B00001000,
+ B00101111,B00011100,B00001000,
+ B00101111,B10111000,B00001000,
+ B00111111,B11111100,B00001000,
+ B00111111,B11111111,B11111000,
+ B00100000,B01111111,B11111000,
+ B00100000,B00111011,B11101000,
+ B00100000,B01110001,B11101000,
+ B00100000,B11110000,B11101000,
+ B00110001,B11110000,B01011000,
+ B00110011,B11110000,B00011000,
+ B00111001,B11110000,B00111000,
+ B00111110,B00110000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#elif STATUS_FAN_FRAMES == 4
+
+ #if ENABLED(STATUS_ALT_FAN_BITMAP)
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001000,B00111111,B00100000,
+ B00010000,B01111110,B00010000,
+ B00010000,B01111100,B00010000,
+ B00101000,B01111100,B00001000,
+ B00101100,B00111000,B00001000,
+ B00101111,B00111001,B11001000,
+ B00101111,B11111111,B11101000,
+ B00101111,B11000111,B11101000,
+ B00101111,B11111111,B11101000,
+ B00100111,B00111001,B11101000,
+ B00100000,B00111000,B01101000,
+ B00100000,B01111100,B00101000,
+ B00010000,B01111100,B00010000,
+ B00010000,B11111100,B00010000,
+ B00001001,B11111000,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001000,B00001111,B00100000,
+ B00010100,B00011111,B11010000,
+ B00010110,B00011111,B10010000,
+ B00101111,B00011111,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B11011100,B00001000,
+ B00100111,B11101111,B11001000,
+ B00100000,B01110111,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100001,B11110001,B11101000,
+ B00010011,B11110000,B11010000,
+ B00010111,B11110000,B01010000,
+ B00001001,B11100000,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B10000000,B11000000,
+ B00001001,B10000000,B00100000,
+ B00010111,B10000001,B11010000,
+ B00010111,B11000011,B11010000,
+ B00100111,B11000111,B11101000,
+ B00100011,B11000111,B11111000,
+ B00100001,B11111111,B10001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100011,B11111111,B00001000,
+ B00111111,B11000111,B10001000,
+ B00101111,B11000111,B11001000,
+ B00010111,B10000111,B11010000,
+ B00010111,B00000011,B11010000,
+ B00001000,B00000011,B00100000,
+ B00000110,B00000010,B11000000,
+ B00000001,B11111111,B00000000
+ };
+ const unsigned char status_fan3_bmp[] PROGMEM = {
+ B00000001,B11111111,B00000000,
+ B00000110,B00000000,B11000000,
+ B00001001,B11110000,B00100000,
+ B00010001,B11100000,B00010000,
+ B00010001,B11100000,B00010000,
+ B00100001,B11100001,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B01110111,B11101000,
+ B00101000,B11101110,B00101000,
+ B00101111,B11011100,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B00001111,B00001000,
+ B00010000,B00001111,B00010000,
+ B00010000,B00001111,B00010000,
+ B00001000,B00011111,B00100000,
+ B00000110,B00000000,B11000000,
+ B00000001,B11111111,B00000000
+ };
+
+ #else // !STATUS_ALT_FAN_BITMAP
+
+ const unsigned char status_fan0_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111000,B00111111,B00111000,
+ B00110000,B01111110,B00011000,
+ B00110000,B01111100,B00011000,
+ B00101000,B01111100,B00001000,
+ B00101100,B00111000,B00001000,
+ B00101111,B00111001,B11001000,
+ B00101111,B11111111,B11101000,
+ B00101111,B11000111,B11101000,
+ B00101111,B11111111,B11101000,
+ B00100111,B00111001,B11101000,
+ B00100000,B00111000,B01101000,
+ B00100000,B01111100,B00101000,
+ B00110000,B01111100,B00011000,
+ B00110000,B11111100,B00011000,
+ B00111001,B11111000,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan1_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111000,B00001111,B00111000,
+ B00110100,B00011111,B11011000,
+ B00110110,B00011111,B10011000,
+ B00101111,B00011111,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B11011100,B00001000,
+ B00100111,B11101111,B11001000,
+ B00100000,B01110111,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100001,B11110001,B11101000,
+ B00110011,B11110000,B11011000,
+ B00110111,B11110000,B01011000,
+ B00111001,B11100000,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan2_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B10000000,B11111000,
+ B00111001,B10000000,B00111000,
+ B00110111,B10000001,B11011000,
+ B00110111,B11000011,B11011000,
+ B00100111,B11000111,B11101000,
+ B00100011,B11000111,B11111000,
+ B00100001,B11111111,B10001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100000,B01101100,B00001000,
+ B00100011,B11111111,B00001000,
+ B00111111,B11000111,B10001000,
+ B00101111,B11000111,B11001000,
+ B00110111,B10000111,B11011000,
+ B00110111,B00000011,B11011000,
+ B00111000,B00000011,B00111000,
+ B00111110,B00000010,B11111000,
+ B00111111,B11111111,B11111000
+ };
+ const unsigned char status_fan3_bmp[] PROGMEM = {
+ B00111111,B11111111,B11111000,
+ B00111110,B00000000,B11111000,
+ B00111001,B11110000,B00111000,
+ B00110001,B11100000,B00011000,
+ B00110001,B11100000,B00011000,
+ B00100001,B11100001,B11101000,
+ B00100000,B11110011,B11101000,
+ B00100000,B01111111,B11101000,
+ B00100000,B01110111,B11101000,
+ B00101000,B11101110,B00101000,
+ B00101111,B11011100,B00001000,
+ B00101111,B11111100,B00001000,
+ B00101111,B10011110,B00001000,
+ B00101111,B00001111,B00001000,
+ B00110000,B00001111,B00011000,
+ B00110000,B00001111,B00011000,
+ B00111000,B00011111,B00111000,
+ B00111110,B00000000,B11111000,
+ B00111111,B11111111,B11111000
+ };
+
+ #endif // !STATUS_ALT_FAN_BITMAP
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status/hotend.h b/Marlin/src/lcd/dogm/status/hotend.h
new file mode 100644
index 0000000..4dddc42
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status/hotend.h
@@ -0,0 +1,486 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+//
+// lcd/dogm/status/hotend.h - Status Screen Hotends bitmaps
+//
+
+#define STATUS_HOTEND1_WIDTH 16
+
+#define MAX_HOTEND_BITMAPS 5
+#if HOTENDS > MAX_HOTEND_BITMAPS
+ #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
+#else
+ #define STATUS_HOTEND_BITMAPS HOTENDS
+#endif
+
+#if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
+
+ const unsigned char status_hotend_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00011111,B11100000,
+ B00011111,B11100000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00010000,B00100000,
+ B00010000,B00100000,
+ B00100000,B00010000,
+ B00100000,B00010000,
+ B00110000,B00110000,
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+#elif HOTENDS >= 2
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend1_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011011,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #else
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00011010,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ #endif
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend1_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ #if LCD_FIRST_TOOL == 0
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010100,B10100000,
+ B00010100,B10100000,
+ B00100100,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ #else
+ B00100001,B00010000,
+ B00100011,B00010000,
+ B00010101,B00100000,
+ B00010001,B00100000,
+ B00100001,B00010000,
+ B00100001,B00010000,
+ B00110001,B00110000,
+ #endif
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ #if LCD_FIRST_TOOL == 0
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00011010,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ #else
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011110,B11100000,
+ B00111101,B11110000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ #endif
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ #if LCD_FIRST_TOOL == 0
+ B00100001,B00010000,
+ B00100011,B00010000,
+ B00010101,B00100000,
+ B00010001,B00100000,
+ B00100001,B00010000,
+ B00100001,B00010000,
+ B00110001,B00110000,
+ #else
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010001,B00100000,
+ B00100010,B00010000,
+ B00100100,B00010000,
+ B00110111,B10110000,
+ #endif
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend1_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011011,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #else
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00111010,B11110000,
+ B00011110,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ #endif
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend2_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111110,B11110000,
+ B00111100,B11110000,
+ B00111010,B11110000,
+ B00011110,B11100000,
+ B00011110,B11100000,
+ B00111110,B11110000,
+ B00111110,B11110000,
+ #else
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011110,B11100000,
+ B00011101,B11100000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ #endif
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 3
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend3_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011110,B11100000,
+ B00111101,B11110000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ #else
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011100,B11100000,
+ B00111111,B01110000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #endif
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend3_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ #if LCD_FIRST_TOOL == 0
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010001,B00100000,
+ B00100010,B00010000,
+ B00100100,B00010000,
+ B00110111,B10110000,
+ #else
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010011,B00100000,
+ B00100000,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ #endif
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend3_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011110,B11100000,
+ B00011101,B11100000,
+ B00111011,B11110000,
+ B00111000,B01110000,
+ #else
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011100,B11100000,
+ B00011111,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #endif
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 4
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend4_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00011111,B01100000,
+ B00011100,B11100000,
+ B00111111,B01110000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #else
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011011,B01100000,
+ B00111000,B00110000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ #endif
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend4_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ #if LCD_FIRST_TOOL == 0
+ B00100011,B00010000,
+ B00100100,B10010000,
+ B00010000,B10100000,
+ B00010011,B00100000,
+ B00100000,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ #else
+ B00100100,B10010000,
+ B00100100,B10010000,
+ B00010100,B10100000,
+ B00010100,B10100000,
+ B00100111,B11010000,
+ B00100000,B10010000,
+ B00110000,B10110000,
+ #endif
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend4_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111100,B11110000,
+ B00111011,B01110000,
+ B00111111,B01110000,
+ B00011100,B11100000,
+ B00011111,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #else
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011000,B00100000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ #endif
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS >= 5
+
+ #ifdef STATUS_HOTEND_ANIM
+
+ const unsigned char status_hotend5_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00111111,B11110000,
+ #if LCD_FIRST_TOOL == 0
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011011,B01100000,
+ B00111000,B00110000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ #else
+ B00111000,B01110000,
+ B00111011,B11110000,
+ B00011000,B11100000,
+ B00011111,B01100000,
+ B00111111,B01110000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #endif
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ const unsigned char status_hotend5_b_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ B00100000,B00010000,
+ #if LCD_FIRST_TOOL == 0
+ B00100100,B10010000,
+ B00100100,B10010000,
+ B00010100,B10100000,
+ B00010100,B10100000,
+ B00100111,B11010000,
+ B00100000,B10010000,
+ B00110000,B10110000,
+ #else
+ B00100111,B10010000,
+ B00100100,B00010000,
+ B00010111,B00100000,
+ B00010000,B10100000,
+ B00100000,B10010000,
+ B00100100,B10010000,
+ B00110011,B00110000,
+ #endif
+ B00001000,B01000000,
+ B00000100,B10000000,
+ B00000011,B00000000
+ };
+
+ #else
+
+ const unsigned char status_hotend5_a_bmp[] PROGMEM = {
+ B00011111,B11100000,
+ #if LCD_FIRST_TOOL == 0
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00111011,B01110000,
+ B00011011,B01100000,
+ B00011000,B00100000,
+ B00111111,B01110000,
+ B00111111,B01110000,
+ #else
+ B00111000,B01110000,
+ B00111011,B11110000,
+ B00111000,B11110000,
+ B00011111,B01100000,
+ B00011111,B01100000,
+ B00111011,B01110000,
+ B00111100,B11110000,
+ #endif
+ B00111111,B11110000,
+ B00001111,B11000000,
+ B00000111,B10000000,
+ B00000011,B00000000
+ };
+
+ #endif
+
+ #endif
+
+#endif
diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
new file mode 100644
index 0000000..8ae6ab6
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -0,0 +1,940 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+//
+// status_screen_DOGM.cpp
+// Standard Status Screen for Graphical Display
+//
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB && DISABLED(LIGHTWEIGHT_UI)
+
+#include "dogm_Statusscreen.h"
+#include "marlinui_DOGM.h"
+#include "../marlinui.h"
+#include "../lcdprint.h"
+#include "../../libs/numtostr.h"
+
+#include "../../module/motion.h"
+#include "../../module/temperature.h"
+
+#include "../../gcode/parser.h" // for units (and volumetric)
+
+#if ENABLED(LCD_SHOW_E_TOTAL)
+ #include "../../MarlinCore.h" // for printingIsActive(), marlin_state and MF_SD_COMPLETE
+#endif
+
+#if ENABLED(FILAMENT_LCD_DISPLAY)
+ #include "../../feature/filwidth.h"
+ #include "../../module/planner.h"
+#endif
+
+#if HAS_CUTTER
+ #include "../../feature/spindle_laser.h"
+#endif
+
+#if HAS_POWER_MONITOR
+ #include "../../feature/power_monitor.h"
+#endif
+
+#if ENABLED(SDSUPPORT)
+ #include "../../sd/cardreader.h"
+#endif
+
+#if HAS_PRINT_PROGRESS
+ #include "../../module/printcounter.h"
+#endif
+
+#if HAS_DUAL_MIXING
+ #include "../../feature/mixing.h"
+#endif
+
+#define X_LABEL_POS 3
+#define X_VALUE_POS 11
+#define XYZ_SPACING 37
+
+#define X_LABEL_POS_IN (X_LABEL_POS - 2)
+#define X_VALUE_POS_IN (X_VALUE_POS - 5)
+#define XYZ_SPACING_IN (XYZ_SPACING + 9)
+
+#define XYZ_BASELINE (30 + INFO_FONT_ASCENT)
+#define EXTRAS_BASELINE (40 + INFO_FONT_ASCENT)
+#define STATUS_BASELINE (LCD_PIXEL_HEIGHT - INFO_FONT_DESCENT)
+
+#if ANIM_HBCC
+ enum HeatBits : uint8_t {
+ HEATBIT_HOTEND,
+ HEATBIT_BED = HOTENDS,
+ HEATBIT_CHAMBER,
+ HEATBIT_CUTTER
+ };
+ IF<(HEATBIT_CUTTER > 7), uint16_t, uint8_t>::type heat_bits;
+#endif
+
+#if ANIM_HOTEND
+ #define HOTEND_ALT(N) TEST(heat_bits, HEATBIT_HOTEND + N)
+#else
+ #define HOTEND_ALT(N) false
+#endif
+#if ANIM_BED
+ #define BED_ALT() TEST(heat_bits, HEATBIT_BED)
+#else
+ #define BED_ALT() false
+#endif
+#if ANIM_CHAMBER
+ #define CHAMBER_ALT() TEST(heat_bits, HEATBIT_CHAMBER)
+#else
+ #define CHAMBER_ALT() false
+#endif
+#if ANIM_CUTTER
+ #define CUTTER_ALT(N) TEST(heat_bits, HEATBIT_CUTTER)
+#else
+ #define CUTTER_ALT() false
+#endif
+
+#if DO_DRAW_HOTENDS
+ #define MAX_HOTEND_DRAW _MIN(HOTENDS, ((LCD_PIXEL_WIDTH - (STATUS_LOGO_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8) / (STATUS_HEATERS_XSPACE)))
+#endif
+
+#if EITHER(DO_DRAW_BED, DO_DRAW_HOTENDS)
+ #define STATUS_HEATERS_BOT (STATUS_HEATERS_Y + STATUS_HEATERS_HEIGHT - 1)
+#endif
+
+#if HAS_POWER_MONITOR
+
+ void display_power_monitor(const uint8_t x, const uint8_t y) {
+
+ lcd_moveto(x, y);
+
+ #if HAS_POWER_MONITOR_WATTS
+ const bool wflag = power_monitor.power_display_enabled();
+ #endif
+ #if ENABLED(POWER_MONITOR_CURRENT)
+ const bool iflag = power_monitor.current_display_enabled();
+ #endif
+ #if HAS_POWER_MONITOR_VREF
+ const bool vflag = power_monitor.voltage_display_enabled();
+ #endif
+
+ #if HAS_POWER_MONITOR_WATTS
+ // Cycle between current, voltage, and power
+ if (ELAPSED(millis(), power_monitor.display_item_ms)) {
+ power_monitor.display_item_ms = millis() + 1000UL;
+ ++power_monitor.display_item;
+ }
+ #elif ENABLED(POWER_MONITOR_CURRENT)
+ power_monitor.display_item = 0;
+ #elif HAS_POWER_MONITOR_VREF
+ power_monitor.display_item = 1;
+ #endif
+
+ // ensure we have the right one selected for display
+ for (uint8_t i = 0; i < 3; i++) {
+ #if ENABLED(POWER_MONITOR_CURRENT)
+ if (power_monitor.display_item == 0 && !iflag) ++power_monitor.display_item;
+ #endif
+ #if HAS_POWER_MONITOR_VREF
+ if (power_monitor.display_item == 1 && !vflag) ++power_monitor.display_item;
+ #endif
+ #if HAS_POWER_MONITOR_WATTS
+ if (power_monitor.display_item == 2 && !wflag) ++power_monitor.display_item;
+ #endif
+ if (power_monitor.display_item >= 3) power_monitor.display_item = 0;
+ }
+
+ switch (power_monitor.display_item) {
+ #if ENABLED(POWER_MONITOR_CURRENT) // Current
+ case 0: if (iflag) power_monitor.draw_current(); break;
+ #endif
+ #if HAS_POWER_MONITOR_VREF // Voltage
+ case 1: if (vflag) power_monitor.draw_voltage(); break;
+ #endif
+ #if HAS_POWER_MONITOR_WATTS // Power
+ case 2: if (wflag) power_monitor.draw_power(); break;
+ #endif
+ default: break;
+ }
+ }
+#endif
+
+#define PROGRESS_BAR_X 54
+#define PROGRESS_BAR_Y (EXTRAS_BASELINE + 1)
+#define PROGRESS_BAR_WIDTH (LCD_PIXEL_WIDTH - PROGRESS_BAR_X)
+
+FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, const uint8_t ty) {
+ const char *str = i16tostr3rj(temp);
+ const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
+ lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
+ lcd_put_wchar(LCD_STR_DEGREE[0]);
+}
+
+#if DO_DRAW_HOTENDS
+
+ // Draw hotend bitmap with current and target temperatures
+ FORCE_INLINE void _draw_hotend_status(const heater_id_t heater_id, const bool blink) {
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #endif
+
+ const bool isHeat = HOTEND_ALT(heater_id);
+
+ const uint8_t tx = STATUS_HOTEND_TEXT_X(heater_id);
+
+ const float temp = thermalManager.degHotend(heater_id),
+ target = thermalManager.degTargetHotend(heater_id);
+
+ #if DISABLED(STATUS_HOTEND_ANIM)
+ #define STATIC_HOTEND true
+ #define HOTEND_DOT isHeat
+ #else
+ #define STATIC_HOTEND false
+ #define HOTEND_DOT false
+ #endif
+
+ #if ANIM_HOTEND && BOTH(STATUS_HOTEND_INVERTED, STATUS_HOTEND_NUMBERLESS)
+ #define OFF_BMP(N) status_hotend_b_bmp
+ #define ON_BMP(N) status_hotend_a_bmp
+ #elif ANIM_HOTEND && DISABLED(STATUS_HOTEND_INVERTED) && ENABLED(STATUS_HOTEND_NUMBERLESS)
+ #define OFF_BMP(N) status_hotend_a_bmp
+ #define ON_BMP(N) status_hotend_b_bmp
+ #elif BOTH(ANIM_HOTEND, STATUS_HOTEND_INVERTED)
+ #define OFF_BMP(N) status_hotend##N##_b_bmp
+ #define ON_BMP(N) status_hotend##N##_a_bmp
+ #else
+ #define OFF_BMP(N) status_hotend##N##_a_bmp
+ #define ON_BMP(N) status_hotend##N##_b_bmp
+ #endif
+
+ #if STATUS_HOTEND_BITMAPS > 1
+ static const unsigned char* const status_hotend_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = ARRAY_N(STATUS_HOTEND_BITMAPS, OFF_BMP(1), OFF_BMP(2), OFF_BMP(3), OFF_BMP(4), OFF_BMP(5), OFF_BMP(6));
+ #if ANIM_HOTEND
+ static const unsigned char* const status_hotend_on_gfx[STATUS_HOTEND_BITMAPS] PROGMEM = ARRAY_N(STATUS_HOTEND_BITMAPS, ON_BMP(1), ON_BMP(2), ON_BMP(3), ON_BMP(4), ON_BMP(5), ON_BMP(6));
+ #define HOTEND_BITMAP(N,S) (unsigned char*)pgm_read_ptr((S) ? &status_hotend_on_gfx[(N) % (STATUS_HOTEND_BITMAPS)] : &status_hotend_gfx[(N) % (STATUS_HOTEND_BITMAPS)])
+ #else
+ #define HOTEND_BITMAP(N,S) (unsigned char*)pgm_read_ptr(&status_hotend_gfx[(N) % (STATUS_HOTEND_BITMAPS)])
+ #endif
+ #elif ANIM_HOTEND
+ #define HOTEND_BITMAP(N,S) ((S) ? ON_BMP() : OFF_BMP())
+ #else
+ #define HOTEND_BITMAP(N,S) status_hotend_a_bmp
+ #endif
+
+ if (PAGE_CONTAINS(STATUS_HEATERS_Y, STATUS_HEATERS_BOT)) {
+
+ #define BAR_TALL (STATUS_HEATERS_HEIGHT - 2)
+
+ const float prop = target - 20,
+ perc = prop > 0 && temp >= 20 ? (temp - 20) / prop : 0;
+ uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
+ NOMORE(tall, BAR_TALL);
+
+ #if ANIM_HOTEND
+ // Draw hotend bitmap, either whole or split by the heating percent
+ const uint8_t hx = STATUS_HOTEND_X(heater_id),
+ bw = STATUS_HOTEND_BYTEWIDTH(heater_id);
+ #if ENABLED(STATUS_HEAT_PERCENT)
+ if (isHeat && tall <= BAR_TALL) {
+ const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
+ u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(heater_id, false));
+ u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(heater_id, true) + ph * bw);
+ }
+ else
+ #endif
+ u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(heater_id, isHeat));
+ #endif
+
+ } // PAGE_CONTAINS
+
+ if (PAGE_UNDER(7)) {
+ #if HEATER_IDLE_HANDLER
+ const bool dodraw = (blink || !thermalManager.heater_idle[heater_id].timed_out);
+ #else
+ constexpr bool dodraw = true;
+ #endif
+ if (dodraw) _draw_centered_temp(target + 0.5, tx, 7);
+ }
+
+ if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
+ _draw_centered_temp(temp + 0.5f, tx, 28);
+
+ if (STATIC_HOTEND && HOTEND_DOT && PAGE_CONTAINS(17, 19)) {
+ u8g.setColorIndex(0); // set to white on black
+ u8g.drawBox(tx, 20 - 3, 2, 2);
+ u8g.setColorIndex(1); // restore black on white
+ }
+
+ }
+
+#endif // DO_DRAW_HOTENDS
+
+#if DO_DRAW_BED
+
+ // Draw bed bitmap with current and target temperatures
+ FORCE_INLINE void _draw_bed_status(const bool blink) {
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #endif
+
+ const uint8_t tx = STATUS_BED_TEXT_X;
+
+ const float temp = thermalManager.degBed(),
+ target = thermalManager.degTargetBed();
+
+ #if ENABLED(STATUS_HEAT_PERCENT) || DISABLED(STATUS_BED_ANIM)
+ const bool isHeat = BED_ALT();
+ #endif
+
+ #if DISABLED(STATUS_BED_ANIM)
+ #define STATIC_BED true
+ #define BED_DOT isHeat
+ #else
+ #define STATIC_BED false
+ #define BED_DOT false
+ #endif
+
+ if (PAGE_CONTAINS(STATUS_HEATERS_Y, STATUS_HEATERS_BOT)) {
+
+ #define BAR_TALL (STATUS_HEATERS_HEIGHT - 2)
+
+ const float prop = target - 20,
+ perc = prop > 0 && temp >= 20 ? (temp - 20) / prop : 0;
+ uint8_t tall = uint8_t(perc * BAR_TALL + 0.5f);
+ NOMORE(tall, BAR_TALL);
+
+ // Draw a heating progress bar, if specified
+ #if ENABLED(STATUS_HEAT_PERCENT)
+
+ if (isHeat) {
+ const uint8_t bx = STATUS_BED_X + STATUS_BED_WIDTH;
+ u8g.drawFrame(bx, STATUS_HEATERS_Y, 3, STATUS_HEATERS_HEIGHT);
+ if (tall) {
+ const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
+ if (PAGE_OVER(STATUS_HEATERS_Y + ph))
+ u8g.drawVLine(bx + 1, STATUS_HEATERS_Y + ph, tall);
+ }
+ }
+
+ #endif
+
+ } // PAGE_CONTAINS
+
+ if (PAGE_UNDER(7)) {
+ #if HEATER_IDLE_HANDLER
+ const bool dodraw = (blink || !thermalManager.heater_idle[thermalManager.IDLE_INDEX_BED].timed_out);
+ #else
+ constexpr bool dodraw = true;
+ #endif
+ if (dodraw) _draw_centered_temp(target + 0.5, tx, 7);
+ }
+
+ if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
+ _draw_centered_temp(temp + 0.5f, tx, 28);
+
+ if (STATIC_BED && BED_DOT && PAGE_CONTAINS(17, 19)) {
+ u8g.setColorIndex(0); // set to white on black
+ u8g.drawBox(tx, 20 - 2, 2, 2);
+ u8g.setColorIndex(1); // restore black on white
+ }
+
+ }
+
+#endif // DO_DRAW_BED
+
+#if DO_DRAW_CHAMBER
+
+ FORCE_INLINE void _draw_chamber_status() {
+ #if HAS_HEATED_CHAMBER
+ if (PAGE_UNDER(7))
+ _draw_centered_temp(thermalManager.degTargetChamber() + 0.5f, STATUS_CHAMBER_TEXT_X, 7);
+ #endif
+
+ if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
+ _draw_centered_temp(thermalManager.degChamber() + 0.5f, STATUS_CHAMBER_TEXT_X, 28);
+ }
+
+#endif // DO_DRAW_CHAMBER
+
+//
+// Before homing, blink '123' <-> '???'.
+// Homed but unknown... '123' <-> ' '.
+// Homed and known, display constantly.
+//
+FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink) {
+ const bool is_inch = parser.using_inch_units();
+ const AxisEnum a = TERN(LCD_SHOW_E_TOTAL, axis == E_AXIS ? X_AXIS : axis, axis);
+ const uint8_t offs = a * (is_inch ? XYZ_SPACING_IN : XYZ_SPACING);
+ lcd_put_wchar((is_inch ? X_LABEL_POS_IN : X_LABEL_POS) + offs, XYZ_BASELINE, axis_codes[axis]);
+ lcd_moveto((is_inch ? X_VALUE_POS_IN : X_VALUE_POS) + offs, XYZ_BASELINE);
+
+ if (blink)
+ lcd_put_u8str(value);
+ else if (axis_should_home(axis))
+ while (const char c = *value++) lcd_put_wchar(c <= '.' ? c : '?');
+ else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis))
+ lcd_put_u8str_P(axis == Z_AXIS ? PSTR(" ") : PSTR(" "));
+ else
+ lcd_put_u8str(value);
+}
+
+/**
+ * Draw the Status Screen for a 128x64 DOGM (U8glib) display.
+ *
+ * Called as needed to update the current display stripe.
+ * Use the PAGE_CONTAINS macros to avoid pointless draw calls.
+ */
+void MarlinUI::draw_status_screen() {
+ constexpr int xystorage = TERN(INCH_MODE_SUPPORT, 8, 5);
+ static char xstring[TERN(LCD_SHOW_E_TOTAL, 12, xystorage)], ystring[xystorage], zstring[8];
+
+ #if ENABLED(FILAMENT_LCD_DISPLAY)
+ static char wstring[5], mstring[4];
+ #endif
+
+ #if HAS_PRINT_PROGRESS
+ #if DISABLED(DOGM_SD_PERCENT)
+ #define _SD_INFO_X(len) (PROGRESS_BAR_X + (PROGRESS_BAR_WIDTH) / 2 - (len) * (MENU_FONT_WIDTH) / 2)
+ #else
+ #define _SD_INFO_X(len) (LCD_PIXEL_WIDTH - (len) * (MENU_FONT_WIDTH))
+ #endif
+
+ #if ENABLED(DOGM_SD_PERCENT)
+ static char progress_string[5];
+ #endif
+ static uint8_t lastElapsed = 0xFF, lastProgress = 0xFF;
+ static u8g_uint_t elapsed_x_pos = 0, progress_bar_solid_width = 0;
+ static char elapsed_string[16];
+ #if ENABLED(SHOW_REMAINING_TIME)
+ static u8g_uint_t estimation_x_pos = 0;
+ static char estimation_string[10];
+ #if BOTH(DOGM_SD_PERCENT, ROTATE_PROGRESS_DISPLAY)
+ static u8g_uint_t progress_x_pos = 0;
+ static uint8_t progress_state = 0;
+ static bool prev_blink = 0;
+ #endif
+ #endif
+ #endif
+
+ const bool show_e_total = TERN0(LCD_SHOW_E_TOTAL, printingIsActive() || marlin_state == MF_SD_COMPLETE);
+
+ // At the first page, generate new display values
+ if (first_page) {
+ #if ANIM_HBCC
+ uint8_t new_bits = 0;
+ #if ANIM_HOTEND
+ HOTEND_LOOP() if (thermalManager.isHeatingHotend(e)) SBI(new_bits, HEATBIT_HOTEND + e);
+ #endif
+ if (TERN0(ANIM_BED, thermalManager.isHeatingBed())) SBI(new_bits, HEATBIT_BED);
+ #if DO_DRAW_CHAMBER && HAS_HEATED_CHAMBER
+ if (thermalManager.isHeatingChamber()) SBI(new_bits, HEATBIT_CHAMBER);
+ #endif
+ if (TERN0(ANIM_CUTTER, cutter.enabled())) SBI(new_bits, HEATBIT_CUTTER);
+ heat_bits = new_bits;
+ #endif
+
+ const xyz_pos_t lpos = current_position.asLogical();
+ const bool is_inch = parser.using_inch_units();
+ strcpy(zstring, is_inch ? ftostr42_52(LINEAR_UNIT(lpos.z)) : ftostr52sp(lpos.z));
+
+ if (show_e_total) {
+ #if ENABLED(LCD_SHOW_E_TOTAL)
+ const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm
+ sprintf_P(xstring, PSTR("%ld%cm"), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm
+ #endif
+ }
+ else {
+ strcpy(xstring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.x)) : ftostr4sign(lpos.x));
+ strcpy(ystring, is_inch ? ftostr53_63(LINEAR_UNIT(lpos.y)) : ftostr4sign(lpos.y));
+ }
+
+ #if ENABLED(FILAMENT_LCD_DISPLAY)
+ strcpy(wstring, ftostr12ns(filwidth.measured_mm));
+ strcpy(mstring, i16tostr3rj(planner.volumetric_percent(parser.volumetric_enabled)));
+ #endif
+
+ // Progress / elapsed / estimation updates and string formatting to avoid float math on each LCD draw
+ #if HAS_PRINT_PROGRESS
+ const progress_t progress = TERN(HAS_PRINT_PROGRESS_PERMYRIAD, get_progress_permyriad, get_progress_percent)();
+ duration_t elapsed = print_job_timer.duration();
+ const uint8_t p = progress & 0xFF, ev = elapsed.value & 0xFF;
+ if (p != lastProgress) {
+ lastProgress = p;
+
+ progress_bar_solid_width = u8g_uint_t((PROGRESS_BAR_WIDTH - 2) * (progress / (PROGRESS_SCALE)) * 0.01f);
+
+ #if ENABLED(DOGM_SD_PERCENT)
+ if (progress == 0) {
+ progress_string[0] = '\0';
+ #if ENABLED(SHOW_REMAINING_TIME)
+ estimation_string[0] = '\0';
+ estimation_x_pos = _SD_INFO_X(0);
+ #endif
+ }
+ else
+ strcpy(progress_string, TERN(PRINT_PROGRESS_SHOW_DECIMALS, permyriadtostr4(progress), ui8tostr3rj(progress / (PROGRESS_SCALE))));
+
+ #if BOTH(SHOW_REMAINING_TIME, ROTATE_PROGRESS_DISPLAY) // Tri-state progress display mode
+ progress_x_pos = _SD_INFO_X(strlen(progress_string) + 1);
+ #endif
+ #endif
+ }
+
+ constexpr bool can_show_days = DISABLED(DOGM_SD_PERCENT) || ENABLED(ROTATE_PROGRESS_DISPLAY);
+ if (ev != lastElapsed) {
+ lastElapsed = ev;
+ const uint8_t len = elapsed.toDigital(elapsed_string, can_show_days && elapsed.value >= 60*60*24L);
+ elapsed_x_pos = _SD_INFO_X(len);
+
+ #if ENABLED(SHOW_REMAINING_TIME)
+ if (!(ev & 0x3)) {
+ uint32_t timeval = (0
+ #if BOTH(LCD_SET_PROGRESS_MANUALLY, USE_M73_REMAINING_TIME)
+ + get_remaining_time()
+ #endif
+ );
+ if (!timeval && progress > 0) timeval = elapsed.value * (100 * (PROGRESS_SCALE) - progress) / progress;
+ if (!timeval) {
+ estimation_string[0] = '\0';
+ estimation_x_pos = _SD_INFO_X(0);
+ }
+ else {
+ duration_t estimation = timeval;
+ const uint8_t len = estimation.toDigital(estimation_string, can_show_days && estimation.value >= 60*60*24L);
+ estimation_x_pos = _SD_INFO_X(len
+ #if !BOTH(DOGM_SD_PERCENT, ROTATE_PROGRESS_DISPLAY)
+ + 1
+ #endif
+ );
+ }
+ }
+ #endif
+ }
+ #endif
+ }
+
+ const bool blink = get_blink();
+
+ // Status Menu Font
+ set_font(FONT_STATUSMENU);
+
+ #if DO_DRAW_LOGO
+ if (PAGE_CONTAINS(STATUS_LOGO_Y, STATUS_LOGO_Y + STATUS_LOGO_HEIGHT - 1))
+ u8g.drawBitmapP(STATUS_LOGO_X, STATUS_LOGO_Y, STATUS_LOGO_BYTEWIDTH, STATUS_LOGO_HEIGHT, status_logo_bmp);
+ #endif
+
+ #if STATUS_HEATERS_WIDTH
+ // Draw all heaters (and maybe the bed) in one go
+ if (PAGE_CONTAINS(STATUS_HEATERS_Y, STATUS_HEATERS_Y + STATUS_HEATERS_HEIGHT - 1))
+ u8g.drawBitmapP(STATUS_HEATERS_X, STATUS_HEATERS_Y, STATUS_HEATERS_BYTEWIDTH, STATUS_HEATERS_HEIGHT, status_heaters_bmp);
+ #endif
+
+ #if DO_DRAW_CUTTER && DISABLED(STATUS_COMBINE_HEATERS)
+ #if ANIM_CUTTER
+ #define CUTTER_BITMAP(S) ((S) ? status_cutter_on_bmp : status_cutter_bmp)
+ #else
+ #define CUTTER_BITMAP(S) status_cutter_bmp
+ #endif
+ const uint8_t cuttery = STATUS_CUTTER_Y(CUTTER_ALT()),
+ cutterh = STATUS_CUTTER_HEIGHT(CUTTER_ALT());
+ if (PAGE_CONTAINS(cuttery, cuttery + cutterh - 1))
+ u8g.drawBitmapP(STATUS_CUTTER_X, cuttery, STATUS_CUTTER_BYTEWIDTH, cutterh, CUTTER_BITMAP(CUTTER_ALT()));
+ #endif
+
+ #if DO_DRAW_BED && DISABLED(STATUS_COMBINE_HEATERS)
+ #if ANIM_BED
+ #define BED_BITMAP(S) ((S) ? status_bed_on_bmp : status_bed_bmp)
+ #else
+ #define BED_BITMAP(S) status_bed_bmp
+ #endif
+ const uint8_t bedy = STATUS_BED_Y(BED_ALT()),
+ bedh = STATUS_BED_HEIGHT(BED_ALT());
+ if (PAGE_CONTAINS(bedy, bedy + bedh - 1))
+ u8g.drawBitmapP(STATUS_BED_X, bedy, STATUS_BED_BYTEWIDTH, bedh, BED_BITMAP(BED_ALT()));
+ #endif
+
+ #if DO_DRAW_CHAMBER && DISABLED(STATUS_COMBINE_HEATERS)
+ #if ANIM_CHAMBER
+ #define CHAMBER_BITMAP(S) ((S) ? status_chamber_on_bmp : status_chamber_bmp)
+ #else
+ #define CHAMBER_BITMAP(S) status_chamber_bmp
+ #endif
+ const uint8_t chambery = STATUS_CHAMBER_Y(CHAMBER_ALT()),
+ chamberh = STATUS_CHAMBER_HEIGHT(CHAMBER_ALT());
+ if (PAGE_CONTAINS(chambery, chambery + chamberh - 1))
+ u8g.drawBitmapP(STATUS_CHAMBER_X, chambery, STATUS_CHAMBER_BYTEWIDTH, chamberh, CHAMBER_BITMAP(CHAMBER_ALT()));
+ #endif
+
+ #if DO_DRAW_FAN
+ #if STATUS_FAN_FRAMES > 2
+ static bool old_blink;
+ static uint8_t fan_frame;
+ if (old_blink != blink) {
+ old_blink = blink;
+ if (!thermalManager.fan_speed[0] || ++fan_frame >= STATUS_FAN_FRAMES) fan_frame = 0;
+ }
+ #endif
+ if (PAGE_CONTAINS(STATUS_FAN_Y, STATUS_FAN_Y + STATUS_FAN_HEIGHT - 1))
+ u8g.drawBitmapP(STATUS_FAN_X, STATUS_FAN_Y, STATUS_FAN_BYTEWIDTH, STATUS_FAN_HEIGHT,
+ #if STATUS_FAN_FRAMES > 2
+ fan_frame == 1 ? status_fan1_bmp :
+ fan_frame == 2 ? status_fan2_bmp :
+ #if STATUS_FAN_FRAMES > 3
+ fan_frame == 3 ? status_fan3_bmp :
+ #endif
+ #elif STATUS_FAN_FRAMES > 1
+ blink && thermalManager.fan_speed[0] ? status_fan1_bmp :
+ #endif
+ status_fan0_bmp
+ );
+ #endif
+
+ //
+ // Temperature Graphics and Info
+ //
+ if (PAGE_UNDER(6 + 1 + 12 + 1 + 6 + 1)) {
+ // Extruders
+ #if DO_DRAW_HOTENDS
+ LOOP_L_N(e, MAX_HOTEND_DRAW)
+ _draw_hotend_status((heater_id_t)e, blink);
+ #endif
+
+ // Laser / Spindle
+ #if DO_DRAW_CUTTER
+ if (cutter.isReady && PAGE_CONTAINS(STATUS_CUTTER_TEXT_Y - INFO_FONT_ASCENT, STATUS_CUTTER_TEXT_Y - 1)) {
+ #if CUTTER_UNIT_IS(PERCENT)
+ lcd_put_u8str(STATUS_CUTTER_TEXT_X, STATUS_CUTTER_TEXT_Y, cutter_power2str(cutter.unitPower));
+ #elif CUTTER_UNIT_IS(RPM)
+ lcd_put_u8str(STATUS_CUTTER_TEXT_X - 2, STATUS_CUTTER_TEXT_Y, ftostr51rj(float(cutter.unitPower) / 1000));
+ lcd_put_wchar('K');
+ #else
+ lcd_put_u8str(STATUS_CUTTER_TEXT_X, STATUS_CUTTER_TEXT_Y, cutter_power2str(cutter.unitPower));
+ #endif
+ }
+ #endif
+
+ // Heated Bed
+ TERN_(DO_DRAW_BED, _draw_bed_status(blink));
+
+ // Heated Chamber
+ TERN_(DO_DRAW_CHAMBER, _draw_chamber_status());
+
+ // Fan, if a bitmap was provided
+ #if DO_DRAW_FAN
+ if (PAGE_CONTAINS(STATUS_FAN_TEXT_Y - INFO_FONT_ASCENT, STATUS_FAN_TEXT_Y - 1)) {
+ char c = '%';
+ uint16_t spd = thermalManager.fan_speed[0];
+ if (spd) {
+ #if ENABLED(ADAPTIVE_FAN_SLOWING)
+ if (!blink && thermalManager.fan_speed_scaler[0] < 128) {
+ spd = thermalManager.scaledFanSpeed(0, spd);
+ c = '*';
+ }
+ #endif
+ lcd_put_u8str(STATUS_FAN_TEXT_X, STATUS_FAN_TEXT_Y, i16tostr3rj(thermalManager.fanPercent(spd)));
+ lcd_put_wchar(c);
+ }
+ }
+ #endif
+ }
+
+ #if ENABLED(SDSUPPORT)
+ //
+ // SD Card Symbol
+ //
+ if (card.isFileOpen() && PAGE_CONTAINS(42, 51)) {
+ // Upper box
+ u8g.drawBox(42, 42, 8, 7); // 42-48 (or 41-47)
+ // Right edge
+ u8g.drawBox(50, 44, 2, 5); // 44-48 (or 43-47)
+ // Bottom hollow box
+ u8g.drawFrame(42, 49, 10, 4); // 49-52 (or 48-51)
+ // Corner pixel
+ u8g.drawPixel(50, 43); // 43 (or 42)
+ }
+ #endif // SDSUPPORT
+
+ #if HAS_PRINT_PROGRESS
+ //
+ // Progress bar frame
+ //
+
+ if (PAGE_CONTAINS(PROGRESS_BAR_Y, PROGRESS_BAR_Y + 3))
+ u8g.drawFrame(PROGRESS_BAR_X, PROGRESS_BAR_Y, PROGRESS_BAR_WIDTH, 4);
+
+ //
+ // Progress bar solid part
+ //
+
+ if (PAGE_CONTAINS(PROGRESS_BAR_Y + 1, PROGRESS_BAR_Y + 2))
+ u8g.drawBox(PROGRESS_BAR_X + 1, PROGRESS_BAR_Y + 1, progress_bar_solid_width, 2);
+
+ if (PAGE_CONTAINS(EXTRAS_BASELINE - INFO_FONT_ASCENT, EXTRAS_BASELINE - 1)) {
+
+ #if ALL(DOGM_SD_PERCENT, SHOW_REMAINING_TIME, ROTATE_PROGRESS_DISPLAY)
+
+ if (prev_blink != blink) {
+ prev_blink = blink;
+ if (++progress_state >= 3) progress_state = 0;
+ }
+
+ if (progress_state == 0) {
+ if (progress_string[0]) {
+ lcd_put_u8str(progress_x_pos, EXTRAS_BASELINE, progress_string);
+ lcd_put_wchar('%');
+ }
+ }
+ else if (progress_state == 2 && estimation_string[0]) {
+ lcd_put_u8str_P(PROGRESS_BAR_X, EXTRAS_BASELINE, PSTR("R:"));
+ lcd_put_u8str(estimation_x_pos, EXTRAS_BASELINE, estimation_string);
+ }
+ else if (elapsed_string[0]) {
+ lcd_put_u8str_P(PROGRESS_BAR_X, EXTRAS_BASELINE, E_LBL);
+ lcd_put_u8str(elapsed_x_pos, EXTRAS_BASELINE, elapsed_string);
+ }
+
+ #else // !DOGM_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
+
+ //
+ // SD Percent Complete
+ //
+
+ #if ENABLED(DOGM_SD_PERCENT)
+ if (progress_string[0]) {
+ lcd_put_u8str(55, EXTRAS_BASELINE, progress_string); // Percent complete
+ lcd_put_wchar('%');
+ }
+ #endif
+
+ //
+ // Elapsed Time
+ //
+
+ #if ENABLED(SHOW_REMAINING_TIME)
+ if (blink && estimation_string[0]) {
+ lcd_put_wchar(estimation_x_pos, EXTRAS_BASELINE, 'R');
+ lcd_put_u8str(estimation_string);
+ }
+ else
+ #endif
+ lcd_put_u8str(elapsed_x_pos, EXTRAS_BASELINE, elapsed_string);
+
+ #endif // !DOGM_SD_PERCENT || !SHOW_REMAINING_TIME || !ROTATE_PROGRESS_DISPLAY
+ }
+
+ #endif // HAS_PRINT_PROGRESS
+
+ //
+ // XYZ Coordinates
+ //
+
+ #if EITHER(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
+ #define XYZ_FRAME_TOP 29
+ #define XYZ_FRAME_HEIGHT INFO_FONT_ASCENT + 3
+ #else
+ #define XYZ_FRAME_TOP 30
+ #define XYZ_FRAME_HEIGHT INFO_FONT_ASCENT + 1
+ #endif
+
+ if (PAGE_CONTAINS(XYZ_FRAME_TOP, XYZ_FRAME_TOP + XYZ_FRAME_HEIGHT - 1)) {
+
+ #if DISABLED(XYZ_NO_FRAME)
+ #if ENABLED(XYZ_HOLLOW_FRAME)
+ u8g.drawFrame(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 29-40 7: 29-39
+ #else
+ u8g.drawBox(0, XYZ_FRAME_TOP, LCD_PIXEL_WIDTH, XYZ_FRAME_HEIGHT); // 8: 30-39 7: 30-37
+ #endif
+ #endif
+
+ if (PAGE_CONTAINS(XYZ_BASELINE - (INFO_FONT_ASCENT - 1), XYZ_BASELINE)) {
+
+ #if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
+ u8g.setColorIndex(0); // white on black
+ #endif
+
+ #if HAS_DUAL_MIXING
+
+ // Two-component mix / gradient instead of XY
+
+ char mixer_messages[15];
+ PGM_P mix_label;
+ #if ENABLED(GRADIENT_MIX)
+ if (mixer.gradient.enabled) {
+ mixer.update_mix_from_gradient();
+ mix_label = PSTR("Gr");
+ }
+ else
+ #endif
+ {
+ mixer.update_mix_from_vtool();
+ mix_label = PSTR("Mx");
+ }
+
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wformat-overflow"
+
+ sprintf_P(mixer_messages, PSTR(S_FMT " %d;%d%% "), mix_label, int(mixer.mix[0]), int(mixer.mix[1]));
+ lcd_put_u8str(X_LABEL_POS, XYZ_BASELINE, mixer_messages);
+
+ #pragma GCC diagnostic pop
+
+ #else
+
+ if (show_e_total) {
+ _draw_axis_value(E_AXIS, xstring, true);
+ lcd_put_u8str_P(PSTR(" "));
+ }
+ else {
+ _draw_axis_value(X_AXIS, xstring, blink);
+ _draw_axis_value(Y_AXIS, ystring, blink);
+ }
+
+ #endif
+
+ _draw_axis_value(Z_AXIS, zstring, blink);
+
+ #if NONE(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
+ u8g.setColorIndex(1); // black on white
+ #endif
+ }
+ }
+
+ //
+ // Feedrate
+ //
+ #define EXTRAS_2_BASELINE (EXTRAS_BASELINE + 3)
+
+ if (PAGE_CONTAINS(EXTRAS_2_BASELINE - INFO_FONT_ASCENT, EXTRAS_2_BASELINE - 1)) {
+ set_font(FONT_MENU);
+ lcd_put_wchar(3, EXTRAS_2_BASELINE, LCD_STR_FEEDRATE[0]);
+
+ set_font(FONT_STATUSMENU);
+ lcd_put_u8str(12, EXTRAS_2_BASELINE, i16tostr3rj(feedrate_percentage));
+ lcd_put_wchar('%');
+
+ //
+ // Filament sensor display if SD is disabled
+ //
+ #if ENABLED(FILAMENT_LCD_DISPLAY) && DISABLED(SDSUPPORT)
+ lcd_put_u8str(56, EXTRAS_2_BASELINE, wstring);
+ lcd_put_u8str(102, EXTRAS_2_BASELINE, mstring);
+ lcd_put_wchar('%');
+ set_font(FONT_MENU);
+ lcd_put_wchar(47, EXTRAS_2_BASELINE, LCD_STR_FILAM_DIA[0]); // lcd_put_u8str_P(PSTR(LCD_STR_FILAM_DIA));
+ lcd_put_wchar(93, EXTRAS_2_BASELINE, LCD_STR_FILAM_MUL[0]);
+ #endif
+ }
+
+ //
+ // Status line
+ //
+ if (PAGE_CONTAINS(STATUS_BASELINE - INFO_FONT_ASCENT, STATUS_BASELINE + INFO_FONT_DESCENT)) {
+ lcd_moveto(0, STATUS_BASELINE);
+
+ #if BOTH(FILAMENT_LCD_DISPLAY, SDSUPPORT)
+ // Alternate Status message and Filament display
+ if (ELAPSED(millis(), next_filament_display)) {
+ lcd_put_u8str_P(PSTR(LCD_STR_FILAM_DIA));
+ lcd_put_wchar(':');
+ lcd_put_u8str(wstring);
+ lcd_put_u8str_P(PSTR(" " LCD_STR_FILAM_MUL));
+ lcd_put_wchar(':');
+ lcd_put_u8str(mstring);
+ lcd_put_wchar('%');
+ return;
+ }
+ #endif
+
+ draw_status_message(blink);
+ }
+}
+
+/**
+ * Draw the Status Message area
+ */
+void MarlinUI::draw_status_message(const bool blink) {
+
+ // Get the UTF8 character count of the string
+ uint8_t lcd_width = LCD_WIDTH, pixel_width = LCD_PIXEL_WIDTH,
+ slen = utf8_strlen(status_message);
+
+ #if HAS_POWER_MONITOR
+ if (power_monitor.display_enabled()) {
+ // make room at the end of the status line for the power monitor reading
+ lcd_width -= 6;
+ pixel_width -= (MENU_FONT_WIDTH) * 6;
+ }
+ #endif
+
+ #if ENABLED(STATUS_MESSAGE_SCROLLING)
+
+ static bool last_blink = false;
+
+ if (slen <= lcd_width) {
+ // The string fits within the line. Print with no scrolling
+ lcd_put_u8str(status_message);
+ while (slen < lcd_width) { lcd_put_wchar(' '); ++slen; }
+ }
+ else {
+ // String is longer than the available space
+ if (blink != last_blink) {
+ last_blink = blink;
+ advance_status_scroll();
+ }
+
+ // Get a pointer to the next valid UTF8 character
+ // and the string remaining length
+ uint8_t rlen;
+ const char *stat = status_and_len(rlen);
+ lcd_put_u8str_max(stat, pixel_width);
+
+ // If the remaining string doesn't completely fill the screen
+ if (rlen < lcd_width) {
+ lcd_put_wchar('.'); // Always at 1+ spaces left, draw a dot
+ uint8_t chars = lcd_width - rlen; // Amount of space left in characters
+ if (--chars) { // Draw a second dot if there's space
+ lcd_put_wchar('.');
+ if (--chars) { // Print a second copy of the message
+ lcd_put_u8str_max(status_message, pixel_width - (rlen + 2) * (MENU_FONT_WIDTH));
+ lcd_put_wchar(' ');
+ }
+ }
+ }
+ }
+
+ #else // !STATUS_MESSAGE_SCROLLING
+
+ UNUSED(blink);
+
+ // Just print the string to the LCD
+ lcd_put_u8str_max(status_message, pixel_width);
+
+ // Fill the rest with spaces
+ for (; slen < lcd_width; ++slen) lcd_put_wchar(' ');
+
+ #endif // !STATUS_MESSAGE_SCROLLING
+
+ #if HAS_POWER_MONITOR
+ display_power_monitor(pixel_width + MENU_FONT_WIDTH, STATUS_BASELINE);
+ #endif
+}
+
+#endif // HAS_MARLINUI_U8GLIB && !LIGHTWEIGHT_UI
diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
new file mode 100644
index 0000000..a538121
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp
@@ -0,0 +1,917 @@
+/**
+ * Lightweight Status Screen for the RepRapDiscount Full
+ * Graphics Smart Controller (ST7920-based 128x64 LCD)
+ *
+ * (c) 2017 Aleph Objects, Inc.
+ *
+ * The code in this page is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GNU GPL) as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option)
+ * any later version. The code is distributed WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
+ */
+
+/**
+ * Implementation of a Status Screen for the RepRapDiscount
+ * Full Graphics Smart Controller using native ST7920 commands
+ * instead of U8Glib.
+ *
+ * This alternative Status Screen makes use of the built-in character
+ * generation capabilities of the ST7920 to update the Status Screen
+ * with less SPI traffic and CPU use. In particular:
+ *
+ * - The fan and bed animations are handled using custom characters
+ * that are stored in CGRAM. This allows for the animation to be
+ * updated by writing a single character to the text-buffer (DDRAM).
+ *
+ * - All the information in the Status Screen is text that is written
+ * to DDRAM, so the work of generating the bitmaps is offloaded to
+ * the ST7920 rather than being render by U8Glib on the MCU.
+ *
+ * - The graphics buffer (GDRAM) is only used for static graphics
+ * elements (nozzle and feedrate bitmaps) and for the progress
+ * bar, so updates are sporadic.
+ */
+
+//
+// status_screen_lite_ST7920.cpp
+// Lightweight Status Screen for Graphical Display
+//
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if ENABLED(LIGHTWEIGHT_UI)
+
+#include "status_screen_lite_ST7920.h"
+
+#include "../marlinui.h"
+#include "../fontutils.h"
+#include "../lcdprint.h"
+#include "../../libs/duration_t.h"
+#include "../../module/motion.h"
+#include "../../module/printcounter.h"
+#include "../../module/temperature.h"
+
+#if ENABLED(SDSUPPORT)
+ #include "../../sd/cardreader.h"
+#endif
+
+#if ENABLED(LCD_SHOW_E_TOTAL)
+ #include "../../MarlinCore.h" // for printingIsActive
+#endif
+
+#define TEXT_MODE_LCD_WIDTH 16
+
+#define BUFFER_WIDTH 256
+#define BUFFER_HEIGHT 32
+
+#define DDRAM_LINE_1 0x00
+#define DDRAM_LINE_2 0x10
+#define DDRAM_LINE_3 0x08
+#define DDRAM_LINE_4 0x18
+
+ST7920_Lite_Status_Screen::st7920_state_t ST7920_Lite_Status_Screen::current_bits;
+
+void ST7920_Lite_Status_Screen::cmd(const uint8_t cmd) {
+ if (!current_bits.synced || !current_bits.cmd) {
+ current_bits.synced = true;
+ current_bits.cmd = true;
+ sync_cmd();
+ }
+ write_byte(cmd);
+}
+
+void ST7920_Lite_Status_Screen::begin_data() {
+ if (!current_bits.synced || current_bits.cmd) {
+ current_bits.synced = true;
+ current_bits.cmd = false;
+ sync_dat();
+ }
+}
+
+void ST7920_Lite_Status_Screen::write_str(const char *str) {
+ while (*str) write_byte(*str++);
+}
+
+void ST7920_Lite_Status_Screen::write_str(const char *str, uint8_t len) {
+ while (*str && len--) write_byte(*str++);
+}
+
+void ST7920_Lite_Status_Screen::write_str_P(PGM_P const str) {
+ PGM_P p_str = (PGM_P)str;
+ while (char c = pgm_read_byte(p_str++)) write_byte(c);
+}
+
+void ST7920_Lite_Status_Screen::write_number(const int16_t value, const uint8_t digits/*=3*/) {
+ char str[7];
+ PGM_P fmt;
+ switch (digits) {
+ case 6: fmt = PSTR("%6d"); break;
+ case 5: fmt = PSTR("%5d"); break;
+ case 4: fmt = PSTR("%4d"); break;
+ case 3: fmt = PSTR("%3d"); break;
+ case 2: fmt = PSTR("%2d"); break;
+ case 1: fmt = PSTR("%1d"); break;
+ default: return;
+ }
+ sprintf_P(str, fmt, value);
+ write_str(str);
+}
+
+void ST7920_Lite_Status_Screen::display_status(const bool display_on, const bool cursor_on, const bool blink_on) {
+ extended_function_set(false);
+ cmd(0b00001000 |
+ (display_on ? 0b0100 : 0) |
+ (cursor_on ? 0b0010 : 0) |
+ (blink_on ? 0b0001 : 0)
+ );
+}
+
+// Sets the extended and graphics bits simultaneously, regardless of
+// the current state. This is a helper function for extended_function_set()
+// and graphics()
+void ST7920_Lite_Status_Screen::_extended_function_set(const bool extended, const bool graphics) {
+ cmd( 0b00100000 |
+ (extended ? 0b00000100 : 0) |
+ (graphics ? 0b00000010 : 0)
+ );
+ current_bits.extended = extended;
+ current_bits.graphics = graphics;
+}
+
+void ST7920_Lite_Status_Screen::extended_function_set(const bool extended) {
+ if (extended != current_bits.extended)
+ _extended_function_set(extended, current_bits.graphics);
+}
+
+void ST7920_Lite_Status_Screen::graphics(const bool graphics) {
+ if (graphics != current_bits.graphics)
+ _extended_function_set(current_bits.extended, graphics);
+}
+
+void ST7920_Lite_Status_Screen::entry_mode_select(const bool ac_increase, const bool shift) {
+ extended_function_set(false);
+ cmd(0b00000100 |
+ (ac_increase ? 0b00000010 : 0) |
+ (shift ? 0b00000001 : 0)
+ );
+}
+
+// Sets the sa bit regardless of the current state. This is a helper
+// function for scroll_or_addr_select()
+void ST7920_Lite_Status_Screen::_scroll_or_addr_select(const bool sa) {
+ extended_function_set(true);
+ cmd(0b00000010 | (sa ? 0b00000001 : 0));
+ current_bits.sa = sa;
+}
+
+void ST7920_Lite_Status_Screen::scroll_or_addr_select(const bool sa) {
+ if (sa != current_bits.sa)
+ _scroll_or_addr_select(sa);
+}
+
+void ST7920_Lite_Status_Screen::set_ddram_address(const uint8_t addr) {
+ extended_function_set(false);
+ cmd(0b10000000 | (addr & 0b00111111));
+}
+
+void ST7920_Lite_Status_Screen::set_cgram_address(const uint8_t addr) {
+ extended_function_set(false);
+ cmd(0b01000000 | (addr & 0b00111111));
+}
+
+void ST7920_Lite_Status_Screen::set_gdram_address(const uint8_t x, const uint8_t y) {
+ extended_function_set(true);
+ cmd(0b10000000 | (y & 0b01111111));
+ cmd(0b10000000 | (x & 0b00001111));
+}
+
+void ST7920_Lite_Status_Screen::clear() {
+ extended_function_set(false);
+ cmd(0x00000001);
+ delay(15); //delay for CGRAM clear
+}
+
+void ST7920_Lite_Status_Screen::home() {
+ extended_function_set(false);
+ cmd(0x00000010);
+}
+
+/* This fills the entire text buffer with spaces */
+void ST7920_Lite_Status_Screen::clear_ddram() {
+ set_ddram_address(DDRAM_LINE_1);
+ begin_data();
+ for (uint8_t i = 64; i--;) write_byte(' ');
+}
+
+/* This fills the entire graphics buffer with zeros */
+void ST7920_Lite_Status_Screen::clear_gdram() {
+ LOOP_L_N(y, BUFFER_HEIGHT) {
+ set_gdram_address(0, y);
+ begin_data();
+ for (uint8_t i = (BUFFER_WIDTH) / 16; i--;) write_word(0);
+ }
+}
+
+void ST7920_Lite_Status_Screen::load_cgram_icon(const uint16_t addr, const void *data) {
+ const uint16_t *p_word = (const uint16_t *)data;
+ set_cgram_address(addr);
+ begin_data();
+ for (uint8_t i = 16; i--;)
+ write_word(pgm_read_word(p_word++));
+}
+
+/**
+ * Draw an icon in GDRAM. Position specified in DDRAM
+ * coordinates. i.e., X from 1 to 8, Y from 1 to 4.
+ */
+void ST7920_Lite_Status_Screen::draw_gdram_icon(uint8_t x, uint8_t y, const void *data) {
+ const uint16_t *p_word = (const uint16_t *)data;
+ // Handle display folding
+ if (y > 1) y -= 2, x += 8;
+ for (int i = 0; i < 16; i++) {
+ set_gdram_address(x, i + y * 16);
+ begin_data();
+ write_word(pgm_read_word(p_word++));
+ }
+}
+
+/************************** ICON DEFINITIONS *************************************/
+
+#define CGRAM_ICON_1_ADDR 0x00
+#define CGRAM_ICON_2_ADDR 0x10
+#define CGRAM_ICON_3_ADDR 0x20
+#define CGRAM_ICON_4_ADDR 0x30
+
+#define CGRAM_ICON_1_WORD 0x00
+#define CGRAM_ICON_2_WORD 0x02
+#define CGRAM_ICON_3_WORD 0x04
+#define CGRAM_ICON_4_WORD 0x06
+
+const uint8_t degree_symbol_y_top = 1;
+PROGMEM const uint8_t degree_symbol[] = {
+ 0b00110000,
+ 0b01001000,
+ 0b01001000,
+ 0b00110000,
+};
+
+const uint16_t nozzle_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000111111110000,
+ 0b0001111111111000,
+ 0b0001111111111000,
+ 0b0001111111111000,
+ 0b0000111111110000,
+ 0b0000111111110000,
+ 0b0001111111111000,
+ 0b0001111111111000,
+ 0b0001111111111000,
+ 0b0000011111100000,
+ 0b0000001111000000,
+ 0b0000000110000000,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t bed_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0111111111111110,
+ 0b0111111111111110,
+ 0b0110000000000110,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t heat1_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0010001000100000,
+ 0b0001000100010000,
+ 0b0000100010001000,
+ 0b0000100010001000,
+ 0b0001000100010000,
+ 0b0010001000100000,
+ 0b0010001000100000,
+ 0b0001000100010000,
+ 0b0000100010001000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t heat2_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0000100010001000,
+ 0b0000100010001000,
+ 0b0001000100010000,
+ 0b0010001000100000,
+ 0b0010001000100000,
+ 0b0001000100010000,
+ 0b0000100010001000,
+ 0b0000100010001000,
+ 0b0001000100010000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t fan1_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0111111111111110,
+ 0b0111000000001110,
+ 0b0110001111000110,
+ 0b0100001111000010,
+ 0b0100000110000010,
+ 0b0101100000011010,
+ 0b0101110110111010,
+ 0b0101100000011010,
+ 0b0100000110000010,
+ 0b0100001111000010,
+ 0b0110001111000110,
+ 0b0111000000001110,
+ 0b0111111111111110,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t fan2_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0111111111111110,
+ 0b0111000000001110,
+ 0b0110010000100110,
+ 0b0100111001110010,
+ 0b0101111001111010,
+ 0b0100110000110010,
+ 0b0100000110000010,
+ 0b0100110000110010,
+ 0b0101111001111010,
+ 0b0100111001110010,
+ 0b0110010000100110,
+ 0b0111000000001110,
+ 0b0111111111111110,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+const uint16_t feedrate_icon[] PROGMEM = {
+ 0b0000000000000000,
+ 0b0111111000000000,
+ 0b0110000000000000,
+ 0b0110000000000000,
+ 0b0110000000000000,
+ 0b0111111011111000,
+ 0b0110000011001100,
+ 0b0110000011001100,
+ 0b0110000011001100,
+ 0b0110000011111000,
+ 0b0000000011001100,
+ 0b0000000011001100,
+ 0b0000000011001100,
+ 0b0000000011001100,
+ 0b0000000000000000,
+ 0b0000000000000000
+};
+
+/************************** MAIN SCREEN *************************************/
+
+/**
+ * The ST7920 has no degree character, so draw it to GDRAM.
+ * This function takes character position xy
+ * i.e., x is [0-15], while the y position is [0-3]
+ */
+void ST7920_Lite_Status_Screen::draw_degree_symbol(uint8_t x, uint8_t y, const bool draw) {
+ const uint8_t *p_bytes = degree_symbol;
+ // Handle display folding
+ if (y > 1) y -= 2, x += 16;
+ const bool oddChar = x & 1;
+ const uint8_t x_word = x >> 1,
+ y_top = degree_symbol_y_top,
+ y_bot = y_top + COUNT(degree_symbol);
+ LOOP_S_L_N(i, y_top, y_bot) {
+ uint8_t byte = pgm_read_byte(p_bytes++);
+ set_gdram_address(x_word, i + y * 16);
+ begin_data();
+ if (draw) {
+ write_byte(oddChar ? 0x00 : byte);
+ write_byte(oddChar ? byte : 0x00);
+ }
+ else
+ write_word(0x0000);
+ }
+}
+
+void ST7920_Lite_Status_Screen::draw_static_elements() {
+ scroll_or_addr_select(0);
+
+ // Load the animated bed and fan icons
+ load_cgram_icon(CGRAM_ICON_1_ADDR, heat1_icon);
+ load_cgram_icon(CGRAM_ICON_2_ADDR, heat2_icon);
+ load_cgram_icon(CGRAM_ICON_3_ADDR, fan1_icon);
+ load_cgram_icon(CGRAM_ICON_4_ADDR, fan2_icon);
+
+ // Draw the static icons in GDRAM
+ draw_gdram_icon(0, 0, nozzle_icon);
+ #if HAS_MULTI_HOTEND
+ draw_gdram_icon(0, 1, nozzle_icon);
+ draw_gdram_icon(0, 2, bed_icon);
+ #else
+ draw_gdram_icon(0, 1, bed_icon);
+ #endif
+ draw_gdram_icon(5, 1, feedrate_icon);
+
+ // Draw the initial fan icon
+ draw_fan_icon(false);
+}
+
+/**
+ * Although this is undocumented, the ST7920 allows the character
+ * data buffer (DDRAM) to be used in conjunction with the graphics
+ * bitmap buffer (CGRAM). The contents of the graphics buffer is
+ * XORed with the data from the character generator. This allows
+ * us to make the progess bar out of graphical data (the bar) and
+ * text data (the percentage).
+ */
+void ST7920_Lite_Status_Screen::draw_progress_bar(const uint8_t value) {
+ #if HOTENDS == 1
+ // If we have only one extruder, draw a long progress bar on the third line
+ constexpr uint8_t top = 1, // Top in pixels
+ bottom = 13, // Bottom in pixels
+ left = 12, // Left edge, in 16-bit words
+ width = 4; // Width of progress bar, in 16-bit words
+ #else
+ constexpr uint8_t top = 16 + 1,
+ bottom = 16 + 13,
+ left = 5,
+ width = 3;
+ #endif
+ const uint8_t char_pcnt = 100 / width; // How many percent does each 16-bit word represent?
+
+ // Draw the progress bar as a bitmap in CGRAM
+ LOOP_S_LE_N(y, top, bottom) {
+ set_gdram_address(left, y);
+ begin_data();
+ LOOP_L_N(x, width) {
+ uint16_t gfx_word = 0x0000;
+ if ((x + 1) * char_pcnt <= value)
+ gfx_word = 0xFFFF; // Draw completely filled bytes
+ else if ((x * char_pcnt) < value)
+ gfx_word = int(0x8000) >> (value % char_pcnt) * 16 / char_pcnt; // Draw partially filled bytes
+
+ // Draw the frame around the progress bar
+ if (y == top || y == bottom)
+ gfx_word = 0xFFFF; // Draw top/bottom border
+ else if (x == width - 1)
+ gfx_word |= 0x0001; // Draw right border
+ else if (x == 0)
+ gfx_word |= 0x8000; // Draw left border
+ write_word(gfx_word);
+ }
+ }
+
+ // Draw the percentage as text in DDRAM
+ #if HOTENDS == 1
+ set_ddram_address(DDRAM_LINE_3 + 4);
+ begin_data();
+ write_byte(' ');
+ #else
+ set_ddram_address(DDRAM_LINE_2 + left);
+ begin_data();
+ #endif
+
+ // Draw centered
+ if (value > 9) {
+ write_number(value, 4);
+ write_str_P(PSTR("% "));
+ }
+ else {
+ write_number(value, 3);
+ write_str_P(PSTR("% "));
+ }
+}
+
+void ST7920_Lite_Status_Screen::draw_fan_icon(const bool whichIcon) {
+ set_ddram_address(DDRAM_LINE_1 + 5);
+ begin_data();
+ write_word(whichIcon ? CGRAM_ICON_3_WORD : CGRAM_ICON_4_WORD);
+}
+
+void ST7920_Lite_Status_Screen::draw_heat_icon(const bool whichIcon, const bool heating) {
+ set_ddram_address(
+ #if HOTENDS == 1
+ DDRAM_LINE_2
+ #else
+ DDRAM_LINE_3
+ #endif
+ );
+ begin_data();
+ if (heating)
+ write_word(whichIcon ? CGRAM_ICON_1_WORD : CGRAM_ICON_2_WORD);
+ else {
+ write_byte(' ');
+ write_byte(' ');
+ }
+}
+
+#define FAR(a,b) (((a > b) ? (a-b) : (b-a)) > 2)
+
+static struct {
+ bool E1_show_target : 1;
+ bool E2_show_target : 1;
+ TERN_(HAS_HEATED_BED, bool bed_show_target : 1);
+} display_state = {
+ true, true, TERN_(HAS_HEATED_BED, true)
+};
+
+void ST7920_Lite_Status_Screen::draw_temps(uint8_t line, const int16_t temp, const int16_t target, bool showTarget, bool targetStateChange) {
+ switch (line) {
+ case 0: set_ddram_address(DDRAM_LINE_1 + 1); break;
+ case 1: set_ddram_address(DDRAM_LINE_2 + 1); break;
+ case 2: set_ddram_address(DDRAM_LINE_3 + 1); break;
+ case 3: set_ddram_address(DDRAM_LINE_3 + 1); break;
+ }
+ begin_data();
+ write_number(temp);
+
+ if (showTarget) {
+ write_byte('\x1A');
+ write_number(target);
+ };
+
+ if (targetStateChange) {
+ if (!showTarget) write_str_P(PSTR(" "));
+ draw_degree_symbol(5, line, !showTarget);
+ draw_degree_symbol(9, line, showTarget);
+ }
+}
+
+void ST7920_Lite_Status_Screen::draw_extruder_1_temp(const int16_t temp, const int16_t target, bool forceUpdate) {
+ const bool show_target = target && FAR(temp, target);
+ draw_temps(0, temp, target, show_target, display_state.E1_show_target != show_target || forceUpdate);
+ display_state.E1_show_target = show_target;
+}
+
+void ST7920_Lite_Status_Screen::draw_extruder_2_temp(const int16_t temp, const int16_t target, bool forceUpdate) {
+ const bool show_target = target && FAR(temp, target);
+ draw_temps(1, temp, target, show_target, display_state.E2_show_target != show_target || forceUpdate);
+ display_state.E2_show_target = show_target;
+}
+
+#if HAS_HEATED_BED
+ void ST7920_Lite_Status_Screen::draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate) {
+ const bool show_target = target && FAR(temp, target);
+ draw_temps(TERN(HAS_MULTI_HOTEND, 2, 1), temp, target, show_target, display_state.bed_show_target != show_target || forceUpdate);
+ display_state.bed_show_target = show_target;
+ }
+#endif
+
+void ST7920_Lite_Status_Screen::draw_fan_speed(const uint8_t value) {
+ set_ddram_address(DDRAM_LINE_1 + 6);
+ begin_data();
+ write_number(value, 3);
+ write_byte('%');
+}
+
+void ST7920_Lite_Status_Screen::draw_print_time(const duration_t &elapsed, char suffix) {
+ #if HOTENDS == 1
+ set_ddram_address(DDRAM_LINE_3);
+ #else
+ set_ddram_address(DDRAM_LINE_3 + 5);
+ #endif
+ char str[7];
+ int str_length = elapsed.toDigital(str);
+ str[str_length++] = suffix;
+ begin_data();
+ write_str(str, str_length);
+}
+
+void ST7920_Lite_Status_Screen::draw_feedrate_percentage(const uint16_t percentage) {
+ // We only have enough room for the feedrate when
+ // we have one extruder
+ #if HOTENDS == 1
+ set_ddram_address(DDRAM_LINE_2 + 6);
+ begin_data();
+ write_number(percentage, 3);
+ write_byte('%');
+ #else
+ UNUSED(percentage);
+ #endif
+}
+
+void ST7920_Lite_Status_Screen::draw_status_message() {
+ const char *str = ui.status_message;
+
+ set_ddram_address(DDRAM_LINE_4);
+ begin_data();
+ #if ENABLED(STATUS_MESSAGE_SCROLLING)
+ uint8_t slen = utf8_strlen(str);
+
+ if (slen <= TEXT_MODE_LCD_WIDTH) {
+ // String fits the LCD, so just print it
+ write_str(str);
+ while (slen < TEXT_MODE_LCD_WIDTH) { write_byte(' '); ++slen; }
+ }
+ else {
+ // String is larger than the available space in screen.
+
+ // Get a pointer to the next valid UTF8 character
+ // and the string remaining length
+ uint8_t rlen;
+ const char *stat = ui.status_and_len(rlen);
+ write_str(stat, TEXT_MODE_LCD_WIDTH);
+
+ // If the remaining string doesn't completely fill the screen
+ if (rlen < TEXT_MODE_LCD_WIDTH) {
+ write_byte('.'); // Always at 1+ spaces left, draw a dot
+ uint8_t chars = TEXT_MODE_LCD_WIDTH - rlen; // Amount of space left in characters
+ if (--chars) { // Draw a second dot if there's space
+ write_byte('.');
+ if (--chars) write_str(str, chars); // Print a second copy of the message
+ }
+ }
+ ui.advance_status_scroll();
+ }
+
+ #else
+
+ uint8_t slen = utf8_strlen(str);
+ write_str(str, TEXT_MODE_LCD_WIDTH);
+ for (; slen < TEXT_MODE_LCD_WIDTH; ++slen) write_byte(' ');
+
+ #endif
+}
+
+void ST7920_Lite_Status_Screen::draw_position(const xyze_pos_t &pos, const bool position_trusted) {
+ char str[7];
+ set_ddram_address(DDRAM_LINE_4);
+ begin_data();
+
+ // If position is unknown, flash the labels.
+ const unsigned char alt_label = position_trusted ? 0 : (ui.get_blink() ? ' ' : 0);
+
+ if (TERN1(LCD_SHOW_E_TOTAL, !printingIsActive())) {
+ write_byte(alt_label ? alt_label : 'X');
+ write_str(dtostrf(pos.x, -4, 0, str), 4);
+
+ write_byte(alt_label ? alt_label : 'Y');
+ write_str(dtostrf(pos.y, -4, 0, str), 4);
+ }
+ else {
+ #if ENABLED(LCD_SHOW_E_TOTAL)
+ char tmp[15];
+ const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm
+ sprintf_P(tmp, PSTR("E%-7ld%cm "), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm
+ write_str(tmp);
+ #endif
+ }
+
+ write_byte(alt_label ? alt_label : 'Z');
+ write_str(dtostrf(pos.z, -5, 1, str), 5);
+}
+
+bool ST7920_Lite_Status_Screen::indicators_changed() {
+ // We only add the target temperatures to the checksum
+ // because the actual temps fluctuate so by updating
+ // them only during blinks we gain a bit of stability.
+ const bool blink = ui.get_blink();
+ const uint16_t feedrate_perc = feedrate_percentage;
+ const uint16_t fs = thermalManager.scaledFanSpeed(0);
+ const int16_t extruder_1_target = thermalManager.degTargetHotend(0);
+ #if HAS_MULTI_HOTEND
+ const int16_t extruder_2_target = thermalManager.degTargetHotend(1);
+ #endif
+ #if HAS_HEATED_BED
+ const int16_t bed_target = thermalManager.degTargetBed();
+ #endif
+ static uint16_t last_checksum = 0;
+ const uint16_t checksum = blink ^ feedrate_perc ^ fs ^ extruder_1_target
+ ^ TERN0(HAS_MULTI_HOTEND, extruder_2_target)
+ ^ TERN0(HAS_HEATED_BED, bed_target);
+ if (last_checksum == checksum) return false;
+ last_checksum = checksum;
+ return true;
+}
+
+void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) {
+ if (forceUpdate || indicators_changed()) {
+ const bool blink = ui.get_blink();
+ const duration_t elapsed = print_job_timer.duration();
+ duration_t remaining = TERN0(USE_M73_REMAINING_TIME, ui.get_remaining_time());
+ const uint16_t feedrate_perc = feedrate_percentage;
+ const int16_t extruder_1_temp = thermalManager.degHotend(0),
+ extruder_1_target = thermalManager.degTargetHotend(0);
+ #if HAS_MULTI_HOTEND
+ const int16_t extruder_2_temp = thermalManager.degHotend(1),
+ extruder_2_target = thermalManager.degTargetHotend(1);
+ #endif
+ #if HAS_HEATED_BED
+ const int16_t bed_temp = thermalManager.degBed(),
+ bed_target = thermalManager.degTargetBed();
+ #endif
+
+ draw_extruder_1_temp(extruder_1_temp, extruder_1_target, forceUpdate);
+ TERN_(HAS_MULTI_HOTEND, draw_extruder_2_temp(extruder_2_temp, extruder_2_target, forceUpdate));
+ TERN_(HAS_HEATED_BED, draw_bed_temp(bed_temp, bed_target, forceUpdate));
+
+ uint16_t spd = thermalManager.fan_speed[0];
+
+ #if ENABLED(ADAPTIVE_FAN_SLOWING)
+ if (!blink && thermalManager.fan_speed_scaler[0] < 128)
+ spd = thermalManager.scaledFanSpeed(0, spd);
+ #endif
+
+ draw_fan_speed(thermalManager.fanPercent(spd));
+
+ // Draw elapsed/remaining time
+ const bool show_remaining = ENABLED(SHOW_REMAINING_TIME) && (DISABLED(ROTATE_PROGRESS_DISPLAY) || blink);
+ if (show_remaining && !remaining.second()) {
+ const auto progress = ui.get_progress_percent();
+ if (progress)
+ remaining = elapsed.second() * (100 - progress) / progress;
+ }
+ if (show_remaining && remaining.second())
+ draw_print_time(remaining, 'R');
+ else
+ draw_print_time(elapsed);
+
+ draw_feedrate_percentage(feedrate_perc);
+
+ // Update the fan and bed animations
+ if (spd) draw_fan_icon(blink);
+ TERN_(HAS_HEATED_BED, draw_heat_icon(bed_target > 0 && blink, bed_target > 0));
+ }
+}
+
+bool ST7920_Lite_Status_Screen::position_changed() {
+ const xyz_pos_t pos = current_position;
+ const uint8_t checksum = uint8_t(pos.x) ^ uint8_t(pos.y) ^ uint8_t(pos.z);
+ static uint8_t last_checksum = 0, changed = last_checksum != checksum;
+ if (changed) last_checksum = checksum;
+ return changed;
+}
+
+bool ST7920_Lite_Status_Screen::status_changed() {
+ uint8_t checksum = 0;
+ for (const char *p = ui.status_message; *p; p++) checksum ^= *p;
+ static uint8_t last_checksum = 0;
+ bool changed = last_checksum != checksum;
+ if (changed) last_checksum = checksum;
+ return changed;
+}
+
+bool ST7920_Lite_Status_Screen::blink_changed() {
+ static uint8_t last_blink = 0;
+ const bool blink = ui.get_blink(), changed = last_blink != blink;
+ if (changed) last_blink = blink;
+ return changed;
+}
+
+#ifndef STATUS_EXPIRE_SECONDS
+ #define STATUS_EXPIRE_SECONDS 20
+#endif
+
+void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) {
+
+ #if STATUS_EXPIRE_SECONDS
+ static uint8_t countdown = 0;
+ #endif
+
+ /**
+ * There's only enough room for either the status message or the position,
+ * so draw one or the other. When the status message changes, show it for
+ * a few seconds, then return to the position display once the head moves.
+ *
+ * countdown > 1 -- Show status
+ * countdown = 1 -- Show status, until movement
+ * countdown = 0 -- Show position
+ *
+ * If STATUS_EXPIRE_SECONDS is zero, only the status is shown.
+ */
+ if (forceUpdate || status_changed()) {
+ TERN_(STATUS_MESSAGE_SCROLLING, ui.status_scroll_offset = 0);
+ #if STATUS_EXPIRE_SECONDS
+ countdown = ui.status_message[0] ? STATUS_EXPIRE_SECONDS : 0;
+ #endif
+ draw_status_message();
+ blink_changed(); // Clear changed flag
+ }
+ #if !STATUS_EXPIRE_SECONDS
+ else if (TERN0(STATUS_MESSAGE_SCROLLING, blink_changed()))
+ draw_status_message();
+ #else
+ else if (blink_changed()) {
+ if (countdown > 1) {
+ countdown--;
+ TERN_(STATUS_MESSAGE_SCROLLING, draw_status_message());
+ }
+ else if (countdown > 0) {
+ if (position_changed()) {
+ countdown--;
+ forceUpdate = true;
+ }
+ TERN_(STATUS_MESSAGE_SCROLLING, draw_status_message());
+ }
+ }
+
+ if (countdown == 0 && (forceUpdate || position_changed() || TERN(DISABLE_REDUCED_ACCURACY_WARNING, 0, blink_changed())))
+ draw_position(current_position, TERN(DISABLE_REDUCED_ACCURACY_WARNING, 1, all_axes_trusted()));
+ #endif
+}
+
+void ST7920_Lite_Status_Screen::update_progress(const bool forceUpdate) {
+ #if EITHER(LCD_SET_PROGRESS_MANUALLY, SDSUPPORT)
+
+ // Since the progress bar involves writing
+ // quite a few bytes to GDRAM, only do this
+ // when an update is actually necessary.
+
+ static uint8_t last_progress = 0;
+ const uint8_t progress = ui.get_progress_percent();
+ if (forceUpdate || last_progress != progress) {
+ last_progress = progress;
+ draw_progress_bar(progress);
+ }
+
+ #else
+
+ UNUSED(forceUpdate);
+
+ #endif
+}
+
+void ST7920_Lite_Status_Screen::update(const bool forceUpdate) {
+ cs();
+ update_indicators(forceUpdate);
+ update_status_or_position(forceUpdate);
+ update_progress(forceUpdate);
+ ncs();
+}
+
+void ST7920_Lite_Status_Screen::reset_state_from_unknown() {
+ _extended_function_set(true, true); // Do it twice as only one bit
+ _extended_function_set(true, true); // get set at a time.
+ _scroll_or_addr_select(false);
+}
+
+void ST7920_Lite_Status_Screen::on_entry() {
+ cs();
+ reset_state_from_unknown();
+ clear();
+ clear_gdram();
+ draw_static_elements();
+ update(true);
+ ncs();
+}
+
+void ST7920_Lite_Status_Screen::on_exit() {
+ cs();
+ clear();
+ _extended_function_set(true, true); // Restore state to what u8g expects.
+ ncs();
+}
+
+// Called prior to the KILL screen to
+// clear the screen, preventing a garbled display.
+void ST7920_Lite_Status_Screen::clear_text_buffer() {
+ cs();
+ reset_state_from_unknown();
+ clear();
+ _extended_function_set(true, true); // Restore state to what u8g expects.
+ ncs();
+}
+
+void MarlinUI::draw_status_screen() {
+ ST7920_Lite_Status_Screen::update(false);
+}
+
+// This method is called before each screen update and
+// fires on_entry() and on_exit() events upon entering
+// or exiting the Status Screen.
+void MarlinUI::lcd_in_status(const bool inStatus) {
+ static bool lastInStatus = false;
+ if (lastInStatus == inStatus) return;
+ if ((lastInStatus = inStatus))
+ ST7920_Lite_Status_Screen::on_entry();
+ else
+ ST7920_Lite_Status_Screen::on_exit();
+}
+
+#endif // LIGHTWEIGHT_UI
diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.h b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.h
new file mode 100644
index 0000000..b217246
--- /dev/null
+++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.h
@@ -0,0 +1,106 @@
+/**
+ * Lightweight Status Screen for the RepRapDiscount Full
+ * Graphics Smart Controller (ST7920-based 128x64 LCD)
+ *
+ * (c) 2017 Aleph Objects, Inc.
+ *
+ * The code in this page is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GNU GPL) as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option)
+ * any later version. The code is distributed WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
+ */
+#pragma once
+
+#include "../../HAL/shared/HAL_ST7920.h"
+
+#include "../../core/types.h"
+#include "../../core/macros.h"
+#include "../../libs/duration_t.h"
+
+class ST7920_Lite_Status_Screen {
+ private:
+ static struct st7920_state_t {
+ uint8_t synced : 1; // Whether a sync has been sent
+ uint8_t cmd : 1; // Whether the sync was cmd or data
+ uint8_t extended : 1;
+ uint8_t graphics : 1;
+ uint8_t sa : 1;
+ } current_bits;
+
+ static void cs() { ST7920_cs(); current_bits.synced = false; }
+ static void ncs() { ST7920_cs(); current_bits.synced = false; }
+ static void sync_cmd() { ST7920_set_cmd(); }
+ static void sync_dat() { ST7920_set_dat(); }
+ static void write_byte(const uint8_t w) { ST7920_write_byte(w); }
+
+ FORCE_INLINE static void write_word(const uint16_t w) {
+ write_byte((w >> 8) & 0xFF);
+ write_byte((w >> 0) & 0xFF);
+ }
+
+ static void cmd(const uint8_t cmd);
+ static void begin_data();
+
+ static void write_str(const char *str);
+ static void write_str(const char *str, const uint8_t len);
+ static void write_str_P(PGM_P const str);
+ static void write_number(const int16_t value, const uint8_t digits=3);
+
+ static void _extended_function_set(const bool extended, const bool graphics);
+ static void _scroll_or_addr_select(const bool sa);
+ static void reset_state_from_unknown();
+
+ static void home();
+ static void display_status(const bool display_on, const bool cursor_on, const bool blink_on);
+ static void extended_function_set(const bool extended);
+ static void graphics(const bool graphics);
+ static void entry_mode_select(const bool ac_increase, const bool shift);
+ static void scroll_or_addr_select(const bool sa);
+ static void set_ddram_address(const uint8_t addr);
+ static void set_cgram_address(const uint8_t addr);
+ static void set_gdram_address(const uint8_t x, const uint8_t y);
+
+ static void clear();
+ static void clear_ddram();
+ static void clear_gdram();
+
+ static void load_cgram_icon(const uint16_t addr, const void *data);
+ static void draw_gdram_icon(uint8_t x, uint8_t y, const void *data);
+
+ static uint8_t string_checksum(const char *str);
+
+ protected:
+ static void draw_degree_symbol(uint8_t x, uint8_t y, const bool draw);
+ static void draw_static_elements();
+ static void draw_progress_bar(const uint8_t value);
+ static void draw_fan_icon(const bool whichIcon);
+ static void draw_heat_icon(const bool whichIcon, const bool heating);
+ static void draw_temps(uint8_t line, const int16_t temp, const int16_t target, bool showTarget, bool targetStateChange);
+ static void draw_extruder_1_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
+ static void draw_extruder_2_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
+ static void draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate=false);
+ static void draw_fan_speed(const uint8_t value);
+ static void draw_print_time(const duration_t &elapsed, char suffix=' ');
+ static void draw_feedrate_percentage(const uint16_t percentage);
+ static void draw_status_message();
+ static void draw_position(const xyze_pos_t &pos, bool position_known=true);
+
+ static bool indicators_changed();
+ static bool position_changed();
+ static bool blink_changed();
+ static bool status_changed();
+
+ static void update_indicators(const bool forceUpdate);
+ static void update_position(const bool forceUpdate, bool resetChecksum);
+ static void update_status_or_position(bool forceUpdate);
+ static void update_progress(const bool forceUpdate);
+
+ public:
+ static void update(const bool forceUpdate);
+ static void on_entry();
+ static void on_exit();
+ static void clear_text_buffer();
+};
diff --git a/Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp b/Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
new file mode 100644
index 0000000..b3e579e
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
@@ -0,0 +1,302 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Based on u8g_dev_ssd1306_128x64.c
+ *
+ * Universal 8bit Graphics Library
+ *
+ * Copyright (c) 2015, olikraus@gmail.com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * These routines are meant for two wire I2C interfaces.
+ *
+ * Three and four wire I2C interfaces have an A0 line. That line is
+ * used to switch between command and data modes.
+ *
+ * The two wire LCDs use an instruction byte to signal if data or
+ * command info is to follow. The command stream needs the instruction
+ * byte between eack command byte. The data stream needs one at the
+ * beginning.
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include "HAL_LCD_com_defines.h"
+
+#define WIDTH 128
+#define HEIGHT 64
+#define PAGE_HEIGHT 8
+
+uint8_t u8g_WriteEscSeqP_2_wire(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq);
+
+// The sh1106 is compatible to the ssd1306, but is 132x64. 128x64 display area is centered within
+// the 132x64.
+
+static const uint8_t u8g_dev_sh1106_128x64_data_start_2_wire[] PROGMEM = {
+ 0x010, // set upper 4 bit of the col adr to 0
+ 0x002, // set lower 4 bit of the col adr to 2 (centered display with ssd1306)
+ U8G_ESC_END // end of sequence
+};
+
+#define SH1106_PAGE_ADR(N) (0x20), (N)
+#define SH1106_COLUMN_RANGE(N) (0x21), (((N) >> 8) & 0xFF), ((N) & 0xFF)
+#define SH1106_PAGE_RANGE(N,O) (0x22), (N), (O)
+#define SH1106_SCROLL(N) ((N) ? 0x2F : 0x2E)
+#define SH1106_START_LINE(N) (0x40 | (N))
+#define SH1106_CONTRAST(N) (0x81), (N)
+#define SH1106_CHARGE_PUMP(N) (0x8D), ((N) ? 0x14 : 0x10)
+#define SH1106_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
+#define SH1106_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
+#define SH1106_INVERTED(N) ((N) ? 0xA7 : 0xA6)
+#define SH1106_MUX_RATIO(N) (0xA8), (N)
+#define SH1106_ON(N) ((N) ? 0xAF : 0xAE)
+#define SH1106_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
+#define SH1106_DISP_OFFS(N) (0xD3), (N)
+#define SH1106_OSC_FREQ(R,F) (0xD5), ((F) << 4 | (R))
+#define SH1106_CHARGE_PER(P,D) (0xD9), ((D) << 4 | (P))
+#define SH1106_COM_CONFIG(N) (0xDA), ((N) ? 0x12 : 0x02)
+#define SH1106_VCOM_DESEL(N) (0xDB), (N)
+#define SH1106_NOOP() (0xE3)
+
+static const uint8_t u8g_dev_sh1106_128x64_init_seq_2_wire[] PROGMEM = {
+ U8G_ESC_ADR(0), // Initiate command mode
+ SH1106_ON(0), // Display off, sleep mode
+ SH1106_MUX_RATIO(0x3F), // Mux ratio
+ SH1106_DISP_OFFS(0), // Display offset
+ SH1106_START_LINE(0), // Start line
+ SH1106_ADC_REVERSE(1), // Segment remap A0/A1
+ SH1106_OUT_MODE(1), // C0: scan dir normal, C8: reverse
+ SH1106_COM_CONFIG(1), // Com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
+ SH1106_CONTRAST(0xCF), // [2] set contrast control
+ SH1106_PAGE_ADR(0x02), // 2012-05-27: page addressing mode
+ SH1106_COLUMN_RANGE(0x281), // Set column range from 0 through 131
+ SH1106_PAGE_RANGE(0, 7), // Set page range from 0 through 7
+ SH1106_CHARGE_PER(0x1, 0xF), // [2] pre-charge period 0x22/F1
+ SH1106_VCOM_DESEL(0x40), // Vcomh deselect level
+ SH1106_ALL_PIX(0), // Output ram to display
+ SH1106_INVERTED(0), // Normal display mode
+ SH1106_OSC_FREQ(0, 8), // Clock divide ratio (0:1) and oscillator frequency (8)
+ SH1106_CHARGE_PUMP(1), // [2] charge pump setting (P62): 0x14 enable, 0x10 disable
+ SH1106_SCROLL(0), // 2012-05-27: Deactivate scroll
+ SH1106_ON(1), // Display on
+ U8G_ESC_END // End of sequence
+};
+
+uint8_t u8g_dev_sh1106_128x64_2x_2_wire_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_sh1106_128x64_init_seq_2_wire);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_SetAddress(u8g, dev, 0); // instruction mode
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_sh1106_128x64_data_start_2_wire);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (pb->p.page*2)); // select current page
+ u8g_SetAddress(u8g, dev, 1); // data mode
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *) pb->buf);
+ u8g_SetChipSelect(u8g, dev, 0);
+ u8g_SetAddress(u8g, dev, 0); // instruction mode
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_sh1106_128x64_data_start_2_wire);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (pb->p.page*2+1)); // select current page
+ u8g_SetAddress(u8g, dev, 1); // data mode
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width);
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ case U8G_DEV_MSG_SLEEP_ON:
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ return 1;
+ }
+ return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_dev_sh1106_128x64_2x_i2c_2_wire_buf[WIDTH*2] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_sh1106_128x64_2x_i2c_2_wire_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_sh1106_128x64_2x_i2c_2_wire_buf};
+u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c_2_wire = { u8g_dev_sh1106_128x64_2x_2_wire_fn, &u8g_dev_sh1106_128x64_2x_i2c_2_wire_pb, U8G_COM_SSD_I2C_HAL };
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+
+static const uint8_t u8g_dev_ssd1306_128x64_data_start_2_wire[] PROGMEM = {
+ 0x010, // set upper 4 bit of the col adr to 0
+ 0x000, // set lower 4 bit of the col adr to 0
+ U8G_ESC_END // end of sequence
+};
+
+static const uint8_t u8g_dev_ssd1306_128x64_init_seq_2_wire[] PROGMEM = {
+ U8G_ESC_ADR(0), // initiate command mode
+ 0x0AE, // display off, sleep mode
+ 0x0A8, 0x03F, // mux ratio
+ 0x0D3, 0x00, // display offset
+ 0x040, // start line
+ 0x0A1, // segment remap a0/a1
+ 0x0C8, // c0: scan dir normal, c8: reverse
+ 0x0DA, 0x012, // com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
+ 0x081, 0x0CF, // [2] set contrast control
+ 0x020, 0x002, // 2012-05-27: page addressing mode
+ 0x21, 0, 0x7F, // set column range from 0 through 127
+ 0x22, 0, 7, // set page range from 0 through 7
+ 0x0D9, 0x0F1, // [2] pre-charge period 0x022/f1
+ 0x0DB, 0x040, // vcomh deselect level
+ 0x0A4, // output ram to display
+ 0x0A6, // none inverted normal display mode
+ 0x0D5, 0x080, // clock divide ratio (0x00=1) and oscillator frequency (0x8)
+ 0x08D, 0x014, // [2] charge pump setting (p62): 0x014 enable, 0x010 disable
+ 0x02E, // 2012-05-27: Deactivate scroll
+ 0x0AF, // display on
+ U8G_ESC_END // end of sequence
+};
+
+uint8_t u8g_dev_ssd1306_128x64_2x_2_wire_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_ssd1306_128x64_init_seq_2_wire);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_SetAddress(u8g, dev, 0); // instruction mode
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_ssd1306_128x64_data_start_2_wire);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (pb->p.page*2)); // select current page
+ u8g_SetAddress(u8g, dev, 1); // data mode
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *) pb->buf);
+ u8g_SetChipSelect(u8g, dev, 0);
+ u8g_SetAddress(u8g, dev, 0); // instruction mode
+ u8g_WriteEscSeqP_2_wire(u8g, dev, u8g_dev_ssd1306_128x64_data_start_2_wire);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (pb->p.page*2+1)); // select current page
+ u8g_SetAddress(u8g, dev, 1); // data mode
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width);
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ case U8G_DEV_MSG_SLEEP_ON:
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ return 1;
+ }
+ return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
+}
+
+
+uint8_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire_buf[WIDTH*2] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1306_128x64_2x_i2c_2_wire_buf};
+u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c_2_wire = { u8g_dev_ssd1306_128x64_2x_2_wire_fn, &u8g_dev_ssd1306_128x64_2x_i2c_2_wire_pb, U8G_COM_SSD_I2C_HAL };
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////
+
+// This routine adds the instruction byte in between the command bytes. This makes the init
+// sequences a lot easier to read.
+
+#define I2C_CMD_MODE 0x080
+
+uint8_t u8g_WriteEscSeqP_2_wire(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq) {
+ uint8_t is_escape = 0;
+ for (;;) {
+ uint8_t value = u8g_pgm_read(esc_seq);
+ if (is_escape == 0) {
+ if (value != 255) {
+ if (u8g_WriteByte(u8g, dev, value) == 0 )
+ return 0;
+ if (u8g_WriteByte(u8g, dev, I2C_CMD_MODE) == 0 )
+ return 0;
+ }
+ else {
+ is_escape = 1;
+ }
+ }
+ else {
+ if (value == 255) {
+ if (u8g_WriteByte(u8g, dev, value) == 0 )
+ return 0;
+ if (u8g_WriteByte(u8g, dev, I2C_CMD_MODE) == 0 )
+ return 0;
+ }
+ else if (value == 254) {
+ break;
+ }
+ else if (value >= 0x0F0) {
+ /* not yet used, do nothing */
+ }
+ else if (value >= 0xE0 ) {
+ u8g_SetAddress(u8g, dev, value & 0x0F);
+ }
+ else if (value >= 0xD0) {
+ u8g_SetChipSelect(u8g, dev, value & 0x0F);
+ }
+ else if (value >= 0xC0) {
+ u8g_SetResetLow(u8g, dev);
+ value &= 0x0F;
+ value <<= 4;
+ value+=2;
+ u8g_Delay(value);
+ u8g_SetResetHigh(u8g, dev);
+ u8g_Delay(value);
+ }
+ else if (value >= 0xBE) { /* not yet implemented */
+ /* u8g_SetVCC(u8g, dev, value & 0x01); */
+ }
+ else if (value <= 127) {
+ u8g_Delay(value);
+ }
+ is_escape = 0;
+ }
+ esc_seq++;
+ }
+ return 1;
+}
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp b/Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp
new file mode 100644
index 0000000..8ba1921
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_ssd1309_12864.cpp
@@ -0,0 +1,128 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include "HAL_LCD_com_defines.h"
+#include
+
+#define WIDTH 128
+#define HEIGHT 64
+#define PAGE_HEIGHT 8
+
+// SSD1309 init sequence
+static const uint8_t u8g_dev_ssd1309_128x64_init_seq[] PROGMEM = {
+ U8G_ESC_CS(0), // Disable chip
+ U8G_ESC_ADR(0), // Instruction mode
+ U8G_ESC_RST(1), // Do reset low pulse with (1*16)+2 milliseconds
+ U8G_ESC_CS(1), // Enable chip
+
+ 0xFD,0x12, // Command Lock
+ 0xAE, // Set Display Off
+ 0xD5,0xA0, // Set Display Clock Divide Ratio/Oscillator Frequency
+ 0xA8,0x3F, // Set Multiplex Ratio
+ 0x3D,0x00, // Set Display Offset
+ 0x40, // Set Display Start Line
+ 0xA1, // Set Segment Re-Map
+ 0xC8, // Set COM Output Scan Direction
+ 0xDA,0x12, // Set COM Pins Hardware Configuration
+ 0x81,0xDF, // Set Current Control
+ 0xD9,0x82, // Set Pre-Charge Period
+ 0xDB,0x34, // Set VCOMH Deselect Level
+ 0xA4, // Set Entire Display On/Off
+ 0xA6, // Set Normal/Inverse Display
+ U8G_ESC_VCC(1), // Power up VCC & Stabilized
+ U8G_ESC_DLY(50),
+ 0xAF, // Set Display On
+ U8G_ESC_DLY(50),
+ U8G_ESC_CS(0), // Disable chip
+ U8G_ESC_END // End of sequence
+};
+
+// Select one init sequence here
+#define u8g_dev_ssd1309_128x64_init_seq u8g_dev_ssd1309_128x64_init_seq
+
+static const uint8_t u8g_dev_ssd1309_128x64_data_start[] PROGMEM = {
+ U8G_ESC_ADR(0), // Instruction mode
+ U8G_ESC_CS(1), // Enable chip
+ 0x010, // Set upper 4 bit of the col adr to 0
+ 0x000, // Set lower 4 bit of the col adr to 4
+ U8G_ESC_END // End of sequence
+};
+
+static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = {
+ U8G_ESC_ADR(0), // Instruction mode
+ U8G_ESC_CS(1), // Enable chip
+ 0x0AE, // Display off
+ U8G_ESC_CS(0), // Disable chip
+ U8G_ESC_END // End of sequence
+};
+
+static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = {
+ U8G_ESC_ADR(0), // Instruction mode
+ U8G_ESC_CS(1), // Enable chip
+ 0x0AF, // Display on
+ U8G_ESC_DLY(50), // Delay 50 ms
+ U8G_ESC_CS(0), // Disable chip
+ U8G_ESC_END // End of sequence
+};
+
+uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch(msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_data_start);
+ u8g_WriteByte(u8g, dev, 0x0B0 | pb->p.page); // Select current page (SSD1306)
+ u8g_SetAddress(u8g, dev, 1); // Data mode
+ if (u8g_pb_WriteBuffer(pb, u8g, dev) == 0) return 0;
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ case U8G_DEV_MSG_CONTRAST:
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_SetAddress(u8g, dev, 0); // Instruction mode
+ u8g_WriteByte(u8g, dev, 0x081);
+ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) ); // 11 Jul 2015: fixed contrast calculation
+ u8g_SetChipSelect(u8g, dev, 0);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_ON:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off);
+ return 1;
+ }
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_dev_ssd1309_buf[WIDTH*2] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_ssd1309_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1309_buf};
+u8g_dev_t u8g_dev_ssd1309_sw_spi = { u8g_dev_ssd1309_128x64_fn, &u8g_dev_ssd1309_pb, U8G_COM_HAL_SW_SPI_FN };
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp b/Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp
new file mode 100644
index 0000000..84c10db
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_st7565_64128n_HAL.cpp
@@ -0,0 +1,236 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Based on u8g_dev_st7565_64128n_HAL.c (Displaytech)
+ *
+ * Universal 8bit Graphics Library
+ *
+ * Copyright (c) 2011, olikraus@gmail.com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include
+#include "HAL_LCD_com_defines.h"
+
+#define WIDTH 128
+#define HEIGHT 64
+#define PAGE_HEIGHT 8
+
+#define ST7565_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
+#define ST7565_BIAS_MODE(N) ((N) ? 0xA3 : 0xA2)
+#define ST7565_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
+#define ST7565_INVERTED(N) ((N) ? 0xA7 : 0xA6)
+#define ST7565_ON(N) ((N) ? 0xAF : 0xAE)
+#define ST7565_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
+#define ST7565_POWER_CONTROL(N) (0x28 | (N))
+#define ST7565_V0_RATIO(N) (0x10 | ((N) & 0x7))
+#define ST7565_V5_RATIO(N) (0x20 | ((N) & 0x7))
+#define ST7565_CONTRAST(N) (0x81), (N)
+
+#define ST7565_COLUMN_ADR(N) (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
+#define ST7565_PAGE_ADR(N) (0xB0 | (N))
+#define ST7565_START_LINE(N) (0x40 | (N))
+#define ST7565_SLEEP_MODE() (0xAC) // ,(N) needed?
+#define ST7565_NOOP() (0xE3)
+
+/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */
+static const uint8_t u8g_dev_st7565_64128n_HAL_init_seq[] PROGMEM = {
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_CS(1), // enable chip
+ U8G_ESC_RST(15), // do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/
+
+ ST7565_BIAS_MODE(0), // 0xA2: LCD bias 1/9 (according to Displaytech 64128N datasheet)
+ ST7565_ADC_REVERSE(0), // Normal ADC Select (according to Displaytech 64128N datasheet)
+
+ ST7565_OUT_MODE(1), // common output mode: set scan direction
+ ST7565_START_LINE(0), // Display start line for Displaytech 64128N
+
+ ST7565_POWER_CONTROL(0x4), // power control: turn on voltage converter
+ U8G_ESC_DLY(50), // delay 50 ms
+
+ ST7565_POWER_CONTROL(0x6), // power control: turn on voltage regulator
+ U8G_ESC_DLY(50), // delay 50 ms
+
+ ST7565_POWER_CONTROL(0x7), // power control: turn on voltage follower
+ U8G_ESC_DLY(50), // delay 50 ms
+
+ ST7565_V0_RATIO(0), // Set V0 voltage resistor ratio. Setting for controlling brightness of Displaytech 64128N
+
+ ST7565_INVERTED(0), // display normal, bit val 0: LCD pixel off.
+
+ ST7565_CONTRAST(0x1E), // Contrast value. Setting for controlling brightness of Displaytech 64128N
+
+ ST7565_ON(1), // display on
+
+ U8G_ESC_DLY(100), // delay 100 ms
+ ST7565_ALL_PIX(1), // display all points, ST7565
+ U8G_ESC_DLY(100), // delay 100 ms
+ U8G_ESC_DLY(100), // delay 100 ms
+ ST7565_ALL_PIX(0), // normal display
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_END // end of sequence
+};
+
+static const uint8_t u8g_dev_st7565_64128n_HAL_data_start[] PROGMEM = {
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_CS(1), // enable chip
+ ST7565_COLUMN_ADR(0x00), // high 4 bits to 0, low 4 bits to 0. Changed for DisplayTech 64128N
+ U8G_ESC_END // end of sequence
+};
+
+static const uint8_t u8g_dev_st7565_64128n_HAL_sleep_on[] PROGMEM = {
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_CS(1), // enable chip
+ ST7565_SLEEP_MODE(), // static indicator off
+ //0x00, // indicator register set (not sure if this is required)
+ ST7565_ON(0), // display off
+ ST7565_ALL_PIX(1), // all points on
+ U8G_ESC_CS(0), // disable chip, bugfix 12 nov 2014
+ U8G_ESC_END // end of sequence
+ };
+
+static const uint8_t u8g_dev_st7565_64128n_HAL_sleep_off[] PROGMEM = {
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_CS(1), // enable chip
+ ST7565_ALL_PIX(0), // all points off
+ ST7565_ON(1), // display on
+ U8G_ESC_DLY(50), // delay 50 ms
+ U8G_ESC_CS(0), // disable chip, bugfix 12 nov 2014
+ U8G_ESC_END // end of sequence
+};
+
+uint8_t u8g_dev_st7565_64128n_HAL_fn(u8g_t *u8g, u8g_dev_t *dev, const uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_init_seq);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_data_start);
+ u8g_WriteByte(u8g, dev, ST7565_PAGE_ADR(pb->p.page)); /* select current page (ST7565R) */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ if (!u8g_pb_WriteBuffer(pb, u8g, dev)) return 0;
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ case U8G_DEV_MSG_CONTRAST:
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+ u8g_WriteByte(u8g, dev, 0x81);
+ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2);
+ u8g_SetChipSelect(u8g, dev, 0);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_ON:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_sleep_on);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_sleep_off);
+ return 1;
+ }
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_dev_st7565_64128n_HAL_2x_fn(u8g_t *u8g, u8g_dev_t *dev, const uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_init_seq);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_data_start);
+ u8g_WriteByte(u8g, dev, ST7565_PAGE_ADR(2 * pb->p.page)); /* select current page (ST7565R) */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)pb->buf);
+ u8g_SetChipSelect(u8g, dev, 0);
+
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_data_start);
+ u8g_WriteByte(u8g, dev, ST7565_PAGE_ADR(2 * pb->p.page + 1)); /* select current page (ST7565R) */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width);
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ case U8G_DEV_MSG_CONTRAST:
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+ u8g_WriteByte(u8g, dev, 0x81);
+ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2);
+ u8g_SetChipSelect(u8g, dev, 0);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_ON:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_sleep_on);
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_HAL_sleep_off);
+ return 1;
+ }
+ return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
+}
+
+U8G_PB_DEV(u8g_dev_st7565_64128n_HAL_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_HAL_fn, U8G_COM_HAL_SW_SPI_FN);
+
+uint8_t u8g_dev_st7565_64128n_HAL_2x_buf[WIDTH*2] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_st7565_64128n_HAL_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_64128n_HAL_2x_buf};
+u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_sw_spi = { u8g_dev_st7565_64128n_HAL_2x_fn, &u8g_dev_st7565_64128n_HAL_2x_pb, U8G_COM_HAL_SW_SPI_FN };
+
+
+U8G_PB_DEV(u8g_dev_st7565_64128n_HAL_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_HAL_fn, U8G_COM_HAL_HW_SPI_FN);
+u8g_dev_t u8g_dev_st7565_64128n_HAL_2x_hw_spi = { u8g_dev_st7565_64128n_HAL_2x_fn, &u8g_dev_st7565_64128n_HAL_2x_pb, U8G_COM_HAL_HW_SPI_FN };
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp b/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp
new file mode 100644
index 0000000..aa5f990
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_st7920_128x64_HAL.cpp
@@ -0,0 +1,208 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Based on u8g_dev_st7920_128x64.c
+ *
+ * Universal 8bit Graphics Library
+ *
+ * Copyright (c) 2011, olikraus@gmail.com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB && DISABLED(TFT_CLASSIC_UI)
+
+#include "HAL_LCD_com_defines.h"
+
+#define PAGE_HEIGHT 8
+
+/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */
+static const uint8_t u8g_dev_st7920_128x64_HAL_init_seq[] PROGMEM = {
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_RST(15), // do reset low pulse with (15*16)+2 milliseconds (=maximum delay)
+ U8G_ESC_DLY(100), // 8 Dez 2012: additional delay 100 ms because of reset
+ U8G_ESC_CS(1), // enable chip
+ U8G_ESC_DLY(50), // delay 50 ms
+
+ 0x038, // 8 Bit interface (DL=1), basic instruction set (RE=0)
+ 0x00C, // display on, cursor & blink off; 0x08: all off
+ 0x006, // Entry mode: Cursor move to right, DDRAM address counter (AC) plus 1, no shift
+ 0x002, // disable scroll, enable CGRAM adress
+ 0x001, // clear RAM, needs 1.6 ms
+ U8G_ESC_DLY(100), // delay 100 ms
+
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_END // end of sequence
+};
+
+void clear_graphics_DRAM(u8g_t *u8g, u8g_dev_t *dev) {
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_Delay(1);
+ u8g_SetAddress(u8g, dev, 0); // cmd mode
+ u8g_WriteByte(u8g, dev, 0x08); //display off, cursor+blink off
+ u8g_WriteByte(u8g, dev, 0x3E); //extended mode + GDRAM active
+ LOOP_L_N(y, (LCD_PIXEL_HEIGHT) / 2) { //clear GDRAM
+ u8g_WriteByte(u8g, dev, 0x80 | y); //set y
+ u8g_WriteByte(u8g, dev, 0x80); //set x = 0
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ LOOP_L_N(i, 2 * (LCD_PIXEL_WIDTH) / 8) //2x width clears both segments
+ u8g_WriteByte(u8g, dev, 0);
+ u8g_SetAddress(u8g, dev, 0); /* cmd mode */
+ }
+
+ u8g_WriteByte(u8g, dev, 0x0C); //display on, cursor+blink off
+
+ u8g_SetChipSelect(u8g, dev, 0);
+}
+
+uint8_t u8g_dev_st7920_128x64_HAL_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
+ clear_graphics_DRAM(u8g, dev);
+ break;
+ case U8G_DEV_MSG_STOP:
+ break;
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ uint8_t y, i;
+ uint8_t *ptr;
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+
+ u8g_SetAddress(u8g, dev, 0); /* cmd mode */
+ u8g_SetChipSelect(u8g, dev, 1);
+ y = pb->p.page_y0;
+ ptr = (uint8_t *)pb->buf;
+ for (i = 0; i < 8; i ++) {
+ u8g_SetAddress(u8g, dev, 0); /* cmd mode */
+ u8g_WriteByte(u8g, dev, 0x03E ); /* enable extended mode */
+
+ if (y < 32) {
+ u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */
+ u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/
+ }
+ else {
+ u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */
+ u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/
+ }
+
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, (LCD_PIXEL_WIDTH) / 8, ptr);
+ ptr += (LCD_PIXEL_WIDTH) / 8;
+ y++;
+ }
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ }
+ return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_dev_st7920_128x64_HAL_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_400NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_HAL_init_seq);
+ clear_graphics_DRAM(u8g, dev);
+ break;
+
+ case U8G_DEV_MSG_STOP:
+ break;
+
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ uint8_t y, i;
+ uint8_t *ptr;
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+
+ u8g_SetAddress(u8g, dev, 0); /* cmd mode */
+ u8g_SetChipSelect(u8g, dev, 1);
+ y = pb->p.page_y0;
+ ptr = (uint8_t *)pb->buf;
+ for (i = 0; i < 32; i ++) {
+ u8g_SetAddress(u8g, dev, 0); /* cmd mode */
+ u8g_WriteByte(u8g, dev, 0x03E ); /* enable extended mode */
+
+ if (y < 32) {
+ u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */
+ u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/
+ }
+ else {
+ u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */
+ u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/
+ }
+
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, (LCD_PIXEL_WIDTH) / 8, ptr);
+ ptr += (LCD_PIXEL_WIDTH) / 8;
+ y++;
+ }
+ u8g_SetChipSelect(u8g, dev, 0);
+ }
+ break;
+ }
+ return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg);
+}
+
+U8G_PB_DEV(u8g_dev_st7920_128x64_HAL_sw_spi, LCD_PIXEL_WIDTH, LCD_PIXEL_HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_HAL_fn, U8G_COM_ST7920_HAL_SW_SPI);
+
+#define QWIDTH ((LCD_PIXEL_WIDTH) * 4)
+uint8_t u8g_dev_st7920_128x64_HAL_4x_buf[QWIDTH] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_st7920_128x64_HAL_4x_pb = { { 32, LCD_PIXEL_HEIGHT, 0, 0, 0 }, LCD_PIXEL_WIDTH, u8g_dev_st7920_128x64_HAL_4x_buf};
+u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_sw_spi = { u8g_dev_st7920_128x64_HAL_4x_fn, &u8g_dev_st7920_128x64_HAL_4x_pb, U8G_COM_ST7920_HAL_SW_SPI };
+
+U8G_PB_DEV(u8g_dev_st7920_128x64_HAL_hw_spi, LCD_PIXEL_WIDTH, LCD_PIXEL_HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_HAL_fn, U8G_COM_ST7920_HAL_HW_SPI);
+u8g_dev_t u8g_dev_st7920_128x64_HAL_4x_hw_spi = { u8g_dev_st7920_128x64_HAL_4x_fn, &u8g_dev_st7920_128x64_HAL_4x_pb, U8G_COM_ST7920_HAL_HW_SPI };
+
+#if NONE(__AVR__, ARDUINO_ARCH_STM32, ARDUINO_ARCH_ESP32) || defined(U8G_HAL_LINKS)
+ // Also use this device for HAL version of rrd class. This results in the same device being used
+ // for the ST7920 for HAL systems no matter what is selected in marlinui_DOGM.h.
+ u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = { u8g_dev_st7920_128x64_HAL_4x_fn, &u8g_dev_st7920_128x64_HAL_4x_pb, U8G_COM_ST7920_HAL_SW_SPI };
+#endif
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp
new file mode 100644
index 0000000..7f88df7
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_tft_upscale_from_128x64.cpp
@@ -0,0 +1,536 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * u8g_dev_tft_320x240_upscale_from_128x64.cpp
+ *
+ * Universal 8bit Graphics Library
+ *
+ * Copyright (c) 2011, olikraus@gmail.com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_MARLINUI_U8GLIB && (PIN_EXISTS(FSMC_CS) || HAS_SPI_GRAPHICAL_TFT)
+
+#include "HAL_LCD_com_defines.h"
+#include "marlinui_DOGM.h"
+
+#include
+
+#if EITHER(LCD_USE_DMA_FSMC, LCD_USE_DMA_SPI)
+ #define HAS_LCD_IO 1
+#endif
+
+#include "../tft_io/tft_io.h"
+TFT_IO tftio;
+
+#define WIDTH LCD_PIXEL_WIDTH
+#define HEIGHT LCD_PIXEL_HEIGHT
+#define PAGE_HEIGHT 8
+
+#include "../touch/touch_buttons.h"
+
+#if ENABLED(TOUCH_SCREEN_CALIBRATION)
+ #include "../tft_io/touch_calibration.h"
+ #include "../marlinui.h"
+#endif
+
+#define X_HI (UPSCALE(TFT_PIXEL_OFFSET_X, WIDTH) - 1)
+#define Y_HI (UPSCALE(TFT_PIXEL_OFFSET_Y, HEIGHT) - 1)
+
+// see https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html
+
+#define COLOR_BLACK 0x0000 // #000000
+#define COLOR_WHITE 0xFFFF // #FFFFFF
+#define COLOR_SILVER 0xC618 // #C0C0C0
+#define COLOR_GREY 0x7BEF // #808080
+#define COLOR_DARKGREY 0x4208 // #404040
+#define COLOR_DARKGREY2 0x39E7 // #303030
+#define COLOR_DARK 0x0003 // Some dark color
+
+#define COLOR_RED 0xF800 // #FF0000
+#define COLOR_LIME 0x7E00 // #00FF00
+#define COLOR_BLUE 0x001F // #0000FF
+#define COLOR_YELLOW 0xFFE0 // #FFFF00
+#define COLOR_MAGENTA 0xF81F // #FF00FF
+#define COLOR_FUCHSIA 0xF81F // #FF00FF
+#define COLOR_CYAN 0x07FF // #00FFFF
+#define COLOR_AQUA 0x07FF // #00FFFF
+
+#define COLOR_MAROON 0x7800 // #800000
+#define COLOR_GREEN 0x03E0 // #008000
+#define COLOR_NAVY 0x000F // #000080
+#define COLOR_OLIVE 0x8400 // #808000
+#define COLOR_PURPLE 0x8010 // #800080
+#define COLOR_TEAL 0x0410 // #008080
+
+#define COLOR_ORANGE 0xFC00 // #FF7F00
+
+#ifndef TFT_MARLINUI_COLOR
+ #define TFT_MARLINUI_COLOR COLOR_WHITE
+#endif
+#ifndef TFT_MARLINBG_COLOR
+ #define TFT_MARLINBG_COLOR COLOR_BLACK
+#endif
+#ifndef TFT_DISABLED_COLOR
+ #define TFT_DISABLED_COLOR COLOR_DARK
+#endif
+#ifndef TFT_BTCANCEL_COLOR
+ #define TFT_BTCANCEL_COLOR COLOR_RED
+#endif
+#ifndef TFT_BTARROWS_COLOR
+ #define TFT_BTARROWS_COLOR COLOR_BLUE
+#endif
+#ifndef TFT_BTOKMENU_COLOR
+ #define TFT_BTOKMENU_COLOR COLOR_RED
+#endif
+
+static void setWindow(u8g_t *u8g, u8g_dev_t *dev, uint16_t Xmin, uint16_t Ymin, uint16_t Xmax, uint16_t Ymax) {
+ tftio.set_window(Xmin, Ymin, Xmax, Ymax);
+}
+
+#if HAS_TOUCH_BUTTONS
+
+ static const uint8_t buttonD[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00011000,B00110000,B00000001,
+ B10000000,B00001100,B01100000,B00000001,
+ B10000000,B00000110,B11000000,B00000001,
+ B10000000,B00000011,B10000000,B00000001,
+ B10000000,B00000011,B10000000,B00000001,
+ B10000000,B00000110,B11000000,B00000001,
+ B10000000,B00001100,B01100000,B00000001,
+ B10000000,B00011000,B00110000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+
+ #if ENABLED(REVERSE_MENU_DIRECTION)
+
+ static const uint8_t buttonA[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00111111,B11100001,
+ B10000111,B11111100,B00111111,B11100001,
+ B10000011,B11111000,B00000000,B00000001,
+ B10000001,B11110000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B01000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+ static const uint8_t buttonB[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B01100000,B00000010,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00001111,B10000001,
+ B10000000,B01100000,B00011111,B11000001,
+ B10000111,B11111110,B00111111,B11100001,
+ B10000111,B11111110,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+
+ #else
+
+ static const uint8_t buttonA[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B01000000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000001,B11110000,B00000000,B00000001,
+ B10000011,B11111000,B00000000,B00000001,
+ B10000111,B11111100,B00111111,B11100001,
+ B10000000,B11100000,B00111111,B11100001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B11100000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+
+ static const uint8_t buttonB[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000111,B11111110,B00000111,B00000001,
+ B10000111,B11111110,B00111111,B11100001,
+ B10000000,B01100000,B00011111,B11000001,
+ B10000000,B01100000,B00001111,B10000001,
+ B10000000,B01100000,B00000111,B00000001,
+ B10000000,B01100000,B00000010,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+
+ #endif
+
+ static const uint8_t buttonC[] = {
+ B01111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00011100,B00000001,
+ B10000000,B00000100,B00011100,B00000001,
+ B10000000,B00001100,B00011100,B00000001,
+ B10000000,B00011111,B11111100,B00000001,
+ B10000000,B00111111,B11111100,B00000001,
+ B10000000,B00011111,B11111100,B00000001,
+ B10000000,B00001100,B00000000,B00000001,
+ B10000000,B00000100,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111110,
+ };
+
+ void drawImage(const uint8_t *data, u8g_t *u8g, u8g_dev_t *dev, uint16_t length, uint16_t height, uint16_t color) {
+ uint16_t buffer[BUTTON_WIDTH * sq(GRAPHICAL_TFT_UPSCALE)];
+
+ if (length > BUTTON_WIDTH) return;
+
+ for (uint16_t i = 0; i < height; i++) {
+ uint16_t k = 0;
+ for (uint16_t j = 0; j < length; j++) {
+ uint16_t v = TFT_MARLINBG_COLOR;
+ if (*(data + (i * (length >> 3) + (j >> 3))) & (0x80 >> (j & 7)))
+ v = color;
+ else
+ v = TFT_MARLINBG_COLOR;
+ LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = v;
+ }
+ #if HAS_LCD_IO
+ LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE)
+ for (uint16_t l = 0; l < UPSCALE0(length); l++)
+ buffer[l + n * UPSCALE0(length)] = buffer[l];
+
+ tftio.WriteSequence(buffer, length * sq(GRAPHICAL_TFT_UPSCALE));
+ #else
+ for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;)
+ u8g_WriteSequence(u8g, dev, k << 1, (uint8_t*)buffer);
+ #endif
+ }
+ }
+
+#endif // HAS_TOUCH_BUTTONS
+
+// Used to fill RGB565 (16bits) background
+inline void memset2(const void *ptr, uint16_t fill, size_t cnt) {
+ uint16_t* wptr = (uint16_t*)ptr;
+ for (size_t i = 0; i < cnt; i += 2) { *wptr = fill; wptr++; }
+}
+
+static bool preinit = true;
+static uint8_t page;
+
+#if HAS_TOUCH_BUTTONS
+ static bool redrawTouchButtons = true;
+ static void drawTouchButtons(u8g_t *u8g, u8g_dev_t *dev) {
+ if (!redrawTouchButtons) return;
+ redrawTouchButtons = false;
+
+ // Bottom buttons
+ setWindow(u8g, dev, BUTTOND_X_LO, BUTTON_Y_LO, BUTTOND_X_HI, BUTTON_Y_HI);
+ drawImage(buttonD, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTCANCEL_COLOR);
+
+ setWindow(u8g, dev, BUTTONA_X_LO, BUTTON_Y_LO, BUTTONA_X_HI, BUTTON_Y_HI);
+ drawImage(buttonA, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTARROWS_COLOR);
+
+ setWindow(u8g, dev, BUTTONB_X_LO, BUTTON_Y_LO, BUTTONB_X_HI, BUTTON_Y_HI);
+ drawImage(buttonB, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTARROWS_COLOR);
+
+ setWindow(u8g, dev, BUTTONC_X_LO, BUTTON_Y_LO, BUTTONC_X_HI, BUTTON_Y_HI);
+ drawImage(buttonC, u8g, dev, BUTTON_DRAW_WIDTH, BUTTON_DRAW_HEIGHT, TFT_BTOKMENU_COLOR);
+ }
+#endif // HAS_TOUCH_BUTTONS
+
+static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
+
+uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+
+ #if HAS_LCD_IO
+ static uint16_t bufferA[WIDTH * sq(GRAPHICAL_TFT_UPSCALE)], bufferB[WIDTH * sq(GRAPHICAL_TFT_UPSCALE)];
+ uint16_t* buffer = &bufferA[0];
+ #else
+ uint16_t buffer[WIDTH * GRAPHICAL_TFT_UPSCALE]; // 16-bit RGB 565 pixel line buffer
+ #endif
+
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, nullptr);
+
+ if (preinit) {
+ preinit = false;
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+ }
+
+ if (msgInitCount) return -1;
+ tftio.Init();
+ tftio.InitTFT();
+ TERN_(TOUCH_SCREEN_CALIBRATION, touch_calibration.calibration_reset());
+
+ // Clear Screen
+ setWindow(u8g, dev, 0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1);
+ #if HAS_LCD_IO
+ tftio.WriteMultiple(TFT_MARLINBG_COLOR, (TFT_WIDTH) * (TFT_HEIGHT));
+ #else
+ memset2(buffer, TFT_MARLINBG_COLOR, (TFT_WIDTH) / 2);
+ for (uint16_t i = 0; i < (TFT_HEIGHT) * sq(GRAPHICAL_TFT_UPSCALE); i++)
+ u8g_WriteSequence(u8g, dev, (TFT_WIDTH) / 2, (uint8_t *)buffer);
+ #endif
+ return 0;
+
+ case U8G_DEV_MSG_STOP: preinit = true; break;
+
+ case U8G_DEV_MSG_PAGE_FIRST:
+ page = 0;
+ TERN_(HAS_TOUCH_BUTTONS, drawTouchButtons(u8g, dev));
+ setWindow(u8g, dev, TFT_PIXEL_OFFSET_X, TFT_PIXEL_OFFSET_Y, X_HI, Y_HI);
+ break;
+
+ case U8G_DEV_MSG_PAGE_NEXT:
+ if (++page > (HEIGHT / PAGE_HEIGHT)) return 1;
+
+ LOOP_L_N(y, PAGE_HEIGHT) {
+ uint32_t k = 0;
+ #if HAS_LCD_IO
+ buffer = (y & 1) ? bufferB : bufferA;
+ #endif
+ for (uint16_t i = 0; i < (uint32_t)pb->width; i++) {
+ const uint8_t b = *(((uint8_t *)pb->buf) + i);
+ const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR;
+ LOOP_L_N(n, GRAPHICAL_TFT_UPSCALE) buffer[k++] = c;
+ }
+ #if HAS_LCD_IO
+ LOOP_S_L_N(n, 1, GRAPHICAL_TFT_UPSCALE)
+ for (uint16_t l = 0; l < UPSCALE0(WIDTH); l++)
+ buffer[l + n * UPSCALE0(WIDTH)] = buffer[l];
+
+ tftio.WriteSequence(buffer, COUNT(bufferA));
+ #else
+ uint8_t* bufptr = (uint8_t*) buffer;
+ for (uint8_t i = GRAPHICAL_TFT_UPSCALE; i--;) {
+ LOOP_S_L_N(n, 0, GRAPHICAL_TFT_UPSCALE * 2) {
+ u8g_WriteSequence(u8g, dev, WIDTH, &bufptr[WIDTH * n]);
+ }
+ }
+ #endif
+ }
+ break;
+
+ case U8G_DEV_MSG_SLEEP_ON:
+ // Enter Sleep Mode (10h)
+ return 1;
+ case U8G_DEV_MSG_SLEEP_OFF:
+ // Sleep Out (11h)
+ return 1;
+ }
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_com_hal_tft_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
+ if (msgInitCount) {
+ if (msg == U8G_COM_MSG_INIT) msgInitCount--;
+ if (msgInitCount) return -1;
+ }
+
+ static uint8_t isCommand;
+
+ switch (msg) {
+ case U8G_COM_MSG_STOP: break;
+ case U8G_COM_MSG_INIT:
+ isCommand = 0;
+ break;
+
+ case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
+ isCommand = arg_val == 0 ? 1 : 0;
+ break;
+
+ case U8G_COM_MSG_RESET:
+ break;
+
+ case U8G_COM_MSG_WRITE_BYTE:
+ tftio.DataTransferBegin(DATASIZE_8BIT);
+ if (isCommand)
+ tftio.WriteReg(arg_val);
+ else
+ tftio.WriteData((uint16_t)arg_val);
+ tftio.DataTransferEnd();
+ break;
+
+ case U8G_COM_MSG_WRITE_SEQ:
+ tftio.DataTransferBegin(DATASIZE_16BIT);
+ for (uint8_t i = 0; i < arg_val; i += 2)
+ tftio.WriteData(*(uint16_t *)(((uintptr_t)arg_ptr) + i));
+ tftio.DataTransferEnd();
+ break;
+
+ }
+ return 1;
+}
+
+U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tft_320x240_upscale_from_128x64_fn, U8G_COM_HAL_TFT_FN);
+
+#if ENABLED(TOUCH_SCREEN_CALIBRATION)
+
+ static void drawCross(uint16_t x, uint16_t y, uint16_t color) {
+ tftio.set_window(x - 15, y, x + 15, y);
+ tftio.WriteMultiple(color, 31);
+ tftio.set_window(x, y - 15, x, y + 15);
+ tftio.WriteMultiple(color, 31);
+ }
+
+ void MarlinUI::touch_calibration_screen() {
+ uint16_t x, y;
+ calibrationState calibration_stage = touch_calibration.get_calibration_state();
+
+ if (calibration_stage == CALIBRATION_NONE) {
+ // start and clear screen
+ defer_status_screen(true);
+ calibration_stage = touch_calibration.calibration_start();
+ tftio.set_window(0, 0, (TFT_WIDTH) - 1, (TFT_HEIGHT) - 1);
+ tftio.WriteMultiple(TFT_MARLINBG_COLOR, uint32_t(TFT_WIDTH) * (TFT_HEIGHT));
+ }
+ else {
+ // clear last cross
+ x = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].x;
+ y = touch_calibration.calibration_points[_MIN(calibration_stage - 1, CALIBRATION_BOTTOM_RIGHT)].y;
+ drawCross(x, y, TFT_MARLINBG_COLOR);
+ }
+
+ const char *str = nullptr;
+ if (calibration_stage < CALIBRATION_SUCCESS) {
+ // handle current state
+ switch (calibration_stage) {
+ case CALIBRATION_TOP_LEFT: str = GET_TEXT(MSG_TOP_LEFT); break;
+ case CALIBRATION_BOTTOM_LEFT: str = GET_TEXT(MSG_BOTTOM_LEFT); break;
+ case CALIBRATION_TOP_RIGHT: str = GET_TEXT(MSG_TOP_RIGHT); break;
+ case CALIBRATION_BOTTOM_RIGHT: str = GET_TEXT(MSG_BOTTOM_RIGHT); break;
+ default: break;
+ }
+
+ x = touch_calibration.calibration_points[calibration_stage].x;
+ y = touch_calibration.calibration_points[calibration_stage].y;
+ drawCross(x, y, TFT_MARLINUI_COLOR);
+ }
+ else {
+ // end calibration
+ str = calibration_stage == CALIBRATION_SUCCESS ? GET_TEXT(MSG_CALIBRATION_COMPLETED) : GET_TEXT(MSG_CALIBRATION_FAILED);
+ defer_status_screen(false);
+ touch_calibration.calibration_end();
+ TERN_(HAS_TOUCH_BUTTONS, redrawTouchButtons = true);
+ }
+
+ // draw current message
+ tftio.set_window(TFT_PIXEL_OFFSET_X, TFT_PIXEL_OFFSET_Y, X_HI, Y_HI);
+ do {
+ set_font(FONT_MENU);
+ lcd_put_u8str(0, LCD_PIXEL_HEIGHT / 2, str);
+ } while (u8g.nextPage());
+ drawing_screen = false;
+ safe_delay(250);
+ if (calibration_stage == CALIBRATION_SUCCESS) {
+ safe_delay(500);
+ ui.goto_previous_screen();
+ }
+ }
+
+#endif // TOUCH_SCREEN_CALIBRATION
+
+#endif // HAS_MARLINUI_U8GLIB && (FSMC_CS_PIN || HAS_SPI_GRAPHICAL_TFT)
diff --git a/Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp b/Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp
new file mode 100644
index 0000000..172afbd
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp
@@ -0,0 +1,213 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+/**
+ * Based on u8g_dev_uc1701_mini12864.c (dealextreme)
+ *
+ * Universal 8bit Graphics Library
+ *
+ * Copyright (c) 2011, olikraus@gmail.com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list
+ * of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this
+ * list of conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include "HAL_LCD_com_defines.h"
+
+#define WIDTH 128
+#define HEIGHT 64
+#define PAGE_HEIGHT 8
+
+#define UC1701_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
+#define UC1701_BIAS_MODE(N) ((N) ? 0xA3 : 0xA2)
+#define UC1701_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
+#define UC1701_INVERTED(N) ((N) ? 0xA7 : 0xA6)
+#define UC1701_ON(N) ((N) ? 0xAF : 0xAE)
+#define UC1701_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
+#define UC1701_POWER_CONTROL(N) (0x28 | (N))
+#define UC1701_V5_RATIO(N) (0x20 | ((N) & 0x7))
+#define UC1701_CONTRAST(N) (0x81), (N)
+
+#define UC1701_COLUMN_HI(N) (0x10 | (((N) >> 4) & 0xF))
+#define UC1701_COLUMN_ADR(N) UC1701_COLUMN_HI(N), ((N) & 0xF)
+#define UC1701_PAGE_ADR(N) (0xB0 | (N))
+#define UC1701_START_LINE(N) (0x40 | (N))
+#define UC1701_INDICATOR(N) (0xAC), (N)
+#define UC1701_RESET() (0xE2)
+#define UC1701_NOOP() (0xE3)
+#define UC1701_BOOST_RATIO(N) (0xF8), (N)
+
+static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_RST(1), // do reset low pulse with (1*16)+2 milliseconds
+ U8G_ESC_CS(1), // enable chip
+
+ UC1701_RESET(), // soft reset
+ UC1701_START_LINE(0), // set display start line to 0
+ UC1701_ADC_REVERSE(0), // ADC set to reverse
+ UC1701_OUT_MODE(1), // common output mode
+ UC1701_INVERTED(0), // display normal, bit val 0: LCD pixel off
+ UC1701_BIAS_MODE(0), // LCD bias 1/9
+ UC1701_POWER_CONTROL(0x7), // all power control circuits on
+ UC1701_BOOST_RATIO(0x0), // set booster ratio to 4x
+ UC1701_V5_RATIO(3), // set V0 voltage resistor ratio to large
+ UC1701_CONTRAST(0x27), // set contrast
+ UC1701_INDICATOR(0), // indicator disable
+ UC1701_ON(1), // display on
+
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_DLY(100), // delay 100 ms
+ U8G_ESC_CS(1), // enable chip
+
+ UC1701_ALL_PIX(1), // display all points, ST7565
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_DLY(100), // delay 100 ms
+ U8G_ESC_DLY(100), // delay 100 ms
+ U8G_ESC_CS(1), // enable chip
+ UC1701_ALL_PIX(0), // normal display
+ U8G_ESC_CS(0), // disable chip
+ U8G_ESC_DLY(150), // delay 150 ms before sending any data
+ U8G_ESC_END // end of sequence
+};
+
+static const uint8_t u8g_dev_uc1701_mini12864_HAL_data_start[] PROGMEM = {
+ U8G_ESC_ADR(0), // instruction mode
+ U8G_ESC_CS(1), // enable chip
+ #if ANY(MKS_MINI_12864, ENDER2_STOCKDISPLAY, FYSETC_MINI_12864)
+ UC1701_START_LINE(0), // set display start line to 0
+ UC1701_ADC_REVERSE(0), // ADC set to reverse
+ UC1701_OUT_MODE(1), // common output mode
+ UC1701_INVERTED(0), // display normal, bit val 0: LCD pixel off
+ UC1701_BIAS_MODE(0), // LCD bias 1/9
+ UC1701_POWER_CONTROL(0x7),// all power control circuits on
+ UC1701_BOOST_RATIO(0x0), // set booster ratio to 4x
+ UC1701_V5_RATIO(3), // set V0 voltage resistor ratio to large
+ UC1701_INDICATOR(0), // indicator disable
+ UC1701_ON(1), // display on
+ UC1701_COLUMN_HI(0), // set upper 4 bit of the col adr to 0
+ U8G_ESC_END, // end of sequence
+ U8G_ESC_DLY(5) // delay 5 ms
+ #else
+ UC1701_COLUMN_ADR(0), // address 0
+ U8G_ESC_END // end of sequence
+ #endif
+};
+
+uint8_t u8g_dev_uc1701_mini12864_HAL_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_init_seq);
+ break;
+
+ case U8G_DEV_MSG_STOP: break;
+
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_data_start);
+ u8g_WriteByte(u8g, dev, 0x0B0 | pb->p.page); /* select current page */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ if (!u8g_pb_WriteBuffer(pb, u8g, dev)) return 0;
+ u8g_SetChipSelect(u8g, dev, 0);
+ } break;
+
+ case U8G_DEV_MSG_CONTRAST:
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+ u8g_WriteByte(u8g, dev, 0x081);
+ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2);
+ u8g_SetChipSelect(u8g, dev, 0);
+ return 1;
+ }
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+}
+
+uint8_t u8g_dev_uc1701_mini12864_HAL_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ switch (msg) {
+ case U8G_DEV_MSG_INIT:
+ u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_init_seq);
+ break;
+
+ case U8G_DEV_MSG_STOP: break;
+
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_data_start);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (2 * pb->p.page)); /* select current page */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)pb->buf);
+ u8g_SetChipSelect(u8g, dev, 0);
+ u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_data_start);
+ u8g_WriteByte(u8g, dev, 0x0B0 | (2 * pb->p.page + 1)); /* select current page */
+ u8g_SetAddress(u8g, dev, 1); /* data mode */
+ u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width);
+ u8g_SetChipSelect(u8g, dev, 0);
+ } break;
+
+ case U8G_DEV_MSG_CONTRAST:
+ u8g_SetChipSelect(u8g, dev, 1);
+ u8g_SetAddress(u8g, dev, 0); /* instruction mode */
+ u8g_WriteByte(u8g, dev, 0x081);
+ u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2);
+ u8g_SetChipSelect(u8g, dev, 0);
+ return 1;
+ }
+ return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);
+}
+
+U8G_PB_DEV(u8g_dev_uc1701_mini12864_HAL_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_HAL_fn, U8G_COM_HAL_SW_SPI_FN);
+U8G_PB_DEV(u8g_dev_uc1701_mini12864_HAL_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_HAL_fn, U8G_COM_HAL_HW_SPI_FN);
+
+uint8_t u8g_dev_uc1701_mini12864_HAL_2x_buf[WIDTH*2] U8G_NOCOMMON ;
+u8g_pb_t u8g_dev_uc1701_mini12864_HAL_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1701_mini12864_HAL_2x_buf};
+u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_sw_spi = { u8g_dev_uc1701_mini12864_HAL_2x_fn, &u8g_dev_uc1701_mini12864_HAL_2x_pb, U8G_COM_HAL_SW_SPI_FN };
+u8g_dev_t u8g_dev_uc1701_mini12864_HAL_2x_hw_spi = { u8g_dev_uc1701_mini12864_HAL_2x_fn, &u8g_dev_uc1701_mini12864_HAL_2x_pb, U8G_COM_HAL_HW_SPI_FN };
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_fontutf8.cpp b/Marlin/src/lcd/dogm/u8g_fontutf8.cpp
new file mode 100644
index 0000000..89bdb09
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_fontutf8.cpp
@@ -0,0 +1,315 @@
+/**
+ * @file u8g_fontutf8.cpp
+ * @brief font api for u8g lib
+ * @author Yunhui Fu (yhfudev@gmail.com)
+ * @version 1.0
+ * @date 2015-02-19
+ * @copyright GPL/BSD
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if HAS_MARLINUI_U8GLIB
+
+#include
+#include "../fontutils.h"
+#include "u8g_fontutf8.h"
+
+typedef void font_t;
+
+/**
+ * @brief the callback function to draw something
+ *
+ * @param userdata : User's data
+ * @param msg : the u8g's string
+ * @param fnt_current : the font
+ *
+ * @return 0 on success, 1 to force quit, <0 on error
+ *
+ * Get the screen pixel width of a ROM UTF-8 string
+ */
+typedef int (* fontgroup_cb_draw_t)(void *userdata, const font_t *fnt_current, const char *msg);
+
+/* return v1 - v2 */
+static int fontinfo_compare(uxg_fontinfo_t * v1, uxg_fontinfo_t * v2) {
+ if (v1->page < v2->page) return -1;
+ else if (v1->page > v2->page) return 1;
+
+ if (v1->end < v2->begin) return -1;
+ else if (v1->begin > v2->end) return 1;
+
+ return 0;
+}
+
+/*"data_list[idx] - *data_pin"*/
+static int pf_bsearch_cb_comp_fntifo_pgm (void *userdata, size_t idx, void *data_pin) {
+ uxg_fontinfo_t *fntinfo = (uxg_fontinfo_t*)userdata;
+ uxg_fontinfo_t localval;
+ memcpy_P(&localval, fntinfo + idx, sizeof(localval));
+ return fontinfo_compare(&localval, (uxg_fontinfo_t*)data_pin);
+}
+
+typedef struct _font_group_t {
+ const uxg_fontinfo_t * m_fntifo;
+ int m_fntinfo_num;
+} font_group_t;
+
+static int fontgroup_init(font_group_t * root, const uxg_fontinfo_t * fntinfo, int number) {
+ root->m_fntifo = fntinfo;
+ root->m_fntinfo_num = number;
+ return 0;
+}
+
+static const font_t* fontgroup_find(font_group_t * root, wchar_t val) {
+ uxg_fontinfo_t vcmp = {(uint16_t)(val / 128), (uint8_t)(val % 128 + 128), (uint8_t)(val % 128 + 128), 0, 0};
+ size_t idx = 0;
+
+ if (val < 256) return nullptr;
+
+ if (pf_bsearch_r((void*)root->m_fntifo, root->m_fntinfo_num, pf_bsearch_cb_comp_fntifo_pgm, (void*)&vcmp, &idx) < 0)
+ return nullptr;
+
+ memcpy_P(&vcmp, root->m_fntifo + idx, sizeof(vcmp));
+ return vcmp.fntdata;
+}
+
+static void fontgroup_drawwchar(font_group_t *group, const font_t *fnt_default, wchar_t val, void * userdata, fontgroup_cb_draw_t cb_draw_ram) {
+ uint8_t buf[2] = {0, 0};
+ const font_t * fntpqm = (font_t*)fontgroup_find(group, val);
+ if (!fntpqm) {
+ // Unknown char, use default font
+ buf[0] = (uint8_t)(val & 0xFF);
+ fntpqm = fnt_default;
+ }
+ if (fnt_default != fntpqm) {
+ buf[0] = (uint8_t)(val & 0x7F);
+ buf[0] |= 0x80; // use upper page to avoid 0x00 error in C. you may want to generate the font data
+ }
+
+ cb_draw_ram (userdata, fntpqm, (char*) buf);
+}
+
+/**
+ * @brief try to process a utf8 string
+ *
+ * @param pu8g : U8G pointer
+ * @param fnt_default : the default font
+ * @param utf8_msg : the UTF-8 string
+ * @param cb_read_byte : how to read the utf8_msg, from RAM or ROM (call read_byte_ram or pgm_read_byte)
+ * @param userdata : User's data
+ * @param cb_draw_ram : the callback function of userdata to draw a !RAM! string (actually it is to draw a one byte string in RAM)
+ *
+ * @return N/A
+ *
+ * Get the screen pixel width of a ROM UTF-8 string
+ */
+static void fontgroup_drawstring(font_group_t *group, const font_t *fnt_default, const char *utf8_msg, read_byte_cb_t cb_read_byte, void * userdata, fontgroup_cb_draw_t cb_draw_ram) {
+ uint8_t *p = (uint8_t*)utf8_msg;
+ for (;;) {
+ wchar_t val = 0;
+ p = get_utf8_value_cb(p, cb_read_byte, &val);
+ if (!val) break;
+ fontgroup_drawwchar(group, fnt_default, val, userdata, cb_draw_ram);
+ }
+}
+
+static bool flag_fontgroup_was_inited = false;
+static font_group_t g_fontgroup_root = { nullptr, 0 };
+
+/**
+ * @brief check if font is loaded
+ */
+static inline bool uxg_Utf8FontIsInited() { return flag_fontgroup_was_inited; }
+
+int uxg_SetUtf8Fonts (const uxg_fontinfo_t * fntinfo, int number) {
+ flag_fontgroup_was_inited = 1;
+ return fontgroup_init(&g_fontgroup_root, fntinfo, number);
+}
+
+struct _uxg_drawu8_data_t {
+ u8g_t *pu8g;
+ unsigned int x;
+ unsigned int y;
+ unsigned int adv;
+ unsigned int max_width; // the max pixel width of the string allowed
+ const void * fnt_prev;
+};
+
+static int fontgroup_cb_draw_u8g(void *userdata, const font_t *fnt_current, const char *msg) {
+ struct _uxg_drawu8_data_t * pdata = (_uxg_drawu8_data_t*)userdata;
+
+ if (pdata->fnt_prev != fnt_current) {
+ u8g_SetFont(pdata->pu8g, (const u8g_fntpgm_uint8_t*)fnt_current);
+ pdata->fnt_prev = fnt_current;
+ }
+ if ((pdata->max_width != PIXEL_LEN_NOLIMIT) && (pdata->adv + u8g_GetStrPixelWidth(pdata->pu8g, (char*)msg) > pdata->max_width))
+ return 1;
+ pdata->adv += u8g_DrawStr(pdata->pu8g, pdata->x + pdata->adv, pdata->y, (char*) msg);
+ return 0;
+}
+
+/**
+ * @brief Draw a wchar_t at the specified position
+ *
+ * @param pu8g : U8G pointer
+ * @param x : position x axis
+ * @param y : position y axis
+ * @param ch : the wchar_t
+ * @param max_width : the pixel width of the string allowed
+ *
+ * @return number of pixels advanced
+ *
+ * Draw a UTF-8 string at the specified position
+ */
+unsigned int uxg_DrawWchar(u8g_t *pu8g, unsigned int x, unsigned int y, wchar_t ch, pixel_len_t max_width) {
+ struct _uxg_drawu8_data_t data;
+ font_group_t *group = &g_fontgroup_root;
+ const font_t *fnt_default = uxg_GetFont(pu8g);
+
+ if (!uxg_Utf8FontIsInited()) {
+ u8g_DrawStrP(pu8g, x, y, (const u8g_pgm_uint8_t *)PSTR("Err: utf8 font not initialized."));
+ return 0;
+ }
+ data.pu8g = pu8g;
+ data.x = x;
+ data.y = y;
+ data.adv = 0;
+ data.max_width = max_width;
+ data.fnt_prev = nullptr;
+ fontgroup_drawwchar(group, fnt_default, ch, (void*)&data, fontgroup_cb_draw_u8g);
+ u8g_SetFont(pu8g, (const u8g_fntpgm_uint8_t*)fnt_default);
+
+ return data.adv;
+}
+
+/**
+ * @brief Draw a UTF-8 string at the specified position
+ *
+ * @param pu8g : U8G pointer
+ * @param x : position x axis
+ * @param y : position y axis
+ * @param utf8_msg : the UTF-8 string
+ * @param max_width : the pixel width of the string allowed
+ *
+ * @return number of pixels advanced
+ *
+ * Draw a UTF-8 string at the specified position
+ */
+unsigned int uxg_DrawUtf8Str(u8g_t *pu8g, unsigned int x, unsigned int y, const char *utf8_msg, pixel_len_t max_width) {
+ struct _uxg_drawu8_data_t data;
+ font_group_t *group = &g_fontgroup_root;
+ const font_t *fnt_default = uxg_GetFont(pu8g);
+
+ if (!uxg_Utf8FontIsInited()) {
+ u8g_DrawStrP(pu8g, x, y, (const u8g_pgm_uint8_t *)PSTR("Err: utf8 font not initialized."));
+ return 0;
+ }
+ data.pu8g = pu8g;
+ data.x = x;
+ data.y = y;
+ data.adv = 0;
+ data.max_width = max_width;
+ data.fnt_prev = nullptr;
+ fontgroup_drawstring(group, fnt_default, utf8_msg, read_byte_ram, (void*)&data, fontgroup_cb_draw_u8g);
+ u8g_SetFont(pu8g, (const u8g_fntpgm_uint8_t*)fnt_default);
+
+ return data.adv;
+}
+
+/**
+ * @brief Draw a ROM UTF-8 string at the specified position
+ *
+ * @param pu8g : U8G pointer
+ * @param x : position x axis
+ * @param y : position y axis
+ * @param utf8_msg : the UTF-8 string
+ * @param max_width : the pixel width of the string allowed
+ *
+ * @return number of pixels advanced
+ *
+ * Draw a ROM UTF-8 string at the specified position
+ */
+unsigned int uxg_DrawUtf8StrP(u8g_t *pu8g, unsigned int x, unsigned int y, PGM_P utf8_msg, pixel_len_t max_width) {
+ struct _uxg_drawu8_data_t data;
+ font_group_t *group = &g_fontgroup_root;
+ const font_t *fnt_default = uxg_GetFont(pu8g);
+
+ if (!uxg_Utf8FontIsInited()) {
+ u8g_DrawStrP(pu8g, x, y, (const u8g_pgm_uint8_t *)PSTR("Err: utf8 font not initialized."));
+ return 0;
+ }
+ data.pu8g = pu8g;
+ data.x = x;
+ data.y = y;
+ data.adv = 0;
+ data.max_width = max_width;
+ data.fnt_prev = nullptr;
+ fontgroup_drawstring(group, fnt_default, utf8_msg, read_byte_rom, (void*)&data, fontgroup_cb_draw_u8g);
+ u8g_SetFont(pu8g, (const u8g_fntpgm_uint8_t*)fnt_default);
+
+ return data.adv;
+}
+
+static int fontgroup_cb_draw_u8gstrlen(void *userdata, const font_t *fnt_current, const char *msg) {
+ struct _uxg_drawu8_data_t * pdata = (_uxg_drawu8_data_t*)userdata;
+
+ if (pdata->fnt_prev != fnt_current) {
+ u8g_SetFont(pdata->pu8g, (const u8g_fntpgm_uint8_t*)fnt_current);
+ pdata->fnt_prev = fnt_current;
+ }
+ pdata->adv += u8g_GetStrPixelWidth(pdata->pu8g, (char*)msg);
+ return 0;
+}
+
+/**
+ * @brief Get the screen pixel width of a UTF-8 string
+ *
+ * @param pu8g : U8G pointer
+ * @param utf8_msg : the UTF-8 string
+ *
+ * @return the pixel width
+ *
+ * Get the screen pixel width of a UTF-8 string
+ */
+int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg) {
+ struct _uxg_drawu8_data_t data;
+ font_group_t *group = &g_fontgroup_root;
+ const font_t *fnt_default = uxg_GetFont(pu8g);
+
+ if (!uxg_Utf8FontIsInited()) return -1;
+
+ memset(&data, 0, sizeof(data));
+ data.pu8g = pu8g;
+ data.adv = 0;
+ fontgroup_drawstring(group, fnt_default, utf8_msg, read_byte_ram, (void*)&data, fontgroup_cb_draw_u8gstrlen);
+ u8g_SetFont(pu8g, (const u8g_fntpgm_uint8_t*)fnt_default);
+
+ return data.adv;
+}
+
+/**
+ * @brief Get the screen pixel width of a ROM UTF-8 string
+ *
+ * @param pu8g : U8G pointer
+ * @param utf8_msg : the UTF-8 string
+ *
+ * @return the pixel width
+ *
+ * Get the screen pixel width of a ROM UTF-8 string
+ */
+int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg) {
+ struct _uxg_drawu8_data_t data;
+ font_group_t *group = &g_fontgroup_root;
+ const font_t *fnt_default = uxg_GetFont(pu8g);
+
+ if (!uxg_Utf8FontIsInited()) return -1;
+
+ memset(&data, 0, sizeof(data));
+ data.pu8g = pu8g;
+ data.adv = 0;
+ fontgroup_drawstring(group, fnt_default, utf8_msg, read_byte_rom, (void*)&data, fontgroup_cb_draw_u8gstrlen);
+ u8g_SetFont(pu8g, (const u8g_fntpgm_uint8_t*)fnt_default);
+ return data.adv;
+}
+
+#endif // HAS_MARLINUI_U8GLIB
diff --git a/Marlin/src/lcd/dogm/u8g_fontutf8.h b/Marlin/src/lcd/dogm/u8g_fontutf8.h
new file mode 100644
index 0000000..34e365c
--- /dev/null
+++ b/Marlin/src/lcd/dogm/u8g_fontutf8.h
@@ -0,0 +1,37 @@
+/**
+ * @file fontutf8.h
+ * @brief font api for u8g lib
+ * @author Yunhui Fu (yhfudev@gmail.com)
+ * @version 1.0
+ * @date 2015-02-19
+ * @copyright GPL/BSD
+ */
+#pragma once
+
+#include
+#include "../fontutils.h"
+
+// the macro to indicate a UTF-8 string
+// You should to save the C/C++ source in UTF-8 encoding!
+// Once you change your UTF-8 strings, you need to call the script uxggenpages.sh to create the font data file fontutf8-data.h
+#define _UxGT(a) a
+
+typedef struct _uxg_fontinfo_t {
+ uint16_t page;
+ uint8_t begin;
+ uint8_t end;
+ uint16_t size;
+ const u8g_fntpgm_uint8_t *fntdata;
+} uxg_fontinfo_t;
+
+int uxg_SetUtf8Fonts(const uxg_fontinfo_t * fntinfo, int number); // fntinfo is type of PROGMEM
+
+unsigned int uxg_DrawWchar(u8g_t *pu8g, unsigned int x, unsigned int y, wchar_t ch, pixel_len_t max_length);
+
+unsigned int uxg_DrawUtf8Str(u8g_t *pu8g, unsigned int x, unsigned int y, const char *utf8_msg, pixel_len_t max_length);
+unsigned int uxg_DrawUtf8StrP(u8g_t *pu8g, unsigned int x, unsigned int y, PGM_P utf8_msg, pixel_len_t max_length);
+
+int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg);
+int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg);
+
+#define uxg_GetFont(puxg) ((puxg)->font)
diff --git a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
new file mode 100644
index 0000000..8542424
--- /dev/null
+++ b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
@@ -0,0 +1,200 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+// NOTE - the HAL version of the rrd device uses a generic ST7920 device. See the
+// file u8g_dev_st7920_128x64_HAL.cpp for the HAL version.
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if !defined(U8G_HAL_LINKS) && ANY(__AVR__, ARDUINO_ARCH_STM32, ARDUINO_ARCH_ESP32)
+
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(U8GLIB_ST7920)
+
+#include "ultralcd_st7920_u8glib_rrd_AVR.h"
+
+#if F_CPU >= 20000000
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(50)
+#elif MB(3DRAG, K8200, K8400)
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(188)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(0)
+#elif MB(MINIRAMBO, EINSY_RAMBO, EINSY_RETRO, SILVER_GATE)
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(250)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(0)
+#elif MB(RAMBO)
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(0)
+#elif MB(BQ_ZUM_MEGA_3D)
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(189)
+#elif defined(ARDUINO_ARCH_STM32)
+ #define CPU_ST7920_DELAY_1 DELAY_NS(300)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(40)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(340)
+#elif F_CPU == 16000000
+ #define CPU_ST7920_DELAY_1 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_2 DELAY_NS(0)
+ #define CPU_ST7920_DELAY_3 DELAY_NS(63)
+#else
+ #error "No valid condition for delays in 'ultralcd_st7920_u8glib_rrd_AVR.h'"
+#endif
+
+#ifndef ST7920_DELAY_1
+ #ifdef BOARD_ST7920_DELAY_1
+ #define ST7920_DELAY_1 BOARD_ST7920_DELAY_1
+ #else
+ #define ST7920_DELAY_1 CPU_ST7920_DELAY_1
+ #endif
+#endif
+#ifndef ST7920_DELAY_2
+ #ifdef BOARD_ST7920_DELAY_2
+ #define ST7920_DELAY_2 BOARD_ST7920_DELAY_2
+ #else
+ #define ST7920_DELAY_2 CPU_ST7920_DELAY_2
+ #endif
+#endif
+#ifndef ST7920_DELAY_3
+ #ifdef BOARD_ST7920_DELAY_3
+ #define ST7920_DELAY_3 BOARD_ST7920_DELAY_3
+ #else
+ #define ST7920_DELAY_3 CPU_ST7920_DELAY_3
+ #endif
+#endif
+
+// Optimize this code with -O3
+#pragma GCC optimize (3)
+
+#ifdef ARDUINO_ARCH_STM32F1
+ #define ST7920_DAT(V) !!((V) & 0x80)
+#else
+ #define ST7920_DAT(V) ((V) & 0x80)
+#endif
+#define ST7920_SND_BIT do{ \
+ WRITE(ST7920_CLK_PIN, LOW); ST7920_DELAY_1; \
+ WRITE(ST7920_DAT_PIN, ST7920_DAT(val)); ST7920_DELAY_2; \
+ WRITE(ST7920_CLK_PIN, HIGH); ST7920_DELAY_3; \
+ val <<= 1; }while(0)
+
+// Optimize this code with -O3
+#pragma GCC optimize (3)
+
+void ST7920_SWSPI_SND_8BIT(uint8_t val) {
+ ST7920_SND_BIT; // 1
+ ST7920_SND_BIT; // 2
+ ST7920_SND_BIT; // 3
+ ST7920_SND_BIT; // 4
+ ST7920_SND_BIT; // 5
+ ST7920_SND_BIT; // 6
+ ST7920_SND_BIT; // 7
+ ST7920_SND_BIT; // 8
+}
+
+uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
+ uint8_t i, y;
+ switch (msg) {
+ case U8G_DEV_MSG_INIT: {
+ OUT_WRITE(ST7920_CS_PIN, LOW);
+ OUT_WRITE(ST7920_DAT_PIN, LOW);
+ OUT_WRITE(ST7920_CLK_PIN, HIGH);
+
+ ST7920_CS();
+ u8g_Delay(120); // Initial delay for boot up
+ ST7920_SET_CMD();
+ ST7920_WRITE_BYTE(0x20); // Non-extended mode
+ ST7920_WRITE_BYTE(0x08); // Display off, cursor+blink off
+ ST7920_WRITE_BYTE(0x01); // Clear DDRAM ram
+ u8g_Delay(15); // Delay for DDRAM clear
+ ST7920_WRITE_BYTE(0x24); // Extended mode
+ ST7920_WRITE_BYTE(0x26); // Extended mode + GDRAM active
+ for (y = 0; y < (LCD_PIXEL_HEIGHT) / 2; y++) { // Clear GDRAM
+ ST7920_WRITE_BYTE(0x80 | y); // Set y
+ ST7920_WRITE_BYTE(0x80); // Set x = 0
+ ST7920_SET_DAT();
+ for (i = 0; i < 2 * (LCD_PIXEL_WIDTH) / 8; i++) // 2x width clears both segments
+ ST7920_WRITE_BYTE(0);
+ ST7920_SET_CMD();
+ }
+ ST7920_WRITE_BYTE(0x0C); // Display on, cursor+blink off
+ ST7920_NCS();
+ }
+ break;
+
+ case U8G_DEV_MSG_STOP: break;
+
+ case U8G_DEV_MSG_PAGE_NEXT: {
+ uint8_t* ptr;
+ u8g_pb_t* pb = (u8g_pb_t*)(dev->dev_mem);
+ y = pb->p.page_y0;
+ ptr = (uint8_t*)pb->buf;
+
+ ST7920_CS();
+ for (i = 0; i < PAGE_HEIGHT; i ++) {
+ ST7920_SET_CMD();
+ if (y < 32) {
+ ST7920_WRITE_BYTE(0x80 | y); // y
+ ST7920_WRITE_BYTE(0x80); // x = 0
+ }
+ else {
+ ST7920_WRITE_BYTE(0x80 | (y - 32)); // y
+ ST7920_WRITE_BYTE(0x80 | 8); // x = 64
+ }
+ ST7920_SET_DAT();
+ ST7920_WRITE_BYTES(ptr, (LCD_PIXEL_WIDTH) / 8); // ptr incremented inside of macro!
+ y++;
+ }
+ ST7920_NCS();
+ }
+ break;
+ }
+ #if PAGE_HEIGHT == 8
+ return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
+ #elif PAGE_HEIGHT == 16
+ return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg);
+ #else
+ return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg);
+ #endif
+}
+
+uint8_t u8g_dev_st7920_128x64_rrd_buf[(LCD_PIXEL_WIDTH) * (PAGE_HEIGHT) / 8] U8G_NOCOMMON;
+u8g_pb_t u8g_dev_st7920_128x64_rrd_pb = { { PAGE_HEIGHT, LCD_PIXEL_HEIGHT, 0, 0, 0 }, LCD_PIXEL_WIDTH, u8g_dev_st7920_128x64_rrd_buf };
+u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = { u8g_dev_rrd_st7920_128x64_fn, &u8g_dev_st7920_128x64_rrd_pb, &u8g_com_null_fn };
+
+#pragma GCC reset_options
+
+#if ENABLED(LIGHTWEIGHT_UI)
+ #include "../../HAL/shared/HAL_ST7920.h"
+ void ST7920_cs() { ST7920_CS(); }
+ void ST7920_ncs() { ST7920_NCS(); }
+ void ST7920_set_cmd() { ST7920_SET_CMD(); }
+ void ST7920_set_dat() { ST7920_SET_DAT(); }
+ void ST7920_write_byte(const uint8_t val) { ST7920_WRITE_BYTE(val); }
+#endif
+
+#endif // U8GLIB_ST7920
+#endif // !U8G_HAL_LINKS && (__AVR__ || ARDUINO_ARCH_STM32 || ARDUINO_ARCH_ESP32)
diff --git a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h
new file mode 100644
index 0000000..e8a4829
--- /dev/null
+++ b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.h
@@ -0,0 +1,53 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+// NOTE - the HAL version of the rrd device uses a generic ST7920 device. See the
+// file u8g_dev_st7920_128x64_HAL.cpp for the HAL version.
+
+#include "../../inc/MarlinConfig.h"
+#include "../../HAL/shared/Delay.h"
+
+#define ST7920_CLK_PIN LCD_PINS_D4
+#define ST7920_DAT_PIN LCD_PINS_ENABLE
+#define ST7920_CS_PIN LCD_PINS_RS
+
+//#define PAGE_HEIGHT 8 // 128 byte framebuffer
+#define PAGE_HEIGHT 16 // 256 byte framebuffer
+//#define PAGE_HEIGHT 32 // 512 byte framebuffer
+
+#include
+
+void ST7920_SWSPI_SND_8BIT(uint8_t val);
+
+#if DOGM_SPI_DELAY_US > 0
+ #define U8G_DELAY() DELAY_US(DOGM_SPI_DELAY_US)
+#else
+ #define U8G_DELAY() DELAY_US(10)
+#endif
+
+#define ST7920_CS() { WRITE(ST7920_CS_PIN, HIGH); U8G_DELAY(); }
+#define ST7920_NCS() { WRITE(ST7920_CS_PIN, LOW); }
+#define ST7920_SET_CMD() { ST7920_SWSPI_SND_8BIT(0xF8); U8G_DELAY(); }
+#define ST7920_SET_DAT() { ST7920_SWSPI_SND_8BIT(0xFA); U8G_DELAY(); }
+#define ST7920_WRITE_BYTE(a) { ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xF0u)); ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4U)); U8G_DELAY(); }
+#define ST7920_WRITE_BYTES(p,l) { for (uint8_t i = l + 1; --i;) { ST7920_SWSPI_SND_8BIT(*p&0xF0); ST7920_SWSPI_SND_8BIT(*p<<4); p++; } U8G_DELAY(); }
--
cgit v1.2.3