475 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			475 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C
		
	
	
	
| /**
 | |
| ** The original 3x5 font is licensed under the 3-clause BSD license:
 | |
| **
 | |
| ** Copyright 1999 Brian J. Swetland
 | |
| ** Copyright 1999 Vassilii Khachaturov
 | |
| ** Portions (of vt100.c/vt100.h) copyright Dan Marks
 | |
| ** 
 | |
| ** All rights reserved.
 | |
| **
 | |
| ** Redistribution and use in source and binary forms, with or without
 | |
| ** modification, are permitted provided that the following conditions
 | |
| ** are met:
 | |
| ** 1. Redistributions of source code must retain the above copyright
 | |
| **    notice, this list of conditions, and the following disclaimer.
 | |
| ** 2. Redistributions in binary form must reproduce the above copyright
 | |
| **    notice, this list of conditions, and the following disclaimer in the
 | |
| **    documentation and/or other materials provided with the distribution.
 | |
| ** 3. The name of the authors may not be used to endorse or promote products
 | |
| **    derived from this software without specific prior written permission.
 | |
| **
 | |
| ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 | |
| ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 | |
| ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 | |
| ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 | |
| ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | |
| ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
| ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
| ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | |
| ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| ** 
 | |
| ** Modifications to Tom Thumb for improved readability are from Robey Pointer, 
 | |
| ** see:
 | |
| ** http://robey.lag.net/2010/01/23/tiny-monospace-font.html
 | |
| ** 
 | |
| ** The original author does not have any objection to relicensing of Robey 
 | |
| ** Pointer's modifications (in this file) in a more permissive license.  See 
 | |
| ** the discussion at the above blog, and also here:
 | |
| ** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license
 | |
| **
 | |
| ** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font,
 | |
| ** with the help of this Python script:
 | |
| ** https://gist.github.com/skelliam/322d421f028545f16f6d
 | |
| ** William Skellenger (williamj@skellenger.net)
 | |
| ** Twitter: @skelliam
 | |
| ** 
 | |
| */
 | |
| 
 | |
| #define TOMTHUMB_USE_EXTENDED 0
 | |
| 
 | |
