├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── githubci.yml ├── .gitignore ├── Adafruit_GFX.cpp ├── Adafruit_GFX.h ├── Adafruit_GrayOLED.cpp ├── Adafruit_GrayOLED.h ├── Adafruit_SPITFT.cpp ├── Adafruit_SPITFT.h ├── Adafruit_SPITFT_Macros.h ├── CMakeLists.txt ├── Fonts ├── FreeMono12pt7b.h ├── FreeMono18pt7b.h ├── FreeMono24pt7b.h ├── FreeMono9pt7b.h ├── FreeMonoBold12pt7b.h ├── FreeMonoBold18pt7b.h ├── FreeMonoBold24pt7b.h ├── FreeMonoBold9pt7b.h ├── FreeMonoBoldOblique12pt7b.h ├── FreeMonoBoldOblique18pt7b.h ├── FreeMonoBoldOblique24pt7b.h ├── FreeMonoBoldOblique9pt7b.h ├── FreeMonoOblique12pt7b.h ├── FreeMonoOblique18pt7b.h ├── FreeMonoOblique24pt7b.h ├── FreeMonoOblique9pt7b.h ├── FreeSans12pt7b.h ├── FreeSans18pt7b.h ├── FreeSans24pt7b.h ├── FreeSans9pt7b.h ├── FreeSansBold12pt7b.h ├── FreeSansBold18pt7b.h ├── FreeSansBold24pt7b.h ├── FreeSansBold9pt7b.h ├── FreeSansBoldOblique12pt7b.h ├── FreeSansBoldOblique18pt7b.h ├── FreeSansBoldOblique24pt7b.h ├── FreeSansBoldOblique9pt7b.h ├── FreeSansOblique12pt7b.h ├── FreeSansOblique18pt7b.h ├── FreeSansOblique24pt7b.h ├── FreeSansOblique9pt7b.h ├── FreeSerif12pt7b.h ├── FreeSerif18pt7b.h ├── FreeSerif24pt7b.h ├── FreeSerif9pt7b.h ├── FreeSerifBold12pt7b.h ├── FreeSerifBold18pt7b.h ├── FreeSerifBold24pt7b.h ├── FreeSerifBold9pt7b.h ├── FreeSerifBoldItalic12pt7b.h ├── FreeSerifBoldItalic18pt7b.h ├── FreeSerifBoldItalic24pt7b.h ├── FreeSerifBoldItalic9pt7b.h ├── FreeSerifItalic12pt7b.h ├── FreeSerifItalic18pt7b.h ├── FreeSerifItalic24pt7b.h ├── FreeSerifItalic9pt7b.h ├── Org_01.h ├── Picopixel.h ├── Tiny3x3a2pt7b.h └── TomThumb.h ├── README.md ├── component.mk ├── examples ├── GFXcanvas │ ├── GFXcanvas.ino │ ├── GFXcanvasSerialDemo.cpp │ └── GFXcanvasSerialDemo.h └── mock_ili9341 │ └── mock_ili9341.ino ├── fontconvert ├── Makefile ├── bdf2adafruit.py ├── fontconvert.c ├── fontconvert_win.md └── makefonts.sh ├── gfxfont.h ├── glcdfont.c ├── library.properties └── license.txt /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Thank you for opening an issue on an Adafruit Arduino library repository. To 2 | improve the speed of resolution please review the following guidelines and 3 | common troubleshooting steps below before creating the issue: 4 | 5 | - **Do not use GitHub issues for troubleshooting projects and issues.** Instead use 6 | the forums at http://forums.adafruit.com to ask questions and troubleshoot why 7 | something isn't working as expected. In many cases the problem is a common issue 8 | that you will more quickly receive help from the forum community. GitHub issues 9 | are meant for known defects in the code. If you don't know if there is a defect 10 | in the code then start with troubleshooting on the forum first. 11 | 12 | - **If following a tutorial or guide be sure you didn't miss a step.** Carefully 13 | check all of the steps and commands to run have been followed. Consult the 14 | forum if you're unsure or have questions about steps in a guide/tutorial. 15 | 16 | - **For Arduino projects check these very common issues to ensure they don't apply**: 17 | 18 | - For uploading sketches or communicating with the board make sure you're using 19 | a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes 20 | very hard to tell the difference between a data and charge cable! Try using the 21 | cable with other devices or swapping to another cable to confirm it is not 22 | the problem. 23 | 24 | - **Be sure you are supplying adequate power to the board.** Check the specs of 25 | your board and plug in an external power supply. In many cases just 26 | plugging a board into your computer is not enough to power it and other 27 | peripherals. 28 | 29 | - **Double check all soldering joints and connections.** Flakey connections 30 | cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. 31 | 32 | - **Ensure you are using an official Arduino or Adafruit board.** We can't 33 | guarantee a clone board will have the same functionality and work as expected 34 | with this code and don't support them. 35 | 36 | If you're sure this issue is a defect in the code and checked the steps above 37 | please fill in the following fields to provide enough troubleshooting information. 38 | You may delete the guideline and text above to just leave the following details: 39 | 40 | - Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** 41 | 42 | - Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO 43 | VERSION HERE** 44 | 45 | - List the steps to reproduce the problem below (if possible attach a sketch or 46 | copy the sketch code in too): **LIST REPRO STEPS BELOW** 47 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Thank you for creating a pull request to contribute to Adafruit's GitHub code! 2 | Before you open the request please review the following guidelines and tips to 3 | help it be more easily integrated: 4 | 5 | - **Describe the scope of your change--i.e. what the change does and what parts 6 | of the code were modified.** This will help us understand any risks of integrating 7 | the code. 8 | 9 | - **Describe any known limitations with your change.** For example if the change 10 | doesn't apply to a supported platform of the library please mention it. 11 | 12 | - **Please run any tests or examples that can exercise your modified code.** We 13 | strive to not break users of the code and running tests/examples helps with this 14 | process. 15 | 16 | Thank you again for contributing! We will try to test and integrate the change 17 | as soon as we can, but be aware we have many GitHub repositories to manage and 18 | can't immediately respond to every request. There is no need to bump or check in 19 | on a pull request (it will clutter the discussion of the request). 20 | 21 | Also don't be worried if the request is closed or not integrated--sometimes the 22 | priorities of Adafruit's GitHub code (education, ease of use) might not match the 23 | priorities of the pull request. Don't fret, the open source community thrives on 24 | forks and GitHub makes it easy to keep your changes in a forked repo. 25 | 26 | After reviewing the guidelines above you can delete this text from the pull request. 27 | -------------------------------------------------------------------------------- /.github/workflows/githubci.yml: -------------------------------------------------------------------------------- 1 | name: Arduino Library CI 2 | 3 | on: [pull_request, push, repository_dispatch] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/setup-python@v4 11 | with: 12 | python-version: '3.x' 13 | - uses: actions/checkout@v3 14 | - uses: actions/checkout@v3 15 | with: 16 | repository: adafruit/ci-arduino 17 | path: ci 18 | 19 | - name: pre-install 20 | run: bash ci/actions_install.sh 21 | 22 | - name: extra libraries 23 | run: | 24 | git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 25 | 26 | - name: test platforms 27 | run: python3 ci/build_platform.py main_platforms 28 | 29 | - name: clang 30 | run: python3 ci/run-clang-format.py -e "ci/*" -e "bin/*" -r . 31 | 32 | - name: doxygen 33 | env: 34 | GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }} 35 | PRETTYNAME : "Adafruit GFX Library" 36 | run: bash ci/doxy_gen_and_deploy.sh 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | default.vim 2 | fontconvert/fontconvert 3 | # Our handy .gitignore for automation ease 4 | Doxyfile* 5 | doxygen_sqlite3.db 6 | html -------------------------------------------------------------------------------- /Adafruit_GrayOLED.h: -------------------------------------------------------------------------------- 1 | /*! 2 | * @file Adafruit_GrayOLED.h 3 | * 4 | * This is part of for Adafruit's GFX library, supplying generic support 5 | * for grayscale OLED displays: http://www.adafruit.com/category/63_98 6 | * 7 | * These displays use I2C or SPI to communicate. I2C requires 2 pins 8 | * (SCL+SDA) and optionally a RESET pin. SPI requires 4 pins (MOSI, SCK, 9 | * select, data/command) and optionally a reset pin. Hardware SPI or 10 | * 'bitbang' software SPI are both supported. 11 | * 12 | * Adafruit invests time and resources providing this open source code, 13 | * please support Adafruit and open-source hardware by purchasing 14 | * products from Adafruit! 15 | * 16 | * Written by Limor Fried/Ladyada for Adafruit Industries, with 17 | * contributions from the open source community. 18 | * 19 | * BSD license, all text above, and the splash screen header file, 20 | * must be included in any redistribution. 21 | * 22 | */ 23 | 24 | #ifndef _Adafruit_GRAYOLED_H_ 25 | #define _Adafruit_GRAYOLED_H_ 26 | 27 | // Not for ATtiny, at all 28 | #if !defined(__AVR_ATtiny85__) && !defined(__AVR_ATtiny84__) 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #define GRAYOLED_SETCONTRAST 0x81 ///< Generic contrast for almost all OLEDs 37 | #define GRAYOLED_NORMALDISPLAY 0xA6 ///< Generic non-invert for almost all OLEDs 38 | #define GRAYOLED_INVERTDISPLAY 0xA7 ///< Generic invert for almost all OLEDs 39 | 40 | #define MONOOLED_BLACK 0 ///< Default black 'color' for monochrome OLEDS 41 | #define MONOOLED_WHITE 1 ///< Default white 'color' for monochrome OLEDS 42 | #define MONOOLED_INVERSE 2 ///< Default inversion command for monochrome OLEDS 43 | 44 | /*! 45 | @brief Class that stores state and functions for interacting with 46 | generic grayscale OLED displays. 47 | */ 48 | class Adafruit_GrayOLED : public Adafruit_GFX { 49 | public: 50 | Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, TwoWire *twi = &Wire, 51 | int16_t rst_pin = -1, uint32_t preclk = 400000, 52 | uint32_t postclk = 100000); 53 | Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, int16_t mosi_pin, 54 | int16_t sclk_pin, int16_t dc_pin, int16_t rst_pin, 55 | int16_t cs_pin); 56 | Adafruit_GrayOLED(uint8_t bpp, uint16_t w, uint16_t h, SPIClass *spi, 57 | int16_t dc_pin, int16_t rst_pin, int16_t cs_pin, 58 | uint32_t bitrate = 8000000UL); 59 | 60 | ~Adafruit_GrayOLED(void); 61 | 62 | /** 63 | @brief The function that sub-classes define that writes out the buffer to 64 | the display over I2C or SPI 65 | **/ 66 | virtual void display(void) = 0; 67 | void clearDisplay(void); 68 | void invertDisplay(bool i); 69 | void setContrast(uint8_t contrastlevel); 70 | void drawPixel(int16_t x, int16_t y, uint16_t color); 71 | bool getPixel(int16_t x, int16_t y); 72 | uint8_t *getBuffer(void); 73 | 74 | void oled_command(uint8_t c); 75 | bool oled_commandList(const uint8_t *c, uint8_t n); 76 | 77 | protected: 78 | bool _init(uint8_t i2caddr = 0x3C, bool reset = true); 79 | 80 | Adafruit_SPIDevice *spi_dev = NULL; ///< The SPI interface BusIO device 81 | Adafruit_I2CDevice *i2c_dev = NULL; ///< The I2C interface BusIO device 82 | int32_t i2c_preclk = 400000, ///< Configurable 'high speed' I2C rate 83 | i2c_postclk = 100000; ///< Configurable 'low speed' I2C rate 84 | uint8_t *buffer = NULL; ///< Internal 1:1 framebuffer of display mem 85 | 86 | int16_t window_x1, ///< Dirty tracking window minimum x 87 | window_y1, ///< Dirty tracking window minimum y 88 | window_x2, ///< Dirty tracking window maximum x 89 | window_y2; ///< Dirty tracking window maximum y 90 | 91 | int dcPin, ///< The Arduino pin connected to D/C (for SPI) 92 | csPin, ///< The Arduino pin connected to CS (for SPI) 93 | rstPin; ///< The Arduino pin connected to reset (-1 if unused) 94 | 95 | uint8_t _bpp = 1; ///< Bits per pixel color for this display 96 | private: 97 | TwoWire *_theWire = NULL; ///< The underlying hardware I2C 98 | }; 99 | 100 | #endif // end __AVR_ATtiny85__ __AVR_ATtiny84__ 101 | #endif // _Adafruit_GrayOLED_H_ 102 | -------------------------------------------------------------------------------- /Adafruit_SPITFT_Macros.h: -------------------------------------------------------------------------------- 1 | // THIS FILE INTENTIONALLY LEFT BLANK. 2 | 3 | // Macros previously #defined here have been made into (mostly) inline 4 | // functions in the Adafruit_SPITFT class. Other libraries might still 5 | // contain code trying to #include this header file, so until everything's 6 | // updated this file still exists (but doing nothing) to avoid trouble. 7 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Adafruit GFX Library 2 | # https://github.com/adafruit/Adafruit-GFX-Library 3 | # BSD License 4 | 5 | cmake_minimum_required(VERSION 3.5) 6 | 7 | idf_component_register(SRCS "Adafruit_GFX.cpp" "Adafruit_GrayOLED.cpp" "Adafruit_SPITFT.cpp" "glcdfont.c" 8 | INCLUDE_DIRS "." 9 | REQUIRES arduino Adafruit_BusIO) 10 | 11 | project(Adafruit-GFX-Library) 12 | -------------------------------------------------------------------------------- /Fonts/FreeMono9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { 5 | 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, 6 | 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, 7 | 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, 8 | 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, 9 | 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, 10 | 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, 11 | 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, 12 | 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, 13 | 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, 14 | 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, 15 | 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, 16 | 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, 17 | 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, 18 | 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, 19 | 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, 20 | 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, 21 | 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, 22 | 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, 23 | 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, 24 | 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, 25 | 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, 26 | 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, 27 | 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, 28 | 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, 29 | 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, 30 | 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, 31 | 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, 32 | 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, 33 | 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, 34 | 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, 35 | 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 36 | 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, 37 | 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, 38 | 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 39 | 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, 40 | 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, 41 | 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, 42 | 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, 43 | 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, 44 | 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, 45 | 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, 46 | 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, 47 | 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, 48 | 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, 49 | 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, 50 | 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, 51 | 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, 52 | 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, 53 | 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, 54 | 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, 55 | 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, 56 | 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, 57 | 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, 58 | 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, 59 | 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, 60 | 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, 61 | 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, 62 | 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 63 | 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, 64 | 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, 65 | 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, 66 | 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, 67 | 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, 68 | 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, 69 | 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, 70 | 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, 71 | 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, 72 | 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, 73 | 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, 74 | 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, 75 | 0x2C, 0x61, 0x24, 0x30}; 76 | 77 | const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { 78 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 79 | {0, 2, 11, 11, 4, -10}, // 0x21 '!' 80 | {3, 6, 5, 11, 2, -10}, // 0x22 '"' 81 | {7, 7, 12, 11, 2, -10}, // 0x23 '#' 82 | {18, 8, 12, 11, 1, -10}, // 0x24 '$' 83 | {30, 7, 11, 11, 2, -10}, // 0x25 '%' 84 | {40, 7, 10, 11, 2, -9}, // 0x26 '&' 85 | {49, 3, 5, 11, 4, -10}, // 0x27 ''' 86 | {51, 2, 13, 11, 5, -10}, // 0x28 '(' 87 | {55, 2, 13, 11, 4, -10}, // 0x29 ')' 88 | {59, 7, 7, 11, 2, -10}, // 0x2A '*' 89 | {66, 7, 7, 11, 2, -8}, // 0x2B '+' 90 | {73, 3, 5, 11, 2, -1}, // 0x2C ',' 91 | {75, 9, 1, 11, 1, -5}, // 0x2D '-' 92 | {77, 2, 2, 11, 4, -1}, // 0x2E '.' 93 | {78, 7, 13, 11, 2, -11}, // 0x2F '/' 94 | {90, 7, 11, 11, 2, -10}, // 0x30 '0' 95 | {100, 5, 11, 11, 3, -10}, // 0x31 '1' 96 | {107, 7, 11, 11, 2, -10}, // 0x32 '2' 97 | {117, 8, 11, 11, 1, -10}, // 0x33 '3' 98 | {128, 6, 11, 11, 3, -10}, // 0x34 '4' 99 | {137, 7, 11, 11, 2, -10}, // 0x35 '5' 100 | {147, 7, 11, 11, 2, -10}, // 0x36 '6' 101 | {157, 7, 11, 11, 2, -10}, // 0x37 '7' 102 | {167, 7, 11, 11, 2, -10}, // 0x38 '8' 103 | {177, 7, 11, 11, 2, -10}, // 0x39 '9' 104 | {187, 2, 8, 11, 4, -7}, // 0x3A ':' 105 | {189, 3, 11, 11, 3, -7}, // 0x3B ';' 106 | {194, 8, 8, 11, 1, -8}, // 0x3C '<' 107 | {202, 9, 4, 11, 1, -6}, // 0x3D '=' 108 | {207, 9, 8, 11, 1, -8}, // 0x3E '>' 109 | {216, 7, 10, 11, 2, -9}, // 0x3F '?' 110 | {225, 8, 12, 11, 2, -10}, // 0x40 '@' 111 | {237, 11, 10, 11, 0, -9}, // 0x41 'A' 112 | {251, 9, 10, 11, 1, -9}, // 0x42 'B' 113 | {263, 9, 10, 11, 1, -9}, // 0x43 'C' 114 | {275, 9, 10, 11, 1, -9}, // 0x44 'D' 115 | {287, 9, 10, 11, 1, -9}, // 0x45 'E' 116 | {299, 9, 10, 11, 1, -9}, // 0x46 'F' 117 | {311, 10, 10, 11, 1, -9}, // 0x47 'G' 118 | {324, 9, 10, 11, 1, -9}, // 0x48 'H' 119 | {336, 5, 10, 11, 3, -9}, // 0x49 'I' 120 | {343, 8, 10, 11, 2, -9}, // 0x4A 'J' 121 | {353, 9, 10, 11, 1, -9}, // 0x4B 'K' 122 | {365, 8, 10, 11, 2, -9}, // 0x4C 'L' 123 | {375, 11, 10, 11, 0, -9}, // 0x4D 'M' 124 | {389, 9, 10, 11, 1, -9}, // 0x4E 'N' 125 | {401, 9, 10, 11, 1, -9}, // 0x4F 'O' 126 | {413, 8, 10, 11, 1, -9}, // 0x50 'P' 127 | {423, 9, 13, 11, 1, -9}, // 0x51 'Q' 128 | {438, 9, 10, 11, 1, -9}, // 0x52 'R' 129 | {450, 7, 10, 11, 2, -9}, // 0x53 'S' 130 | {459, 9, 10, 11, 1, -9}, // 0x54 'T' 131 | {471, 9, 10, 11, 1, -9}, // 0x55 'U' 132 | {483, 11, 10, 11, 0, -9}, // 0x56 'V' 133 | {497, 11, 10, 11, 0, -9}, // 0x57 'W' 134 | {511, 9, 10, 11, 1, -9}, // 0x58 'X' 135 | {523, 9, 10, 11, 1, -9}, // 0x59 'Y' 136 | {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' 137 | {544, 2, 13, 11, 5, -10}, // 0x5B '[' 138 | {548, 7, 13, 11, 2, -11}, // 0x5C '\' 139 | {560, 2, 13, 11, 4, -10}, // 0x5D ']' 140 | {564, 7, 5, 11, 2, -10}, // 0x5E '^' 141 | {569, 11, 1, 11, 0, 2}, // 0x5F '_' 142 | {571, 3, 3, 11, 3, -11}, // 0x60 '`' 143 | {573, 9, 8, 11, 1, -7}, // 0x61 'a' 144 | {582, 9, 11, 11, 1, -10}, // 0x62 'b' 145 | {595, 7, 8, 11, 2, -7}, // 0x63 'c' 146 | {602, 9, 11, 11, 1, -10}, // 0x64 'd' 147 | {615, 8, 8, 11, 1, -7}, // 0x65 'e' 148 | {623, 6, 11, 11, 3, -10}, // 0x66 'f' 149 | {632, 9, 11, 11, 1, -7}, // 0x67 'g' 150 | {645, 9, 11, 11, 1, -10}, // 0x68 'h' 151 | {658, 7, 10, 11, 2, -9}, // 0x69 'i' 152 | {667, 5, 13, 11, 3, -9}, // 0x6A 'j' 153 | {676, 8, 11, 11, 2, -10}, // 0x6B 'k' 154 | {687, 7, 11, 11, 2, -10}, // 0x6C 'l' 155 | {697, 9, 8, 11, 1, -7}, // 0x6D 'm' 156 | {706, 9, 8, 11, 1, -7}, // 0x6E 'n' 157 | {715, 9, 8, 11, 1, -7}, // 0x6F 'o' 158 | {724, 9, 11, 11, 1, -7}, // 0x70 'p' 159 | {737, 9, 11, 11, 1, -7}, // 0x71 'q' 160 | {750, 7, 8, 11, 3, -7}, // 0x72 'r' 161 | {757, 7, 8, 11, 2, -7}, // 0x73 's' 162 | {764, 8, 10, 11, 2, -9}, // 0x74 't' 163 | {774, 8, 8, 11, 1, -7}, // 0x75 'u' 164 | {782, 9, 8, 11, 1, -7}, // 0x76 'v' 165 | {791, 9, 8, 11, 1, -7}, // 0x77 'w' 166 | {800, 9, 8, 11, 1, -7}, // 0x78 'x' 167 | {809, 9, 11, 11, 1, -7}, // 0x79 'y' 168 | {822, 7, 8, 11, 2, -7}, // 0x7A 'z' 169 | {829, 3, 13, 11, 4, -10}, // 0x7B '{' 170 | {834, 1, 13, 11, 5, -10}, // 0x7C '|' 171 | {836, 3, 13, 11, 4, -10}, // 0x7D '}' 172 | {841, 7, 3, 11, 2, -6}}; // 0x7E '~' 173 | 174 | const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, 175 | (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, 176 | 0x7E, 18}; 177 | 178 | // Approx. 1516 bytes 179 | -------------------------------------------------------------------------------- /Fonts/FreeMonoBold9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { 5 | 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, 6 | 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, 7 | 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, 8 | 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, 9 | 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, 10 | 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, 11 | 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 12 | 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, 13 | 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, 14 | 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, 15 | 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, 16 | 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, 17 | 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, 18 | 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, 19 | 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, 20 | 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, 21 | 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, 22 | 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, 23 | 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, 24 | 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 25 | 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, 26 | 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, 27 | 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, 28 | 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, 29 | 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, 30 | 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, 31 | 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, 32 | 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, 33 | 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, 34 | 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, 35 | 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, 36 | 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, 37 | 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 38 | 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, 39 | 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, 40 | 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, 41 | 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, 42 | 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, 43 | 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, 44 | 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, 45 | 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, 46 | 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, 47 | 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 48 | 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, 49 | 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, 50 | 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, 51 | 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, 52 | 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, 53 | 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, 54 | 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, 55 | 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, 56 | 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, 57 | 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, 58 | 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 59 | 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 60 | 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 61 | 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, 62 | 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, 63 | 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, 64 | 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, 65 | 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, 66 | 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, 67 | 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, 68 | 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, 69 | 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, 70 | 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, 71 | 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, 72 | 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, 73 | 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, 74 | 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, 75 | 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, 76 | 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, 77 | 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, 78 | 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, 79 | 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, 80 | 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, 81 | 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, 82 | 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, 83 | 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, 84 | 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, 85 | 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, 86 | 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, 87 | 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, 88 | 0x7C, 0xF3, 0xC0, 0xC0}; 89 | 90 | const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { 91 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 92 | {0, 3, 11, 11, 4, -10}, // 0x21 '!' 93 | {5, 7, 5, 11, 2, -10}, // 0x22 '"' 94 | {10, 8, 12, 11, 1, -10}, // 0x23 '#' 95 | {22, 7, 14, 11, 2, -11}, // 0x24 '$' 96 | {35, 7, 11, 11, 2, -10}, // 0x25 '%' 97 | {45, 8, 10, 11, 1, -9}, // 0x26 '&' 98 | {55, 3, 5, 11, 4, -10}, // 0x27 ''' 99 | {57, 4, 14, 11, 5, -10}, // 0x28 '(' 100 | {64, 4, 14, 11, 2, -10}, // 0x29 ')' 101 | {71, 8, 7, 11, 2, -10}, // 0x2A '*' 102 | {78, 8, 9, 11, 2, -8}, // 0x2B '+' 103 | {87, 3, 5, 11, 3, -1}, // 0x2C ',' 104 | {89, 9, 2, 11, 1, -5}, // 0x2D '-' 105 | {92, 2, 2, 11, 4, -1}, // 0x2E '.' 106 | {93, 7, 15, 11, 2, -12}, // 0x2F '/' 107 | {107, 7, 12, 11, 2, -11}, // 0x30 '0' 108 | {118, 7, 11, 11, 2, -10}, // 0x31 '1' 109 | {128, 8, 12, 11, 1, -11}, // 0x32 '2' 110 | {140, 8, 12, 11, 2, -11}, // 0x33 '3' 111 | {152, 7, 10, 11, 2, -9}, // 0x34 '4' 112 | {161, 9, 11, 11, 1, -10}, // 0x35 '5' 113 | {174, 8, 12, 11, 2, -11}, // 0x36 '6' 114 | {186, 8, 11, 11, 1, -10}, // 0x37 '7' 115 | {197, 7, 12, 11, 2, -11}, // 0x38 '8' 116 | {208, 8, 12, 11, 2, -11}, // 0x39 '9' 117 | {220, 2, 8, 11, 4, -7}, // 0x3A ':' 118 | {222, 3, 11, 11, 3, -7}, // 0x3B ';' 119 | {227, 9, 8, 11, 1, -8}, // 0x3C '<' 120 | {236, 9, 6, 11, 1, -7}, // 0x3D '=' 121 | {243, 9, 8, 11, 1, -8}, // 0x3E '>' 122 | {252, 8, 11, 11, 2, -10}, // 0x3F '?' 123 | {263, 9, 15, 11, 1, -11}, // 0x40 '@' 124 | {280, 11, 11, 11, 0, -10}, // 0x41 'A' 125 | {296, 10, 11, 11, 1, -10}, // 0x42 'B' 126 | {310, 9, 11, 11, 1, -10}, // 0x43 'C' 127 | {323, 10, 11, 11, 0, -10}, // 0x44 'D' 128 | {337, 9, 11, 11, 1, -10}, // 0x45 'E' 129 | {350, 9, 11, 11, 1, -10}, // 0x46 'F' 130 | {363, 10, 11, 11, 1, -10}, // 0x47 'G' 131 | {377, 9, 11, 11, 1, -10}, // 0x48 'H' 132 | {390, 6, 11, 11, 3, -10}, // 0x49 'I' 133 | {399, 10, 11, 11, 1, -10}, // 0x4A 'J' 134 | {413, 10, 11, 11, 1, -10}, // 0x4B 'K' 135 | {427, 9, 11, 11, 1, -10}, // 0x4C 'L' 136 | {440, 11, 11, 11, 0, -10}, // 0x4D 'M' 137 | {456, 11, 11, 11, 0, -10}, // 0x4E 'N' 138 | {472, 11, 11, 11, 0, -10}, // 0x4F 'O' 139 | {488, 9, 11, 11, 1, -10}, // 0x50 'P' 140 | {501, 11, 14, 11, 0, -10}, // 0x51 'Q' 141 | {521, 9, 11, 11, 1, -10}, // 0x52 'R' 142 | {534, 9, 11, 11, 1, -10}, // 0x53 'S' 143 | {547, 9, 11, 11, 1, -10}, // 0x54 'T' 144 | {560, 11, 11, 11, 0, -10}, // 0x55 'U' 145 | {576, 11, 11, 11, 0, -10}, // 0x56 'V' 146 | {592, 10, 11, 11, 0, -10}, // 0x57 'W' 147 | {606, 10, 11, 11, 0, -10}, // 0x58 'X' 148 | {620, 10, 11, 11, 0, -10}, // 0x59 'Y' 149 | {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' 150 | {645, 4, 14, 11, 5, -10}, // 0x5B '[' 151 | {652, 7, 15, 11, 2, -12}, // 0x5C '\' 152 | {666, 4, 14, 11, 2, -10}, // 0x5D ']' 153 | {673, 7, 6, 11, 2, -11}, // 0x5E '^' 154 | {679, 11, 2, 11, 0, 3}, // 0x5F '_' 155 | {682, 3, 3, 11, 3, -11}, // 0x60 '`' 156 | {684, 9, 8, 11, 1, -7}, // 0x61 'a' 157 | {693, 10, 11, 11, 0, -10}, // 0x62 'b' 158 | {707, 9, 8, 11, 1, -7}, // 0x63 'c' 159 | {716, 10, 11, 11, 1, -10}, // 0x64 'd' 160 | {730, 9, 8, 11, 1, -7}, // 0x65 'e' 161 | {739, 8, 11, 11, 2, -10}, // 0x66 'f' 162 | {750, 9, 12, 11, 1, -7}, // 0x67 'g' 163 | {764, 9, 11, 11, 1, -10}, // 0x68 'h' 164 | {777, 8, 11, 11, 2, -10}, // 0x69 'i' 165 | {788, 6, 15, 11, 2, -10}, // 0x6A 'j' 166 | {800, 9, 11, 11, 1, -10}, // 0x6B 'k' 167 | {813, 8, 11, 11, 2, -10}, // 0x6C 'l' 168 | {824, 11, 8, 11, 0, -7}, // 0x6D 'm' 169 | {835, 9, 8, 11, 1, -7}, // 0x6E 'n' 170 | {844, 9, 8, 11, 1, -7}, // 0x6F 'o' 171 | {853, 11, 12, 11, 0, -7}, // 0x70 'p' 172 | {870, 11, 12, 11, 0, -7}, // 0x71 'q' 173 | {887, 9, 8, 11, 1, -7}, // 0x72 'r' 174 | {896, 8, 8, 11, 2, -7}, // 0x73 's' 175 | {904, 8, 11, 11, 1, -10}, // 0x74 't' 176 | {915, 9, 8, 11, 1, -7}, // 0x75 'u' 177 | {924, 11, 8, 11, 0, -7}, // 0x76 'v' 178 | {935, 11, 8, 11, 0, -7}, // 0x77 'w' 179 | {946, 9, 8, 11, 1, -7}, // 0x78 'x' 180 | {955, 10, 12, 11, 0, -7}, // 0x79 'y' 181 | {970, 7, 8, 11, 2, -7}, // 0x7A 'z' 182 | {977, 4, 14, 11, 3, -10}, // 0x7B '{' 183 | {984, 2, 14, 11, 5, -10}, // 0x7C '|' 184 | {988, 4, 14, 11, 4, -10}, // 0x7D '}' 185 | {995, 9, 4, 11, 1, -6}}; // 0x7E '~' 186 | 187 | const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, 188 | (GFXglyph *)FreeMonoBold9pt7bGlyphs, 189 | 0x20, 0x7E, 18}; 190 | 191 | // Approx. 1672 bytes 192 | -------------------------------------------------------------------------------- /Fonts/FreeMonoBoldOblique9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { 5 | 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, 6 | 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, 7 | 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, 8 | 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, 9 | 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, 10 | 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, 11 | 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, 12 | 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, 13 | 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, 14 | 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 15 | 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, 16 | 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, 17 | 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, 18 | 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, 19 | 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, 20 | 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, 21 | 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, 22 | 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, 23 | 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, 24 | 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, 25 | 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, 26 | 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, 27 | 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, 28 | 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, 29 | 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, 30 | 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, 31 | 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, 32 | 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, 33 | 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, 34 | 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, 35 | 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 36 | 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, 37 | 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, 38 | 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, 39 | 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, 40 | 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, 41 | 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, 42 | 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, 43 | 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, 44 | 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, 45 | 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, 46 | 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, 47 | 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, 48 | 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, 49 | 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, 50 | 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, 51 | 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 52 | 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, 53 | 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, 54 | 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 55 | 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, 56 | 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, 57 | 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, 58 | 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, 59 | 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, 60 | 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, 61 | 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, 62 | 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, 63 | 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, 64 | 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, 65 | 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, 66 | 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, 67 | 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, 68 | 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, 69 | 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, 70 | 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, 71 | 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, 72 | 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, 73 | 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, 74 | 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, 75 | 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, 76 | 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, 77 | 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, 78 | 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, 79 | 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, 80 | 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, 81 | 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, 82 | 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, 83 | 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, 84 | 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, 85 | 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, 86 | 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, 87 | 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, 88 | 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, 89 | 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, 90 | 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, 91 | 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, 92 | 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, 93 | 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, 94 | 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, 95 | 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, 96 | 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, 97 | 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 98 | 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, 99 | 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, 100 | 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, 101 | 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, 102 | 0xF7, 0xC1, 0xC0}; 103 | 104 | const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { 105 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 106 | {0, 5, 11, 11, 4, -10}, // 0x21 '!' 107 | {7, 7, 5, 11, 4, -10}, // 0x22 '"' 108 | {12, 9, 12, 11, 2, -10}, // 0x23 '#' 109 | {26, 9, 14, 11, 2, -11}, // 0x24 '$' 110 | {42, 9, 11, 11, 2, -10}, // 0x25 '%' 111 | {55, 8, 10, 11, 2, -9}, // 0x26 '&' 112 | {65, 2, 5, 11, 6, -10}, // 0x27 ''' 113 | {67, 5, 14, 11, 5, -10}, // 0x28 '(' 114 | {76, 5, 14, 11, 2, -10}, // 0x29 ')' 115 | {85, 8, 7, 11, 3, -10}, // 0x2A '*' 116 | {92, 9, 9, 11, 2, -8}, // 0x2B '+' 117 | {103, 4, 5, 11, 2, -1}, // 0x2C ',' 118 | {106, 9, 2, 11, 2, -5}, // 0x2D '-' 119 | {109, 3, 2, 11, 4, -1}, // 0x2E '.' 120 | {110, 11, 15, 11, 1, -12}, // 0x2F '/' 121 | {131, 9, 12, 11, 2, -11}, // 0x30 '0' 122 | {145, 8, 12, 11, 2, -11}, // 0x31 '1' 123 | {157, 10, 12, 11, 1, -11}, // 0x32 '2' 124 | {172, 9, 12, 11, 2, -11}, // 0x33 '3' 125 | {186, 8, 10, 11, 2, -9}, // 0x34 '4' 126 | {196, 9, 11, 11, 3, -10}, // 0x35 '5' 127 | {209, 9, 12, 11, 3, -11}, // 0x36 '6' 128 | {223, 8, 11, 11, 3, -10}, // 0x37 '7' 129 | {234, 9, 12, 11, 2, -11}, // 0x38 '8' 130 | {248, 8, 12, 11, 3, -11}, // 0x39 '9' 131 | {260, 4, 8, 11, 4, -7}, // 0x3A ':' 132 | {264, 6, 11, 11, 2, -7}, // 0x3B ';' 133 | {273, 10, 8, 11, 2, -8}, // 0x3C '<' 134 | {283, 10, 6, 11, 1, -7}, // 0x3D '=' 135 | {291, 10, 8, 11, 1, -8}, // 0x3E '>' 136 | {301, 7, 11, 11, 4, -10}, // 0x3F '?' 137 | {311, 9, 15, 11, 2, -11}, // 0x40 '@' 138 | {328, 11, 11, 11, 0, -10}, // 0x41 'A' 139 | {344, 11, 11, 11, 0, -10}, // 0x42 'B' 140 | {360, 12, 11, 11, 1, -10}, // 0x43 'C' 141 | {377, 11, 11, 11, 0, -10}, // 0x44 'D' 142 | {393, 12, 11, 11, 0, -10}, // 0x45 'E' 143 | {410, 12, 11, 11, 0, -10}, // 0x46 'F' 144 | {427, 11, 11, 11, 1, -10}, // 0x47 'G' 145 | {443, 12, 11, 11, 0, -10}, // 0x48 'H' 146 | {460, 10, 11, 11, 1, -10}, // 0x49 'I' 147 | {474, 12, 11, 11, 0, -10}, // 0x4A 'J' 148 | {491, 11, 11, 11, 0, -10}, // 0x4B 'K' 149 | {507, 11, 11, 11, 0, -10}, // 0x4C 'L' 150 | {523, 13, 11, 11, 0, -10}, // 0x4D 'M' 151 | {541, 13, 11, 11, 0, -10}, // 0x4E 'N' 152 | {559, 10, 11, 11, 1, -10}, // 0x4F 'O' 153 | {573, 11, 11, 11, 0, -10}, // 0x50 'P' 154 | {589, 10, 14, 11, 1, -10}, // 0x51 'Q' 155 | {607, 12, 11, 11, 0, -10}, // 0x52 'R' 156 | {624, 10, 11, 11, 2, -10}, // 0x53 'S' 157 | {638, 11, 11, 11, 1, -10}, // 0x54 'T' 158 | {654, 11, 11, 11, 1, -10}, // 0x55 'U' 159 | {670, 11, 11, 11, 1, -10}, // 0x56 'V' 160 | {686, 11, 11, 11, 1, -10}, // 0x57 'W' 161 | {702, 12, 11, 11, 0, -10}, // 0x58 'X' 162 | {719, 11, 11, 11, 1, -10}, // 0x59 'Y' 163 | {735, 10, 11, 11, 1, -10}, // 0x5A 'Z' 164 | {749, 7, 14, 11, 4, -10}, // 0x5B '[' 165 | {762, 5, 15, 11, 4, -12}, // 0x5C '\' 166 | {772, 7, 14, 11, 2, -10}, // 0x5D ']' 167 | {785, 8, 6, 11, 3, -11}, // 0x5E '^' 168 | {791, 11, 2, 11, -1, 3}, // 0x5F '_' 169 | {794, 3, 3, 11, 5, -11}, // 0x60 '`' 170 | {796, 10, 8, 11, 1, -7}, // 0x61 'a' 171 | {806, 11, 11, 11, 0, -10}, // 0x62 'b' 172 | {822, 10, 8, 11, 1, -7}, // 0x63 'c' 173 | {832, 11, 11, 11, 1, -10}, // 0x64 'd' 174 | {848, 9, 8, 11, 1, -7}, // 0x65 'e' 175 | {857, 10, 11, 11, 2, -10}, // 0x66 'f' 176 | {871, 11, 12, 11, 1, -7}, // 0x67 'g' 177 | {888, 10, 11, 11, 1, -10}, // 0x68 'h' 178 | {902, 9, 11, 11, 1, -10}, // 0x69 'i' 179 | {915, 9, 15, 11, 1, -10}, // 0x6A 'j' 180 | {932, 10, 11, 11, 1, -10}, // 0x6B 'k' 181 | {946, 9, 11, 11, 1, -10}, // 0x6C 'l' 182 | {959, 12, 8, 11, 0, -7}, // 0x6D 'm' 183 | {971, 11, 8, 11, 1, -7}, // 0x6E 'n' 184 | {982, 10, 8, 11, 1, -7}, // 0x6F 'o' 185 | {992, 12, 12, 11, -1, -7}, // 0x70 'p' 186 | {1010, 11, 12, 11, 1, -7}, // 0x71 'q' 187 | {1027, 10, 8, 11, 1, -7}, // 0x72 'r' 188 | {1037, 8, 8, 11, 2, -7}, // 0x73 's' 189 | {1045, 9, 11, 11, 1, -10}, // 0x74 't' 190 | {1058, 10, 8, 11, 1, -7}, // 0x75 'u' 191 | {1068, 11, 8, 11, 1, -7}, // 0x76 'v' 192 | {1079, 11, 8, 11, 1, -7}, // 0x77 'w' 193 | {1090, 11, 8, 11, 1, -7}, // 0x78 'x' 194 | {1101, 12, 12, 11, 0, -7}, // 0x79 'y' 195 | {1119, 9, 8, 11, 2, -7}, // 0x7A 'z' 196 | {1128, 7, 14, 11, 3, -10}, // 0x7B '{' 197 | {1141, 4, 14, 11, 4, -10}, // 0x7C '|' 198 | {1148, 8, 14, 11, 2, -10}, // 0x7D '}' 199 | {1162, 9, 4, 11, 2, -6}}; // 0x7E '~' 200 | 201 | const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { 202 | (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, 203 | (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, 0x20, 0x7E, 18}; 204 | 205 | // Approx. 1839 bytes 206 | -------------------------------------------------------------------------------- /Fonts/FreeMonoOblique9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { 5 | 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, 6 | 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, 7 | 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, 8 | 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, 9 | 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, 10 | 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, 11 | 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, 12 | 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, 13 | 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 14 | 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, 15 | 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, 16 | 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, 17 | 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, 18 | 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, 19 | 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, 20 | 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, 21 | 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, 22 | 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, 23 | 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, 24 | 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, 25 | 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, 26 | 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, 27 | 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, 28 | 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, 29 | 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, 30 | 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, 31 | 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, 32 | 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, 33 | 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, 34 | 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, 35 | 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, 36 | 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, 37 | 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, 38 | 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, 39 | 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, 40 | 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, 41 | 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, 42 | 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, 43 | 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, 44 | 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, 45 | 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, 46 | 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, 47 | 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, 48 | 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, 49 | 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, 50 | 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, 51 | 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, 52 | 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, 53 | 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, 54 | 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, 55 | 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, 56 | 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, 57 | 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, 58 | 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, 59 | 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, 60 | 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, 61 | 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, 62 | 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, 63 | 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, 64 | 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, 65 | 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, 66 | 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, 67 | 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, 68 | 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, 69 | 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, 70 | 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, 71 | 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 72 | 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, 73 | 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, 74 | 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, 75 | 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, 76 | 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, 77 | 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, 78 | 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, 79 | 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, 80 | 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, 81 | 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, 82 | 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, 83 | 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, 84 | 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, 85 | 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, 86 | 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; 87 | 88 | const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { 89 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 90 | {0, 4, 11, 11, 4, -10}, // 0x21 '!' 91 | {6, 5, 5, 11, 4, -10}, // 0x22 '"' 92 | {10, 9, 12, 11, 2, -10}, // 0x23 '#' 93 | {24, 8, 12, 11, 3, -10}, // 0x24 '$' 94 | {36, 9, 11, 11, 2, -10}, // 0x25 '%' 95 | {49, 7, 10, 11, 2, -9}, // 0x26 '&' 96 | {58, 2, 5, 11, 6, -10}, // 0x27 ''' 97 | {60, 4, 13, 11, 6, -10}, // 0x28 '(' 98 | {67, 4, 13, 11, 3, -10}, // 0x29 ')' 99 | {74, 7, 7, 11, 4, -10}, // 0x2A '*' 100 | {81, 9, 8, 11, 2, -8}, // 0x2B '+' 101 | {90, 4, 5, 11, 2, -1}, // 0x2C ',' 102 | {93, 9, 1, 11, 2, -5}, // 0x2D '-' 103 | {95, 2, 2, 11, 4, -1}, // 0x2E '.' 104 | {96, 9, 13, 11, 2, -11}, // 0x2F '/' 105 | {111, 7, 11, 11, 3, -10}, // 0x30 '0' 106 | {121, 7, 11, 11, 2, -10}, // 0x31 '1' 107 | {131, 9, 11, 11, 2, -10}, // 0x32 '2' 108 | {144, 9, 11, 11, 2, -10}, // 0x33 '3' 109 | {157, 8, 11, 11, 2, -10}, // 0x34 '4' 110 | {168, 9, 11, 11, 2, -10}, // 0x35 '5' 111 | {181, 8, 11, 11, 3, -10}, // 0x36 '6' 112 | {192, 7, 11, 11, 4, -10}, // 0x37 '7' 113 | {202, 8, 11, 11, 3, -10}, // 0x38 '8' 114 | {213, 8, 11, 11, 3, -10}, // 0x39 '9' 115 | {224, 3, 8, 11, 4, -7}, // 0x3A ':' 116 | {227, 5, 11, 11, 2, -7}, // 0x3B ';' 117 | {234, 9, 8, 11, 2, -8}, // 0x3C '<' 118 | {243, 9, 4, 11, 2, -6}, // 0x3D '=' 119 | {248, 9, 8, 11, 2, -8}, // 0x3E '>' 120 | {257, 7, 10, 11, 4, -9}, // 0x3F '?' 121 | {266, 7, 12, 11, 3, -10}, // 0x40 '@' 122 | {277, 11, 10, 11, 0, -9}, // 0x41 'A' 123 | {291, 10, 10, 11, 1, -9}, // 0x42 'B' 124 | {304, 9, 10, 11, 2, -9}, // 0x43 'C' 125 | {316, 10, 10, 11, 1, -9}, // 0x44 'D' 126 | {329, 10, 10, 11, 1, -9}, // 0x45 'E' 127 | {342, 11, 10, 11, 1, -9}, // 0x46 'F' 128 | {356, 9, 10, 11, 2, -9}, // 0x47 'G' 129 | {368, 11, 10, 11, 1, -9}, // 0x48 'H' 130 | {382, 9, 10, 11, 2, -9}, // 0x49 'I' 131 | {394, 11, 10, 11, 2, -9}, // 0x4A 'J' 132 | {408, 11, 10, 11, 1, -9}, // 0x4B 'K' 133 | {422, 10, 10, 11, 1, -9}, // 0x4C 'L' 134 | {435, 13, 10, 11, 0, -9}, // 0x4D 'M' 135 | {452, 11, 10, 11, 1, -9}, // 0x4E 'N' 136 | {466, 9, 10, 11, 2, -9}, // 0x4F 'O' 137 | {478, 10, 10, 11, 1, -9}, // 0x50 'P' 138 | {491, 9, 13, 11, 2, -9}, // 0x51 'Q' 139 | {506, 10, 10, 11, 1, -9}, // 0x52 'R' 140 | {519, 9, 10, 11, 2, -9}, // 0x53 'S' 141 | {531, 9, 10, 11, 3, -9}, // 0x54 'T' 142 | {543, 10, 10, 11, 2, -9}, // 0x55 'U' 143 | {556, 11, 10, 11, 2, -9}, // 0x56 'V' 144 | {570, 11, 10, 11, 2, -9}, // 0x57 'W' 145 | {584, 11, 10, 11, 1, -9}, // 0x58 'X' 146 | {598, 9, 10, 11, 3, -9}, // 0x59 'Y' 147 | {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' 148 | {622, 5, 13, 11, 5, -10}, // 0x5B '[' 149 | {631, 4, 14, 11, 4, -11}, // 0x5C '\' 150 | {638, 5, 13, 11, 2, -10}, // 0x5D ']' 151 | {647, 7, 5, 11, 3, -10}, // 0x5E '^' 152 | {652, 11, 1, 11, 0, 2}, // 0x5F '_' 153 | {654, 2, 3, 11, 5, -11}, // 0x60 '`' 154 | {655, 9, 8, 11, 2, -7}, // 0x61 'a' 155 | {664, 11, 11, 11, 0, -10}, // 0x62 'b' 156 | {680, 10, 8, 11, 2, -7}, // 0x63 'c' 157 | {690, 9, 11, 11, 2, -10}, // 0x64 'd' 158 | {703, 9, 8, 11, 2, -7}, // 0x65 'e' 159 | {712, 10, 11, 11, 2, -10}, // 0x66 'f' 160 | {726, 10, 11, 11, 2, -7}, // 0x67 'g' 161 | {740, 10, 11, 11, 1, -10}, // 0x68 'h' 162 | {754, 8, 11, 11, 2, -10}, // 0x69 'i' 163 | {765, 9, 14, 11, 1, -10}, // 0x6A 'j' 164 | {781, 9, 11, 11, 1, -10}, // 0x6B 'k' 165 | {794, 8, 11, 11, 2, -10}, // 0x6C 'l' 166 | {805, 11, 8, 11, 0, -7}, // 0x6D 'm' 167 | {816, 9, 8, 11, 1, -7}, // 0x6E 'n' 168 | {825, 9, 8, 11, 2, -7}, // 0x6F 'o' 169 | {834, 11, 11, 11, 0, -7}, // 0x70 'p' 170 | {850, 10, 11, 11, 2, -7}, // 0x71 'q' 171 | {864, 9, 8, 11, 2, -7}, // 0x72 'r' 172 | {873, 8, 8, 11, 2, -7}, // 0x73 's' 173 | {881, 7, 10, 11, 2, -9}, // 0x74 't' 174 | {890, 9, 8, 11, 2, -7}, // 0x75 'u' 175 | {899, 10, 8, 11, 2, -7}, // 0x76 'v' 176 | {909, 10, 8, 11, 2, -7}, // 0x77 'w' 177 | {919, 10, 8, 11, 1, -7}, // 0x78 'x' 178 | {929, 12, 11, 11, 0, -7}, // 0x79 'y' 179 | {946, 8, 8, 11, 2, -7}, // 0x7A 'z' 180 | {954, 6, 13, 11, 4, -10}, // 0x7B '{' 181 | {964, 3, 12, 11, 5, -9}, // 0x7C '|' 182 | {969, 6, 13, 11, 3, -10}, // 0x7D '}' 183 | {979, 7, 3, 11, 3, -6}}; // 0x7E '~' 184 | 185 | const GFXfont FreeMonoOblique9pt7b PROGMEM = { 186 | (uint8_t *)FreeMonoOblique9pt7bBitmaps, 187 | (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; 188 | 189 | // Approx. 1654 bytes 190 | -------------------------------------------------------------------------------- /Fonts/FreeSans9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { 5 | 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, 6 | 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, 7 | 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, 8 | 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, 9 | 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, 10 | 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, 11 | 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, 12 | 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, 13 | 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, 14 | 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, 15 | 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, 16 | 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, 17 | 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, 18 | 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, 19 | 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, 20 | 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, 21 | 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, 22 | 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, 23 | 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 24 | 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, 25 | 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, 26 | 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, 27 | 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, 28 | 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, 29 | 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, 30 | 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, 31 | 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, 32 | 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, 33 | 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 34 | 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, 35 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, 36 | 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, 37 | 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, 38 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 39 | 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, 40 | 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, 41 | 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, 42 | 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, 43 | 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 44 | 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, 45 | 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 46 | 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, 47 | 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, 48 | 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, 49 | 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, 50 | 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, 51 | 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, 52 | 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, 53 | 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, 54 | 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, 55 | 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 56 | 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, 57 | 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 58 | 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 59 | 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, 60 | 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, 61 | 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, 62 | 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 63 | 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, 64 | 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, 65 | 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, 66 | 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, 67 | 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, 68 | 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, 69 | 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 70 | 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 71 | 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, 72 | 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 73 | 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, 74 | 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, 75 | 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, 76 | 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, 77 | 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, 78 | 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, 79 | 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, 80 | 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 81 | 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 82 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, 83 | 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, 84 | 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, 85 | 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, 86 | 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, 87 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 88 | 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 89 | 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 90 | 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, 91 | 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, 92 | 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 93 | 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, 94 | 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, 95 | 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, 96 | 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, 97 | 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, 98 | 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, 99 | 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, 100 | 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; 101 | 102 | const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { 103 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 104 | {0, 2, 13, 6, 2, -12}, // 0x21 '!' 105 | {4, 5, 4, 6, 1, -12}, // 0x22 '"' 106 | {7, 10, 12, 10, 0, -11}, // 0x23 '#' 107 | {22, 9, 16, 10, 1, -13}, // 0x24 '$' 108 | {40, 16, 13, 16, 1, -12}, // 0x25 '%' 109 | {66, 11, 13, 12, 1, -12}, // 0x26 '&' 110 | {84, 2, 4, 4, 1, -12}, // 0x27 ''' 111 | {85, 4, 17, 6, 1, -12}, // 0x28 '(' 112 | {94, 4, 17, 6, 1, -12}, // 0x29 ')' 113 | {103, 5, 5, 7, 1, -12}, // 0x2A '*' 114 | {107, 6, 8, 11, 3, -7}, // 0x2B '+' 115 | {113, 2, 4, 5, 2, 0}, // 0x2C ',' 116 | {114, 4, 1, 6, 1, -4}, // 0x2D '-' 117 | {115, 2, 1, 5, 1, 0}, // 0x2E '.' 118 | {116, 5, 13, 5, 0, -12}, // 0x2F '/' 119 | {125, 8, 13, 10, 1, -12}, // 0x30 '0' 120 | {138, 4, 13, 10, 3, -12}, // 0x31 '1' 121 | {145, 9, 13, 10, 1, -12}, // 0x32 '2' 122 | {160, 8, 13, 10, 1, -12}, // 0x33 '3' 123 | {173, 7, 13, 10, 2, -12}, // 0x34 '4' 124 | {185, 9, 13, 10, 1, -12}, // 0x35 '5' 125 | {200, 9, 13, 10, 1, -12}, // 0x36 '6' 126 | {215, 8, 13, 10, 0, -12}, // 0x37 '7' 127 | {228, 9, 13, 10, 1, -12}, // 0x38 '8' 128 | {243, 8, 13, 10, 1, -12}, // 0x39 '9' 129 | {256, 2, 10, 5, 1, -9}, // 0x3A ':' 130 | {259, 3, 12, 5, 1, -8}, // 0x3B ';' 131 | {264, 9, 9, 11, 1, -8}, // 0x3C '<' 132 | {275, 9, 4, 11, 1, -5}, // 0x3D '=' 133 | {280, 9, 9, 11, 1, -8}, // 0x3E '>' 134 | {291, 9, 13, 10, 1, -12}, // 0x3F '?' 135 | {306, 17, 16, 18, 1, -12}, // 0x40 '@' 136 | {340, 12, 13, 12, 0, -12}, // 0x41 'A' 137 | {360, 11, 13, 12, 1, -12}, // 0x42 'B' 138 | {378, 11, 13, 13, 1, -12}, // 0x43 'C' 139 | {396, 11, 13, 13, 1, -12}, // 0x44 'D' 140 | {414, 9, 13, 11, 1, -12}, // 0x45 'E' 141 | {429, 8, 13, 11, 1, -12}, // 0x46 'F' 142 | {442, 12, 13, 14, 1, -12}, // 0x47 'G' 143 | {462, 11, 13, 13, 1, -12}, // 0x48 'H' 144 | {480, 2, 13, 5, 2, -12}, // 0x49 'I' 145 | {484, 7, 13, 10, 1, -12}, // 0x4A 'J' 146 | {496, 11, 13, 12, 1, -12}, // 0x4B 'K' 147 | {514, 8, 13, 10, 1, -12}, // 0x4C 'L' 148 | {527, 13, 13, 15, 1, -12}, // 0x4D 'M' 149 | {549, 11, 13, 13, 1, -12}, // 0x4E 'N' 150 | {567, 13, 13, 14, 1, -12}, // 0x4F 'O' 151 | {589, 10, 13, 12, 1, -12}, // 0x50 'P' 152 | {606, 13, 14, 14, 1, -12}, // 0x51 'Q' 153 | {629, 12, 13, 13, 1, -12}, // 0x52 'R' 154 | {649, 10, 13, 12, 1, -12}, // 0x53 'S' 155 | {666, 9, 13, 11, 1, -12}, // 0x54 'T' 156 | {681, 11, 13, 13, 1, -12}, // 0x55 'U' 157 | {699, 11, 13, 12, 0, -12}, // 0x56 'V' 158 | {717, 17, 13, 17, 0, -12}, // 0x57 'W' 159 | {745, 12, 13, 12, 0, -12}, // 0x58 'X' 160 | {765, 12, 13, 12, 0, -12}, // 0x59 'Y' 161 | {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' 162 | {802, 3, 17, 5, 1, -12}, // 0x5B '[' 163 | {809, 5, 13, 5, 0, -12}, // 0x5C '\' 164 | {818, 3, 17, 5, 0, -12}, // 0x5D ']' 165 | {825, 7, 7, 8, 1, -12}, // 0x5E '^' 166 | {832, 10, 1, 10, 0, 3}, // 0x5F '_' 167 | {834, 4, 3, 5, 0, -12}, // 0x60 '`' 168 | {836, 9, 10, 10, 1, -9}, // 0x61 'a' 169 | {848, 9, 13, 10, 1, -12}, // 0x62 'b' 170 | {863, 8, 10, 9, 1, -9}, // 0x63 'c' 171 | {873, 8, 13, 10, 1, -12}, // 0x64 'd' 172 | {886, 8, 10, 10, 1, -9}, // 0x65 'e' 173 | {896, 4, 13, 5, 1, -12}, // 0x66 'f' 174 | {903, 8, 14, 10, 1, -9}, // 0x67 'g' 175 | {917, 8, 13, 10, 1, -12}, // 0x68 'h' 176 | {930, 2, 13, 4, 1, -12}, // 0x69 'i' 177 | {934, 4, 17, 4, 0, -12}, // 0x6A 'j' 178 | {943, 9, 13, 9, 1, -12}, // 0x6B 'k' 179 | {958, 2, 13, 4, 1, -12}, // 0x6C 'l' 180 | {962, 13, 10, 15, 1, -9}, // 0x6D 'm' 181 | {979, 8, 10, 10, 1, -9}, // 0x6E 'n' 182 | {989, 8, 10, 10, 1, -9}, // 0x6F 'o' 183 | {999, 9, 13, 10, 1, -9}, // 0x70 'p' 184 | {1014, 8, 13, 10, 1, -9}, // 0x71 'q' 185 | {1027, 5, 10, 6, 1, -9}, // 0x72 'r' 186 | {1034, 8, 10, 9, 1, -9}, // 0x73 's' 187 | {1044, 4, 12, 5, 1, -11}, // 0x74 't' 188 | {1050, 8, 10, 10, 1, -9}, // 0x75 'u' 189 | {1060, 9, 10, 9, 0, -9}, // 0x76 'v' 190 | {1072, 13, 10, 13, 0, -9}, // 0x77 'w' 191 | {1089, 8, 10, 9, 0, -9}, // 0x78 'x' 192 | {1099, 9, 14, 9, 0, -9}, // 0x79 'y' 193 | {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' 194 | {1124, 4, 17, 6, 1, -12}, // 0x7B '{' 195 | {1133, 2, 17, 4, 2, -12}, // 0x7C '|' 196 | {1138, 4, 17, 6, 1, -12}, // 0x7D '}' 197 | {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' 198 | 199 | const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, 200 | (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, 201 | 0x7E, 22}; 202 | 203 | // Approx. 1822 bytes 204 | -------------------------------------------------------------------------------- /Fonts/FreeSansBold9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { 5 | 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, 6 | 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, 7 | 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, 8 | 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, 9 | 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, 10 | 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, 11 | 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, 12 | 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, 13 | 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, 14 | 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, 15 | 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, 16 | 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, 17 | 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, 18 | 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, 19 | 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, 20 | 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, 21 | 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, 22 | 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, 23 | 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, 24 | 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 25 | 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, 26 | 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, 27 | 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, 28 | 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, 29 | 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, 30 | 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, 31 | 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, 32 | 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, 33 | 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, 34 | 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, 35 | 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, 36 | 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, 37 | 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, 38 | 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, 39 | 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, 40 | 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, 41 | 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, 42 | 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, 43 | 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 44 | 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, 45 | 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, 46 | 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, 47 | 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 48 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, 49 | 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, 50 | 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 51 | 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, 52 | 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, 53 | 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, 54 | 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, 55 | 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, 56 | 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, 57 | 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, 58 | 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 59 | 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, 60 | 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 61 | 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, 62 | 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, 63 | 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, 64 | 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, 65 | 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 66 | 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, 67 | 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, 68 | 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, 69 | 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, 70 | 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, 71 | 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, 72 | 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, 73 | 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, 74 | 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, 75 | 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, 76 | 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, 77 | 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, 78 | 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, 79 | 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, 80 | 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, 81 | 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, 82 | 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, 83 | 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, 84 | 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, 85 | 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, 86 | 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, 87 | 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, 88 | 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, 89 | 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, 90 | 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, 91 | 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 92 | 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, 93 | 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, 94 | 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, 95 | 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, 96 | 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, 97 | 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, 98 | 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 99 | 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, 100 | 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, 101 | 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 102 | 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, 103 | 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, 104 | 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, 105 | 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, 106 | 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, 107 | 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E}; 108 | 109 | const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { 110 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 111 | {0, 3, 13, 6, 2, -12}, // 0x21 '!' 112 | {5, 7, 5, 9, 1, -12}, // 0x22 '"' 113 | {10, 10, 12, 10, 0, -11}, // 0x23 '#' 114 | {25, 9, 15, 10, 1, -13}, // 0x24 '$' 115 | {42, 16, 13, 16, 0, -12}, // 0x25 '%' 116 | {68, 12, 13, 13, 1, -12}, // 0x26 '&' 117 | {88, 3, 5, 5, 1, -12}, // 0x27 ''' 118 | {90, 6, 17, 6, 1, -12}, // 0x28 '(' 119 | {103, 6, 17, 6, 0, -12}, // 0x29 ')' 120 | {116, 5, 6, 7, 1, -12}, // 0x2A '*' 121 | {120, 7, 8, 11, 2, -7}, // 0x2B '+' 122 | {127, 3, 5, 4, 1, -1}, // 0x2C ',' 123 | {129, 5, 2, 6, 0, -5}, // 0x2D '-' 124 | {131, 3, 2, 4, 1, -1}, // 0x2E '.' 125 | {132, 5, 13, 5, 0, -12}, // 0x2F '/' 126 | {141, 9, 13, 10, 1, -12}, // 0x30 '0' 127 | {156, 5, 13, 10, 2, -12}, // 0x31 '1' 128 | {165, 9, 13, 10, 1, -12}, // 0x32 '2' 129 | {180, 8, 13, 10, 1, -12}, // 0x33 '3' 130 | {193, 8, 13, 10, 2, -12}, // 0x34 '4' 131 | {206, 9, 13, 10, 1, -12}, // 0x35 '5' 132 | {221, 9, 13, 10, 1, -12}, // 0x36 '6' 133 | {236, 9, 13, 10, 0, -12}, // 0x37 '7' 134 | {251, 10, 13, 10, 0, -12}, // 0x38 '8' 135 | {268, 9, 13, 10, 1, -12}, // 0x39 '9' 136 | {283, 3, 9, 4, 1, -8}, // 0x3A ':' 137 | {287, 3, 12, 4, 1, -8}, // 0x3B ';' 138 | {292, 9, 9, 11, 1, -8}, // 0x3C '<' 139 | {303, 9, 6, 11, 1, -6}, // 0x3D '=' 140 | {310, 9, 9, 11, 1, -8}, // 0x3E '>' 141 | {321, 9, 13, 11, 1, -12}, // 0x3F '?' 142 | {336, 16, 15, 18, 0, -12}, // 0x40 '@' 143 | {366, 12, 13, 13, 0, -12}, // 0x41 'A' 144 | {386, 11, 13, 13, 1, -12}, // 0x42 'B' 145 | {404, 12, 13, 13, 1, -12}, // 0x43 'C' 146 | {424, 12, 13, 13, 1, -12}, // 0x44 'D' 147 | {444, 9, 13, 12, 1, -12}, // 0x45 'E' 148 | {459, 9, 13, 11, 1, -12}, // 0x46 'F' 149 | {474, 11, 13, 14, 1, -12}, // 0x47 'G' 150 | {492, 11, 13, 13, 1, -12}, // 0x48 'H' 151 | {510, 3, 13, 6, 1, -12}, // 0x49 'I' 152 | {515, 8, 13, 10, 1, -12}, // 0x4A 'J' 153 | {528, 12, 13, 13, 1, -12}, // 0x4B 'K' 154 | {548, 8, 13, 11, 1, -12}, // 0x4C 'L' 155 | {561, 14, 13, 16, 1, -12}, // 0x4D 'M' 156 | {584, 11, 13, 14, 1, -12}, // 0x4E 'N' 157 | {602, 13, 13, 14, 1, -12}, // 0x4F 'O' 158 | {624, 11, 13, 12, 1, -12}, // 0x50 'P' 159 | {642, 13, 14, 14, 1, -12}, // 0x51 'Q' 160 | {665, 12, 13, 13, 1, -12}, // 0x52 'R' 161 | {685, 11, 13, 12, 1, -12}, // 0x53 'S' 162 | {703, 9, 13, 12, 2, -12}, // 0x54 'T' 163 | {718, 11, 13, 13, 1, -12}, // 0x55 'U' 164 | {736, 12, 13, 12, 0, -12}, // 0x56 'V' 165 | {756, 17, 13, 17, 0, -12}, // 0x57 'W' 166 | {784, 12, 13, 12, 0, -12}, // 0x58 'X' 167 | {804, 11, 13, 12, 1, -12}, // 0x59 'Y' 168 | {822, 9, 13, 11, 1, -12}, // 0x5A 'Z' 169 | {837, 4, 17, 6, 1, -12}, // 0x5B '[' 170 | {846, 5, 13, 5, 0, -12}, // 0x5C '\' 171 | {855, 4, 17, 6, 0, -12}, // 0x5D ']' 172 | {864, 8, 8, 11, 1, -12}, // 0x5E '^' 173 | {872, 10, 1, 10, 0, 4}, // 0x5F '_' 174 | {874, 3, 2, 5, 0, -12}, // 0x60 '`' 175 | {875, 10, 10, 10, 1, -9}, // 0x61 'a' 176 | {888, 10, 13, 11, 1, -12}, // 0x62 'b' 177 | {905, 9, 10, 10, 1, -9}, // 0x63 'c' 178 | {917, 9, 13, 11, 1, -12}, // 0x64 'd' 179 | {932, 9, 10, 10, 1, -9}, // 0x65 'e' 180 | {944, 5, 13, 6, 1, -12}, // 0x66 'f' 181 | {953, 9, 14, 11, 1, -9}, // 0x67 'g' 182 | {969, 9, 13, 11, 1, -12}, // 0x68 'h' 183 | {984, 3, 13, 5, 1, -12}, // 0x69 'i' 184 | {989, 4, 17, 5, 0, -12}, // 0x6A 'j' 185 | {998, 9, 13, 10, 1, -12}, // 0x6B 'k' 186 | {1013, 3, 13, 5, 1, -12}, // 0x6C 'l' 187 | {1018, 14, 10, 16, 1, -9}, // 0x6D 'm' 188 | {1036, 9, 10, 11, 1, -9}, // 0x6E 'n' 189 | {1048, 10, 10, 11, 1, -9}, // 0x6F 'o' 190 | {1061, 10, 14, 11, 1, -9}, // 0x70 'p' 191 | {1079, 9, 14, 11, 1, -9}, // 0x71 'q' 192 | {1095, 6, 10, 7, 1, -9}, // 0x72 'r' 193 | {1103, 9, 10, 10, 1, -9}, // 0x73 's' 194 | {1115, 5, 12, 6, 1, -11}, // 0x74 't' 195 | {1123, 9, 10, 11, 1, -9}, // 0x75 'u' 196 | {1135, 10, 10, 10, 0, -9}, // 0x76 'v' 197 | {1148, 14, 10, 14, 0, -9}, // 0x77 'w' 198 | {1166, 10, 10, 10, 0, -9}, // 0x78 'x' 199 | {1179, 10, 14, 10, 0, -9}, // 0x79 'y' 200 | {1197, 8, 10, 9, 1, -9}, // 0x7A 'z' 201 | {1207, 4, 17, 7, 1, -12}, // 0x7B '{' 202 | {1216, 1, 17, 5, 2, -12}, // 0x7C '|' 203 | {1219, 4, 17, 7, 2, -12}, // 0x7D '}' 204 | {1228, 8, 2, 9, 0, -4}}; // 0x7E '~' 205 | 206 | const GFXfont FreeSansBold9pt7b PROGMEM = {(uint8_t *)FreeSansBold9pt7bBitmaps, 207 | (GFXglyph *)FreeSansBold9pt7bGlyphs, 208 | 0x20, 0x7E, 22}; 209 | 210 | // Approx. 1902 bytes 211 | -------------------------------------------------------------------------------- /Fonts/FreeSansOblique9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { 5 | 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, 6 | 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, 7 | 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, 8 | 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, 9 | 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, 10 | 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, 11 | 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, 12 | 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, 13 | 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, 14 | 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, 15 | 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, 16 | 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, 17 | 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 18 | 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, 19 | 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, 20 | 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, 21 | 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, 22 | 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, 23 | 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, 24 | 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, 25 | 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, 26 | 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, 27 | 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, 28 | 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, 29 | 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, 30 | 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, 31 | 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, 32 | 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, 33 | 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, 34 | 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, 35 | 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, 36 | 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, 37 | 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, 38 | 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, 39 | 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, 40 | 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, 41 | 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 42 | 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, 43 | 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, 44 | 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, 45 | 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, 46 | 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, 47 | 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, 48 | 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, 49 | 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, 50 | 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, 51 | 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, 52 | 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, 53 | 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, 54 | 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, 55 | 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, 56 | 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, 57 | 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, 58 | 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, 59 | 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, 60 | 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, 61 | 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, 62 | 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 63 | 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, 64 | 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 65 | 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 66 | 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, 67 | 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 68 | 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, 69 | 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, 70 | 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, 71 | 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, 72 | 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, 73 | 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, 74 | 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, 75 | 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, 76 | 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, 77 | 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, 78 | 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, 79 | 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, 80 | 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, 81 | 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 82 | 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, 83 | 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, 84 | 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, 85 | 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, 86 | 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, 87 | 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, 88 | 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, 89 | 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, 90 | 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, 91 | 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, 92 | 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, 93 | 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, 94 | 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, 95 | 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, 96 | 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, 97 | 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, 98 | 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, 99 | 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, 100 | 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, 101 | 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, 102 | 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 103 | 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, 104 | 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, 105 | 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, 106 | 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, 107 | 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, 108 | 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, 109 | 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, 110 | 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, 111 | 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, 112 | 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 113 | 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, 114 | 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, 115 | 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 116 | 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, 117 | 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, 118 | 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, 119 | 0xC0}; 120 | 121 | const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { 122 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 123 | {0, 5, 13, 5, 2, -12}, // 0x21 '!' 124 | {9, 5, 4, 6, 3, -12}, // 0x22 '"' 125 | {12, 11, 13, 10, 1, -12}, // 0x23 '#' 126 | {30, 11, 16, 10, 1, -13}, // 0x24 '$' 127 | {52, 15, 13, 16, 2, -12}, // 0x25 '%' 128 | {77, 10, 13, 12, 2, -12}, // 0x26 '&' 129 | {94, 2, 4, 3, 3, -12}, // 0x27 ''' 130 | {95, 7, 17, 6, 2, -12}, // 0x28 '(' 131 | {110, 7, 17, 6, -1, -12}, // 0x29 ')' 132 | {125, 6, 5, 7, 3, -12}, // 0x2A '*' 133 | {129, 9, 8, 11, 2, -7}, // 0x2B '+' 134 | {138, 3, 5, 5, 1, -1}, // 0x2C ',' 135 | {140, 4, 1, 6, 2, -4}, // 0x2D '-' 136 | {141, 2, 1, 5, 2, 0}, // 0x2E '.' 137 | {142, 8, 13, 5, 0, -12}, // 0x2F '/' 138 | {155, 9, 13, 10, 2, -12}, // 0x30 '0' 139 | {170, 5, 13, 10, 4, -12}, // 0x31 '1' 140 | {179, 11, 13, 10, 1, -12}, // 0x32 '2' 141 | {197, 10, 13, 10, 1, -12}, // 0x33 '3' 142 | {214, 9, 13, 10, 1, -12}, // 0x34 '4' 143 | {229, 11, 13, 10, 1, -12}, // 0x35 '5' 144 | {247, 10, 13, 10, 2, -12}, // 0x36 '6' 145 | {264, 10, 13, 10, 2, -12}, // 0x37 '7' 146 | {281, 10, 13, 10, 1, -12}, // 0x38 '8' 147 | {298, 10, 13, 10, 1, -12}, // 0x39 '9' 148 | {315, 4, 9, 5, 2, -8}, // 0x3A ':' 149 | {320, 5, 12, 5, 1, -8}, // 0x3B ';' 150 | {328, 9, 9, 11, 2, -8}, // 0x3C '<' 151 | {339, 10, 4, 11, 1, -5}, // 0x3D '=' 152 | {344, 9, 9, 11, 1, -7}, // 0x3E '>' 153 | {355, 9, 13, 10, 3, -12}, // 0x3F '?' 154 | {370, 18, 16, 18, 1, -12}, // 0x40 '@' 155 | {406, 12, 13, 12, 0, -12}, // 0x41 'A' 156 | {426, 12, 13, 12, 1, -12}, // 0x42 'B' 157 | {446, 12, 13, 13, 2, -12}, // 0x43 'C' 158 | {466, 13, 13, 13, 1, -12}, // 0x44 'D' 159 | {488, 12, 13, 12, 1, -12}, // 0x45 'E' 160 | {508, 12, 13, 11, 1, -12}, // 0x46 'F' 161 | {528, 13, 13, 14, 2, -12}, // 0x47 'G' 162 | {550, 13, 13, 13, 1, -12}, // 0x48 'H' 163 | {572, 4, 13, 5, 2, -12}, // 0x49 'I' 164 | {579, 10, 13, 9, 1, -12}, // 0x4A 'J' 165 | {596, 14, 13, 12, 1, -12}, // 0x4B 'K' 166 | {619, 9, 13, 10, 1, -12}, // 0x4C 'L' 167 | {634, 16, 13, 15, 1, -12}, // 0x4D 'M' 168 | {660, 13, 13, 13, 1, -12}, // 0x4E 'N' 169 | {682, 13, 13, 14, 2, -12}, // 0x4F 'O' 170 | {704, 12, 13, 12, 1, -12}, // 0x50 'P' 171 | {724, 13, 14, 14, 2, -12}, // 0x51 'Q' 172 | {747, 13, 13, 13, 1, -12}, // 0x52 'R' 173 | {769, 12, 13, 12, 1, -12}, // 0x53 'S' 174 | {789, 10, 13, 11, 3, -12}, // 0x54 'T' 175 | {806, 12, 13, 13, 2, -12}, // 0x55 'U' 176 | {826, 11, 13, 12, 3, -12}, // 0x56 'V' 177 | {844, 16, 13, 17, 3, -12}, // 0x57 'W' 178 | {870, 14, 13, 12, 0, -12}, // 0x58 'X' 179 | {893, 12, 13, 12, 3, -12}, // 0x59 'Y' 180 | {913, 12, 13, 11, 1, -12}, // 0x5A 'Z' 181 | {933, 7, 17, 5, 0, -12}, // 0x5B '[' 182 | {948, 2, 13, 5, 3, -12}, // 0x5C '\' 183 | {952, 7, 17, 5, 0, -12}, // 0x5D ']' 184 | {967, 7, 7, 8, 2, -12}, // 0x5E '^' 185 | {974, 11, 1, 10, -1, 3}, // 0x5F '_' 186 | {976, 3, 3, 6, 3, -12}, // 0x60 '`' 187 | {978, 10, 10, 10, 1, -9}, // 0x61 'a' 188 | {991, 10, 13, 10, 1, -12}, // 0x62 'b' 189 | {1008, 9, 10, 9, 1, -9}, // 0x63 'c' 190 | {1020, 11, 13, 10, 1, -12}, // 0x64 'd' 191 | {1038, 10, 10, 10, 1, -9}, // 0x65 'e' 192 | {1051, 6, 13, 5, 1, -12}, // 0x66 'f' 193 | {1061, 10, 14, 10, 0, -9}, // 0x67 'g' 194 | {1079, 10, 13, 10, 1, -12}, // 0x68 'h' 195 | {1096, 4, 13, 4, 1, -12}, // 0x69 'i' 196 | {1103, 6, 17, 4, -1, -12}, // 0x6A 'j' 197 | {1116, 9, 13, 9, 1, -12}, // 0x6B 'k' 198 | {1131, 4, 13, 4, 1, -12}, // 0x6C 'l' 199 | {1138, 15, 10, 15, 1, -9}, // 0x6D 'm' 200 | {1157, 10, 11, 10, 1, -10}, // 0x6E 'n' 201 | {1171, 10, 10, 10, 1, -9}, // 0x6F 'o' 202 | {1184, 11, 14, 10, 0, -9}, // 0x70 'p' 203 | {1204, 10, 14, 10, 1, -9}, // 0x71 'q' 204 | {1222, 7, 10, 6, 1, -9}, // 0x72 'r' 205 | {1231, 8, 10, 9, 1, -9}, // 0x73 's' 206 | {1241, 4, 12, 5, 2, -11}, // 0x74 't' 207 | {1247, 9, 10, 10, 2, -9}, // 0x75 'u' 208 | {1259, 9, 10, 9, 2, -9}, // 0x76 'v' 209 | {1271, 13, 10, 13, 2, -9}, // 0x77 'w' 210 | {1288, 11, 10, 9, 0, -9}, // 0x78 'x' 211 | {1302, 11, 14, 9, 0, -9}, // 0x79 'y' 212 | {1322, 9, 10, 9, 1, -9}, // 0x7A 'z' 213 | {1334, 5, 17, 6, 2, -12}, // 0x7B '{' 214 | {1345, 4, 17, 5, 1, -12}, // 0x7C '|' 215 | {1354, 5, 17, 6, 0, -12}, // 0x7D '}' 216 | {1365, 9, 3, 11, 2, -7}}; // 0x7E '~' 217 | 218 | const GFXfont FreeSansOblique9pt7b PROGMEM = { 219 | (uint8_t *)FreeSansOblique9pt7bBitmaps, 220 | (GFXglyph *)FreeSansOblique9pt7bGlyphs, 0x20, 0x7E, 22}; 221 | 222 | // Approx. 2041 bytes 223 | -------------------------------------------------------------------------------- /Fonts/FreeSerif9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { 5 | 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, 6 | 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, 7 | 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, 8 | 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, 9 | 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, 10 | 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, 11 | 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, 12 | 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, 13 | 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 14 | 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, 15 | 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, 16 | 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, 17 | 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, 18 | 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, 19 | 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, 20 | 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, 21 | 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, 22 | 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, 23 | 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, 24 | 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, 25 | 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, 26 | 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, 27 | 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 28 | 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, 29 | 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, 30 | 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, 31 | 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, 32 | 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, 33 | 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, 34 | 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, 35 | 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, 36 | 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, 37 | 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, 38 | 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, 39 | 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, 40 | 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, 41 | 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, 42 | 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, 43 | 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, 44 | 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, 45 | 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 46 | 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, 47 | 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, 48 | 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, 49 | 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, 50 | 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, 51 | 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, 52 | 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, 53 | 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, 54 | 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, 55 | 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, 56 | 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, 57 | 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 58 | 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, 59 | 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, 60 | 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, 61 | 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, 62 | 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, 63 | 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, 64 | 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, 65 | 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, 66 | 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, 67 | 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, 68 | 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, 69 | 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, 70 | 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, 71 | 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, 72 | 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, 73 | 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, 74 | 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, 75 | 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, 76 | 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, 77 | 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, 78 | 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, 79 | 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, 80 | 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, 81 | 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, 82 | 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, 83 | 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, 84 | 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, 85 | 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, 86 | 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, 87 | 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, 88 | 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, 89 | 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, 90 | 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, 91 | 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, 92 | 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, 93 | 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, 94 | 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; 95 | 96 | const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { 97 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 98 | {0, 2, 12, 6, 2, -11}, // 0x21 '!' 99 | {3, 5, 4, 7, 1, -11}, // 0x22 '"' 100 | {6, 9, 12, 9, 0, -11}, // 0x23 '#' 101 | {20, 8, 14, 9, 1, -12}, // 0x24 '$' 102 | {34, 13, 12, 15, 1, -11}, // 0x25 '%' 103 | {54, 13, 13, 14, 1, -12}, // 0x26 '&' 104 | {76, 2, 4, 4, 1, -11}, // 0x27 ''' 105 | {77, 5, 15, 6, 1, -11}, // 0x28 '(' 106 | {87, 5, 15, 6, 0, -11}, // 0x29 ')' 107 | {97, 6, 8, 9, 3, -11}, // 0x2A '*' 108 | {103, 9, 9, 10, 0, -8}, // 0x2B '+' 109 | {114, 2, 3, 4, 2, 0}, // 0x2C ',' 110 | {115, 4, 1, 6, 1, -3}, // 0x2D '-' 111 | {116, 2, 2, 5, 1, -1}, // 0x2E '.' 112 | {117, 5, 12, 5, 0, -11}, // 0x2F '/' 113 | {125, 9, 13, 9, 0, -12}, // 0x30 '0' 114 | {140, 5, 13, 9, 2, -12}, // 0x31 '1' 115 | {149, 8, 12, 9, 1, -11}, // 0x32 '2' 116 | {161, 8, 12, 9, 0, -11}, // 0x33 '3' 117 | {173, 7, 12, 9, 1, -11}, // 0x34 '4' 118 | {184, 8, 12, 9, 0, -11}, // 0x35 '5' 119 | {196, 8, 13, 9, 1, -12}, // 0x36 '6' 120 | {209, 8, 12, 9, 0, -11}, // 0x37 '7' 121 | {221, 7, 13, 9, 1, -12}, // 0x38 '8' 122 | {233, 8, 14, 9, 1, -12}, // 0x39 '9' 123 | {247, 2, 8, 5, 1, -7}, // 0x3A ':' 124 | {249, 3, 10, 5, 1, -7}, // 0x3B ';' 125 | {253, 9, 9, 10, 1, -8}, // 0x3C '<' 126 | {264, 9, 5, 10, 1, -6}, // 0x3D '=' 127 | {270, 10, 9, 10, 0, -8}, // 0x3E '>' 128 | {282, 7, 13, 8, 1, -12}, // 0x3F '?' 129 | {294, 12, 13, 16, 2, -12}, // 0x40 '@' 130 | {314, 13, 12, 13, 0, -11}, // 0x41 'A' 131 | {334, 11, 12, 11, 0, -11}, // 0x42 'B' 132 | {351, 11, 12, 12, 1, -11}, // 0x43 'C' 133 | {368, 12, 12, 13, 0, -11}, // 0x44 'D' 134 | {386, 10, 12, 11, 1, -11}, // 0x45 'E' 135 | {401, 9, 12, 10, 1, -11}, // 0x46 'F' 136 | {415, 12, 12, 13, 1, -11}, // 0x47 'G' 137 | {433, 11, 12, 13, 1, -11}, // 0x48 'H' 138 | {450, 4, 12, 6, 1, -11}, // 0x49 'I' 139 | {456, 6, 12, 7, 0, -11}, // 0x4A 'J' 140 | {465, 12, 12, 13, 1, -11}, // 0x4B 'K' 141 | {483, 10, 12, 11, 1, -11}, // 0x4C 'L' 142 | {498, 15, 12, 16, 0, -11}, // 0x4D 'M' 143 | {521, 11, 12, 13, 1, -11}, // 0x4E 'N' 144 | {538, 11, 13, 13, 1, -12}, // 0x4F 'O' 145 | {556, 9, 12, 10, 1, -11}, // 0x50 'P' 146 | {570, 11, 16, 13, 1, -12}, // 0x51 'Q' 147 | {592, 11, 12, 12, 1, -11}, // 0x52 'R' 148 | {609, 9, 12, 10, 0, -11}, // 0x53 'S' 149 | {623, 11, 12, 11, 0, -11}, // 0x54 'T' 150 | {640, 11, 12, 13, 1, -11}, // 0x55 'U' 151 | {657, 12, 12, 13, 0, -11}, // 0x56 'V' 152 | {675, 17, 12, 17, 0, -11}, // 0x57 'W' 153 | {701, 13, 12, 13, 0, -11}, // 0x58 'X' 154 | {721, 12, 12, 13, 0, -11}, // 0x59 'Y' 155 | {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' 156 | {756, 3, 15, 6, 2, -11}, // 0x5B '[' 157 | {762, 5, 12, 5, 0, -11}, // 0x5C '\' 158 | {770, 3, 15, 6, 1, -11}, // 0x5D ']' 159 | {776, 8, 7, 8, 0, -11}, // 0x5E '^' 160 | {783, 9, 1, 9, 0, 2}, // 0x5F '_' 161 | {785, 4, 3, 5, 0, -11}, // 0x60 '`' 162 | {787, 7, 8, 8, 1, -7}, // 0x61 'a' 163 | {794, 9, 13, 9, 0, -12}, // 0x62 'b' 164 | {809, 7, 8, 8, 0, -7}, // 0x63 'c' 165 | {816, 9, 13, 9, 0, -12}, // 0x64 'd' 166 | {831, 8, 8, 8, 0, -7}, // 0x65 'e' 167 | {839, 7, 13, 7, 1, -12}, // 0x66 'f' 168 | {851, 10, 12, 8, 0, -7}, // 0x67 'g' 169 | {866, 9, 13, 9, 0, -12}, // 0x68 'h' 170 | {881, 4, 11, 5, 1, -10}, // 0x69 'i' 171 | {887, 5, 15, 6, 0, -10}, // 0x6A 'j' 172 | {897, 9, 13, 9, 1, -12}, // 0x6B 'k' 173 | {912, 4, 13, 5, 1, -12}, // 0x6C 'l' 174 | {919, 14, 8, 14, 0, -7}, // 0x6D 'm' 175 | {933, 9, 8, 9, 0, -7}, // 0x6E 'n' 176 | {942, 9, 8, 9, 0, -7}, // 0x6F 'o' 177 | {951, 9, 12, 9, 0, -7}, // 0x70 'p' 178 | {965, 9, 12, 9, 0, -7}, // 0x71 'q' 179 | {979, 6, 8, 6, 0, -7}, // 0x72 'r' 180 | {985, 6, 8, 7, 1, -7}, // 0x73 's' 181 | {991, 5, 9, 5, 0, -8}, // 0x74 't' 182 | {997, 9, 8, 9, 0, -7}, // 0x75 'u' 183 | {1006, 8, 8, 8, 0, -7}, // 0x76 'v' 184 | {1014, 12, 8, 12, 0, -7}, // 0x77 'w' 185 | {1026, 9, 8, 9, 0, -7}, // 0x78 'x' 186 | {1035, 8, 12, 8, 0, -7}, // 0x79 'y' 187 | {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' 188 | {1054, 5, 16, 9, 1, -12}, // 0x7B '{' 189 | {1064, 1, 12, 4, 1, -11}, // 0x7C '|' 190 | {1066, 5, 16, 9, 3, -11}, // 0x7D '}' 191 | {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' 192 | 193 | const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, 194 | (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, 195 | 0x7E, 22}; 196 | 197 | // Approx. 1752 bytes 198 | -------------------------------------------------------------------------------- /Fonts/FreeSerifBold9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { 5 | 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, 6 | 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, 7 | 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, 8 | 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, 9 | 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, 10 | 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, 11 | 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, 12 | 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, 13 | 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, 14 | 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, 15 | 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, 16 | 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, 17 | 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, 18 | 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, 19 | 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, 20 | 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, 21 | 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, 22 | 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, 23 | 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, 24 | 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, 25 | 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, 26 | 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, 27 | 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, 28 | 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, 29 | 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, 30 | 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, 31 | 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, 32 | 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 33 | 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, 34 | 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, 35 | 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, 36 | 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, 37 | 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, 38 | 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, 39 | 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, 40 | 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, 41 | 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, 42 | 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, 43 | 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, 44 | 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, 45 | 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, 46 | 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, 47 | 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, 48 | 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, 49 | 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, 50 | 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, 51 | 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, 52 | 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, 53 | 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, 54 | 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, 55 | 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 56 | 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, 57 | 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, 58 | 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, 59 | 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, 60 | 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, 61 | 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, 62 | 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, 63 | 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, 64 | 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, 65 | 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, 66 | 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, 67 | 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, 68 | 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, 69 | 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, 70 | 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, 71 | 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, 72 | 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, 73 | 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, 74 | 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, 75 | 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, 76 | 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, 77 | 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, 78 | 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, 79 | 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, 80 | 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, 81 | 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 82 | 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 83 | 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, 84 | 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, 85 | 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, 86 | 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 87 | 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 88 | 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 89 | 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, 90 | 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, 91 | 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, 92 | 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, 93 | 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, 94 | 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, 95 | 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, 96 | 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, 97 | 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, 98 | 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, 99 | 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, 100 | 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, 101 | 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E}; 102 | 103 | const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { 104 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 105 | {0, 3, 12, 6, 1, -11}, // 0x21 '!' 106 | {5, 6, 5, 10, 2, -11}, // 0x22 '"' 107 | {9, 9, 13, 9, 0, -12}, // 0x23 '#' 108 | {24, 8, 14, 9, 1, -12}, // 0x24 '$' 109 | {38, 14, 12, 18, 2, -11}, // 0x25 '%' 110 | {59, 13, 12, 15, 1, -11}, // 0x26 '&' 111 | {79, 2, 5, 5, 1, -11}, // 0x27 ''' 112 | {81, 4, 15, 6, 1, -11}, // 0x28 '(' 113 | {89, 4, 15, 6, 1, -11}, // 0x29 ')' 114 | {97, 7, 7, 9, 2, -11}, // 0x2A '*' 115 | {104, 9, 9, 12, 1, -8}, // 0x2B '+' 116 | {115, 3, 6, 4, 1, -2}, // 0x2C ',' 117 | {118, 4, 2, 6, 1, -4}, // 0x2D '-' 118 | {119, 3, 3, 4, 1, -2}, // 0x2E '.' 119 | {121, 6, 13, 5, 0, -11}, // 0x2F '/' 120 | {131, 9, 12, 9, 0, -11}, // 0x30 '0' 121 | {145, 6, 12, 9, 1, -11}, // 0x31 '1' 122 | {154, 9, 12, 9, 0, -11}, // 0x32 '2' 123 | {168, 8, 12, 9, 0, -11}, // 0x33 '3' 124 | {180, 8, 12, 9, 1, -11}, // 0x34 '4' 125 | {192, 8, 12, 9, 1, -11}, // 0x35 '5' 126 | {204, 8, 12, 9, 1, -11}, // 0x36 '6' 127 | {216, 9, 12, 9, 0, -11}, // 0x37 '7' 128 | {230, 8, 12, 9, 1, -11}, // 0x38 '8' 129 | {242, 9, 12, 9, 0, -11}, // 0x39 '9' 130 | {256, 3, 9, 6, 1, -8}, // 0x3A ':' 131 | {260, 3, 12, 6, 2, -8}, // 0x3B ';' 132 | {265, 10, 10, 12, 1, -9}, // 0x3C '<' 133 | {278, 10, 5, 12, 1, -6}, // 0x3D '=' 134 | {285, 10, 10, 12, 1, -8}, // 0x3E '>' 135 | {298, 7, 12, 9, 1, -11}, // 0x3F '?' 136 | {309, 13, 12, 17, 2, -11}, // 0x40 '@' 137 | {329, 13, 12, 13, 0, -11}, // 0x41 'A' 138 | {349, 11, 12, 12, 0, -11}, // 0x42 'B' 139 | {366, 11, 12, 13, 1, -11}, // 0x43 'C' 140 | {383, 11, 12, 13, 1, -11}, // 0x44 'D' 141 | {400, 11, 12, 12, 1, -11}, // 0x45 'E' 142 | {417, 10, 12, 11, 1, -11}, // 0x46 'F' 143 | {432, 12, 12, 14, 1, -11}, // 0x47 'G' 144 | {450, 12, 12, 14, 1, -11}, // 0x48 'H' 145 | {468, 5, 12, 7, 1, -11}, // 0x49 'I' 146 | {476, 8, 14, 9, 0, -11}, // 0x4A 'J' 147 | {490, 13, 12, 14, 1, -11}, // 0x4B 'K' 148 | {510, 11, 12, 12, 1, -11}, // 0x4C 'L' 149 | {527, 16, 12, 17, 0, -11}, // 0x4D 'M' 150 | {551, 11, 12, 13, 1, -11}, // 0x4E 'N' 151 | {568, 12, 12, 14, 1, -11}, // 0x4F 'O' 152 | {586, 10, 12, 11, 1, -11}, // 0x50 'P' 153 | {601, 12, 15, 14, 1, -11}, // 0x51 'Q' 154 | {624, 12, 12, 13, 1, -11}, // 0x52 'R' 155 | {642, 8, 12, 10, 1, -11}, // 0x53 'S' 156 | {654, 12, 12, 12, 0, -11}, // 0x54 'T' 157 | {672, 11, 12, 13, 1, -11}, // 0x55 'U' 158 | {689, 13, 13, 13, 0, -11}, // 0x56 'V' 159 | {711, 18, 12, 18, 0, -11}, // 0x57 'W' 160 | {738, 13, 12, 13, 0, -11}, // 0x58 'X' 161 | {758, 13, 12, 13, 0, -11}, // 0x59 'Y' 162 | {778, 11, 12, 12, 1, -11}, // 0x5A 'Z' 163 | {795, 4, 15, 6, 1, -11}, // 0x5B '[' 164 | {803, 6, 13, 5, 0, -11}, // 0x5C '\' 165 | {813, 4, 15, 6, 1, -11}, // 0x5D ']' 166 | {821, 8, 7, 10, 1, -11}, // 0x5E '^' 167 | {828, 9, 1, 9, 0, 3}, // 0x5F '_' 168 | {830, 4, 3, 6, 0, -12}, // 0x60 '`' 169 | {832, 9, 9, 9, 0, -8}, // 0x61 'a' 170 | {843, 10, 12, 10, 0, -11}, // 0x62 'b' 171 | {858, 7, 9, 8, 0, -8}, // 0x63 'c' 172 | {866, 10, 12, 10, 0, -11}, // 0x64 'd' 173 | {881, 8, 9, 8, 0, -8}, // 0x65 'e' 174 | {890, 7, 12, 7, 0, -11}, // 0x66 'f' 175 | {901, 7, 13, 9, 1, -8}, // 0x67 'g' 176 | {913, 10, 12, 10, 0, -11}, // 0x68 'h' 177 | {928, 5, 12, 5, 0, -11}, // 0x69 'i' 178 | {936, 6, 16, 7, 0, -11}, // 0x6A 'j' 179 | {948, 10, 12, 10, 0, -11}, // 0x6B 'k' 180 | {963, 5, 12, 5, 0, -11}, // 0x6C 'l' 181 | {971, 15, 9, 15, 0, -8}, // 0x6D 'm' 182 | {988, 10, 9, 10, 0, -8}, // 0x6E 'n' 183 | {1000, 9, 9, 9, 0, -8}, // 0x6F 'o' 184 | {1011, 10, 13, 10, 0, -8}, // 0x70 'p' 185 | {1028, 10, 13, 10, 0, -8}, // 0x71 'q' 186 | {1045, 8, 9, 8, 0, -8}, // 0x72 'r' 187 | {1054, 5, 9, 7, 1, -8}, // 0x73 's' 188 | {1060, 6, 11, 6, 0, -10}, // 0x74 't' 189 | {1069, 10, 9, 10, 0, -8}, // 0x75 'u' 190 | {1081, 9, 9, 9, 0, -8}, // 0x76 'v' 191 | {1092, 12, 9, 13, 0, -8}, // 0x77 'w' 192 | {1106, 9, 9, 9, 0, -8}, // 0x78 'x' 193 | {1117, 8, 13, 9, 0, -8}, // 0x79 'y' 194 | {1130, 7, 9, 8, 1, -8}, // 0x7A 'z' 195 | {1138, 5, 16, 7, 0, -12}, // 0x7B '{' 196 | {1148, 1, 13, 4, 1, -11}, // 0x7C '|' 197 | {1150, 5, 16, 7, 2, -12}, // 0x7D '}' 198 | {1160, 8, 2, 9, 1, -4}}; // 0x7E '~' 199 | 200 | const GFXfont FreeSerifBold9pt7b PROGMEM = { 201 | (uint8_t *)FreeSerifBold9pt7bBitmaps, (GFXglyph *)FreeSerifBold9pt7bGlyphs, 202 | 0x20, 0x7E, 22}; 203 | 204 | // Approx. 1834 bytes 205 | -------------------------------------------------------------------------------- /Fonts/FreeSerifBoldItalic9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { 5 | 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, 6 | 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, 7 | 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, 8 | 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, 9 | 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, 10 | 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, 11 | 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, 12 | 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, 13 | 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, 14 | 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, 15 | 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, 16 | 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, 17 | 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, 18 | 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, 19 | 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, 20 | 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, 21 | 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, 22 | 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, 23 | 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, 24 | 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, 25 | 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, 26 | 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, 27 | 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, 28 | 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, 29 | 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, 30 | 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, 31 | 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, 32 | 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, 33 | 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, 34 | 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, 35 | 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, 36 | 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, 37 | 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, 38 | 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, 39 | 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, 40 | 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 41 | 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, 42 | 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, 43 | 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 44 | 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, 45 | 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, 46 | 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, 47 | 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, 48 | 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, 49 | 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, 50 | 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, 51 | 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, 52 | 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, 53 | 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, 54 | 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, 55 | 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 56 | 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, 57 | 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, 58 | 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, 59 | 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, 60 | 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, 61 | 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, 62 | 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, 63 | 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, 64 | 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, 65 | 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, 66 | 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, 67 | 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, 68 | 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, 69 | 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, 70 | 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, 71 | 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, 72 | 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, 73 | 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, 74 | 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, 75 | 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, 76 | 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, 77 | 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, 78 | 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, 79 | 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, 80 | 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, 81 | 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, 82 | 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, 83 | 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, 84 | 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, 85 | 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, 86 | 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, 87 | 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, 88 | 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, 89 | 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, 90 | 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, 91 | 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, 92 | 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, 93 | 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, 94 | 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, 95 | 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, 96 | 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, 97 | 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, 98 | 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, 99 | 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, 100 | 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, 101 | 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, 102 | 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, 103 | 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, 104 | 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, 105 | 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, 106 | 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, 107 | 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, 108 | 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, 109 | 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, 110 | 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, 111 | 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, 112 | 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, 113 | 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, 114 | 0x71, 0x8F}; 115 | 116 | const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { 117 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 118 | {0, 6, 13, 7, 1, -11}, // 0x21 '!' 119 | {10, 6, 5, 10, 3, -11}, // 0x22 '"' 120 | {14, 11, 13, 9, -1, -12}, // 0x23 '#' 121 | {32, 11, 15, 9, -1, -12}, // 0x24 '$' 122 | {53, 14, 13, 15, 1, -11}, // 0x25 '%' 123 | {76, 13, 13, 14, 0, -11}, // 0x26 '&' 124 | {98, 2, 5, 5, 3, -11}, // 0x27 ''' 125 | {100, 5, 16, 6, 1, -11}, // 0x28 '(' 126 | {110, 5, 16, 6, -1, -11}, // 0x29 ')' 127 | {120, 8, 8, 9, 1, -11}, // 0x2A '*' 128 | {128, 9, 9, 10, 0, -8}, // 0x2B '+' 129 | {139, 3, 6, 5, -1, -2}, // 0x2C ',' 130 | {142, 5, 2, 6, 0, -4}, // 0x2D '-' 131 | {144, 3, 3, 4, 0, -1}, // 0x2E '.' 132 | {146, 7, 12, 6, 0, -11}, // 0x2F '/' 133 | {157, 9, 13, 9, 0, -11}, // 0x30 '0' 134 | {172, 8, 13, 9, 0, -11}, // 0x31 '1' 135 | {185, 9, 13, 9, 0, -11}, // 0x32 '2' 136 | {200, 9, 13, 9, 0, -11}, // 0x33 '3' 137 | {215, 9, 12, 9, 0, -11}, // 0x34 '4' 138 | {229, 9, 13, 9, 0, -11}, // 0x35 '5' 139 | {244, 9, 13, 9, 1, -11}, // 0x36 '6' 140 | {259, 9, 12, 9, 1, -11}, // 0x37 '7' 141 | {273, 8, 13, 9, 0, -11}, // 0x38 '8' 142 | {286, 9, 13, 9, 0, -11}, // 0x39 '9' 143 | {301, 5, 9, 5, 0, -7}, // 0x3A ':' 144 | {307, 5, 11, 5, 0, -7}, // 0x3B ';' 145 | {314, 9, 10, 10, 1, -9}, // 0x3C '<' 146 | {326, 9, 5, 10, 1, -6}, // 0x3D '=' 147 | {332, 9, 10, 10, 1, -9}, // 0x3E '>' 148 | {344, 8, 13, 9, 1, -11}, // 0x3F '?' 149 | {357, 13, 13, 15, 1, -12}, // 0x40 '@' 150 | {379, 12, 13, 13, 0, -11}, // 0x41 'A' 151 | {399, 12, 13, 12, 0, -11}, // 0x42 'B' 152 | {419, 12, 13, 11, 1, -11}, // 0x43 'C' 153 | {439, 14, 13, 13, 0, -11}, // 0x44 'D' 154 | {462, 13, 13, 11, 0, -11}, // 0x45 'E' 155 | {484, 13, 13, 11, 0, -11}, // 0x46 'F' 156 | {506, 12, 13, 13, 1, -11}, // 0x47 'G' 157 | {526, 15, 13, 14, 0, -11}, // 0x48 'H' 158 | {551, 8, 13, 7, 0, -11}, // 0x49 'I' 159 | {564, 10, 14, 9, 0, -11}, // 0x4A 'J' 160 | {582, 13, 13, 12, 0, -11}, // 0x4B 'K' 161 | {604, 12, 13, 11, 0, -11}, // 0x4C 'L' 162 | {624, 17, 13, 16, 0, -11}, // 0x4D 'M' 163 | {652, 14, 13, 13, 0, -11}, // 0x4E 'N' 164 | {675, 12, 13, 12, 1, -11}, // 0x4F 'O' 165 | {695, 12, 13, 11, 0, -11}, // 0x50 'P' 166 | {715, 12, 16, 12, 1, -11}, // 0x51 'Q' 167 | {739, 12, 13, 12, 0, -11}, // 0x52 'R' 168 | {759, 9, 13, 9, 0, -11}, // 0x53 'S' 169 | {774, 11, 13, 11, 2, -11}, // 0x54 'T' 170 | {792, 12, 13, 13, 2, -11}, // 0x55 'U' 171 | {812, 12, 12, 13, 2, -11}, // 0x56 'V' 172 | {830, 16, 12, 17, 2, -11}, // 0x57 'W' 173 | {854, 13, 13, 13, 0, -11}, // 0x58 'X' 174 | {876, 11, 13, 11, 2, -11}, // 0x59 'Y' 175 | {894, 11, 13, 10, 0, -11}, // 0x5A 'Z' 176 | {912, 8, 15, 6, -1, -11}, // 0x5B '[' 177 | {927, 5, 12, 7, 2, -11}, // 0x5C '\' 178 | {935, 7, 15, 6, -1, -11}, // 0x5D ']' 179 | {949, 8, 7, 10, 1, -11}, // 0x5E '^' 180 | {956, 9, 1, 9, 0, 3}, // 0x5F '_' 181 | {958, 4, 3, 6, 2, -11}, // 0x60 '`' 182 | {960, 9, 9, 9, 0, -7}, // 0x61 'a' 183 | {971, 8, 14, 9, 0, -12}, // 0x62 'b' 184 | {985, 8, 9, 8, 0, -7}, // 0x63 'c' 185 | {994, 10, 14, 9, 0, -12}, // 0x64 'd' 186 | {1012, 7, 9, 7, 0, -7}, // 0x65 'e' 187 | {1020, 11, 17, 9, -2, -12}, // 0x66 'f' 188 | {1044, 9, 12, 9, 0, -7}, // 0x67 'g' 189 | {1058, 9, 14, 10, 0, -12}, // 0x68 'h' 190 | {1074, 5, 13, 5, 1, -11}, // 0x69 'i' 191 | {1083, 9, 16, 6, -1, -11}, // 0x6A 'j' 192 | {1101, 10, 14, 9, 0, -12}, // 0x6B 'k' 193 | {1119, 5, 14, 5, 1, -12}, // 0x6C 'l' 194 | {1128, 13, 9, 14, 0, -7}, // 0x6D 'm' 195 | {1143, 8, 9, 9, 0, -7}, // 0x6E 'n' 196 | {1152, 8, 9, 9, 0, -7}, // 0x6F 'o' 197 | {1161, 10, 12, 9, -2, -7}, // 0x70 'p' 198 | {1176, 9, 12, 9, 0, -7}, // 0x71 'q' 199 | {1190, 8, 8, 7, 0, -7}, // 0x72 'r' 200 | {1198, 6, 9, 6, 0, -7}, // 0x73 's' 201 | {1205, 5, 12, 5, 1, -10}, // 0x74 't' 202 | {1213, 8, 9, 10, 1, -7}, // 0x75 'u' 203 | {1222, 7, 8, 8, 1, -7}, // 0x76 'v' 204 | {1229, 10, 8, 12, 1, -7}, // 0x77 'w' 205 | {1239, 10, 9, 9, -1, -7}, // 0x78 'x' 206 | {1251, 9, 12, 8, -1, -7}, // 0x79 'y' 207 | {1265, 8, 9, 7, 0, -7}, // 0x7A 'z' 208 | {1274, 8, 16, 6, 0, -12}, // 0x7B '{' 209 | {1290, 1, 12, 5, 2, -11}, // 0x7C '|' 210 | {1292, 8, 16, 6, -2, -12}, // 0x7D '}' 211 | {1308, 8, 2, 10, 1, -4}}; // 0x7E '~' 212 | 213 | const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { 214 | (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, 215 | (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, 0x20, 0x7E, 22}; 216 | 217 | // Approx. 1982 bytes 218 | -------------------------------------------------------------------------------- /Fonts/FreeSerifItalic9pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { 5 | 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, 6 | 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, 7 | 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, 8 | 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, 9 | 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, 10 | 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, 11 | 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, 12 | 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, 13 | 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, 14 | 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, 15 | 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, 16 | 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, 17 | 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, 18 | 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, 19 | 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, 20 | 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, 21 | 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, 22 | 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, 23 | 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, 24 | 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, 25 | 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, 26 | 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, 27 | 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, 28 | 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, 29 | 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, 30 | 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, 31 | 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, 32 | 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, 33 | 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, 34 | 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, 35 | 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, 36 | 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, 37 | 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, 38 | 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, 39 | 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 40 | 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, 41 | 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 42 | 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, 43 | 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, 44 | 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, 45 | 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, 46 | 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, 47 | 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, 48 | 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, 49 | 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, 50 | 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, 51 | 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, 52 | 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, 53 | 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, 54 | 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, 55 | 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, 56 | 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, 57 | 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, 58 | 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, 59 | 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, 60 | 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, 61 | 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, 62 | 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, 63 | 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, 64 | 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, 65 | 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, 66 | 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, 67 | 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, 68 | 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, 69 | 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, 70 | 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, 71 | 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, 72 | 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 73 | 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, 74 | 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, 75 | 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, 76 | 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, 77 | 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, 78 | 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, 79 | 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, 80 | 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, 81 | 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, 82 | 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, 83 | 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, 84 | 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, 85 | 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, 86 | 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, 87 | 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, 88 | 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, 89 | 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, 90 | 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, 91 | 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, 92 | 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, 93 | 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, 94 | 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, 95 | 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, 96 | 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, 97 | 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, 98 | 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, 99 | 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, 100 | 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, 101 | 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E}; 102 | 103 | const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { 104 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 105 | {0, 4, 12, 6, 1, -11}, // 0x21 '!' 106 | {6, 5, 4, 6, 3, -11}, // 0x22 '"' 107 | {9, 10, 12, 9, 0, -11}, // 0x23 '#' 108 | {24, 9, 15, 9, 1, -12}, // 0x24 '$' 109 | {41, 14, 12, 15, 1, -11}, // 0x25 '%' 110 | {62, 12, 12, 14, 1, -11}, // 0x26 '&' 111 | {80, 2, 4, 4, 3, -11}, // 0x27 ''' 112 | {81, 6, 15, 6, 1, -11}, // 0x28 '(' 113 | {93, 6, 15, 6, 0, -11}, // 0x29 ')' 114 | {105, 6, 8, 9, 3, -11}, // 0x2A '*' 115 | {111, 9, 9, 12, 1, -8}, // 0x2B '+' 116 | {122, 2, 4, 5, 0, -1}, // 0x2C ',' 117 | {123, 4, 1, 6, 1, -3}, // 0x2D '-' 118 | {124, 2, 2, 5, 0, -1}, // 0x2E '.' 119 | {125, 8, 12, 5, 0, -11}, // 0x2F '/' 120 | {137, 9, 13, 9, 1, -12}, // 0x30 '0' 121 | {152, 6, 13, 9, 1, -12}, // 0x31 '1' 122 | {162, 8, 12, 9, 1, -11}, // 0x32 '2' 123 | {174, 9, 12, 9, 0, -11}, // 0x33 '3' 124 | {188, 9, 12, 9, 0, -11}, // 0x34 '4' 125 | {202, 9, 12, 9, 0, -11}, // 0x35 '5' 126 | {216, 9, 13, 9, 1, -12}, // 0x36 '6' 127 | {231, 9, 12, 9, 1, -11}, // 0x37 '7' 128 | {245, 9, 13, 9, 1, -12}, // 0x38 '8' 129 | {260, 9, 13, 9, 0, -12}, // 0x39 '9' 130 | {275, 4, 8, 4, 1, -7}, // 0x3A ':' 131 | {279, 4, 10, 4, 1, -7}, // 0x3B ';' 132 | {284, 9, 9, 10, 1, -8}, // 0x3C '<' 133 | {295, 9, 5, 12, 2, -6}, // 0x3D '=' 134 | {301, 9, 9, 10, 1, -8}, // 0x3E '>' 135 | {312, 7, 12, 8, 2, -11}, // 0x3F '?' 136 | {323, 13, 12, 14, 1, -11}, // 0x40 '@' 137 | {343, 11, 11, 12, 0, -10}, // 0x41 'A' 138 | {359, 11, 12, 11, 0, -11}, // 0x42 'B' 139 | {376, 12, 12, 11, 1, -11}, // 0x43 'C' 140 | {394, 13, 12, 13, 0, -11}, // 0x44 'D' 141 | {414, 12, 12, 10, 0, -11}, // 0x45 'E' 142 | {432, 12, 12, 10, 0, -11}, // 0x46 'F' 143 | {450, 12, 12, 12, 1, -11}, // 0x47 'G' 144 | {468, 14, 12, 13, 0, -11}, // 0x48 'H' 145 | {489, 7, 12, 6, 0, -11}, // 0x49 'I' 146 | {500, 9, 12, 8, 0, -11}, // 0x4A 'J' 147 | {514, 13, 12, 12, 0, -11}, // 0x4B 'K' 148 | {534, 11, 12, 10, 0, -11}, // 0x4C 'L' 149 | {551, 16, 12, 15, 0, -11}, // 0x4D 'M' 150 | {575, 13, 12, 12, 0, -11}, // 0x4E 'N' 151 | {595, 11, 12, 12, 1, -11}, // 0x4F 'O' 152 | {612, 11, 12, 10, 0, -11}, // 0x50 'P' 153 | {629, 11, 15, 12, 1, -11}, // 0x51 'Q' 154 | {650, 11, 12, 11, 0, -11}, // 0x52 'R' 155 | {667, 10, 12, 8, 0, -11}, // 0x53 'S' 156 | {682, 11, 12, 11, 2, -11}, // 0x54 'T' 157 | {699, 12, 12, 13, 2, -11}, // 0x55 'U' 158 | {717, 11, 12, 12, 2, -11}, // 0x56 'V' 159 | {734, 15, 12, 16, 2, -11}, // 0x57 'W' 160 | {757, 12, 12, 12, 0, -11}, // 0x58 'X' 161 | {775, 10, 12, 11, 2, -11}, // 0x59 'Y' 162 | {790, 11, 12, 10, 0, -11}, // 0x5A 'Z' 163 | {807, 7, 15, 7, 0, -11}, // 0x5B '[' 164 | {821, 6, 12, 9, 2, -11}, // 0x5C '\' 165 | {830, 6, 15, 7, 1, -11}, // 0x5D ']' 166 | {842, 8, 7, 8, 0, -11}, // 0x5E '^' 167 | {849, 9, 1, 9, 0, 2}, // 0x5F '_' 168 | {851, 3, 3, 5, 2, -11}, // 0x60 '`' 169 | {853, 9, 8, 9, 0, -7}, // 0x61 'a' 170 | {862, 9, 12, 9, 0, -11}, // 0x62 'b' 171 | {876, 8, 8, 7, 0, -7}, // 0x63 'c' 172 | {884, 9, 12, 9, 0, -11}, // 0x64 'd' 173 | {898, 7, 8, 7, 0, -7}, // 0x65 'e' 174 | {905, 11, 17, 8, -1, -12}, // 0x66 'f' 175 | {929, 9, 12, 8, 0, -7}, // 0x67 'g' 176 | {943, 9, 12, 9, 0, -11}, // 0x68 'h' 177 | {957, 4, 12, 4, 1, -11}, // 0x69 'i' 178 | {963, 7, 16, 5, -1, -11}, // 0x6A 'j' 179 | {977, 8, 12, 8, 0, -11}, // 0x6B 'k' 180 | {989, 4, 12, 5, 1, -11}, // 0x6C 'l' 181 | {995, 13, 8, 13, 0, -7}, // 0x6D 'm' 182 | {1008, 8, 8, 9, 0, -7}, // 0x6E 'n' 183 | {1016, 9, 8, 9, 0, -7}, // 0x6F 'o' 184 | {1025, 10, 12, 8, -1, -7}, // 0x70 'p' 185 | {1040, 9, 12, 9, 0, -7}, // 0x71 'q' 186 | {1054, 7, 8, 7, 0, -7}, // 0x72 'r' 187 | {1061, 7, 8, 6, 0, -7}, // 0x73 's' 188 | {1068, 5, 9, 4, 0, -8}, // 0x74 't' 189 | {1074, 8, 8, 9, 1, -7}, // 0x75 'u' 190 | {1082, 7, 8, 8, 1, -7}, // 0x76 'v' 191 | {1089, 11, 8, 12, 1, -7}, // 0x77 'w' 192 | {1100, 9, 8, 8, -1, -7}, // 0x78 'x' 193 | {1109, 9, 12, 9, 0, -7}, // 0x79 'y' 194 | {1123, 8, 9, 7, 0, -7}, // 0x7A 'z' 195 | {1132, 6, 15, 7, 1, -11}, // 0x7B '{' 196 | {1144, 1, 12, 5, 2, -11}, // 0x7C '|' 197 | {1146, 7, 16, 7, 0, -12}, // 0x7D '}' 198 | {1160, 8, 3, 10, 1, -5}}; // 0x7E '~' 199 | 200 | const GFXfont FreeSerifItalic9pt7b PROGMEM = { 201 | (uint8_t *)FreeSerifItalic9pt7bBitmaps, 202 | (GFXglyph *)FreeSerifItalic9pt7bGlyphs, 0x20, 0x7E, 22}; 203 | 204 | // Approx. 1835 bytes 205 | -------------------------------------------------------------------------------- /Fonts/Org_01.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, 5 | // stylized font with all characters within a 6 pixel height. 6 | 7 | const uint8_t Org_01Bitmaps[] PROGMEM = { 8 | 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, 9 | 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, 10 | 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, 11 | 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, 12 | 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, 13 | 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, 14 | 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, 15 | 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, 16 | 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, 17 | 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, 18 | 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, 19 | 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, 20 | 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, 21 | 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, 22 | 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, 23 | 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, 24 | 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, 25 | 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, 26 | 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, 27 | 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, 28 | 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, 29 | 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, 30 | 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; 31 | 32 | const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' 33 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 34 | {1, 3, 1, 4, 0, -4}, // 0x22 '"' 35 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 36 | {6, 5, 5, 6, 0, -4}, // 0x24 '$' 37 | {10, 5, 5, 6, 0, -4}, // 0x25 '%' 38 | {14, 5, 5, 6, 0, -4}, // 0x26 '&' 39 | {18, 1, 1, 2, 0, -4}, // 0x27 ''' 40 | {19, 2, 5, 3, 0, -4}, // 0x28 '(' 41 | {21, 2, 5, 3, 0, -4}, // 0x29 ')' 42 | {23, 3, 3, 4, 0, -3}, // 0x2A '*' 43 | {25, 3, 3, 4, 0, -3}, // 0x2B '+' 44 | {27, 1, 2, 2, 0, 0}, // 0x2C ',' 45 | {28, 4, 1, 5, 0, -2}, // 0x2D '-' 46 | {29, 1, 1, 2, 0, 0}, // 0x2E '.' 47 | {30, 5, 5, 6, 0, -4}, // 0x2F '/' 48 | {34, 5, 5, 6, 0, -4}, // 0x30 '0' 49 | {38, 1, 5, 2, 0, -4}, // 0x31 '1' 50 | {39, 5, 5, 6, 0, -4}, // 0x32 '2' 51 | {43, 5, 5, 6, 0, -4}, // 0x33 '3' 52 | {47, 5, 5, 6, 0, -4}, // 0x34 '4' 53 | {51, 5, 5, 6, 0, -4}, // 0x35 '5' 54 | {55, 5, 5, 6, 0, -4}, // 0x36 '6' 55 | {59, 5, 5, 6, 0, -4}, // 0x37 '7' 56 | {63, 5, 5, 6, 0, -4}, // 0x38 '8' 57 | {67, 5, 5, 6, 0, -4}, // 0x39 '9' 58 | {71, 1, 4, 2, 0, -3}, // 0x3A ':' 59 | {72, 1, 4, 2, 0, -3}, // 0x3B ';' 60 | {73, 3, 5, 4, 0, -4}, // 0x3C '<' 61 | {75, 4, 3, 5, 0, -3}, // 0x3D '=' 62 | {77, 3, 5, 4, 0, -4}, // 0x3E '>' 63 | {79, 5, 5, 6, 0, -4}, // 0x3F '?' 64 | {83, 5, 5, 6, 0, -4}, // 0x40 '@' 65 | {87, 5, 5, 6, 0, -4}, // 0x41 'A' 66 | {91, 5, 5, 6, 0, -4}, // 0x42 'B' 67 | {95, 5, 5, 6, 0, -4}, // 0x43 'C' 68 | {99, 5, 5, 6, 0, -4}, // 0x44 'D' 69 | {103, 5, 5, 6, 0, -4}, // 0x45 'E' 70 | {107, 5, 5, 6, 0, -4}, // 0x46 'F' 71 | {111, 5, 5, 6, 0, -4}, // 0x47 'G' 72 | {115, 5, 5, 6, 0, -4}, // 0x48 'H' 73 | {119, 5, 5, 6, 0, -4}, // 0x49 'I' 74 | {123, 5, 5, 6, 0, -4}, // 0x4A 'J' 75 | {127, 5, 5, 6, 0, -4}, // 0x4B 'K' 76 | {131, 5, 5, 6, 0, -4}, // 0x4C 'L' 77 | {135, 5, 5, 6, 0, -4}, // 0x4D 'M' 78 | {139, 5, 5, 6, 0, -4}, // 0x4E 'N' 79 | {143, 5, 5, 6, 0, -4}, // 0x4F 'O' 80 | {147, 5, 5, 6, 0, -4}, // 0x50 'P' 81 | {151, 5, 5, 6, 0, -4}, // 0x51 'Q' 82 | {155, 5, 5, 6, 0, -4}, // 0x52 'R' 83 | {159, 5, 5, 6, 0, -4}, // 0x53 'S' 84 | {163, 5, 5, 6, 0, -4}, // 0x54 'T' 85 | {167, 5, 5, 6, 0, -4}, // 0x55 'U' 86 | {171, 5, 5, 6, 0, -4}, // 0x56 'V' 87 | {175, 5, 5, 6, 0, -4}, // 0x57 'W' 88 | {179, 5, 5, 6, 0, -4}, // 0x58 'X' 89 | {183, 5, 5, 6, 0, -4}, // 0x59 'Y' 90 | {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' 91 | {191, 2, 5, 3, 0, -4}, // 0x5B '[' 92 | {193, 5, 5, 6, 0, -4}, // 0x5C '\' 93 | {197, 2, 5, 3, 0, -4}, // 0x5D ']' 94 | {199, 3, 2, 4, 0, -4}, // 0x5E '^' 95 | {200, 5, 1, 6, 0, 1}, // 0x5F '_' 96 | {201, 1, 1, 2, 0, -4}, // 0x60 '`' 97 | {202, 4, 4, 5, 0, -3}, // 0x61 'a' 98 | {204, 4, 5, 5, 0, -4}, // 0x62 'b' 99 | {207, 4, 4, 5, 0, -3}, // 0x63 'c' 100 | {209, 4, 5, 5, 0, -4}, // 0x64 'd' 101 | {212, 4, 4, 5, 0, -3}, // 0x65 'e' 102 | {214, 3, 5, 4, 0, -4}, // 0x66 'f' 103 | {216, 4, 5, 5, 0, -3}, // 0x67 'g' 104 | {219, 4, 5, 5, 0, -4}, // 0x68 'h' 105 | {222, 1, 4, 2, 0, -3}, // 0x69 'i' 106 | {223, 2, 5, 3, 0, -3}, // 0x6A 'j' 107 | {225, 4, 5, 5, 0, -4}, // 0x6B 'k' 108 | {228, 1, 5, 2, 0, -4}, // 0x6C 'l' 109 | {229, 5, 4, 6, 0, -3}, // 0x6D 'm' 110 | {232, 4, 4, 5, 0, -3}, // 0x6E 'n' 111 | {234, 4, 4, 5, 0, -3}, // 0x6F 'o' 112 | {236, 4, 5, 5, 0, -3}, // 0x70 'p' 113 | {239, 4, 5, 5, 0, -3}, // 0x71 'q' 114 | {242, 4, 4, 5, 0, -3}, // 0x72 'r' 115 | {244, 4, 4, 5, 0, -3}, // 0x73 's' 116 | {246, 5, 5, 6, 0, -4}, // 0x74 't' 117 | {250, 4, 4, 5, 0, -3}, // 0x75 'u' 118 | {252, 4, 4, 5, 0, -3}, // 0x76 'v' 119 | {254, 5, 4, 6, 0, -3}, // 0x77 'w' 120 | {257, 4, 4, 5, 0, -3}, // 0x78 'x' 121 | {259, 4, 5, 5, 0, -3}, // 0x79 'y' 122 | {262, 4, 4, 5, 0, -3}, // 0x7A 'z' 123 | {264, 3, 5, 4, 0, -4}, // 0x7B '{' 124 | {266, 1, 5, 2, 0, -4}, // 0x7C '|' 125 | {267, 3, 5, 4, 0, -4}, // 0x7D '}' 126 | {269, 5, 3, 6, 0, -3}}; // 0x7E '~' 127 | 128 | const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, 129 | (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; 130 | 131 | // Approx. 943 bytes 132 | -------------------------------------------------------------------------------- /Fonts/Picopixel.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // Picopixel by Sebastian Weber. A tiny font 5 | // with all characters within a 6 pixel height. 6 | 7 | const uint8_t PicopixelBitmaps[] PROGMEM = { 8 | 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, 9 | 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, 10 | 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, 11 | 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, 12 | 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, 13 | 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, 14 | 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, 15 | 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, 16 | 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, 17 | 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, 18 | 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, 19 | 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, 20 | 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, 21 | 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, 22 | 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; 23 | 24 | const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' 25 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 26 | {1, 3, 2, 4, 0, -4}, // 0x22 '"' 27 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 28 | {6, 3, 6, 4, 0, -4}, // 0x24 '$' 29 | {9, 3, 5, 4, 0, -4}, // 0x25 '%' 30 | {11, 4, 5, 5, 0, -4}, // 0x26 '&' 31 | {14, 1, 2, 2, 0, -4}, // 0x27 ''' 32 | {15, 2, 5, 3, 0, -4}, // 0x28 '(' 33 | {17, 2, 5, 3, 0, -4}, // 0x29 ')' 34 | {19, 3, 3, 4, 0, -3}, // 0x2A '*' 35 | {21, 3, 3, 4, 0, -3}, // 0x2B '+' 36 | {23, 2, 2, 3, 0, 0}, // 0x2C ',' 37 | {24, 3, 1, 4, 0, -2}, // 0x2D '-' 38 | {25, 1, 1, 2, 0, 0}, // 0x2E '.' 39 | {26, 3, 5, 4, 0, -4}, // 0x2F '/' 40 | {28, 3, 5, 4, 0, -4}, // 0x30 '0' 41 | {30, 2, 5, 3, 0, -4}, // 0x31 '1' 42 | {32, 3, 5, 4, 0, -4}, // 0x32 '2' 43 | {34, 3, 5, 4, 0, -4}, // 0x33 '3' 44 | {36, 3, 5, 4, 0, -4}, // 0x34 '4' 45 | {38, 3, 5, 4, 0, -4}, // 0x35 '5' 46 | {40, 3, 5, 4, 0, -4}, // 0x36 '6' 47 | {42, 3, 5, 4, 0, -4}, // 0x37 '7' 48 | {44, 3, 5, 4, 0, -4}, // 0x38 '8' 49 | {46, 3, 5, 4, 0, -4}, // 0x39 '9' 50 | {48, 1, 3, 2, 0, -3}, // 0x3A ':' 51 | {49, 2, 4, 3, 0, -3}, // 0x3B ';' 52 | {50, 2, 3, 3, 0, -3}, // 0x3C '<' 53 | {51, 3, 3, 4, 0, -3}, // 0x3D '=' 54 | {53, 2, 3, 3, 0, -3}, // 0x3E '>' 55 | {54, 3, 5, 4, 0, -4}, // 0x3F '?' 56 | {56, 3, 5, 4, 0, -4}, // 0x40 '@' 57 | {58, 3, 5, 4, 0, -4}, // 0x41 'A' 58 | {60, 3, 5, 4, 0, -4}, // 0x42 'B' 59 | {62, 3, 5, 4, 0, -4}, // 0x43 'C' 60 | {64, 3, 5, 4, 0, -4}, // 0x44 'D' 61 | {66, 3, 5, 4, 0, -4}, // 0x45 'E' 62 | {68, 3, 5, 4, 0, -4}, // 0x46 'F' 63 | {70, 3, 5, 4, 0, -4}, // 0x47 'G' 64 | {72, 3, 5, 4, 0, -4}, // 0x48 'H' 65 | {74, 1, 5, 2, 0, -4}, // 0x49 'I' 66 | {75, 3, 5, 4, 0, -4}, // 0x4A 'J' 67 | {77, 3, 5, 4, 0, -4}, // 0x4B 'K' 68 | {79, 3, 5, 4, 0, -4}, // 0x4C 'L' 69 | {81, 5, 5, 6, 0, -4}, // 0x4D 'M' 70 | {85, 4, 5, 5, 0, -4}, // 0x4E 'N' 71 | {88, 3, 5, 4, 0, -4}, // 0x4F 'O' 72 | {90, 3, 5, 4, 0, -4}, // 0x50 'P' 73 | {92, 3, 6, 4, 0, -4}, // 0x51 'Q' 74 | {95, 3, 5, 4, 0, -4}, // 0x52 'R' 75 | {97, 3, 5, 4, 0, -4}, // 0x53 'S' 76 | {99, 3, 5, 4, 0, -4}, // 0x54 'T' 77 | {101, 3, 5, 4, 0, -4}, // 0x55 'U' 78 | {103, 3, 5, 4, 0, -4}, // 0x56 'V' 79 | {105, 5, 5, 6, 0, -4}, // 0x57 'W' 80 | {109, 3, 5, 4, 0, -4}, // 0x58 'X' 81 | {111, 3, 5, 4, 0, -4}, // 0x59 'Y' 82 | {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' 83 | {115, 2, 5, 3, 0, -4}, // 0x5B '[' 84 | {117, 3, 5, 4, 0, -4}, // 0x5C '\' 85 | {119, 2, 5, 3, 0, -4}, // 0x5D ']' 86 | {121, 3, 2, 4, 0, -4}, // 0x5E '^' 87 | {122, 4, 1, 4, 0, 1}, // 0x5F '_' 88 | {123, 2, 2, 3, 0, -4}, // 0x60 '`' 89 | {124, 3, 4, 4, 0, -3}, // 0x61 'a' 90 | {126, 3, 5, 4, 0, -4}, // 0x62 'b' 91 | {128, 3, 3, 4, 0, -2}, // 0x63 'c' 92 | {130, 3, 5, 4, 0, -4}, // 0x64 'd' 93 | {132, 3, 4, 4, 0, -3}, // 0x65 'e' 94 | {134, 2, 5, 3, 0, -4}, // 0x66 'f' 95 | {136, 3, 5, 4, 0, -3}, // 0x67 'g' 96 | {138, 3, 5, 4, 0, -4}, // 0x68 'h' 97 | {140, 1, 5, 2, 0, -4}, // 0x69 'i' 98 | {141, 2, 6, 3, 0, -4}, // 0x6A 'j' 99 | {143, 3, 5, 4, 0, -4}, // 0x6B 'k' 100 | {145, 2, 5, 3, 0, -4}, // 0x6C 'l' 101 | {147, 5, 3, 6, 0, -2}, // 0x6D 'm' 102 | {149, 3, 3, 4, 0, -2}, // 0x6E 'n' 103 | {151, 3, 3, 4, 0, -2}, // 0x6F 'o' 104 | {153, 3, 4, 4, 0, -2}, // 0x70 'p' 105 | {155, 3, 4, 4, 0, -2}, // 0x71 'q' 106 | {157, 2, 3, 3, 0, -2}, // 0x72 'r' 107 | {158, 3, 4, 4, 0, -3}, // 0x73 's' 108 | {160, 2, 5, 3, 0, -4}, // 0x74 't' 109 | {162, 3, 3, 4, 0, -2}, // 0x75 'u' 110 | {164, 3, 3, 4, 0, -2}, // 0x76 'v' 111 | {166, 5, 3, 6, 0, -2}, // 0x77 'w' 112 | {168, 3, 3, 4, 0, -2}, // 0x78 'x' 113 | {170, 3, 4, 4, 0, -2}, // 0x79 'y' 114 | {172, 3, 4, 4, 0, -3}, // 0x7A 'z' 115 | {174, 3, 5, 4, 0, -4}, // 0x7B '{' 116 | {176, 1, 6, 2, 0, -4}, // 0x7C '|' 117 | {177, 3, 5, 4, 0, -4}, // 0x7D '}' 118 | {179, 4, 2, 5, 0, -3}}; // 0x7E '~' 119 | 120 | const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, 121 | (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; 122 | 123 | // Approx. 852 bytes 124 | -------------------------------------------------------------------------------- /Fonts/Tiny3x3a2pt7b.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | /** 5 | ** The FontStruction “Tiny3x3a” 6 | ** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is 7 | ** licensed under a Creative Commons Attribution Non-commercial Share Alike 8 | *license 9 | ** (http://creativecommons.org/licenses/by-nc-sa/3.0/). 10 | ** “Tiny3x3a” was originally cloned (copied) from the FontStruction 11 | ** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant 12 | ** Grant, which is licensed under a Creative Commons Attribution Non-commercial 13 | ** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). 14 | * 15 | * Converted by eadmaster with fontconvert 16 | **/ 17 | 18 | const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { 19 | 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, 20 | 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, 21 | 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, 22 | 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, 23 | 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, 24 | 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, 25 | 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, 26 | 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, 27 | 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, 28 | 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, 29 | 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, 30 | 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; 31 | 32 | const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { 33 | {0, 0, 0, 4, 0, 1}, // 0x20 ' ' 34 | {0, 1, 2, 3, 1, -2}, // 0x21 '!' 35 | {1, 3, 2, 4, 0, -2}, // 0x22 '"' 36 | {2, 3, 3, 4, 0, -2}, // 0x23 '#' 37 | {4, 3, 3, 4, 0, -2}, // 0x24 '$' 38 | {6, 3, 3, 4, 0, -2}, // 0x25 '%' 39 | {8, 3, 3, 4, 0, -2}, // 0x26 '&' 40 | {10, 1, 1, 3, 1, -2}, // 0x27 ''' 41 | {11, 2, 3, 3, 0, -2}, // 0x28 '(' 42 | {12, 2, 3, 4, 1, -2}, // 0x29 ')' 43 | {13, 2, 2, 4, 1, -2}, // 0x2A '*' 44 | {14, 3, 3, 4, 0, -2}, // 0x2B '+' 45 | {16, 1, 2, 2, 0, 0}, // 0x2C ',' 46 | {17, 3, 1, 4, 0, -1}, // 0x2D '-' 47 | {18, 1, 1, 2, 0, 0}, // 0x2E '.' 48 | {19, 3, 3, 4, 0, -2}, // 0x2F '/' 49 | {21, 3, 3, 4, 0, -2}, // 0x30 '0' 50 | {23, 2, 3, 3, 0, -2}, // 0x31 '1' 51 | {24, 3, 3, 4, 0, -2}, // 0x32 '2' 52 | {26, 3, 3, 4, 0, -2}, // 0x33 '3' 53 | {28, 3, 3, 4, 0, -2}, // 0x34 '4' 54 | {30, 3, 3, 4, 0, -2}, // 0x35 '5' 55 | {32, 3, 3, 4, 0, -2}, // 0x36 '6' 56 | {34, 3, 3, 4, 0, -2}, // 0x37 '7' 57 | {36, 3, 3, 4, 0, -2}, // 0x38 '8' 58 | {38, 3, 3, 4, 0, -2}, // 0x39 '9' 59 | {40, 1, 3, 3, 1, -2}, // 0x3A ':' 60 | {41, 2, 3, 3, 0, -1}, // 0x3B ';' 61 | {42, 2, 3, 3, 0, -2}, // 0x3C '<' 62 | {43, 3, 3, 4, 0, -2}, // 0x3D '=' 63 | {45, 2, 3, 4, 1, -2}, // 0x3E '>' 64 | {46, 2, 3, 4, 1, -2}, // 0x3F '?' 65 | {47, 3, 3, 4, 0, -2}, // 0x40 '@' 66 | {49, 3, 3, 4, 0, -2}, // 0x41 'A' 67 | {51, 3, 3, 4, 0, -2}, // 0x42 'B' 68 | {53, 3, 3, 4, 0, -2}, // 0x43 'C' 69 | {55, 3, 3, 4, 0, -2}, // 0x44 'D' 70 | {57, 3, 3, 4, 0, -2}, // 0x45 'E' 71 | {59, 3, 3, 4, 0, -2}, // 0x46 'F' 72 | {61, 3, 3, 4, 0, -2}, // 0x47 'G' 73 | {63, 3, 3, 4, 0, -2}, // 0x48 'H' 74 | {65, 1, 3, 3, 1, -2}, // 0x49 'I' 75 | {66, 3, 3, 4, 0, -2}, // 0x4A 'J' 76 | {68, 3, 3, 4, 0, -2}, // 0x4B 'K' 77 | {70, 3, 3, 4, 0, -2}, // 0x4C 'L' 78 | {72, 3, 3, 4, 0, -2}, // 0x4D 'M' 79 | {74, 3, 3, 4, 0, -2}, // 0x4E 'N' 80 | {76, 3, 3, 4, 0, -2}, // 0x4F 'O' 81 | {78, 3, 3, 4, 0, -2}, // 0x50 'P' 82 | {80, 3, 3, 4, 0, -2}, // 0x51 'Q' 83 | {82, 3, 3, 4, 0, -2}, // 0x52 'R' 84 | {84, 3, 3, 4, 0, -2}, // 0x53 'S' 85 | {86, 3, 3, 4, 0, -2}, // 0x54 'T' 86 | {88, 3, 3, 4, 0, -2}, // 0x55 'U' 87 | {90, 3, 3, 4, 0, -2}, // 0x56 'V' 88 | {92, 3, 3, 4, 0, -2}, // 0x57 'W' 89 | {94, 3, 3, 4, 0, -2}, // 0x58 'X' 90 | {96, 3, 3, 4, 0, -2}, // 0x59 'Y' 91 | {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' 92 | {100, 2, 3, 3, 0, -2}, // 0x5B '[' 93 | {101, 3, 3, 4, 0, -2}, // 0x5C '\' 94 | {103, 2, 3, 4, 1, -2}, // 0x5D ']' 95 | {104, 3, 2, 4, 0, -2}, // 0x5E '^' 96 | {105, 3, 1, 4, 0, 0}, // 0x5F '_' 97 | {106, 2, 2, 3, 0, -2}, // 0x60 '`' 98 | {107, 2, 2, 3, 0, -1}, // 0x61 'a' 99 | {108, 2, 3, 3, 0, -2}, // 0x62 'b' 100 | {109, 2, 2, 3, 0, -1}, // 0x63 'c' 101 | {110, 2, 3, 3, 0, -2}, // 0x64 'd' 102 | {111, 2, 2, 3, 0, -1}, // 0x65 'e' 103 | {112, 2, 3, 3, 0, -2}, // 0x66 'f' 104 | {113, 2, 3, 3, 0, -1}, // 0x67 'g' 105 | {114, 2, 3, 3, 0, -2}, // 0x68 'h' 106 | {115, 1, 2, 2, 0, -1}, // 0x69 'i' 107 | {116, 2, 3, 3, 0, -1}, // 0x6A 'j' 108 | {117, 3, 3, 4, 0, -2}, // 0x6B 'k' 109 | {119, 2, 3, 3, 0, -2}, // 0x6C 'l' 110 | {120, 3, 2, 4, 0, -1}, // 0x6D 'm' 111 | {121, 3, 2, 4, 0, -1}, // 0x6E 'n' 112 | {122, 2, 2, 3, 0, -1}, // 0x6F 'o' 113 | {123, 2, 3, 3, 0, -1}, // 0x70 'p' 114 | {124, 2, 3, 3, 0, -1}, // 0x71 'q' 115 | {125, 2, 2, 3, 0, -1}, // 0x72 'r' 116 | {126, 2, 2, 3, 0, -1}, // 0x73 's' 117 | {127, 3, 3, 4, 0, -2}, // 0x74 't' 118 | {129, 3, 2, 4, 0, -1}, // 0x75 'u' 119 | {130, 3, 2, 4, 0, -1}, // 0x76 'v' 120 | {131, 3, 2, 4, 0, -1}, // 0x77 'w' 121 | {132, 2, 2, 3, 0, -1}, // 0x78 'x' 122 | {133, 3, 3, 4, 0, -1}, // 0x79 'y' 123 | {135, 2, 2, 3, 0, -1}, // 0x7A 'z' 124 | {136, 3, 3, 4, 0, -2}, // 0x7B '{' 125 | {138, 1, 4, 3, 1, -2}, // 0x7C '|' 126 | {139, 3, 3, 4, 0, -2}, // 0x7D '}' 127 | {141, 3, 2, 4, 0, -2}}; // 0x7E '~' 128 | 129 | const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, 130 | (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, 131 | 0x7E, 4}; 132 | 133 | // Approx. 814 bytes 134 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Adafruit GFX Library ![Build Status](https://github.com/adafruit/Adafruit-GFX-Library/workflows/Arduino%20Library%20CI/badge.svg) 2 | 3 | This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions). 4 | 5 | Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! 6 | 7 | Written by Limor Fried/Ladyada for Adafruit Industries. 8 | BSD license, check license.txt for more information. 9 | All text above must be included in any redistribution. 10 | 11 | Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your ArduinoSketchFolder/Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. 12 | 13 | **You will also need to install the latest Adafruit BusIO library.** Search for "Adafruit BusIO" in the library manager, or install by hand from https://github.com/adafruit/Adafruit_BusIO 14 | 15 | # Useful Resources 16 | 17 | - Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code 18 | 19 | - drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 20 | 21 | - 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, \#include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font. 22 | 23 | - 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX header format. 24 | 25 | - You can also use [this GFX Font Customiser tool](https://github.com/tchapi/Adafruit-GFX-Font-Customiser) (_web version [here](https://tchapi.github.io/Adafruit-GFX-Font-Customiser/)_) to customize or correct the output from [fontconvert](https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert), and create fonts with only a subset of characters to optimize size. 26 | 27 | --- 28 | 29 | ### Roadmap 30 | 31 | The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add progressively more ungainly workarounds. 32 | 33 | **We are grateful for everyone's contributions, but pull requests for the following will NOT be merged:** 34 | 35 | - Additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is. This also creates liabilities for tools and documentation. What's there isn't perfect but it does the job. 36 | 37 | - Additional or incompatible bitmap formats, for similar reasons. It's getting messy. 38 | 39 | - Adding background color to custom fonts to erase prior screen contents. The ONLY acceptable methods are to clear the area with a filled rect, or (to avoid flicker) draw text into a GFXcanvas1 and copy to screen with drawBitmap() w/background color. This is on purpose and by design. We've discussed this. Glyphs can overlap. 40 | 41 | - Scrolling, whether hardware- or software-based. Such implementations tend to rely on hardware-specific features (not universally available), read access to the screen's framebuffer (ditto) and/or the addition of virtual functions in GFX which them must be added in *every* subclass, of which there are many. The GFX API is largely "set" at this point and this is just a limitation we live with now. 42 | 43 | - Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. clang-format will be the final arbiter. 44 | 45 | - Please no more pentagram-drawing PRs. Any oddly-specific drawing functions can go in your own code and aren't helpful in a library context. 46 | 47 | If you *must* have one of these features, consider creating a fork with the features required for your project...it's easy to keep synced with the upstream code. 48 | -------------------------------------------------------------------------------- /component.mk: -------------------------------------------------------------------------------- 1 | COMPONENT_ADD_INCLUDEDIRS = . 2 | -------------------------------------------------------------------------------- /examples/GFXcanvas/GFXcanvas.ino: -------------------------------------------------------------------------------- 1 | /*** 2 | This example is intended to demonstrate the use of getPixel() versus 3 | getRawPixel() and the fast horizontal and vertical drawing routines 4 | in the GFXcanvas family of classes, 5 | 6 | When using the GFXcanvas* classes as the image buffer for a hardware driver, 7 | there is a need to get individual pixel color values at given physical 8 | coordinates. Rather than subclasses or client classes call getBuffer() and 9 | reinterpret the byte layout of the buffer, two methods are added to each of the 10 | GFXcanvas* classes that allow fetching of specific pixel values. 11 | 12 | * getPixel(x, y) : Gets the pixel color value at the rotated coordinates in 13 | the image. 14 | * getRawPixel(x,y) : Gets the pixel color value at the unrotated coordinates 15 | in the image. This is useful for getting the pixel value to map to a hardware 16 | pixel location. This method was made protected as only the hardware driver 17 | should be accessing it. 18 | 19 | The GFXcanvas*SerialDemo classes in this example will print to Serial the 20 | contents of the underlying GFXcanvas buffer in both the current rotated layout 21 | and the underlying physical layout. 22 | ***/ 23 | 24 | #include "GFXcanvasSerialDemo.h" 25 | #include 26 | 27 | void setup() { 28 | Serial.begin(115200); 29 | 30 | // first create a rectangular GFXcanvas8SerialDemo object and draw to it 31 | GFXcanvas8SerialDemo demo8(21, 11); 32 | 33 | demo8.fillScreen(0x00); 34 | demo8.setRotation(1); // now canvas is 11x21 35 | demo8.fillCircle(5, 10, 5, 0xAA); 36 | demo8.writeFastHLine(0, 0, 11, 0x11); 37 | demo8.writeFastHLine(10, 10, -11, 0x22); 38 | demo8.writeFastHLine(0, 20, 11, 0x33); 39 | demo8.writeFastVLine(0, 0, 21, 0x44); 40 | demo8.writeFastVLine(10, 20, -21, 0x55); 41 | 42 | Serial.println("Demonstrating GFXcanvas rotated and raw pixels.\n"); 43 | 44 | // print it out rotated 45 | 46 | Serial.println("The canvas's content in the rotation of '0':\n"); 47 | demo8.setRotation(0); 48 | demo8.print(true); 49 | Serial.println("\n"); 50 | 51 | Serial.println("The canvas's content in the rotation of '1' (which is what " 52 | "it was drawn in):\n"); 53 | demo8.setRotation(1); 54 | demo8.print(true); 55 | Serial.println("\n"); 56 | 57 | Serial.println("The canvas's content in the rotation of '2':\n"); 58 | demo8.setRotation(2); 59 | demo8.print(true); 60 | Serial.println("\n"); 61 | 62 | Serial.println("The canvas's content in the rotation of '3':\n"); 63 | demo8.setRotation(3); 64 | demo8.print(true); 65 | Serial.println("\n"); 66 | 67 | // print it out unrotated 68 | Serial.println("The canvas's content in it's raw, physical layout:\n"); 69 | demo8.print(false); 70 | Serial.println("\n"); 71 | 72 | // Demonstrate GFXcanvas1SerialDemo 73 | 74 | GFXcanvas1SerialDemo demo1(21, 11); 75 | demo1.fillScreen(0); 76 | demo1.setRotation(0); 77 | demo1.writeFastHLine(0, 0, 9, 1); 78 | demo1.setRotation(1); 79 | demo1.writeFastHLine(0, 0, 9, 1); 80 | demo1.setRotation(2); 81 | demo1.writeFastHLine(0, 0, 9, 1); 82 | demo1.setRotation(3); 83 | demo1.writeFastHLine(0, 0, 9, 1); 84 | demo1.setRotation(1); 85 | demo1.fillRect(3, 8, 5, 5, 1); 86 | 87 | Serial.println("\nThe GFXcanvas1 raw content after drawing a fast horizontal " 88 | "line in each rotation:\n"); 89 | demo1.print(false); 90 | Serial.println("\n"); 91 | 92 | // Demonstrate GFXcanvas16SerialDemo 93 | 94 | GFXcanvas16SerialDemo demo16(21, 11); 95 | demo16.fillScreen(0); 96 | demo16.setRotation(0); 97 | demo16.writeFastHLine(0, 0, 9, 0x1111); 98 | demo16.setRotation(1); 99 | demo16.writeFastHLine(0, 0, 9, 0x2222); 100 | demo16.setRotation(2); 101 | demo16.writeFastHLine(0, 0, 9, 0x3333); 102 | demo16.setRotation(3); 103 | demo16.writeFastHLine(0, 0, 9, 0x4444); 104 | demo16.setRotation(1); 105 | demo16.fillRect(3, 8, 5, 5, 0x8888); 106 | 107 | Serial.println("\nThe GFXcanvas16 raw content after drawing a fast " 108 | "horizontal line in each rotation:\n"); 109 | demo16.print(false); 110 | Serial.println("\n"); 111 | } 112 | 113 | void loop() {} 114 | -------------------------------------------------------------------------------- /examples/GFXcanvas/GFXcanvasSerialDemo.cpp: -------------------------------------------------------------------------------- 1 | #include "GFXcanvasSerialDemo.h" 2 | #include 3 | 4 | GFXcanvas1SerialDemo::GFXcanvas1SerialDemo(uint16_t w, uint16_t h) 5 | : GFXcanvas1(w, h) {} 6 | 7 | void GFXcanvas1SerialDemo::print(bool rotated) { 8 | char pixel_buffer[8]; 9 | uint16_t width, height; 10 | 11 | if (rotated) { 12 | width = this->width(); 13 | height = this->height(); 14 | } else { 15 | width = this->WIDTH; 16 | height = this->HEIGHT; 17 | } 18 | 19 | for (uint16_t y = 0; y < height; y++) { 20 | for (uint16_t x = 0; x < width; x++) { 21 | bool pixel; 22 | if (rotated) { 23 | pixel = this->getPixel(x, y); 24 | } else { 25 | pixel = this->getRawPixel(x, y); 26 | } 27 | sprintf(pixel_buffer, " %d", pixel); 28 | Serial.print(pixel_buffer); 29 | } 30 | Serial.print("\n"); 31 | } 32 | } 33 | 34 | GFXcanvas8SerialDemo::GFXcanvas8SerialDemo(uint16_t w, uint16_t h) 35 | : GFXcanvas8(w, h) {} 36 | 37 | void GFXcanvas8SerialDemo::print(bool rotated) { 38 | char pixel_buffer[8]; 39 | uint16_t width, height; 40 | 41 | if (rotated) { 42 | width = this->width(); 43 | height = this->height(); 44 | } else { 45 | width = this->WIDTH; 46 | height = this->HEIGHT; 47 | } 48 | 49 | for (uint16_t y = 0; y < height; y++) { 50 | for (uint16_t x = 0; x < width; x++) { 51 | uint8_t pixel; 52 | if (rotated) { 53 | pixel = this->getPixel(x, y); 54 | } else { 55 | pixel = this->getRawPixel(x, y); 56 | } 57 | sprintf(pixel_buffer, " %02x", pixel); 58 | Serial.print(pixel_buffer); 59 | } 60 | Serial.print("\n"); 61 | } 62 | } 63 | 64 | GFXcanvas16SerialDemo::GFXcanvas16SerialDemo(uint16_t w, uint16_t h) 65 | : GFXcanvas16(w, h) {} 66 | 67 | void GFXcanvas16SerialDemo::print(bool rotated) { 68 | char pixel_buffer[8]; 69 | uint16_t width, height; 70 | 71 | if (rotated) { 72 | width = this->width(); 73 | height = this->height(); 74 | } else { 75 | width = this->WIDTH; 76 | height = this->HEIGHT; 77 | } 78 | 79 | for (uint16_t y = 0; y < height; y++) { 80 | for (uint16_t x = 0; x < width; x++) { 81 | uint16_t pixel; 82 | if (rotated) { 83 | pixel = this->getPixel(x, y); 84 | } else { 85 | pixel = this->getRawPixel(x, y); 86 | } 87 | sprintf(pixel_buffer, " %04x", pixel); 88 | Serial.print(pixel_buffer); 89 | } 90 | Serial.print("\n"); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /examples/GFXcanvas/GFXcanvasSerialDemo.h: -------------------------------------------------------------------------------- 1 | #ifndef __GFXcanvasSerialDemo__ 2 | #define __GFXcanvasSerialDemo__ 3 | #include 4 | 5 | /**********************************************************************/ 6 | /*! 7 | @brief Demonstrates using the GFXconvas classes as the backing store 8 | for a device driver. 9 | */ 10 | /**********************************************************************/ 11 | class GFXcanvas1SerialDemo : public GFXcanvas1 { 12 | public: 13 | GFXcanvas1SerialDemo(uint16_t w, uint16_t h); 14 | 15 | /**********************************************************************/ 16 | /*! 17 | @brief Prints the current contents of the canvas to Serial 18 | @param rotated true to print according to the current GFX rotation, 19 | false to print to the native rotation of the canvas (or unrotated). 20 | */ 21 | /**********************************************************************/ 22 | void print(bool rotated); 23 | }; 24 | 25 | /**********************************************************************/ 26 | /*! 27 | @brief Demonstrates using the GFXconvas classes as the backing store 28 | for a device driver. 29 | */ 30 | /**********************************************************************/ 31 | class GFXcanvas8SerialDemo : public GFXcanvas8 { 32 | public: 33 | GFXcanvas8SerialDemo(uint16_t w, uint16_t h); 34 | 35 | /**********************************************************************/ 36 | /*! 37 | @brief Prints the current contents of the canvas to Serial 38 | @param rotated true to print according to the current GFX rotation, 39 | false to print to the native rotation of the canvas (or unrotated). 40 | */ 41 | /**********************************************************************/ 42 | void print(bool rotated); 43 | }; 44 | 45 | /**********************************************************************/ 46 | /*! 47 | @brief Demonstrates using the GFXconvas classes as the backing store 48 | for a device driver. 49 | */ 50 | /**********************************************************************/ 51 | class GFXcanvas16SerialDemo : public GFXcanvas16 { 52 | public: 53 | GFXcanvas16SerialDemo(uint16_t w, uint16_t h); 54 | 55 | /**********************************************************************/ 56 | /*! 57 | @brief Prints the current contents of the canvas to Serial 58 | @param rotated true to print according to the current GFX rotation, 59 | false to print to the native rotation of the canvas (or unrotated). 60 | */ 61 | /**********************************************************************/ 62 | void print(bool rotated); 63 | }; 64 | 65 | #endif // __GFXcanvasSerialDemo__ 66 | -------------------------------------------------------------------------------- /examples/mock_ili9341/mock_ili9341.ino: -------------------------------------------------------------------------------- 1 | /*************************************************** 2 | This is our GFX example for the Adafruit ILI9341 Breakout and Shield 3 | ----> http://www.adafruit.com/products/1651 4 | 5 | Check out the links above for our tutorials and wiring diagrams 6 | These displays use SPI to communicate, 4 or 5 pins are required to 7 | interface (RST is optional) 8 | Adafruit invests time and resources providing this open source code, 9 | please support Adafruit and open-source hardware by purchasing 10 | products from Adafruit! 11 | 12 | Written by Limor Fried/Ladyada for Adafruit Industries. 13 | MIT license, all text above must be included in any redistribution 14 | ****************************************************/ 15 | 16 | 17 | #include "SPI.h" 18 | #include "Adafruit_GFX.h" 19 | #include "Adafruit_ILI9341.h" 20 | 21 | // For the Adafruit shield, these are the default. 22 | #define TFT_DC 9 23 | #define TFT_CS 10 24 | 25 | // Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC 26 | Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); 27 | // If using the breakout, change pins as desired 28 | //Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); 29 | 30 | void setup() { 31 | Serial.begin(9600); 32 | Serial.println("ILI9341 Test!"); 33 | 34 | tft.begin(); 35 | 36 | // read diagnostics (optional but can help debug problems) 37 | uint8_t x = tft.readcommand8(ILI9341_RDMODE); 38 | Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); 39 | x = tft.readcommand8(ILI9341_RDMADCTL); 40 | Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); 41 | x = tft.readcommand8(ILI9341_RDPIXFMT); 42 | Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); 43 | x = tft.readcommand8(ILI9341_RDIMGFMT); 44 | Serial.print("Image Format: 0x"); Serial.println(x, HEX); 45 | x = tft.readcommand8(ILI9341_RDSELFDIAG); 46 | Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); 47 | 48 | Serial.println(F("Benchmark Time (microseconds)")); 49 | delay(10); 50 | Serial.print(F("Screen fill ")); 51 | Serial.println(testFillScreen()); 52 | delay(500); 53 | 54 | Serial.print(F("Text ")); 55 | Serial.println(testText()); 56 | delay(3000); 57 | 58 | Serial.print(F("Lines ")); 59 | Serial.println(testLines(ILI9341_CYAN)); 60 | delay(500); 61 | 62 | Serial.print(F("Horiz/Vert Lines ")); 63 | Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); 64 | delay(500); 65 | 66 | Serial.print(F("Rectangles (outline) ")); 67 | Serial.println(testRects(ILI9341_GREEN)); 68 | delay(500); 69 | 70 | Serial.print(F("Rectangles (filled) ")); 71 | Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); 72 | delay(500); 73 | 74 | Serial.print(F("Circles (filled) ")); 75 | Serial.println(testFilledCircles(10, ILI9341_MAGENTA)); 76 | 77 | Serial.print(F("Circles (outline) ")); 78 | Serial.println(testCircles(10, ILI9341_WHITE)); 79 | delay(500); 80 | 81 | Serial.print(F("Triangles (outline) ")); 82 | Serial.println(testTriangles()); 83 | delay(500); 84 | 85 | Serial.print(F("Triangles (filled) ")); 86 | Serial.println(testFilledTriangles()); 87 | delay(500); 88 | 89 | Serial.print(F("Rounded rects (outline) ")); 90 | Serial.println(testRoundRects()); 91 | delay(500); 92 | 93 | Serial.print(F("Rounded rects (filled) ")); 94 | Serial.println(testFilledRoundRects()); 95 | delay(500); 96 | 97 | Serial.println(F("Done!")); 98 | 99 | } 100 | 101 | 102 | void loop(void) { 103 | for(uint8_t rotation=0; rotation<4; rotation++) { 104 | tft.setRotation(rotation); 105 | testText(); 106 | delay(1000); 107 | } 108 | } 109 | 110 | unsigned long testFillScreen() { 111 | unsigned long start = micros(); 112 | tft.fillScreen(ILI9341_BLACK); 113 | yield(); 114 | tft.fillScreen(ILI9341_RED); 115 | yield(); 116 | tft.fillScreen(ILI9341_GREEN); 117 | yield(); 118 | tft.fillScreen(ILI9341_BLUE); 119 | yield(); 120 | tft.fillScreen(ILI9341_BLACK); 121 | yield(); 122 | return micros() - start; 123 | } 124 | 125 | unsigned long testText() { 126 | tft.fillScreen(ILI9341_BLACK); 127 | unsigned long start = micros(); 128 | tft.setCursor(0, 0); 129 | tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); 130 | tft.println("Hello World!"); 131 | tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); 132 | tft.println(1234.56); 133 | tft.setTextColor(ILI9341_RED); tft.setTextSize(3); 134 | tft.println(0xDEADBEEF, HEX); 135 | tft.println(); 136 | tft.setTextColor(ILI9341_GREEN); 137 | tft.setTextSize(5); 138 | tft.println("Groop"); 139 | tft.setTextSize(2); 140 | tft.println("I implore thee,"); 141 | tft.setTextSize(1); 142 | tft.println("my foonting turlingdromes."); 143 | tft.println("And hooptiously drangle me"); 144 | tft.println("with crinkly bindlewurdles,"); 145 | tft.println("Or I will rend thee"); 146 | tft.println("in the gobberwarts"); 147 | tft.println("with my blurglecruncheon,"); 148 | tft.println("see if I don't!"); 149 | return micros() - start; 150 | } 151 | 152 | unsigned long testLines(uint16_t color) { 153 | unsigned long start, t; 154 | int x1, y1, x2, y2, 155 | w = tft.width(), 156 | h = tft.height(); 157 | 158 | tft.fillScreen(ILI9341_BLACK); 159 | yield(); 160 | 161 | x1 = y1 = 0; 162 | y2 = h - 1; 163 | start = micros(); 164 | for(x2=0; x20; i-=6) { 249 | i2 = i / 2; 250 | start = micros(); 251 | tft.fillRect(cx-i2, cy-i2, i, i, color1); 252 | t += micros() - start; 253 | // Outlines are not included in timing results 254 | tft.drawRect(cx-i2, cy-i2, i, i, color2); 255 | yield(); 256 | } 257 | 258 | return t; 259 | } 260 | 261 | unsigned long testFilledCircles(uint8_t radius, uint16_t color) { 262 | unsigned long start; 263 | int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; 264 | 265 | tft.fillScreen(ILI9341_BLACK); 266 | start = micros(); 267 | for(x=radius; x10; i-=5) { 321 | start = micros(); 322 | tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, 323 | tft.color565(0, i*10, i*10)); 324 | t += micros() - start; 325 | tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, 326 | tft.color565(i*10, i*10, 0)); 327 | yield(); 328 | } 329 | 330 | return t; 331 | } 332 | 333 | unsigned long testRoundRects() { 334 | unsigned long start; 335 | int w, i, i2, 336 | cx = tft.width() / 2 - 1, 337 | cy = tft.height() / 2 - 1; 338 | 339 | tft.fillScreen(ILI9341_BLACK); 340 | w = min(tft.width(), tft.height()); 341 | start = micros(); 342 | for(i=0; i20; i-=6) { 359 | i2 = i / 2; 360 | tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); 361 | yield(); 362 | } 363 | 364 | return micros() - start; 365 | } 366 | -------------------------------------------------------------------------------- /fontconvert/Makefile: -------------------------------------------------------------------------------- 1 | all: fontconvert 2 | 3 | CC = gcc 4 | CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include 5 | LIBS = -lfreetype 6 | 7 | fontconvert: fontconvert.c 8 | $(CC) $(CFLAGS) $< $(LIBS) -o $@ 9 | strip $@ 10 | 11 | clean: 12 | rm -f fontconvert 13 | -------------------------------------------------------------------------------- /fontconvert/bdf2adafruit.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python2 2 | 3 | # MIT License. 4 | 5 | # Copyright (c) 2016 William Skellenger 6 | # 7 | # Permission is hereby granted, free of charge, to any person obtaining a 8 | # copy of this software and associated documentation files (the "Software"), 9 | # to deal in the Software without restriction, including without limitation 10 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 | # and/or sell copies of the Software, and to permit persons to whom the 12 | # Software is furnished to do so, subject to the following conditions: 13 | # 14 | # The above copyright notice and this permission notice shall be included 15 | # in all copies or substantial portions of the Software. 16 | # 17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 | # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 23 | # IN THE SOFTWARE. 24 | 25 | # This small script is designed to mostly take a BDF file and convert it to a 26 | # format that can largely be cut/pasted as an Adafruit-format font. 27 | # It was written in an hour or so and did what I needed it to do. 28 | # I used it for one file. Maybe it bombs on other files. 29 | # William Skellenger, Feb 2016 30 | # (email: williamj@skellenger.net) 31 | # (Twitter: @skelliam) 32 | # 33 | # Usage: bdf2adafruit.py > out.txt 34 | # 35 | # Once you have out.txt you can cut/paste the contents into a new font 36 | # header file as part of the Adafruit GFX library. 37 | 38 | import sys 39 | 40 | myfile = open(sys.argv[1]) 41 | 42 | processing = 0 43 | getting_rows = 0 44 | 45 | chars = [] 46 | bitmapData = [] 47 | 48 | class Glyph: 49 | encoding = -1 50 | rows = [] 51 | comment = "" 52 | offset = -1 53 | width = 0 54 | height = 0 55 | advance = 0 56 | xoffs = 0 57 | yoffs = 0 58 | def __init__(self, comment): 59 | self.comment = comment 60 | self.rows = [] 61 | 62 | for line in myfile.readlines(): 63 | if 'STARTCHAR' in line: 64 | processing = 1 65 | vals = line.split() 66 | g = Glyph(vals[1]) 67 | #g.width = 8 #in this example always 8 bits wide 68 | elif 'ENDCHAR' in line: 69 | dataByteCompressed = 0 70 | dataByteCompressedIndex = 8 71 | g.height = len(bitmapData) 72 | for value in bitmapData: 73 | bitIndex = 0 74 | while bitIndex < g.width: 75 | bit = (value >> (7 - bitIndex)) & 0x01 76 | dataByteCompressed |= bit << (dataByteCompressedIndex - 1) 77 | dataByteCompressedIndex -= 1 78 | if dataByteCompressedIndex == 0: 79 | dataByteCompressedIndex = 8 80 | g.rows.append(dataByteCompressed) 81 | dataByteCompressed = 0 82 | bitIndex += 1 83 | if 8 != dataByteCompressedIndex: 84 | g.rows.append(dataByteCompressed) 85 | 86 | chars.append(g) #append the completed glyph into list 87 | processing = 0 88 | getting_rows = 0 89 | bitmapData.clear() 90 | 91 | if processing: 92 | if 'ENCODING' in line: 93 | vals = line.split() 94 | g.encoding = int(vals[1]) 95 | elif 'DWIDTH' in line: 96 | vals = line.split() 97 | #g.advance = int(vals[1]) #cursor advance seems to be the first number in DWIDTH 98 | elif 'BBX' in line: 99 | vals = line.split() 100 | g.xoffs = 0 101 | g.yoffs = -(int(vals[2]) + int(vals[4])) 102 | g.advance = (int(vals[1]) + 1) #x bounding box + 1 103 | g.width = int(vals[1]) 104 | elif 'BITMAP' in line: 105 | getting_rows = 1 106 | elif getting_rows: 107 | #g.rows.append(int(line, 16)) #append pixel rows into glyph's list of rows 108 | bitmapData.append(int(line, 16)) 109 | 110 | print 111 | 112 | i=0 113 | for char in chars: 114 | char.offset = i 115 | print("\t", end='') 116 | num = 3 117 | for row in char.rows: 118 | if num != 3: 119 | print(" ", end = '') 120 | print("0x%02X," %(row), end = ''), 121 | i+=1 122 | num-=1 123 | 124 | if num == 1: 125 | print("\t\t", end = '') 126 | if num == 2: 127 | print("\t\t\t", end = '') 128 | print("\t/* 0x%02X %s */" %(char.encoding, char.comment)) 129 | 130 | for char in chars: 131 | # offset, bit-width, bit-height, advance cursor, x offset, y offset 132 | print("\t{ %d, %d, %d, %d, %d, %d }, /* 0x%02X %s */" %( 133 | char.offset, char.width, char.height, 134 | char.advance, char.xoffs, char.yoffs, 135 | char.encoding, char.comment)) 136 | -------------------------------------------------------------------------------- /fontconvert/fontconvert.c: -------------------------------------------------------------------------------- 1 | /* 2 | TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' 3 | Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. 4 | 5 | NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing 6 | fonts to be used with the Adafruit_GFX Arduino library. 7 | 8 | For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: 9 | ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h 10 | 11 | REQUIRES FREETYPE LIBRARY. www.freetype.org 12 | 13 | Currently this only extracts the printable 7-bit ASCII chars of a font. 14 | Will eventually extend with some int'l chars a la ftGFX, not there yet. 15 | Keep 7-bit fonts around as an option in that case, more compact. 16 | 17 | See notes at end for glyph nomenclature & other tidbits. 18 | */ 19 | #ifndef ARDUINO 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include FT_GLYPH_H 26 | #include FT_MODULE_H 27 | #include FT_TRUETYPE_DRIVER_H 28 | #include "../gfxfont.h" // Adafruit_GFX font structures 29 | 30 | #define DPI 141 // Approximate res. of Adafruit 2.8" TFT 31 | 32 | // Accumulate bits for output, with periodic hexadecimal byte write 33 | void enbit(uint8_t value) { 34 | static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; 35 | if (value) 36 | sum |= bit; // Set bit if needed 37 | if (!(bit >>= 1)) { // Advance to next bit, end of byte reached? 38 | if (!firstCall) { // Format output table nicely 39 | if (++row >= 12) { // Last entry on line? 40 | printf(",\n "); // Newline format output 41 | row = 0; // Reset row counter 42 | } else { // Not end of line 43 | printf(", "); // Simple comma delim 44 | } 45 | } 46 | printf("0x%02X", sum); // Write byte value 47 | sum = 0; // Clear for next byte 48 | bit = 0x80; // Reset bit counter 49 | firstCall = 0; // Formatting flag 50 | } 51 | } 52 | 53 | int main(int argc, char *argv[]) { 54 | int i, j, err, size, first = ' ', last = '~', bitmapOffset = 0, x, y, byte; 55 | char *fontName, c, *ptr; 56 | FT_Library library; 57 | FT_Face face; 58 | FT_Glyph glyph; 59 | FT_Bitmap *bitmap; 60 | FT_BitmapGlyphRec *g; 61 | GFXglyph *table; 62 | uint8_t bit; 63 | 64 | // Parse command line. Valid syntaxes are: 65 | // fontconvert [filename] [size] 66 | // fontconvert [filename] [size] [last char] 67 | // fontconvert [filename] [size] [first char] [last char] 68 | // Unless overridden, default first and last chars are 69 | // ' ' (space) and '~', respectively 70 | 71 | if (argc < 3) { 72 | fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", argv[0]); 73 | return 1; 74 | } 75 | 76 | size = atoi(argv[2]); 77 | 78 | if (argc == 4) { 79 | last = atoi(argv[3]); 80 | } else if (argc == 5) { 81 | first = atoi(argv[3]); 82 | last = atoi(argv[4]); 83 | } 84 | 85 | if (last < first) { 86 | i = first; 87 | first = last; 88 | last = i; 89 | } 90 | 91 | ptr = strrchr(argv[1], '/'); // Find last slash in filename 92 | if (ptr) 93 | ptr++; // First character of filename (path stripped) 94 | else 95 | ptr = argv[1]; // No path; font in local dir. 96 | 97 | // Allocate space for font name and glyph table 98 | if ((!(fontName = malloc(strlen(ptr) + 20))) || 99 | (!(table = (GFXglyph *)malloc((last - first + 1) * sizeof(GFXglyph))))) { 100 | fprintf(stderr, "Malloc error\n"); 101 | return 1; 102 | } 103 | 104 | // Derive font table names from filename. Period (filename 105 | // extension) is truncated and replaced with the font size & bits. 106 | strcpy(fontName, ptr); 107 | ptr = strrchr(fontName, '.'); // Find last period (file ext) 108 | if (!ptr) 109 | ptr = &fontName[strlen(fontName)]; // If none, append 110 | // Insert font size and 7/8 bit. fontName was alloc'd w/extra 111 | // space to allow this, we're not sprintfing into Forbidden Zone. 112 | sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); 113 | // Space and punctuation chars in name replaced w/ underscores. 114 | for (i = 0; (c = fontName[i]); i++) { 115 | if (isspace(c) || ispunct(c)) 116 | fontName[i] = '_'; 117 | } 118 | 119 | // Init FreeType lib, load font 120 | if ((err = FT_Init_FreeType(&library))) { 121 | fprintf(stderr, "FreeType init error: %d", err); 122 | return err; 123 | } 124 | 125 | // Use TrueType engine version 35, without subpixel rendering. 126 | // This improves clarity of fonts since this library does not 127 | // support rendering multiple levels of gray in a glyph. 128 | // See https://github.com/adafruit/Adafruit-GFX-Library/issues/103 129 | FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; 130 | FT_Property_Set(library, "truetype", "interpreter-version", 131 | &interpreter_version); 132 | 133 | if ((err = FT_New_Face(library, argv[1], 0, &face))) { 134 | fprintf(stderr, "Font load error: %d", err); 135 | FT_Done_FreeType(library); 136 | return err; 137 | } 138 | 139 | // << 6 because '26dot6' fixed-point format 140 | FT_Set_Char_Size(face, size << 6, 0, DPI, 0); 141 | 142 | // Currently all symbols from 'first' to 'last' are processed. 143 | // Fonts may contain WAY more glyphs than that, but this code 144 | // will need to handle encoding stuff to deal with extracting 145 | // the right symbols, and that's not done yet. 146 | // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); 147 | 148 | printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); 149 | 150 | // Process glyphs and output huge bitmap data array 151 | for (i = first, j = 0; i <= last; i++, j++) { 152 | // MONO renderer provides clean image with perfect crop 153 | // (no wasted pixels) via bitmap struct. 154 | if ((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { 155 | fprintf(stderr, "Error %d loading char '%c'\n", err, i); 156 | continue; 157 | } 158 | 159 | if ((err = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_MONO))) { 160 | fprintf(stderr, "Error %d rendering char '%c'\n", err, i); 161 | continue; 162 | } 163 | 164 | if ((err = FT_Get_Glyph(face->glyph, &glyph))) { 165 | fprintf(stderr, "Error %d getting glyph '%c'\n", err, i); 166 | continue; 167 | } 168 | 169 | bitmap = &face->glyph->bitmap; 170 | g = (FT_BitmapGlyphRec *)glyph; 171 | 172 | // Minimal font and per-glyph information is stored to 173 | // reduce flash space requirements. Glyph bitmaps are 174 | // fully bit-packed; no per-scanline pad, though end of 175 | // each character may be padded to next byte boundary 176 | // when needed. 16-bit offset means 64K max for bitmaps, 177 | // code currently doesn't check for overflow. (Doesn't 178 | // check that size & offsets are within bounds either for 179 | // that matter...please convert fonts responsibly.) 180 | table[j].bitmapOffset = bitmapOffset; 181 | table[j].width = bitmap->width; 182 | table[j].height = bitmap->rows; 183 | table[j].xAdvance = face->glyph->advance.x >> 6; 184 | table[j].xOffset = g->left; 185 | table[j].yOffset = 1 - g->top; 186 | 187 | for (y = 0; y < bitmap->rows; y++) { 188 | for (x = 0; x < bitmap->width; x++) { 189 | byte = x / 8; 190 | bit = 0x80 >> (x & 7); 191 | enbit(bitmap->buffer[y * bitmap->pitch + byte] & bit); 192 | } 193 | } 194 | 195 | // Pad end of char bitmap to next byte boundary if needed 196 | int n = (bitmap->width * bitmap->rows) & 7; 197 | if (n) { // Pixel count not an even multiple of 8? 198 | n = 8 - n; // # bits to next multiple 199 | while (n--) 200 | enbit(0); 201 | } 202 | bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; 203 | 204 | FT_Done_Glyph(glyph); 205 | } 206 | 207 | printf(" };\n\n"); // End bitmap array 208 | 209 | // Output glyph attributes table (one per character) 210 | printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); 211 | for (i = first, j = 0; i <= last; i++, j++) { 212 | printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", table[j].bitmapOffset, 213 | table[j].width, table[j].height, table[j].xAdvance, table[j].xOffset, 214 | table[j].yOffset); 215 | if (i < last) { 216 | printf(", // 0x%02X", i); 217 | if ((i >= ' ') && (i <= '~')) { 218 | printf(" '%c'", i); 219 | } 220 | putchar('\n'); 221 | } 222 | } 223 | printf(" }; // 0x%02X", last); 224 | if ((last >= ' ') && (last <= '~')) 225 | printf(" '%c'", last); 226 | printf("\n\n"); 227 | 228 | // Output font structure 229 | printf("const GFXfont %s PROGMEM = {\n", fontName); 230 | printf(" (uint8_t *)%sBitmaps,\n", fontName); 231 | printf(" (GFXglyph *)%sGlyphs,\n", fontName); 232 | if (face->size->metrics.height == 0) { 233 | // No face height info, assume fixed width and get from a glyph. 234 | printf(" 0x%02X, 0x%02X, %d };\n\n", first, last, table[0].height); 235 | } else { 236 | printf(" 0x%02X, 0x%02X, %ld };\n\n", first, last, 237 | face->size->metrics.height >> 6); 238 | } 239 | printf("// Approx. %d bytes\n", bitmapOffset + (last - first + 1) * 7 + 7); 240 | // Size estimate is based on AVR struct and pointer sizes; 241 | // actual size may vary. 242 | 243 | FT_Done_FreeType(library); 244 | 245 | return 0; 246 | } 247 | 248 | /* ------------------------------------------------------------------------- 249 | 250 | Character metrics are slightly different from classic GFX & ftGFX. 251 | In classic GFX: cursor position is the upper-left pixel of each 5x7 252 | character; lower extent of most glyphs (except those w/descenders) 253 | is +6 pixels in Y direction. 254 | W/new GFX fonts: cursor position is on baseline, where baseline is 255 | 'inclusive' (containing the bottom-most row of pixels in most symbols, 256 | except those with descenders; ftGFX is one pixel lower). 257 | 258 | Cursor Y will be moved automatically when switching between classic 259 | and new fonts. If you switch fonts, any print() calls will continue 260 | along the same baseline. 261 | 262 | ...........#####.. -- yOffset 263 | ..........######.. 264 | ..........######.. 265 | .........#######.. 266 | ........#########. 267 | * = Cursor pos. ........#########. 268 | .......##########. 269 | ......#####..####. 270 | ......#####..####. 271 | *.#.. .....#####...####. 272 | .#.#. ....############## 273 | #...# ...############### 274 | #...# ...############### 275 | ##### ..#####......##### 276 | #...# .#####.......##### 277 | ====== #...# ====== #*###.........#### ======= Baseline 278 | || xOffset 279 | 280 | glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space 281 | (+Y is down), from the cursor position to the top-left pixel of the 282 | glyph bitmap. i.e. yOffset is typically negative, xOffset is typically 283 | zero but a few glyphs will have other values (even negative xOffsets 284 | sometimes, totally normal). glyph->xAdvance is the distance to move 285 | the cursor on the X axis after drawing the corresponding symbol. 286 | 287 | There's also some changes with regard to 'background' color and new GFX 288 | fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. 289 | */ 290 | 291 | #endif /* !ARDUINO */ 292 | -------------------------------------------------------------------------------- /fontconvert/fontconvert_win.md: -------------------------------------------------------------------------------- 1 | ### A short guide to use fontconvert.c to create your own fonts using MinGW. 2 | 3 | #### STEP 1: INSTALL MinGW 4 | 5 | Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). 6 | Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). 7 | I suggest installing with the "Graphical User Interface Installer". 8 | To complete your initial installation you should further install some "packages". 9 | For our purpose you should only install the "Basic Setup" packages. 10 | To do that: 11 | 12 | 1. Open the MinGW Installation Manager 13 | 2. From the left panel click "Basic Setup". 14 | 3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" 15 | and click "Mark for installation" 16 | 4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". 17 | 18 | 19 | #### STEP 2: INSTALL Freetype Library 20 | 21 | To read about the freetype project visit [freetype.org](https://www.freetype.org/). 22 | To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) 23 | and choose "freetype-2.7.tar.gz" file (or a newer version if available). 24 | To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. 25 | (I also renamed the folder to "ft27") 26 | Before you build the library it's good to read these articles: 27 | * [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) 28 | * [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) 29 | * [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) 30 | 31 | Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). 32 | Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. 33 | To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. 34 | Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. 35 | Enter "ft27" directory using the cd commands: 36 | ``` 37 | cd /c 38 | cd ft27 39 | ``` 40 | 41 | and then type one by one the commands: 42 | ``` 43 | ./configure --prefix=/mingw 44 | make 45 | make install 46 | ``` 47 | Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". 48 | That, hopefully, means that you have installed the library correctly !! 49 | 50 | #### STEP 3: Build fontconvert.c 51 | 52 | Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. 53 | Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). 54 | Change the commands so in the end the program looks like : 55 | ``` 56 | all: fontconvert 57 | 58 | CC = gcc 59 | CFLAGS = -Wall -I c:/mingw/include/freetype2 60 | LIBS = -lfreetype 61 | 62 | fontconvert: fontconvert.c 63 | $(CC) $(CFLAGS) $< $(LIBS) -o $@ 64 | 65 | clean: 66 | rm -f fontconvert 67 | ``` 68 | Go back in the command prompt and with a cd command enter the fontconvert directory. 69 | ``` 70 | cd /c/adafruit_gfx_library\fontconvert 71 | ``` 72 | Give the command: 73 | ``` 74 | make 75 | ``` 76 | This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. 77 | 78 | #### STEP 4: Create your own font header files 79 | 80 | Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. 81 | So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: 82 | ``` 83 | ./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h 84 | ``` 85 | You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). 86 | 87 | Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee 88 | and start playing with your Arduino (or whatever else ....)+ display module project. 89 | -------------------------------------------------------------------------------- /fontconvert/makefonts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ugly little Bash script, generates a set of .h files for GFX using 4 | # GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), 5 | # 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, 6 | # bold, oblique or italic, and bold+oblique or bold+italic; and four 7 | # sizes: 9, 12, 18 and 24 point. No real error checking or anything, 8 | # this just powers through all the combinations, calling the fontconvert 9 | # utility and redirecting the output to a .h file for each combo. 10 | 11 | # Adafruit_GFX repository does not include the source outline fonts 12 | # (huge zipfile, different license) but they're easily acquired: 13 | # http://savannah.gnu.org/projects/freefont/ 14 | 15 | convert=./fontconvert 16 | inpath=~/Desktop/freefont/ 17 | outpath=../Fonts/ 18 | fonts=(FreeMono FreeSans FreeSerif) 19 | styles=("" Bold Italic BoldItalic Oblique BoldOblique) 20 | sizes=(9 12 18 24) 21 | 22 | for f in ${fonts[*]} 23 | do 24 | for index in ${!styles[*]} 25 | do 26 | st=${styles[$index]} 27 | for si in ${sizes[*]} 28 | do 29 | infile=$inpath$f$st".ttf" 30 | if [ -f $infile ] # Does source combination exist? 31 | then 32 | outfile=$outpath$f$st$si"pt7b.h" 33 | # printf "%s %s %s > %s\n" $convert $infile $si $outfile 34 | $convert $infile $si > $outfile 35 | fi 36 | done 37 | done 38 | done 39 | -------------------------------------------------------------------------------- /gfxfont.h: -------------------------------------------------------------------------------- 1 | // Font structures for newer Adafruit_GFX (1.1 and later). 2 | // Example fonts are included in 'Fonts' directory. 3 | // To use a font in your Arduino sketch, #include the corresponding .h 4 | // file and pass address of GFXfont struct to setFont(). Pass NULL to 5 | // revert to 'classic' fixed-space bitmap font. 6 | 7 | #ifndef _GFXFONT_H_ 8 | #define _GFXFONT_H_ 9 | 10 | /// Font data stored PER GLYPH 11 | typedef struct { 12 | uint16_t bitmapOffset; ///< Pointer into GFXfont->bitmap 13 | uint8_t width; ///< Bitmap dimensions in pixels 14 | uint8_t height; ///< Bitmap dimensions in pixels 15 | uint8_t xAdvance; ///< Distance to advance cursor (x axis) 16 | int8_t xOffset; ///< X dist from cursor pos to UL corner 17 | int8_t yOffset; ///< Y dist from cursor pos to UL corner 18 | } GFXglyph; 19 | 20 | /// Data stored for FONT AS A WHOLE 21 | typedef struct { 22 | uint8_t *bitmap; ///< Glyph bitmaps, concatenated 23 | GFXglyph *glyph; ///< Glyph array 24 | uint16_t first; ///< ASCII extents (first char) 25 | uint16_t last; ///< ASCII extents (last char) 26 | uint8_t yAdvance; ///< Newline distance (y axis) 27 | } GFXfont; 28 | 29 | #endif // _GFXFONT_H_ 30 | -------------------------------------------------------------------------------- /glcdfont.c: -------------------------------------------------------------------------------- 1 | // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. 2 | // See gfxfont.h for newer custom bitmap font info. 3 | 4 | #ifndef FONT5X7_H 5 | #define FONT5X7_H 6 | 7 | #ifdef __AVR__ 8 | #include 9 | #include 10 | #elif defined(ESP8266) 11 | #include 12 | #elif defined(__IMXRT1052__) || defined(__IMXRT1062__) 13 | // PROGMEM is defefind for T4 to place data in specific memory section 14 | #undef PROGMEM 15 | #define PROGMEM 16 | #else 17 | #define PROGMEM 18 | #endif 19 | 20 | // Standard ASCII 5x7 font 21 | 22 | static const unsigned char font[] PROGMEM = { 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 24 | 0x4F, 0x6B, 0x3E, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 25 | 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 26 | 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x18, 0x24, 27 | 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, 28 | 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 29 | 0x05, 0x25, 0x3F, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 30 | 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 31 | 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x66, 0x89, 32 | 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 33 | 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 34 | 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 35 | 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x06, 36 | 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 37 | 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 38 | 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 39 | 0x56, 0x20, 0x50, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 40 | 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 41 | 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, 0x08, 0x08, 0x08, 42 | 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 43 | 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 44 | 0x49, 0x49, 0x46, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 45 | 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 46 | 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, 0x46, 0x49, 0x49, 47 | 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 48 | 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 49 | 0x22, 0x14, 0x08, 0x02, 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 50 | 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 51 | 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x49, 0x49, 52 | 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, 53 | 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 54 | 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 55 | 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 56 | 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 57 | 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, 58 | 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 59 | 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 60 | 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 61 | 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 62 | 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 63 | 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 64 | 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 65 | 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 66 | 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 67 | 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 68 | 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 69 | 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 70 | 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 71 | 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x3C, 0x40, 0x40, 72 | 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, 73 | 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 74 | 0x54, 0x4C, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x77, 0x00, 75 | 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x3C, 76 | 0x26, 0x23, 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, 0x3A, 0x40, 0x40, 77 | 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, 78 | 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut 79 | 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, 0x0C, 0x1E, 80 | 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 81 | 0x59, 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 82 | 0x02, 0x45, 0x7D, 0x42, 0x00, 0x01, 0x45, 0x7C, 0x40, 0x7D, 0x12, 0x11, 83 | 0x12, 0x7D, // A-umlaut 84 | 0xF0, 0x28, 0x25, 0x28, 0xF0, 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 85 | 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, 0x32, 0x49, 0x49, 0x49, 86 | 0x32, 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut 87 | 0x32, 0x4A, 0x48, 0x48, 0x30, 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 88 | 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 0x3D, 0x42, 0x42, 0x42, 89 | 0x3D, // O-umlaut 90 | 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, 0x48, 0x7E, 91 | 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 92 | 0x20, 0xC0, 0x88, 0x7E, 0x09, 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 93 | 0x00, 0x44, 0x7D, 0x41, 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 94 | 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, 0x7D, 0x0D, 0x19, 0x31, 0x7D, 95 | 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, 0x30, 0x48, 96 | 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 97 | 0x38, 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 98 | 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 99 | 0x14, 0x08, 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old 100 | // code 101 | 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block 102 | 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block 103 | 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 104 | 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 105 | 0xF0, 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 106 | 0x00, 0xFF, 0x00, 0xFF, 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 107 | 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0x1F, 0x00, 108 | 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 109 | 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x00, 0x00, 0x00, 0xFF, 110 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x00, 111 | 0x00, 0x00, 0xFF, 0x14, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1F, 112 | 0x10, 0x17, 0x00, 0x00, 0xFC, 0x04, 0xF4, 0x14, 0x14, 0x17, 0x10, 0x17, 113 | 0x14, 0x14, 0xF4, 0x04, 0xF4, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x14, 0x14, 114 | 0x14, 0x14, 0x14, 0x14, 0x14, 0xF7, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x17, 115 | 0x14, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 116 | 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 117 | 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, 0x00, 0x00, 0xF0, 0x10, 0xF0, 118 | 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, 0x10, 0x10, 119 | 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 120 | 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 121 | 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 122 | 0x38, 0x44, 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta 123 | 0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 124 | 0x49, 0x41, 0x63, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 125 | 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 126 | 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, 0x30, 0x4A, 0x4D, 127 | 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, 128 | 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 129 | 0x2A, 0x2A, 0x2A, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 130 | 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 131 | 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, 0x36, 0x12, 0x36, 132 | 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, 133 | 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 134 | 0x01, 0x01, 0x1E, 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 135 | 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP 136 | }; 137 | 138 | // allow clean compilation with [-Wunused-const-variable=] and [-Wall] 139 | static inline void avoid_unused_const_variable_compiler_warning(void) { 140 | (void)font; 141 | } 142 | 143 | #endif // FONT5X7_H 144 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=Adafruit GFX Library 2 | version=1.12.1 3 | author=Adafruit 4 | maintainer=Adafruit 5 | sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. 6 | paragraph=Install this library in addition to the display library for your hardware. 7 | category=Display 8 | url=https://github.com/adafruit/Adafruit-GFX-Library 9 | architectures=* 10 | depends=Adafruit BusIO 11 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Software License Agreement (BSD License) 2 | 3 | Copyright (c) 2012 Adafruit Industries. All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | - Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | - Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | POSSIBILITY OF SUCH DAMAGE. 25 | --------------------------------------------------------------------------------