| const uint8_t TomThumbBitmaps[] PROGMEM = {
 | |
|    0x00,                                /* 0x20 space */
 | |
|    0x80, 0x80, 0x80, 0x00, 0x80,        /* 0x21 exclam */
 | |
|    0xA0, 0xA0,                          /* 0x22 quotedbl */
 | |
|    0xA0, 0xE0, 0xA0, 0xE0, 0xA0,        /* 0x23 numbersign */
 | |
|    0x60, 0xC0, 0x60, 0xC0, 0x40,        /* 0x24 dollar */
 | |
|    0x80, 0x20, 0x40, 0x80, 0x20,        /* 0x25 percent */
 | |
|    0xC0, 0xC0, 0xE0, 0xA0, 0x60,        /* 0x26 ampersand */
 | |
|    0x80, 0x80,                          /* 0x27 quotesingle */
 | |
|    0x40, 0x80, 0x80, 0x80, 0x40,        /* 0x28 parenleft */
 | |
|    0x80, 0x40, 0x40, 0x40, 0x80,        /* 0x29 parenright */
 | |
|    0xA0, 0x40, 0xA0,                    /* 0x2A asterisk */
 | |
|    0x40, 0xE0, 0x40,                    /* 0x2B plus */
 | |
|    0x40, 0x80,                          /* 0x2C comma */
 | |
|    0xE0,                                /* 0x2D hyphen */
 | |
|    0x80,                                /* 0x2E period */
 | |
|    0x20, 0x20, 0x40, 0x80, 0x80,        /* 0x2F slash */
 | |
|    0x60, 0xA0, 0xA0, 0xA0, 0xC0,        /* 0x30 zero */
 | |
|    0x40, 0xC0, 0x40, 0x40, 0x40,        /* 0x31 one */
 | |
|    0xC0, 0x20, 0x40, 0x80, 0xE0,        /* 0x32 two */
 | |
|    0xC0, 0x20, 0x40, 0x20, 0xC0,        /* 0x33 three */
 | |
|    0xA0, 0xA0, 0xE0, 0x20, 0x20,        /* 0x34 four */
 | |
|    0xE0, 0x80, 0xC0, 0x20, 0xC0,        /* 0x35 five */
 | |
|    0x60, 0x80, 0xE0, 0xA0, 0xE0,        /* 0x36 six */
 | |
|    0xE0, 0x20, 0x40, 0x80, 0x80,        /* 0x37 seven */
 | |
|    0xE0, 0xA0, 0xE0, 0xA0, 0xE0,        /* 0x38 eight */
 | |
|    0xE0, 0xA0, 0xE0, 0x20, 0xC0,        /* 0x39 nine */
 | |
|    0x80, 0x00, 0x80,                    /* 0x3A colon */
 | |
|    0x40, 0x00, 0x40, 0x80,              /* 0x3B semicolon */
 | |
|    0x20, 0x40, 0x80, 0x40, 0x20,        /* 0x3C less */
 | |
|    0xE0, 0x00, 0xE0,                    /* 0x3D equal */
 | |
|    0x80, 0x40, 0x20, 0x40, 0x80,        /* 0x3E greater */
 | |
|    0xE0, 0x20, 0x40, 0x00, 0x40,        /* 0x3F question */
 | |
|    0x40, 0xA0, 0xE0, 0x80, 0x60,        /* 0x40 at */
 | |
|    0x40, 0xA0, 0xE0, 0xA0, 0xA0,        /* 0x41 A */
 | |
|    0xC0, 0xA0, 0xC0, 0xA0, 0xC0,        /* 0x42 B */
 | |
|    0x60, 0x80, 0x80, 0x80, 0x60,        /* 0x43 C */
 | |
|    0xC0, 0xA0, 0xA0, 0xA0, 0xC0,        /* 0x44 D */
 | |
|    0xE0, 0x80, 0xE0, 0x80, 0xE0,        /* 0x45 E */
 | |
|    0xE0, 0x80, 0xE0, 0x80, 0x80,        /* 0x46 F */
 | |
|    0x60, 0x80, 0xE0, 0xA0, 0x60,        /* 0x47 G */
 | |
|    0xA0, 0xA0, 0xE0, 0xA0, 0xA0,        /* 0x48 H */
 | |
|    0xE0, 0x40, 0x40, 0x40, 0xE0,        /* 0x49 I */
 | |
|    0x20, 0x20, 0x20, 0xA0, 0x40,        /* 0x4A J */
 | |
|    0xA0, 0xA0, 0xC0, 0xA0, 0xA0,        /* 0x4B K */
 | |
|    0x80, 0x80, 0x80, 0x80, 0xE0,        /* 0x4C L */
 | |
|    0xA0, 0xE0, 0xE0, 0xA0, 0xA0,        /* 0x4D M */
 | |
|    0xA0, 0xE0, 0xE0, 0xE0, 0xA0,        /* 0x4E N */
 | |
|    0x40, 0xA0, 0xA0, 0xA0, 0x40,        /* 0x4F O */
 | |
|    0xC0, 0xA0, 0xC0, 0x80, 0x80,        /* 0x50 P */
 | |
|    0x40, 0xA0, 0xA0, 0xE0, 0x60,        /* 0x51 Q */
 | |
|    0xC0, 0xA0, 0xE0, 0xC0, 0xA0,        /* 0x52 R */
 | |
|    0x60, 0x80, 0x40, 0x20, 0xC0,        /* 0x53 S */
 | |
|    0xE0, 0x40, 0x40, 0x40, 0x40,        /* 0x54 T */
 | |
|    0xA0, 0xA0, 0xA0, 0xA0, 0x60,        /* 0x55 U */
 | |
|    0xA0, 0xA0, 0xA0, 0x40, 0x40,        /* 0x56 V */
 | |
|    0xA0, 0xA0, 0xE0, 0xE0, 0xA0,        /* 0x57 W */
 | |
|    0xA0, 0xA0, 0x40, 0xA0, 0xA0,        /* 0x58 X */
 | |
|    0xA0, 0xA0, 0x40, 0x40, 0x40,        /* 0x59 Y */
 | |
|    0xE0, 0x20, 0x40, 0x80, 0xE0,        /* 0x5A Z */
 | |
|    0xE0, 0x80, 0x80, 0x80, 0xE0,        /* 0x5B bracketleft */
 | |
|    0x80, 0x40, 0x20,                    /* 0x5C backslash */
 | |
|    0xE0, 0x20, 0x20, 0x20, 0xE0,        /* 0x5D bracketright */
 | |
|    0x40, 0xA0,                          /* 0x5E asciicircum */
 | |
|    0xE0,                                /* 0x5F underscore */
 | |
|    0x80, 0x40,                          /* 0x60 grave */
 | |
|    0xC0, 0x60, 0xA0, 0xE0,              /* 0x61 a */
 | |
|    0x80, 0xC0, 0xA0, 0xA0, 0xC0,        /* 0x62 b */
 | |
|    0x60, 0x80, 0x80, 0x60,              /* 0x63 c */
 | |
|    0x20, 0x60, 0xA0, 0xA0, 0x60,        /* 0x64 d */
 | |
|    0x60, 0xA0, 0xC0, 0x60,              /* 0x65 e */
 | |
|    0x20, 0x40, 0xE0, 0x40, 0x40,        /* 0x66 f */
 | |
|    0x60, 0xA0, 0xE0, 0x20, 0x40,        /* 0x67 g */
 | |
|    0x80, 0xC0, 0xA0, 0xA0, 0xA0,        /* 0x68 h */
 | |
|    0x80, 0x00, 0x80, 0x80, 0x80,        /* 0x69 i */
 | |
|    0x20, 0x00, 0x20, 0x20, 0xA0, 0x40,  /* 0x6A j */
 | |
|    0x80, 0xA0, 0xC0, 0xC0, 0xA0,        /* 0x6B k */
 | |
|    0xC0, 0x40, 0x40, 0x40, 0xE0,        /* 0x6C l */
 | |
|    0xE0, 0xE0, 0xE0, 0xA0,              /* 0x6D m */
 | |
|    0xC0, 0xA0, 0xA0, 0xA0,              /* 0x6E n */
 | |
|    0x40, 0xA0, 0xA0, 0x40,              /* 0x6F o */
 | |
|    0xC0, 0xA0, 0xA0, 0xC0, 0x80,        /* 0x70 p */
 | |
|    0x60, 0xA0, 0xA0, 0x60, 0x20,        /* 0x71 q */
 | |
|    0x60, 0x80, 0x80, 0x80,              /* 0x72 r */
 | |
|    0x60, 0xC0, 0x60, 0xC0,              /* 0x73 s */
 | |
|    0x40, 0xE0, 0x40, 0x40, 0x60,        /* 0x74 t */
 | |
|    0xA0, 0xA0, 0xA0, 0x60,              /* 0x75 u */
 | |
|    0xA0, 0xA0, 0xE0, 0x40,              /* 0x76 v */
 | |
|    0xA0, 0xE0, 0xE0, 0xE0,              /* 0x77 w */
 | |
|    0xA0, 0x40, 0x40, 0xA0,              /* 0x78 x */
 | |
|    0xA0, 0xA0, 0x60, 0x20, 0x40,        /* 0x79 y */
 | |
|    0xE0, 0x60, 0xC0, 0xE0,              /* 0x7A z */
 | |
|    0x60, 0x40, 0x80, 0x40, 0x60,        /* 0x7B braceleft */
 | |
|    0x80, 0x80, 0x00, 0x80, 0x80,        /* 0x7C bar */
 | |
|    0xC0, 0x40, 0x20, 0x40, 0xC0,        /* 0x7D braceright */
 | |
|    0x60, 0xC0,                          /* 0x7E asciitilde */
 | |
| #if (TOMTHUMB_USE_EXTENDED)
 | |
|    0x80, 0x00, 0x80, 0x80, 0x80,        /* 0xA1 exclamdown */
 | |
|    0x40, 0xE0, 0x80, 0xE0, 0x40,        /* 0xA2 cent */
 | |
|    0x60, 0x40, 0xE0, 0x40, 0xE0,        /* 0xA3 sterling */
 | |
|    0xA0, 0x40, 0xE0, 0x40, 0xA0,        /* 0xA4 currency */
 | |
|    0xA0, 0xA0, 0x40, 0xE0, 0x40,        /* 0xA5 yen */
 | |
|    0x80, 0x80, 0x00, 0x80, 0x80,        /* 0xA6 brokenbar */
 | |
|    0x60, 0x40, 0xA0, 0x40, 0xC0,        /* 0xA7 section */
 | |
|    0xA0,                                /* 0xA8 dieresis */
 | |
|    0x60, 0x80, 0x60,                    /* 0xA9 copyright */
 | |
|    0x60, 0xA0, 0xE0, 0x00, 0xE0,        /* 0xAA ordfeminine */
 | |
|    0x40, 0x80, 0x40,                    /* 0xAB guillemotleft */
 | |
|    0xE0, 0x20,                          /* 0xAC logicalnot */
 | |
|    0xC0,                                /* 0xAD softhyphen */
 | |
|    0xC0, 0xC0, 0xA0,                    /* 0xAE registered */
 | |
|    0xE0,                                /* 0xAF macron */
 | |
|    0x40, 0xA0, 0x40,                    /* 0xB0 degree */
 | |
|    0x40, 0xE0, 0x40, 0x00, 0xE0,        /* 0xB1 plusminus */
 | |
|    0xC0, 0x40, 0x60,                    /* 0xB2 twosuperior */
 | |
|    0xE0, 0x60, 0xE0,                    /* 0xB3 threesuperior */
 | |
|    0x40, 0x80,                          /* 0xB4 acute */
 | |
|    0xA0, 0xA0, 0xA0, 0xC0, 0x80,        /* 0xB5 mu */
 | |
|    0x60, 0xA0, 0x60, 0x60, 0x60,        /* 0xB6 paragraph */
 | |
|    0xE0, 0xE0, 0xE0,                    /* 0xB7 periodcentered */
 | |
|    0x40, 0x20, 0xC0,                    /* 0xB8 cedilla */
 | |
|    0x80, 0x80, 0x80,                    /* 0xB9 onesuperior */
 | |
|    0x40, 0xA0, 0x40, 0x00, 0xE0,        /* 0xBA ordmasculine */
 | |
|    0x80, 0x40, 0x80,                    /* 0xBB guillemotright */
 | |
|    0x80, 0x80, 0x00, 0x60, 0x20,        /* 0xBC onequarter */
 | |
|    0x80, 0x80, 0x00, 0xC0, 0x60,        /* 0xBD onehalf */
 | |
|    0xC0, 0xC0, 0x00, 0x60, 0x20,        /* 0xBE threequarters */
 | |
|    0x40, 0x00, 0x40, 0x80, 0xE0,        /* 0xBF questiondown */
 | |
|    0x40, 0x20, 0x40, 0xE0, 0xA0,        /* 0xC0 Agrave */
 | |
|    0x40, 0x80, 0x40, 0xE0, 0xA0,        /* 0xC1 Aacute */
 | |
|    0xE0, 0x00, 0x40, 0xE0, 0xA0,        /* 0xC2 Acircumflex */
 | |
|    0x60, 0xC0, 0x40, 0xE0, 0xA0,        /* 0xC3 Atilde */
 | |
|    0xA0, 0x40, 0xA0, 0xE0, 0xA0,        /* 0xC4 Adieresis */
 | |
|    0xC0, 0xC0, 0xA0, 0xE0, 0xA0,        /* 0xC5 Aring */
 | |
|    0x60, 0xC0, 0xE0, 0xC0, 0xE0,        /* 0xC6 AE */
 | |
|    0x60, 0x80, 0x80, 0x60, 0x20, 0x40,  /* 0xC7 Ccedilla */
 | |
|    0x40, 0x20, 0xE0, 0xC0, 0xE0,        /* 0xC8 Egrave */
 | |
|    0x40, 0x80, 0xE0, 0xC0, 0xE0,        /* 0xC9 Eacute */
 | |
|    0xE0, 0x00, 0xE0, 0xC0, 0xE0,        /* 0xCA Ecircumflex */
 | |
|    0xA0, 0x00, 0xE0, 0xC0, 0xE0,        /* 0xCB Edieresis */
 | |
|    0x40, 0x20, 0xE0, 0x40, 0xE0,        /* 0xCC Igrave */
 | |
|    0x40, 0x80, 0xE0, 0x40, 0xE0,        /* 0xCD Iacute */
 | |
|    0xE0, 0x00, 0xE0, 0x40, 0xE0,        /* 0xCE Icircumflex */
 | |
|    0xA0, 0x00, 0xE0, 0x40, 0xE0,        /* 0xCF Idieresis */
 | |
|    0xC0, 0xA0, 0xE0, 0xA0, 0xC0,        /* 0xD0 Eth */
 | |
|    0xC0, 0x60, 0xA0, 0xE0, 0xA0,        /* 0xD1 Ntilde */
 | |
|    0x40, 0x20, 0xE0, 0xA0, 0xE0,        /* 0xD2 Ograve */
 | |
|    0x40, 0x80, 0xE0, 0xA0, 0xE0,        /* 0xD3 Oacute */
 | |
|    0xE0, 0x00, 0xE0, 0xA0, 0xE0,        /* 0xD4 Ocircumflex */
 | |
|    0xC0, 0x60, 0xE0, 0xA0, 0xE0,        /* 0xD5 Otilde */
 | |
|    0xA0, 0x00, 0xE0, 0xA0, 0xE0,        /* 0xD6 Odieresis */
 | |
|    0xA0, 0x40, 0xA0,                    /* 0xD7 multiply */
 | |
|    0x60, 0xA0, 0xE0, 0xA0, 0xC0,        /* 0xD8 Oslash */
 | |
|    0x80, 0x40, 0xA0, 0xA0, 0xE0,        /* 0xD9 Ugrave */
 | |
|    0x20, 0x40, 0xA0, 0xA0, 0xE0,        /* 0xDA Uacute */
 | |
|    0xE0, 0x00, 0xA0, 0xA0, 0xE0,        /* 0xDB Ucircumflex */
 | |
|    0xA0, 0x00, 0xA0, 0xA0, 0xE0,        /* 0xDC Udieresis */
 | |
|    0x20, 0x40, 0xA0, 0xE0, 0x40,        /* 0xDD Yacute */
 | |
|    0x80, 0xE0, 0xA0, 0xE0, 0x80,        /* 0xDE Thorn */
 | |
|    0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80,  /* 0xDF germandbls */
 | |
|    0x40, 0x20, 0x60, 0xA0, 0xE0,        /* 0xE0 agrave */
 | |
|    0x40, 0x80, 0x60, 0xA0, 0xE0,        /* 0xE1 aacute */
 | |
|    0xE0, 0x00, 0x60, 0xA0, 0xE0,        /* 0xE2 acircumflex */
 | |
|    0x60, 0xC0, 0x60, 0xA0, 0xE0,        /* 0xE3 atilde */
 | |
|    0xA0, 0x00, 0x60, 0xA0, 0xE0,        /* 0xE4 adieresis */
 | |
|    0x60, 0x60, 0x60, 0xA0, 0xE0,        /* 0xE5 aring */
 | |
|    0x60, 0xE0, 0xE0, 0xC0,              /* 0xE6 ae */
 | |
|    0x60, 0x80, 0x60, 0x20, 0x40,        /* 0xE7 ccedilla */
 | |
|    0x40, 0x20, 0x60, 0xE0, 0x60,        /* 0xE8 egrave */
 | |
|    0x40, 0x80, 0x60, 0xE0, 0x60,        /* 0xE9 eacute */
 | |
|    0xE0, 0x00, 0x60, 0xE0, 0x60,        /* 0xEA ecircumflex */
 | |
|    0xA0, 0x00, 0x60, 0xE0, 0x60,        /* 0xEB edieresis */
 | |
|    0x80, 0x40, 0x80, 0x80, 0x80,        /* 0xEC igrave */
 | |
|    0x40, 0x80, 0x40, 0x40, 0x40,        /* 0xED iacute */
 | |
|    0xE0, 0x00, 0x40, 0x40, 0x40,        /* 0xEE icircumflex */
 | |
|    0xA0, 0x00, 0x40, 0x40, 0x40,        /* 0xEF idieresis */
 | |
|    0x60, 0xC0, 0x60, 0xA0, 0x60,        /* 0xF0 eth */
 | |
|    0xC0, 0x60, 0xC0, 0xA0, 0xA0,        /* 0xF1 ntilde */
 | |
|    0x40, 0x20, 0x40, 0xA0, 0x40,        /* 0xF2 ograve */
 | |
|    0x40, 0x80, 0x40, 0xA0, 0x40,        /* 0xF3 oacute */
 | |
|    0xE0, 0x00, 0x40, 0xA0, 0x40,        /* 0xF4 ocircumflex */
 | |
|    0xC0, 0x60, 0x40, 0xA0, 0x40,        /* 0xF5 otilde */
 | |
|    0xA0, 0x00, 0x40, 0xA0, 0x40,        /* 0xF6 odieresis */
 | |
|    0x40, 0x00, 0xE0, 0x00, 0x40,        /* 0xF7 divide */
 | |
|    0x60, 0xE0, 0xA0, 0xC0,              /* 0xF8 oslash */
 | |
|    0x80, 0x40, 0xA0, 0xA0, 0x60,        /* 0xF9 ugrave */
 | |
|    0x20, 0x40, 0xA0, 0xA0, 0x60,        /* 0xFA uacute */
 | |
|    0xE0, 0x00, 0xA0, 0xA0, 0x60,        /* 0xFB ucircumflex */
 | |
|    0xA0, 0x00, 0xA0, 0xA0, 0x60,        /* 0xFC udieresis */
 | |
|    0x20, 0x40, 0xA0, 0x60, 0x20, 0x40,  /* 0xFD yacute */
 | |
|    0x80, 0xC0, 0xA0, 0xC0, 0x80,        /* 0xFE thorn */
 | |
|    0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40,  /* 0xFF ydieresis */
 | |
|    0x00,                                /* 0x11D gcircumflex */
 | |
|    0x60, 0xC0, 0xE0, 0xC0, 0x60,        /* 0x152 OE */
 | |
|    0x60, 0xE0, 0xC0, 0xE0,              /* 0x153 oe */
 | |
|    0xA0, 0x60, 0xC0, 0x60, 0xC0,        /* 0x160 Scaron */
 | |
|    0xA0, 0x60, 0xC0, 0x60, 0xC0,        /* 0x161 scaron */
 | |
|    0xA0, 0x00, 0xA0, 0x40, 0x40,        /* 0x178 Ydieresis */
 | |
|    0xA0, 0xE0, 0x60, 0xC0, 0xE0,        /* 0x17D Zcaron */
 | |
|    0xA0, 0xE0, 0x60, 0xC0, 0xE0,        /* 0x17E zcaron */
 | |
|    0x00,                                /* 0xEA4 uni0EA4 */
 | |
|    0x00,                                /* 0x13A0 uni13A0 */
 | |
|    0x80,                                /* 0x2022 bullet */
 | |
|    0xA0,                                /* 0x2026 ellipsis */
 | |
|    0x60, 0xE0, 0xE0, 0xC0, 0x60,        /* 0x20AC Euro */
 | |
|    0xE0, 0xA0, 0xA0, 0xA0, 0xE0,        /* 0xFFFD uniFFFD */
 | |
| #endif /* (TOMTHUMB_USE_EXTENDED)  */
 | |
|   };
 | |
| 
 | |
| 
 | |
| /* {offset, width, height, advance cursor, x offset, y offset} */
 | |
| const GFXglyph TomThumbGlyphs[] PROGMEM = {
 | |
|    { 0, 8, 1, 2, 0, -5 },    /* 0x20 space */
 | |
|    { 1, 8, 5, 2, 0, -5 },    /* 0x21 exclam */
 | |
|    { 6, 8, 2, 4, 0, -5 },    /* 0x22 quotedbl */
 | |
|    { 8, 8, 5, 4, 0, -5 },    /* 0x23 numbersign */
 | |
|    { 13, 8, 5, 4, 0, -5 },   /* 0x24 dollar */
 | |
|    { 18, 8, 5, 4, 0, -5 },   /* 0x25 percent */
 | |
|    { 23, 8, 5, 4, 0, -5 },   /* 0x26 ampersand */
 | |
|    { 28, 8, 2, 2, 0, -5 },   /* 0x27 quotesingle */
 | |
|    { 30, 8, 5, 3, 0, -5 },   /* 0x28 parenleft */
 | |
|    { 35, 8, 5, 3, 0, -5 },   /* 0x29 parenright */
 | |
|    { 40, 8, 3, 4, 0, -5 },   /* 0x2A asterisk */
 | |
|    { 43, 8, 3, 4, 0, -4 },   /* 0x2B plus */
 | |
|    { 46, 8, 2, 3, 0, -2 },   /* 0x2C comma */
 | |
|    { 48, 8, 1, 4, 0, -3 },   /* 0x2D hyphen */
 | |
|    { 49, 8, 1, 2, 0, -1 },   /* 0x2E period */
 | |
|    { 50, 8, 5, 4, 0, -5 },   /* 0x2F slash */
 | |
|    { 55, 8, 5, 4, 0, -5 },   /* 0x30 zero */
 | |
|    { 60, 8, 5, 3, 0, -5 },   /* 0x31 one */
 | |
|    { 65, 8, 5, 4, 0, -5 },   /* 0x32 two */
 | |
|    { 70, 8, 5, 4, 0, -5 },   /* 0x33 three */
 | |
|    { 75, 8, 5, 4, 0, -5 },   /* 0x34 four */
 | |
|    { 80, 8, 5, 4, 0, -5 },   /* 0x35 five */
 | |
|    { 85, 8, 5, 4, 0, -5 },   /* 0x36 six */
 | |
|    { 90, 8, 5, 4, 0, -5 },   /* 0x37 seven */
 | |
|    { 95, 8, 5, 4, 0, -5 },   /* 0x38 eight */
 | |
|    { 100, 8, 5, 4, 0, -5 },  /* 0x39 nine */
 | |
|    { 105, 8, 3, 2, 0, -4 },  /* 0x3A colon */
 | |
|    { 108, 8, 4, 3, 0, -4 },  /* 0x3B semicolon */
 | |
|    { 112, 8, 5, 4, 0, -5 },  /* 0x3C less */
 | |
|    { 117, 8, 3, 4, 0, -4 },  /* 0x3D equal */
 | |
|    { 120, 8, 5, 4, 0, -5 },  /* 0x3E greater */
 | |
|    { 125, 8, 5, 4, 0, -5 },  /* 0x3F question */
 | |
|    { 130, 8, 5, 4, 0, -5 },  /* 0x40 at */
 | |
|    { 135, 8, 5, 4, 0, -5 },  /* 0x41 A */
 | |
|    { 140, 8, 5, 4, 0, -5 },  /* 0x42 B */
 | |
|    { 145, 8, 5, 4, 0, -5 },  /* 0x43 C */
 | |
|    { 150, 8, 5, 4, 0, -5 },  /* 0x44 D */
 | |
|    { 155, 8, 5, 4, 0, -5 },  /* 0x45 E */
 | |
|    { 160, 8, 5, 4, 0, -5 },  /* 0x46 F */
 | |
|    { 165, 8, 5, 4, 0, -5 },  /* 0x47 G */
 | |
|    { 170, 8, 5, 4, 0, -5 },  /* 0x48 H */
 | |
|    { 175, 8, 5, 4, 0, -5 },  /* 0x49 I */
 | |
|    { 180, 8, 5, 4, 0, -5 },  /* 0x4A J */
 | |
|    { 185, 8, 5, 4, 0, -5 },  /* 0x4B K */
 | |
|    { 190, 8, 5, 4, 0, -5 },  /* 0x4C L */
 | |
|    { 195, 8, 5, 4, 0, -5 },  /* 0x4D M */
 | |
|    { 200, 8, 5, 4, 0, -5 },  /* 0x4E N */
 | |
|    { 205, 8, 5, 4, 0, -5 },  /* 0x4F O */
 | |
|    { 210, 8, 5, 4, 0, -5 },  /* 0x50 P */
 | |
|    { 215, 8, 5, 4, 0, -5 },  /* 0x51 Q */
 | |
|    { 220, 8, 5, 4, 0, -5 },  /* 0x52 R */
 | |
|    { 225, 8, 5, 4, 0, -5 },  /* 0x53 S */
 | |
|    { 230, 8, 5, 4, 0, -5 },  /* 0x54 T */
 | |
|    { 235, 8, 5, 4, 0, -5 },  /* 0x55 U */
 | |
|    { 240, 8, 5, 4, 0, -5 },  /* 0x56 V */
 | |
|    { 245, 8, 5, 4, 0, -5 },  /* 0x57 W */
 | |
|    { 250, 8, 5, 4, 0, -5 },  /* 0x58 X */
 | |
|    { 255, 8, 5, 4, 0, -5 },  /* 0x59 Y */
 | |
|    { 260, 8, 5, 4, 0, -5 },  /* 0x5A Z */
 | |
|    { 265, 8, 5, 4, 0, -5 },  /* 0x5B bracketleft */
 | |
|    { 270, 8, 3, 4, 0, -4 },  /* 0x5C backslash */
 | |
|    { 273, 8, 5, 4, 0, -5 },  /* 0x5D bracketright */
 | |
|    { 278, 8, 2, 4, 0, -5 },  /* 0x5E asciicircum */
 | |
|    { 280, 8, 1, 4, 0, -1 },  /* 0x5F underscore */
 | |
|    { 281, 8, 2, 3, 0, -5 },  /* 0x60 grave */
 | |
|    { 283, 8, 4, 4, 0, -4 },  /* 0x61 a */
 | |
|    { 287, 8, 5, 4, 0, -5 },  /* 0x62 b */
 | |
|    { 292, 8, 4, 4, 0, -4 },  /* 0x63 c */
 | |
|    { 296, 8, 5, 4, 0, -5 },  /* 0x64 d */
 | |
|    { 301, 8, 4, 4, 0, -4 },  /* 0x65 e */
 | |
|    { 305, 8, 5, 4, 0, -5 },  /* 0x66 f */
 | |
|    { 310, 8, 5, 4, 0, -4 },  /* 0x67 g */
 | |
|    { 315, 8, 5, 4, 0, -5 },  /* 0x68 h */
 | |
|    { 320, 8, 5, 2, 0, -5 },  /* 0x69 i */
 | |
|    { 325, 8, 6, 4, 0, -5 },  /* 0x6A j */
 | |
|    { 331, 8, 5, 4, 0, -5 },  /* 0x6B k */
 | |
|    { 336, 8, 5, 4, 0, -5 },  /* 0x6C l */
 | |
|    { 341, 8, 4, 4, 0, -4 },  /* 0x6D m */
 | |
|    { 345, 8, 4, 4, 0, -4 },  /* 0x6E n */
 | |
|    { 349, 8, 4, 4, 0, -4 },  /* 0x6F o */
 | |
|    { 353, 8, 5, 4, 0, -4 },  /* 0x70 p */
 | |
|    { 358, 8, 5, 4, 0, -4 },  /* 0x71 q */
 | |
|    { 363, 8, 4, 4, 0, -4 },  /* 0x72 r */
 | |
|    { 367, 8, 4, 4, 0, -4 },  /* 0x73 s */
 | |
|    { 371, 8, 5, 4, 0, -5 },  /* 0x74 t */
 | |
|    { 376, 8, 4, 4, 0, -4 },  /* 0x75 u */
 | |
|    { 380, 8, 4, 4, 0, -4 },  /* 0x76 v */
 | |
|    { 384, 8, 4, 4, 0, -4 },  /* 0x77 w */
 | |
|    { 388, 8, 4, 4, 0, -4 },  /* 0x78 x */
 | |
|    { 392, 8, 5, 4, 0, -4 },  /* 0x79 y */
 | |
|    { 397, 8, 4, 4, 0, -4 },  /* 0x7A z */
 | |
|    { 401, 8, 5, 4, 0, -5 },  /* 0x7B braceleft */
 | |
|    { 406, 8, 5, 2, 0, -5 },  /* 0x7C bar */
 | |
|    { 411, 8, 5, 4, 0, -5 },  /* 0x7D braceright */
 | |
|    { 416, 8, 2, 4, 0, -5 },  /* 0x7E asciitilde */
 | |
| #if (TOMTHUMB_USE_EXTENDED)
 | |
|    { 418, 8, 5, 2, 0, -5 },  /* 0xA1 exclamdown */
 | |
|    { 423, 8, 5, 4, 0, -5 },  /* 0xA2 cent */
 | |
|    { 428, 8, 5, 4, 0, -5 },  /* 0xA3 sterling */
 | |
|    { 433, 8, 5, 4, 0, -5 },  /* 0xA4 currency */
 | |
|    { 438, 8, 5, 4, 0, -5 },  /* 0xA5 yen */
 | |
|    { 443, 8, 5, 2, 0, -5 },  /* 0xA6 brokenbar */
 | |
|    { 448, 8, 5, 4, 0, -5 },  /* 0xA7 section */
 | |
|    { 453, 8, 1, 4, 0, -5 },  /* 0xA8 dieresis */
 | |
|    { 454, 8, 3, 4, 0, -5 },  /* 0xA9 copyright */
 | |
|    { 457, 8, 5, 4, 0, -5 },  /* 0xAA ordfeminine */
 | |
|    { 462, 8, 3, 3, 0, -5 },  /* 0xAB guillemotleft */
 | |
|    { 465, 8, 2, 4, 0, -4 },  /* 0xAC logicalnot */
 | |
|    { 467, 8, 1, 3, 0, -3 },  /* 0xAD softhyphen */
 | |
|    { 468, 8, 3, 4, 0, -5 },  /* 0xAE registered */
 | |
|    { 471, 8, 1, 4, 0, -5 },  /* 0xAF macron */
 | |
|    { 472, 8, 3, 4, 0, -5 },  /* 0xB0 degree */
 | |
|    { 475, 8, 5, 4, 0, -5 },  /* 0xB1 plusminus */
 | |
|    { 480, 8, 3, 4, 0, -5 },  /* 0xB2 twosuperior */
 | |
|    { 483, 8, 3, 4, 0, -5 },  /* 0xB3 threesuperior */
 | |
|    { 486, 8, 2, 3, 0, -5 },  /* 0xB4 acute */
 | |
|    { 488, 8, 5, 4, 0, -5 },  /* 0xB5 mu */
 | |
|    { 493, 8, 5, 4, 0, -5 },  /* 0xB6 paragraph */
 | |
|    { 498, 8, 3, 4, 0, -4 },  /* 0xB7 periodcentered */
 | |
|    { 501, 8, 3, 4, 0, -3 },  /* 0xB8 cedilla */
 | |
|    { 504, 8, 3, 2, 0, -5 },  /* 0xB9 onesuperior */
 | |
|    { 507, 8, 5, 4, 0, -5 },  /* 0xBA ordmasculine */
 | |
|    { 512, 8, 3, 3, 0, -5 },  /* 0xBB guillemotright */
 | |
|    { 515, 8, 5, 4, 0, -5 },  /* 0xBC onequarter */
 | |
|    { 520, 8, 5, 4, 0, -5 },  /* 0xBD onehalf */
 | |
|    { 525, 8, 5, 4, 0, -5 },  /* 0xBE threequarters */
 | |
|    { 530, 8, 5, 4, 0, -5 },  /* 0xBF questiondown */
 | |
|    { 535, 8, 5, 4, 0, -5 },  /* 0xC0 Agrave */
 | |
|    { 540, 8, 5, 4, 0, -5 },  /* 0xC1 Aacute */
 | |
|    { 545, 8, 5, 4, 0, -5 },  /* 0xC2 Acircumflex */
 | |
|    { 550, 8, 5, 4, 0, -5 },  /* 0xC3 Atilde */
 | |
|    { 555, 8, 5, 4, 0, -5 },  /* 0xC4 Adieresis */
 | |
|    { 560, 8, 5, 4, 0, -5 },  /* 0xC5 Aring */
 | |
|    { 565, 8, 5, 4, 0, -5 },  /* 0xC6 AE */
 | |
|    { 570, 8, 6, 4, 0, -5 },  /* 0xC7 Ccedilla */
 | |
|    { 576, 8, 5, 4, 0, -5 },  /* 0xC8 Egrave */
 | |
|    { 581, 8, 5, 4, 0, -5 },  /* 0xC9 Eacute */
 | |
|    { 586, 8, 5, 4, 0, -5 },  /* 0xCA Ecircumflex */
 | |
|    { 591, 8, 5, 4, 0, -5 },  /* 0xCB Edieresis */
 | |
|    { 596, 8, 5, 4, 0, -5 },  /* 0xCC Igrave */
 | |
|    { 601, 8, 5, 4, 0, -5 },  /* 0xCD Iacute */
 | |
|    { 606, 8, 5, 4, 0, -5 },  /* 0xCE Icircumflex */
 | |
|    { 611, 8, 5, 4, 0, -5 },  /* 0xCF Idieresis */
 | |
|    { 616, 8, 5, 4, 0, -5 },  /* 0xD0 Eth */
 | |
|    { 621, 8, 5, 4, 0, -5 },  /* 0xD1 Ntilde */
 | |
|    { 626, 8, 5, 4, 0, -5 },  /* 0xD2 Ograve */
 | |
|    { 631, 8, 5, 4, 0, -5 },  /* 0xD3 Oacute */
 | |
|    { 636, 8, 5, 4, 0, -5 },  /* 0xD4 Ocircumflex */
 | |
|    { 641, 8, 5, 4, 0, -5 },  /* 0xD5 Otilde */
 | |
|    { 646, 8, 5, 4, 0, -5 },  /* 0xD6 Odieresis */
 | |
|    { 651, 8, 3, 4, 0, -4 },  /* 0xD7 multiply */
 | |
|    { 654, 8, 5, 4, 0, -5 },  /* 0xD8 Oslash */
 | |
|    { 659, 8, 5, 4, 0, -5 },  /* 0xD9 Ugrave */
 | |
|    { 664, 8, 5, 4, 0, -5 },  /* 0xDA Uacute */
 | |
|    { 669, 8, 5, 4, 0, -5 },  /* 0xDB Ucircumflex */
 | |
|    { 674, 8, 5, 4, 0, -5 },  /* 0xDC Udieresis */
 | |
|    { 679, 8, 5, 4, 0, -5 },  /* 0xDD Yacute */
 | |
|    { 684, 8, 5, 4, 0, -5 },  /* 0xDE Thorn */
 | |
|    { 689, 8, 6, 4, 0, -5 },  /* 0xDF germandbls */
 | |
|    { 695, 8, 5, 4, 0, -5 },  /* 0xE0 agrave */
 | |
|    { 700, 8, 5, 4, 0, -5 },  /* 0xE1 aacute */
 | |
|    { 705, 8, 5, 4, 0, -5 },  /* 0xE2 acircumflex */
 | |
|    { 710, 8, 5, 4, 0, -5 },  /* 0xE3 atilde */
 | |
|    { 715, 8, 5, 4, 0, -5 },  /* 0xE4 adieresis */
 | |
|    { 720, 8, 5, 4, 0, -5 },  /* 0xE5 aring */
 | |
|    { 725, 8, 4, 4, 0, -4 },  /* 0xE6 ae */
 | |
|    { 729, 8, 5, 4, 0, -4 },  /* 0xE7 ccedilla */
 | |
|    { 734, 8, 5, 4, 0, -5 },  /* 0xE8 egrave */
 | |
|    { 739, 8, 5, 4, 0, -5 },  /* 0xE9 eacute */
 | |
|    { 744, 8, 5, 4, 0, -5 },  /* 0xEA ecircumflex */
 | |
|    { 749, 8, 5, 4, 0, -5 },  /* 0xEB edieresis */
 | |
|    { 754, 8, 5, 3, 0, -5 },  /* 0xEC igrave */
 | |
|    { 759, 8, 5, 3, 0, -5 },  /* 0xED iacute */
 | |
|    { 764, 8, 5, 4, 0, -5 },  /* 0xEE icircumflex */
 | |
|    { 769, 8, 5, 4, 0, -5 },  /* 0xEF idieresis */
 | |
|    { 774, 8, 5, 4, 0, -5 },  /* 0xF0 eth */
 | |
|    { 779, 8, 5, 4, 0, -5 },  /* 0xF1 ntilde */
 | |
|    { 784, 8, 5, 4, 0, -5 },  /* 0xF2 ograve */
 | |
|    { 789, 8, 5, 4, 0, -5 },  /* 0xF3 oacute */
 | |
|    { 794, 8, 5, 4, 0, -5 },  /* 0xF4 ocircumflex */
 | |
|    { 799, 8, 5, 4, 0, -5 },  /* 0xF5 otilde */
 | |
|    { 804, 8, 5, 4, 0, -5 },  /* 0xF6 odieresis */
 | |
|    { 809, 8, 5, 4, 0, -5 },  /* 0xF7 divide */
 | |
|    { 814, 8, 4, 4, 0, -4 },  /* 0xF8 oslash */
 | |
|    { 818, 8, 5, 4, 0, -5 },  /* 0xF9 ugrave */
 | |
|    { 823, 8, 5, 4, 0, -5 },  /* 0xFA uacute */
 | |
|    { 828, 8, 5, 4, 0, -5 },  /* 0xFB ucircumflex */
 | |
|    { 833, 8, 5, 4, 0, -5 },  /* 0xFC udieresis */
 | |
|    { 838, 8, 6, 4, 0, -5 },  /* 0xFD yacute */
 | |
|    { 844, 8, 5, 4, 0, -4 },  /* 0xFE thorn */
 | |
|    { 849, 8, 6, 4, 0, -5 },  /* 0xFF ydieresis */
 | |
|    { 855, 8, 1, 2, 0, -1 },  /* 0x11D gcircumflex */
 | |
|    { 856, 8, 5, 4, 0, -5 },  /* 0x152 OE */
 | |
|    { 861, 8, 4, 4, 0, -4 },  /* 0x153 oe */
 | |
|    { 865, 8, 5, 4, 0, -5 },  /* 0x160 Scaron */
 | |
|    { 870, 8, 5, 4, 0, -5 },  /* 0x161 scaron */
 | |
|    { 875, 8, 5, 4, 0, -5 },  /* 0x178 Ydieresis */
 | |
|    { 880, 8, 5, 4, 0, -5 },  /* 0x17D Zcaron */
 | |
|    { 885, 8, 5, 4, 0, -5 },  /* 0x17E zcaron */
 | |
|    { 890, 8, 1, 2, 0, -1 },  /* 0xEA4 uni0EA4 */
 | |
|    { 891, 8, 1, 2, 0, -1 },  /* 0x13A0 uni13A0 */
 | |
|    { 892, 8, 1, 2, 0, -3 },  /* 0x2022 bullet */
 | |
|    { 893, 8, 1, 4, 0, -1 },  /* 0x2026 ellipsis */
 | |
|    { 894, 8, 5, 4, 0, -5 },  /* 0x20AC Euro */
 | |
|    { 899, 8, 5, 4, 0, -5 },  /* 0xFFFD uniFFFD */
 | |
| #endif /* (TOMTHUMB_USE_EXTENDED) */
 | |
| };
 | |
| 
 | |
| const GFXfont TomThumb PROGMEM = {
 | |
|   (uint8_t  *)TomThumbBitmaps,
 | |
|   (GFXglyph *)TomThumbGlyphs,
 | |
|   0x20, 0x7E, 6 };
 |