MBED Import of ADAFRUIT graphics library, BSD License

Dependents:   GP9002adafruit GP9002af_gray

Notes on this library

This was imported into MBED specifically to support the GP9002 VFD, as a result it has some "hacks" to optimize it for the GP9002.

Due to the GP9002 internal organization it draws vertical lines much faster than horizontal (assuming you orient it "landscape"). This is likely to be true of other displays that have bits in a byte arranged vertically, which seems a common theme in small GLCDs. Some types may have a more CGA-like memory organization and will draw faster horizontally.

On a vertical-organised display the graphics functions are often substantially faster if X and Y are exchanged, especially with the dot-write optimization. This is because vertical lines can be written byte-at-a-time with no need for read-modify-write, and even when individual bits are written a significant number will "land" in the byte previously written. In contrast a horizontal line would require changing one bit of each byte in turn, requiring a sequence of set-address,read,write operations for each dot in turn.

I've hacked this in the library. I forget exactly how but I believe I simply exchanged X with W in the code for drawing filled shapes.

I would like to come up with a more generic way to do this, such as having internal coordinates that are not defined as X and Y, then leaving it up to the display library to "wrap" them in the way that is best for that display.

I would like to apologize for abandoning this project, but the test harness still exists and I might return to it, though I'm more interested in TFT systems like the STM discovery now.

Committer:
oliverb
Date:
Sat May 07 12:50:37 2016 +0000
Revision:
0:3bf8ef959338
Converting to Library, this is a base class that needs extending for a specific device. Note that as it stands it favors devices with vertical bit-organisation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oliverb 0:3bf8ef959338 1 /**
oliverb 0:3bf8ef959338 2 ** The original 3x5 font is licensed under the 3-clause BSD license:
oliverb 0:3bf8ef959338 3 **
oliverb 0:3bf8ef959338 4 ** Copyright 1999 Brian J. Swetland
oliverb 0:3bf8ef959338 5 ** Copyright 1999 Vassilii Khachaturov
oliverb 0:3bf8ef959338 6 ** Portions (of vt100.c/vt100.h) copyright Dan Marks
oliverb 0:3bf8ef959338 7 **
oliverb 0:3bf8ef959338 8 ** All rights reserved.
oliverb 0:3bf8ef959338 9 **
oliverb 0:3bf8ef959338 10 ** Redistribution and use in source and binary forms, with or without
oliverb 0:3bf8ef959338 11 ** modification, are permitted provided that the following conditions
oliverb 0:3bf8ef959338 12 ** are met:
oliverb 0:3bf8ef959338 13 ** 1. Redistributions of source code must retain the above copyright
oliverb 0:3bf8ef959338 14 ** notice, this list of conditions, and the following disclaimer.
oliverb 0:3bf8ef959338 15 ** 2. Redistributions in binary form must reproduce the above copyright
oliverb 0:3bf8ef959338 16 ** notice, this list of conditions, and the following disclaimer in the
oliverb 0:3bf8ef959338 17 ** documentation and/or other materials provided with the distribution.
oliverb 0:3bf8ef959338 18 ** 3. The name of the authors may not be used to endorse or promote products
oliverb 0:3bf8ef959338 19 ** derived from this software without specific prior written permission.
oliverb 0:3bf8ef959338 20 **
oliverb 0:3bf8ef959338 21 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
oliverb 0:3bf8ef959338 22 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
oliverb 0:3bf8ef959338 23 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
oliverb 0:3bf8ef959338 24 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
oliverb 0:3bf8ef959338 25 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
oliverb 0:3bf8ef959338 26 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
oliverb 0:3bf8ef959338 27 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
oliverb 0:3bf8ef959338 28 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
oliverb 0:3bf8ef959338 29 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
oliverb 0:3bf8ef959338 30 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
oliverb 0:3bf8ef959338 31 **
oliverb 0:3bf8ef959338 32 ** Modifications to Tom Thumb for improved readability are from Robey Pointer,
oliverb 0:3bf8ef959338 33 ** see:
oliverb 0:3bf8ef959338 34 ** http://robey.lag.net/2010/01/23/tiny-monospace-font.html
oliverb 0:3bf8ef959338 35 **
oliverb 0:3bf8ef959338 36 ** The original author does not have any objection to relicensing of Robey
oliverb 0:3bf8ef959338 37 ** Pointer's modifications (in this file) in a more permissive license. See
oliverb 0:3bf8ef959338 38 ** the discussion at the above blog, and also here:
oliverb 0:3bf8ef959338 39 ** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license
oliverb 0:3bf8ef959338 40 **
oliverb 0:3bf8ef959338 41 ** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font,
oliverb 0:3bf8ef959338 42 ** with the help of this Python script:
oliverb 0:3bf8ef959338 43 ** https://gist.github.com/skelliam/322d421f028545f16f6d
oliverb 0:3bf8ef959338 44 ** William Skellenger (williamj@skellenger.net)
oliverb 0:3bf8ef959338 45 ** Twitter: @skelliam
oliverb 0:3bf8ef959338 46 **
oliverb 0:3bf8ef959338 47 */
oliverb 0:3bf8ef959338 48
oliverb 0:3bf8ef959338 49 #define TOMTHUMB_USE_EXTENDED 0
oliverb 0:3bf8ef959338 50
oliverb 0:3bf8ef959338 51 const uint8_t TomThumbBitmaps[] PROGMEM = {
oliverb 0:3bf8ef959338 52 0x00, /* 0x20 space */
oliverb 0:3bf8ef959338 53 0x80, 0x80, 0x80, 0x00, 0x80, /* 0x21 exclam */
oliverb 0:3bf8ef959338 54 0xA0, 0xA0, /* 0x22 quotedbl */
oliverb 0:3bf8ef959338 55 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /* 0x23 numbersign */
oliverb 0:3bf8ef959338 56 0x60, 0xC0, 0x60, 0xC0, 0x40, /* 0x24 dollar */
oliverb 0:3bf8ef959338 57 0x80, 0x20, 0x40, 0x80, 0x20, /* 0x25 percent */
oliverb 0:3bf8ef959338 58 0xC0, 0xC0, 0xE0, 0xA0, 0x60, /* 0x26 ampersand */
oliverb 0:3bf8ef959338 59 0x80, 0x80, /* 0x27 quotesingle */
oliverb 0:3bf8ef959338 60 0x40, 0x80, 0x80, 0x80, 0x40, /* 0x28 parenleft */
oliverb 0:3bf8ef959338 61 0x80, 0x40, 0x40, 0x40, 0x80, /* 0x29 parenright */
oliverb 0:3bf8ef959338 62 0xA0, 0x40, 0xA0, /* 0x2A asterisk */
oliverb 0:3bf8ef959338 63 0x40, 0xE0, 0x40, /* 0x2B plus */
oliverb 0:3bf8ef959338 64 0x40, 0x80, /* 0x2C comma */
oliverb 0:3bf8ef959338 65 0xE0, /* 0x2D hyphen */
oliverb 0:3bf8ef959338 66 0x80, /* 0x2E period */
oliverb 0:3bf8ef959338 67 0x20, 0x20, 0x40, 0x80, 0x80, /* 0x2F slash */
oliverb 0:3bf8ef959338 68 0x60, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x30 zero */
oliverb 0:3bf8ef959338 69 0x40, 0xC0, 0x40, 0x40, 0x40, /* 0x31 one */
oliverb 0:3bf8ef959338 70 0xC0, 0x20, 0x40, 0x80, 0xE0, /* 0x32 two */
oliverb 0:3bf8ef959338 71 0xC0, 0x20, 0x40, 0x20, 0xC0, /* 0x33 three */
oliverb 0:3bf8ef959338 72 0xA0, 0xA0, 0xE0, 0x20, 0x20, /* 0x34 four */
oliverb 0:3bf8ef959338 73 0xE0, 0x80, 0xC0, 0x20, 0xC0, /* 0x35 five */
oliverb 0:3bf8ef959338 74 0x60, 0x80, 0xE0, 0xA0, 0xE0, /* 0x36 six */
oliverb 0:3bf8ef959338 75 0xE0, 0x20, 0x40, 0x80, 0x80, /* 0x37 seven */
oliverb 0:3bf8ef959338 76 0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /* 0x38 eight */
oliverb 0:3bf8ef959338 77 0xE0, 0xA0, 0xE0, 0x20, 0xC0, /* 0x39 nine */
oliverb 0:3bf8ef959338 78 0x80, 0x00, 0x80, /* 0x3A colon */
oliverb 0:3bf8ef959338 79 0x40, 0x00, 0x40, 0x80, /* 0x3B semicolon */
oliverb 0:3bf8ef959338 80 0x20, 0x40, 0x80, 0x40, 0x20, /* 0x3C less */
oliverb 0:3bf8ef959338 81 0xE0, 0x00, 0xE0, /* 0x3D equal */
oliverb 0:3bf8ef959338 82 0x80, 0x40, 0x20, 0x40, 0x80, /* 0x3E greater */
oliverb 0:3bf8ef959338 83 0xE0, 0x20, 0x40, 0x00, 0x40, /* 0x3F question */
oliverb 0:3bf8ef959338 84 0x40, 0xA0, 0xE0, 0x80, 0x60, /* 0x40 at */
oliverb 0:3bf8ef959338 85 0x40, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x41 A */
oliverb 0:3bf8ef959338 86 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /* 0x42 B */
oliverb 0:3bf8ef959338 87 0x60, 0x80, 0x80, 0x80, 0x60, /* 0x43 C */
oliverb 0:3bf8ef959338 88 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x44 D */
oliverb 0:3bf8ef959338 89 0xE0, 0x80, 0xE0, 0x80, 0xE0, /* 0x45 E */
oliverb 0:3bf8ef959338 90 0xE0, 0x80, 0xE0, 0x80, 0x80, /* 0x46 F */
oliverb 0:3bf8ef959338 91 0x60, 0x80, 0xE0, 0xA0, 0x60, /* 0x47 G */
oliverb 0:3bf8ef959338 92 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x48 H */
oliverb 0:3bf8ef959338 93 0xE0, 0x40, 0x40, 0x40, 0xE0, /* 0x49 I */
oliverb 0:3bf8ef959338 94 0x20, 0x20, 0x20, 0xA0, 0x40, /* 0x4A J */
oliverb 0:3bf8ef959338 95 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /* 0x4B K */
oliverb 0:3bf8ef959338 96 0x80, 0x80, 0x80, 0x80, 0xE0, /* 0x4C L */
oliverb 0:3bf8ef959338 97 0xA0, 0xE0, 0xE0, 0xA0, 0xA0, /* 0x4D M */
oliverb 0:3bf8ef959338 98 0xA0, 0xE0, 0xE0, 0xE0, 0xA0, /* 0x4E N */
oliverb 0:3bf8ef959338 99 0x40, 0xA0, 0xA0, 0xA0, 0x40, /* 0x4F O */
oliverb 0:3bf8ef959338 100 0xC0, 0xA0, 0xC0, 0x80, 0x80, /* 0x50 P */
oliverb 0:3bf8ef959338 101 0x40, 0xA0, 0xA0, 0xE0, 0x60, /* 0x51 Q */
oliverb 0:3bf8ef959338 102 0xC0, 0xA0, 0xE0, 0xC0, 0xA0, /* 0x52 R */
oliverb 0:3bf8ef959338 103 0x60, 0x80, 0x40, 0x20, 0xC0, /* 0x53 S */
oliverb 0:3bf8ef959338 104 0xE0, 0x40, 0x40, 0x40, 0x40, /* 0x54 T */
oliverb 0:3bf8ef959338 105 0xA0, 0xA0, 0xA0, 0xA0, 0x60, /* 0x55 U */
oliverb 0:3bf8ef959338 106 0xA0, 0xA0, 0xA0, 0x40, 0x40, /* 0x56 V */
oliverb 0:3bf8ef959338 107 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, /* 0x57 W */
oliverb 0:3bf8ef959338 108 0xA0, 0xA0, 0x40, 0xA0, 0xA0, /* 0x58 X */
oliverb 0:3bf8ef959338 109 0xA0, 0xA0, 0x40, 0x40, 0x40, /* 0x59 Y */
oliverb 0:3bf8ef959338 110 0xE0, 0x20, 0x40, 0x80, 0xE0, /* 0x5A Z */
oliverb 0:3bf8ef959338 111 0xE0, 0x80, 0x80, 0x80, 0xE0, /* 0x5B bracketleft */
oliverb 0:3bf8ef959338 112 0x80, 0x40, 0x20, /* 0x5C backslash */
oliverb 0:3bf8ef959338 113 0xE0, 0x20, 0x20, 0x20, 0xE0, /* 0x5D bracketright */
oliverb 0:3bf8ef959338 114 0x40, 0xA0, /* 0x5E asciicircum */
oliverb 0:3bf8ef959338 115 0xE0, /* 0x5F underscore */
oliverb 0:3bf8ef959338 116 0x80, 0x40, /* 0x60 grave */
oliverb 0:3bf8ef959338 117 0xC0, 0x60, 0xA0, 0xE0, /* 0x61 a */
oliverb 0:3bf8ef959338 118 0x80, 0xC0, 0xA0, 0xA0, 0xC0, /* 0x62 b */
oliverb 0:3bf8ef959338 119 0x60, 0x80, 0x80, 0x60, /* 0x63 c */
oliverb 0:3bf8ef959338 120 0x20, 0x60, 0xA0, 0xA0, 0x60, /* 0x64 d */
oliverb 0:3bf8ef959338 121 0x60, 0xA0, 0xC0, 0x60, /* 0x65 e */
oliverb 0:3bf8ef959338 122 0x20, 0x40, 0xE0, 0x40, 0x40, /* 0x66 f */
oliverb 0:3bf8ef959338 123 0x60, 0xA0, 0xE0, 0x20, 0x40, /* 0x67 g */
oliverb 0:3bf8ef959338 124 0x80, 0xC0, 0xA0, 0xA0, 0xA0, /* 0x68 h */
oliverb 0:3bf8ef959338 125 0x80, 0x00, 0x80, 0x80, 0x80, /* 0x69 i */
oliverb 0:3bf8ef959338 126 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /* 0x6A j */
oliverb 0:3bf8ef959338 127 0x80, 0xA0, 0xC0, 0xC0, 0xA0, /* 0x6B k */
oliverb 0:3bf8ef959338 128 0xC0, 0x40, 0x40, 0x40, 0xE0, /* 0x6C l */
oliverb 0:3bf8ef959338 129 0xE0, 0xE0, 0xE0, 0xA0, /* 0x6D m */
oliverb 0:3bf8ef959338 130 0xC0, 0xA0, 0xA0, 0xA0, /* 0x6E n */
oliverb 0:3bf8ef959338 131 0x40, 0xA0, 0xA0, 0x40, /* 0x6F o */
oliverb 0:3bf8ef959338 132 0xC0, 0xA0, 0xA0, 0xC0, 0x80, /* 0x70 p */
oliverb 0:3bf8ef959338 133 0x60, 0xA0, 0xA0, 0x60, 0x20, /* 0x71 q */
oliverb 0:3bf8ef959338 134 0x60, 0x80, 0x80, 0x80, /* 0x72 r */
oliverb 0:3bf8ef959338 135 0x60, 0xC0, 0x60, 0xC0, /* 0x73 s */
oliverb 0:3bf8ef959338 136 0x40, 0xE0, 0x40, 0x40, 0x60, /* 0x74 t */
oliverb 0:3bf8ef959338 137 0xA0, 0xA0, 0xA0, 0x60, /* 0x75 u */
oliverb 0:3bf8ef959338 138 0xA0, 0xA0, 0xE0, 0x40, /* 0x76 v */
oliverb 0:3bf8ef959338 139 0xA0, 0xE0, 0xE0, 0xE0, /* 0x77 w */
oliverb 0:3bf8ef959338 140 0xA0, 0x40, 0x40, 0xA0, /* 0x78 x */
oliverb 0:3bf8ef959338 141 0xA0, 0xA0, 0x60, 0x20, 0x40, /* 0x79 y */
oliverb 0:3bf8ef959338 142 0xE0, 0x60, 0xC0, 0xE0, /* 0x7A z */
oliverb 0:3bf8ef959338 143 0x60, 0x40, 0x80, 0x40, 0x60, /* 0x7B braceleft */
oliverb 0:3bf8ef959338 144 0x80, 0x80, 0x00, 0x80, 0x80, /* 0x7C bar */
oliverb 0:3bf8ef959338 145 0xC0, 0x40, 0x20, 0x40, 0xC0, /* 0x7D braceright */
oliverb 0:3bf8ef959338 146 0x60, 0xC0, /* 0x7E asciitilde */
oliverb 0:3bf8ef959338 147 #if (TOMTHUMB_USE_EXTENDED)
oliverb 0:3bf8ef959338 148 0x80, 0x00, 0x80, 0x80, 0x80, /* 0xA1 exclamdown */
oliverb 0:3bf8ef959338 149 0x40, 0xE0, 0x80, 0xE0, 0x40, /* 0xA2 cent */
oliverb 0:3bf8ef959338 150 0x60, 0x40, 0xE0, 0x40, 0xE0, /* 0xA3 sterling */
oliverb 0:3bf8ef959338 151 0xA0, 0x40, 0xE0, 0x40, 0xA0, /* 0xA4 currency */
oliverb 0:3bf8ef959338 152 0xA0, 0xA0, 0x40, 0xE0, 0x40, /* 0xA5 yen */
oliverb 0:3bf8ef959338 153 0x80, 0x80, 0x00, 0x80, 0x80, /* 0xA6 brokenbar */
oliverb 0:3bf8ef959338 154 0x60, 0x40, 0xA0, 0x40, 0xC0, /* 0xA7 section */
oliverb 0:3bf8ef959338 155 0xA0, /* 0xA8 dieresis */
oliverb 0:3bf8ef959338 156 0x60, 0x80, 0x60, /* 0xA9 copyright */
oliverb 0:3bf8ef959338 157 0x60, 0xA0, 0xE0, 0x00, 0xE0, /* 0xAA ordfeminine */
oliverb 0:3bf8ef959338 158 0x40, 0x80, 0x40, /* 0xAB guillemotleft */
oliverb 0:3bf8ef959338 159 0xE0, 0x20, /* 0xAC logicalnot */
oliverb 0:3bf8ef959338 160 0xC0, /* 0xAD softhyphen */
oliverb 0:3bf8ef959338 161 0xC0, 0xC0, 0xA0, /* 0xAE registered */
oliverb 0:3bf8ef959338 162 0xE0, /* 0xAF macron */
oliverb 0:3bf8ef959338 163 0x40, 0xA0, 0x40, /* 0xB0 degree */
oliverb 0:3bf8ef959338 164 0x40, 0xE0, 0x40, 0x00, 0xE0, /* 0xB1 plusminus */
oliverb 0:3bf8ef959338 165 0xC0, 0x40, 0x60, /* 0xB2 twosuperior */
oliverb 0:3bf8ef959338 166 0xE0, 0x60, 0xE0, /* 0xB3 threesuperior */
oliverb 0:3bf8ef959338 167 0x40, 0x80, /* 0xB4 acute */
oliverb 0:3bf8ef959338 168 0xA0, 0xA0, 0xA0, 0xC0, 0x80, /* 0xB5 mu */
oliverb 0:3bf8ef959338 169 0x60, 0xA0, 0x60, 0x60, 0x60, /* 0xB6 paragraph */
oliverb 0:3bf8ef959338 170 0xE0, 0xE0, 0xE0, /* 0xB7 periodcentered */
oliverb 0:3bf8ef959338 171 0x40, 0x20, 0xC0, /* 0xB8 cedilla */
oliverb 0:3bf8ef959338 172 0x80, 0x80, 0x80, /* 0xB9 onesuperior */
oliverb 0:3bf8ef959338 173 0x40, 0xA0, 0x40, 0x00, 0xE0, /* 0xBA ordmasculine */
oliverb 0:3bf8ef959338 174 0x80, 0x40, 0x80, /* 0xBB guillemotright */
oliverb 0:3bf8ef959338 175 0x80, 0x80, 0x00, 0x60, 0x20, /* 0xBC onequarter */
oliverb 0:3bf8ef959338 176 0x80, 0x80, 0x00, 0xC0, 0x60, /* 0xBD onehalf */
oliverb 0:3bf8ef959338 177 0xC0, 0xC0, 0x00, 0x60, 0x20, /* 0xBE threequarters */
oliverb 0:3bf8ef959338 178 0x40, 0x00, 0x40, 0x80, 0xE0, /* 0xBF questiondown */
oliverb 0:3bf8ef959338 179 0x40, 0x20, 0x40, 0xE0, 0xA0, /* 0xC0 Agrave */
oliverb 0:3bf8ef959338 180 0x40, 0x80, 0x40, 0xE0, 0xA0, /* 0xC1 Aacute */
oliverb 0:3bf8ef959338 181 0xE0, 0x00, 0x40, 0xE0, 0xA0, /* 0xC2 Acircumflex */
oliverb 0:3bf8ef959338 182 0x60, 0xC0, 0x40, 0xE0, 0xA0, /* 0xC3 Atilde */
oliverb 0:3bf8ef959338 183 0xA0, 0x40, 0xA0, 0xE0, 0xA0, /* 0xC4 Adieresis */
oliverb 0:3bf8ef959338 184 0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /* 0xC5 Aring */
oliverb 0:3bf8ef959338 185 0x60, 0xC0, 0xE0, 0xC0, 0xE0, /* 0xC6 AE */
oliverb 0:3bf8ef959338 186 0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /* 0xC7 Ccedilla */
oliverb 0:3bf8ef959338 187 0x40, 0x20, 0xE0, 0xC0, 0xE0, /* 0xC8 Egrave */
oliverb 0:3bf8ef959338 188 0x40, 0x80, 0xE0, 0xC0, 0xE0, /* 0xC9 Eacute */
oliverb 0:3bf8ef959338 189 0xE0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCA Ecircumflex */
oliverb 0:3bf8ef959338 190 0xA0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCB Edieresis */
oliverb 0:3bf8ef959338 191 0x40, 0x20, 0xE0, 0x40, 0xE0, /* 0xCC Igrave */
oliverb 0:3bf8ef959338 192 0x40, 0x80, 0xE0, 0x40, 0xE0, /* 0xCD Iacute */
oliverb 0:3bf8ef959338 193 0xE0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCE Icircumflex */
oliverb 0:3bf8ef959338 194 0xA0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCF Idieresis */
oliverb 0:3bf8ef959338 195 0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD0 Eth */
oliverb 0:3bf8ef959338 196 0xC0, 0x60, 0xA0, 0xE0, 0xA0, /* 0xD1 Ntilde */
oliverb 0:3bf8ef959338 197 0x40, 0x20, 0xE0, 0xA0, 0xE0, /* 0xD2 Ograve */
oliverb 0:3bf8ef959338 198 0x40, 0x80, 0xE0, 0xA0, 0xE0, /* 0xD3 Oacute */
oliverb 0:3bf8ef959338 199 0xE0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD4 Ocircumflex */
oliverb 0:3bf8ef959338 200 0xC0, 0x60, 0xE0, 0xA0, 0xE0, /* 0xD5 Otilde */
oliverb 0:3bf8ef959338 201 0xA0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD6 Odieresis */
oliverb 0:3bf8ef959338 202 0xA0, 0x40, 0xA0, /* 0xD7 multiply */
oliverb 0:3bf8ef959338 203 0x60, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD8 Oslash */
oliverb 0:3bf8ef959338 204 0x80, 0x40, 0xA0, 0xA0, 0xE0, /* 0xD9 Ugrave */
oliverb 0:3bf8ef959338 205 0x20, 0x40, 0xA0, 0xA0, 0xE0, /* 0xDA Uacute */
oliverb 0:3bf8ef959338 206 0xE0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDB Ucircumflex */
oliverb 0:3bf8ef959338 207 0xA0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDC Udieresis */
oliverb 0:3bf8ef959338 208 0x20, 0x40, 0xA0, 0xE0, 0x40, /* 0xDD Yacute */
oliverb 0:3bf8ef959338 209 0x80, 0xE0, 0xA0, 0xE0, 0x80, /* 0xDE Thorn */
oliverb 0:3bf8ef959338 210 0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /* 0xDF germandbls */
oliverb 0:3bf8ef959338 211 0x40, 0x20, 0x60, 0xA0, 0xE0, /* 0xE0 agrave */
oliverb 0:3bf8ef959338 212 0x40, 0x80, 0x60, 0xA0, 0xE0, /* 0xE1 aacute */
oliverb 0:3bf8ef959338 213 0xE0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE2 acircumflex */
oliverb 0:3bf8ef959338 214 0x60, 0xC0, 0x60, 0xA0, 0xE0, /* 0xE3 atilde */
oliverb 0:3bf8ef959338 215 0xA0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE4 adieresis */
oliverb 0:3bf8ef959338 216 0x60, 0x60, 0x60, 0xA0, 0xE0, /* 0xE5 aring */
oliverb 0:3bf8ef959338 217 0x60, 0xE0, 0xE0, 0xC0, /* 0xE6 ae */
oliverb 0:3bf8ef959338 218 0x60, 0x80, 0x60, 0x20, 0x40, /* 0xE7 ccedilla */
oliverb 0:3bf8ef959338 219 0x40, 0x20, 0x60, 0xE0, 0x60, /* 0xE8 egrave */
oliverb 0:3bf8ef959338 220 0x40, 0x80, 0x60, 0xE0, 0x60, /* 0xE9 eacute */
oliverb 0:3bf8ef959338 221 0xE0, 0x00, 0x60, 0xE0, 0x60, /* 0xEA ecircumflex */
oliverb 0:3bf8ef959338 222 0xA0, 0x00, 0x60, 0xE0, 0x60, /* 0xEB edieresis */
oliverb 0:3bf8ef959338 223 0x80, 0x40, 0x80, 0x80, 0x80, /* 0xEC igrave */
oliverb 0:3bf8ef959338 224 0x40, 0x80, 0x40, 0x40, 0x40, /* 0xED iacute */
oliverb 0:3bf8ef959338 225 0xE0, 0x00, 0x40, 0x40, 0x40, /* 0xEE icircumflex */
oliverb 0:3bf8ef959338 226 0xA0, 0x00, 0x40, 0x40, 0x40, /* 0xEF idieresis */
oliverb 0:3bf8ef959338 227 0x60, 0xC0, 0x60, 0xA0, 0x60, /* 0xF0 eth */
oliverb 0:3bf8ef959338 228 0xC0, 0x60, 0xC0, 0xA0, 0xA0, /* 0xF1 ntilde */
oliverb 0:3bf8ef959338 229 0x40, 0x20, 0x40, 0xA0, 0x40, /* 0xF2 ograve */
oliverb 0:3bf8ef959338 230 0x40, 0x80, 0x40, 0xA0, 0x40, /* 0xF3 oacute */
oliverb 0:3bf8ef959338 231 0xE0, 0x00, 0x40, 0xA0, 0x40, /* 0xF4 ocircumflex */
oliverb 0:3bf8ef959338 232 0xC0, 0x60, 0x40, 0xA0, 0x40, /* 0xF5 otilde */
oliverb 0:3bf8ef959338 233 0xA0, 0x00, 0x40, 0xA0, 0x40, /* 0xF6 odieresis */
oliverb 0:3bf8ef959338 234 0x40, 0x00, 0xE0, 0x00, 0x40, /* 0xF7 divide */
oliverb 0:3bf8ef959338 235 0x60, 0xE0, 0xA0, 0xC0, /* 0xF8 oslash */
oliverb 0:3bf8ef959338 236 0x80, 0x40, 0xA0, 0xA0, 0x60, /* 0xF9 ugrave */
oliverb 0:3bf8ef959338 237 0x20, 0x40, 0xA0, 0xA0, 0x60, /* 0xFA uacute */
oliverb 0:3bf8ef959338 238 0xE0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFB ucircumflex */
oliverb 0:3bf8ef959338 239 0xA0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFC udieresis */
oliverb 0:3bf8ef959338 240 0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /* 0xFD yacute */
oliverb 0:3bf8ef959338 241 0x80, 0xC0, 0xA0, 0xC0, 0x80, /* 0xFE thorn */
oliverb 0:3bf8ef959338 242 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /* 0xFF ydieresis */
oliverb 0:3bf8ef959338 243 0x00, /* 0x11D gcircumflex */
oliverb 0:3bf8ef959338 244 0x60, 0xC0, 0xE0, 0xC0, 0x60, /* 0x152 OE */
oliverb 0:3bf8ef959338 245 0x60, 0xE0, 0xC0, 0xE0, /* 0x153 oe */
oliverb 0:3bf8ef959338 246 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x160 Scaron */
oliverb 0:3bf8ef959338 247 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x161 scaron */
oliverb 0:3bf8ef959338 248 0xA0, 0x00, 0xA0, 0x40, 0x40, /* 0x178 Ydieresis */
oliverb 0:3bf8ef959338 249 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17D Zcaron */
oliverb 0:3bf8ef959338 250 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17E zcaron */
oliverb 0:3bf8ef959338 251 0x00, /* 0xEA4 uni0EA4 */
oliverb 0:3bf8ef959338 252 0x00, /* 0x13A0 uni13A0 */
oliverb 0:3bf8ef959338 253 0x80, /* 0x2022 bullet */
oliverb 0:3bf8ef959338 254 0xA0, /* 0x2026 ellipsis */
oliverb 0:3bf8ef959338 255 0x60, 0xE0, 0xE0, 0xC0, 0x60, /* 0x20AC Euro */
oliverb 0:3bf8ef959338 256 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /* 0xFFFD uniFFFD */
oliverb 0:3bf8ef959338 257 #endif /* (TOMTHUMB_USE_EXTENDED) */
oliverb 0:3bf8ef959338 258 };
oliverb 0:3bf8ef959338 259
oliverb 0:3bf8ef959338 260
oliverb 0:3bf8ef959338 261 /* {offset, width, height, advance cursor, x offset, y offset} */
oliverb 0:3bf8ef959338 262 const GFXglyph TomThumbGlyphs[] PROGMEM = {
oliverb 0:3bf8ef959338 263 { 0, 8, 1, 2, 0, -5 }, /* 0x20 space */
oliverb 0:3bf8ef959338 264 { 1, 8, 5, 2, 0, -5 }, /* 0x21 exclam */
oliverb 0:3bf8ef959338 265 { 6, 8, 2, 4, 0, -5 }, /* 0x22 quotedbl */
oliverb 0:3bf8ef959338 266 { 8, 8, 5, 4, 0, -5 }, /* 0x23 numbersign */
oliverb 0:3bf8ef959338 267 { 13, 8, 5, 4, 0, -5 }, /* 0x24 dollar */
oliverb 0:3bf8ef959338 268 { 18, 8, 5, 4, 0, -5 }, /* 0x25 percent */
oliverb 0:3bf8ef959338 269 { 23, 8, 5, 4, 0, -5 }, /* 0x26 ampersand */
oliverb 0:3bf8ef959338 270 { 28, 8, 2, 2, 0, -5 }, /* 0x27 quotesingle */
oliverb 0:3bf8ef959338 271 { 30, 8, 5, 3, 0, -5 }, /* 0x28 parenleft */
oliverb 0:3bf8ef959338 272 { 35, 8, 5, 3, 0, -5 }, /* 0x29 parenright */
oliverb 0:3bf8ef959338 273 { 40, 8, 3, 4, 0, -5 }, /* 0x2A asterisk */
oliverb 0:3bf8ef959338 274 { 43, 8, 3, 4, 0, -4 }, /* 0x2B plus */
oliverb 0:3bf8ef959338 275 { 46, 8, 2, 3, 0, -2 }, /* 0x2C comma */
oliverb 0:3bf8ef959338 276 { 48, 8, 1, 4, 0, -3 }, /* 0x2D hyphen */
oliverb 0:3bf8ef959338 277 { 49, 8, 1, 2, 0, -1 }, /* 0x2E period */
oliverb 0:3bf8ef959338 278 { 50, 8, 5, 4, 0, -5 }, /* 0x2F slash */
oliverb 0:3bf8ef959338 279 { 55, 8, 5, 4, 0, -5 }, /* 0x30 zero */
oliverb 0:3bf8ef959338 280 { 60, 8, 5, 3, 0, -5 }, /* 0x31 one */
oliverb 0:3bf8ef959338 281 { 65, 8, 5, 4, 0, -5 }, /* 0x32 two */
oliverb 0:3bf8ef959338 282 { 70, 8, 5, 4, 0, -5 }, /* 0x33 three */
oliverb 0:3bf8ef959338 283 { 75, 8, 5, 4, 0, -5 }, /* 0x34 four */
oliverb 0:3bf8ef959338 284 { 80, 8, 5, 4, 0, -5 }, /* 0x35 five */
oliverb 0:3bf8ef959338 285 { 85, 8, 5, 4, 0, -5 }, /* 0x36 six */
oliverb 0:3bf8ef959338 286 { 90, 8, 5, 4, 0, -5 }, /* 0x37 seven */
oliverb 0:3bf8ef959338 287 { 95, 8, 5, 4, 0, -5 }, /* 0x38 eight */
oliverb 0:3bf8ef959338 288 { 100, 8, 5, 4, 0, -5 }, /* 0x39 nine */
oliverb 0:3bf8ef959338 289 { 105, 8, 3, 2, 0, -4 }, /* 0x3A colon */
oliverb 0:3bf8ef959338 290 { 108, 8, 4, 3, 0, -4 }, /* 0x3B semicolon */
oliverb 0:3bf8ef959338 291 { 112, 8, 5, 4, 0, -5 }, /* 0x3C less */
oliverb 0:3bf8ef959338 292 { 117, 8, 3, 4, 0, -4 }, /* 0x3D equal */
oliverb 0:3bf8ef959338 293 { 120, 8, 5, 4, 0, -5 }, /* 0x3E greater */
oliverb 0:3bf8ef959338 294 { 125, 8, 5, 4, 0, -5 }, /* 0x3F question */
oliverb 0:3bf8ef959338 295 { 130, 8, 5, 4, 0, -5 }, /* 0x40 at */
oliverb 0:3bf8ef959338 296 { 135, 8, 5, 4, 0, -5 }, /* 0x41 A */
oliverb 0:3bf8ef959338 297 { 140, 8, 5, 4, 0, -5 }, /* 0x42 B */
oliverb 0:3bf8ef959338 298 { 145, 8, 5, 4, 0, -5 }, /* 0x43 C */
oliverb 0:3bf8ef959338 299 { 150, 8, 5, 4, 0, -5 }, /* 0x44 D */
oliverb 0:3bf8ef959338 300 { 155, 8, 5, 4, 0, -5 }, /* 0x45 E */
oliverb 0:3bf8ef959338 301 { 160, 8, 5, 4, 0, -5 }, /* 0x46 F */
oliverb 0:3bf8ef959338 302 { 165, 8, 5, 4, 0, -5 }, /* 0x47 G */
oliverb 0:3bf8ef959338 303 { 170, 8, 5, 4, 0, -5 }, /* 0x48 H */
oliverb 0:3bf8ef959338 304 { 175, 8, 5, 4, 0, -5 }, /* 0x49 I */
oliverb 0:3bf8ef959338 305 { 180, 8, 5, 4, 0, -5 }, /* 0x4A J */
oliverb 0:3bf8ef959338 306 { 185, 8, 5, 4, 0, -5 }, /* 0x4B K */
oliverb 0:3bf8ef959338 307 { 190, 8, 5, 4, 0, -5 }, /* 0x4C L */
oliverb 0:3bf8ef959338 308 { 195, 8, 5, 4, 0, -5 }, /* 0x4D M */
oliverb 0:3bf8ef959338 309 { 200, 8, 5, 4, 0, -5 }, /* 0x4E N */
oliverb 0:3bf8ef959338 310 { 205, 8, 5, 4, 0, -5 }, /* 0x4F O */
oliverb 0:3bf8ef959338 311 { 210, 8, 5, 4, 0, -5 }, /* 0x50 P */
oliverb 0:3bf8ef959338 312 { 215, 8, 5, 4, 0, -5 }, /* 0x51 Q */
oliverb 0:3bf8ef959338 313 { 220, 8, 5, 4, 0, -5 }, /* 0x52 R */
oliverb 0:3bf8ef959338 314 { 225, 8, 5, 4, 0, -5 }, /* 0x53 S */
oliverb 0:3bf8ef959338 315 { 230, 8, 5, 4, 0, -5 }, /* 0x54 T */
oliverb 0:3bf8ef959338 316 { 235, 8, 5, 4, 0, -5 }, /* 0x55 U */
oliverb 0:3bf8ef959338 317 { 240, 8, 5, 4, 0, -5 }, /* 0x56 V */
oliverb 0:3bf8ef959338 318 { 245, 8, 5, 4, 0, -5 }, /* 0x57 W */
oliverb 0:3bf8ef959338 319 { 250, 8, 5, 4, 0, -5 }, /* 0x58 X */
oliverb 0:3bf8ef959338 320 { 255, 8, 5, 4, 0, -5 }, /* 0x59 Y */
oliverb 0:3bf8ef959338 321 { 260, 8, 5, 4, 0, -5 }, /* 0x5A Z */
oliverb 0:3bf8ef959338 322 { 265, 8, 5, 4, 0, -5 }, /* 0x5B bracketleft */
oliverb 0:3bf8ef959338 323 { 270, 8, 3, 4, 0, -4 }, /* 0x5C backslash */
oliverb 0:3bf8ef959338 324 { 273, 8, 5, 4, 0, -5 }, /* 0x5D bracketright */
oliverb 0:3bf8ef959338 325 { 278, 8, 2, 4, 0, -5 }, /* 0x5E asciicircum */
oliverb 0:3bf8ef959338 326 { 280, 8, 1, 4, 0, -1 }, /* 0x5F underscore */
oliverb 0:3bf8ef959338 327 { 281, 8, 2, 3, 0, -5 }, /* 0x60 grave */
oliverb 0:3bf8ef959338 328 { 283, 8, 4, 4, 0, -4 }, /* 0x61 a */
oliverb 0:3bf8ef959338 329 { 287, 8, 5, 4, 0, -5 }, /* 0x62 b */
oliverb 0:3bf8ef959338 330 { 292, 8, 4, 4, 0, -4 }, /* 0x63 c */
oliverb 0:3bf8ef959338 331 { 296, 8, 5, 4, 0, -5 }, /* 0x64 d */
oliverb 0:3bf8ef959338 332 { 301, 8, 4, 4, 0, -4 }, /* 0x65 e */
oliverb 0:3bf8ef959338 333 { 305, 8, 5, 4, 0, -5 }, /* 0x66 f */
oliverb 0:3bf8ef959338 334 { 310, 8, 5, 4, 0, -4 }, /* 0x67 g */
oliverb 0:3bf8ef959338 335 { 315, 8, 5, 4, 0, -5 }, /* 0x68 h */
oliverb 0:3bf8ef959338 336 { 320, 8, 5, 2, 0, -5 }, /* 0x69 i */
oliverb 0:3bf8ef959338 337 { 325, 8, 6, 4, 0, -5 }, /* 0x6A j */
oliverb 0:3bf8ef959338 338 { 331, 8, 5, 4, 0, -5 }, /* 0x6B k */
oliverb 0:3bf8ef959338 339 { 336, 8, 5, 4, 0, -5 }, /* 0x6C l */
oliverb 0:3bf8ef959338 340 { 341, 8, 4, 4, 0, -4 }, /* 0x6D m */
oliverb 0:3bf8ef959338 341 { 345, 8, 4, 4, 0, -4 }, /* 0x6E n */
oliverb 0:3bf8ef959338 342 { 349, 8, 4, 4, 0, -4 }, /* 0x6F o */
oliverb 0:3bf8ef959338 343 { 353, 8, 5, 4, 0, -4 }, /* 0x70 p */
oliverb 0:3bf8ef959338 344 { 358, 8, 5, 4, 0, -4 }, /* 0x71 q */
oliverb 0:3bf8ef959338 345 { 363, 8, 4, 4, 0, -4 }, /* 0x72 r */
oliverb 0:3bf8ef959338 346 { 367, 8, 4, 4, 0, -4 }, /* 0x73 s */
oliverb 0:3bf8ef959338 347 { 371, 8, 5, 4, 0, -5 }, /* 0x74 t */
oliverb 0:3bf8ef959338 348 { 376, 8, 4, 4, 0, -4 }, /* 0x75 u */
oliverb 0:3bf8ef959338 349 { 380, 8, 4, 4, 0, -4 }, /* 0x76 v */
oliverb 0:3bf8ef959338 350 { 384, 8, 4, 4, 0, -4 }, /* 0x77 w */
oliverb 0:3bf8ef959338 351 { 388, 8, 4, 4, 0, -4 }, /* 0x78 x */
oliverb 0:3bf8ef959338 352 { 392, 8, 5, 4, 0, -4 }, /* 0x79 y */
oliverb 0:3bf8ef959338 353 { 397, 8, 4, 4, 0, -4 }, /* 0x7A z */
oliverb 0:3bf8ef959338 354 { 401, 8, 5, 4, 0, -5 }, /* 0x7B braceleft */
oliverb 0:3bf8ef959338 355 { 406, 8, 5, 2, 0, -5 }, /* 0x7C bar */
oliverb 0:3bf8ef959338 356 { 411, 8, 5, 4, 0, -5 }, /* 0x7D braceright */
oliverb 0:3bf8ef959338 357 { 416, 8, 2, 4, 0, -5 }, /* 0x7E asciitilde */
oliverb 0:3bf8ef959338 358 #if (TOMTHUMB_USE_EXTENDED)
oliverb 0:3bf8ef959338 359 { 418, 8, 5, 2, 0, -5 }, /* 0xA1 exclamdown */
oliverb 0:3bf8ef959338 360 { 423, 8, 5, 4, 0, -5 }, /* 0xA2 cent */
oliverb 0:3bf8ef959338 361 { 428, 8, 5, 4, 0, -5 }, /* 0xA3 sterling */
oliverb 0:3bf8ef959338 362 { 433, 8, 5, 4, 0, -5 }, /* 0xA4 currency */
oliverb 0:3bf8ef959338 363 { 438, 8, 5, 4, 0, -5 }, /* 0xA5 yen */
oliverb 0:3bf8ef959338 364 { 443, 8, 5, 2, 0, -5 }, /* 0xA6 brokenbar */
oliverb 0:3bf8ef959338 365 { 448, 8, 5, 4, 0, -5 }, /* 0xA7 section */
oliverb 0:3bf8ef959338 366 { 453, 8, 1, 4, 0, -5 }, /* 0xA8 dieresis */
oliverb 0:3bf8ef959338 367 { 454, 8, 3, 4, 0, -5 }, /* 0xA9 copyright */
oliverb 0:3bf8ef959338 368 { 457, 8, 5, 4, 0, -5 }, /* 0xAA ordfeminine */
oliverb 0:3bf8ef959338 369 { 462, 8, 3, 3, 0, -5 }, /* 0xAB guillemotleft */
oliverb 0:3bf8ef959338 370 { 465, 8, 2, 4, 0, -4 }, /* 0xAC logicalnot */
oliverb 0:3bf8ef959338 371 { 467, 8, 1, 3, 0, -3 }, /* 0xAD softhyphen */
oliverb 0:3bf8ef959338 372 { 468, 8, 3, 4, 0, -5 }, /* 0xAE registered */
oliverb 0:3bf8ef959338 373 { 471, 8, 1, 4, 0, -5 }, /* 0xAF macron */
oliverb 0:3bf8ef959338 374 { 472, 8, 3, 4, 0, -5 }, /* 0xB0 degree */
oliverb 0:3bf8ef959338 375 { 475, 8, 5, 4, 0, -5 }, /* 0xB1 plusminus */
oliverb 0:3bf8ef959338 376 { 480, 8, 3, 4, 0, -5 }, /* 0xB2 twosuperior */
oliverb 0:3bf8ef959338 377 { 483, 8, 3, 4, 0, -5 }, /* 0xB3 threesuperior */
oliverb 0:3bf8ef959338 378 { 486, 8, 2, 3, 0, -5 }, /* 0xB4 acute */
oliverb 0:3bf8ef959338 379 { 488, 8, 5, 4, 0, -5 }, /* 0xB5 mu */
oliverb 0:3bf8ef959338 380 { 493, 8, 5, 4, 0, -5 }, /* 0xB6 paragraph */
oliverb 0:3bf8ef959338 381 { 498, 8, 3, 4, 0, -4 }, /* 0xB7 periodcentered */
oliverb 0:3bf8ef959338 382 { 501, 8, 3, 4, 0, -3 }, /* 0xB8 cedilla */
oliverb 0:3bf8ef959338 383 { 504, 8, 3, 2, 0, -5 }, /* 0xB9 onesuperior */
oliverb 0:3bf8ef959338 384 { 507, 8, 5, 4, 0, -5 }, /* 0xBA ordmasculine */
oliverb 0:3bf8ef959338 385 { 512, 8, 3, 3, 0, -5 }, /* 0xBB guillemotright */
oliverb 0:3bf8ef959338 386 { 515, 8, 5, 4, 0, -5 }, /* 0xBC onequarter */
oliverb 0:3bf8ef959338 387 { 520, 8, 5, 4, 0, -5 }, /* 0xBD onehalf */
oliverb 0:3bf8ef959338 388 { 525, 8, 5, 4, 0, -5 }, /* 0xBE threequarters */
oliverb 0:3bf8ef959338 389 { 530, 8, 5, 4, 0, -5 }, /* 0xBF questiondown */
oliverb 0:3bf8ef959338 390 { 535, 8, 5, 4, 0, -5 }, /* 0xC0 Agrave */
oliverb 0:3bf8ef959338 391 { 540, 8, 5, 4, 0, -5 }, /* 0xC1 Aacute */
oliverb 0:3bf8ef959338 392 { 545, 8, 5, 4, 0, -5 }, /* 0xC2 Acircumflex */
oliverb 0:3bf8ef959338 393 { 550, 8, 5, 4, 0, -5 }, /* 0xC3 Atilde */
oliverb 0:3bf8ef959338 394 { 555, 8, 5, 4, 0, -5 }, /* 0xC4 Adieresis */
oliverb 0:3bf8ef959338 395 { 560, 8, 5, 4, 0, -5 }, /* 0xC5 Aring */
oliverb 0:3bf8ef959338 396 { 565, 8, 5, 4, 0, -5 }, /* 0xC6 AE */
oliverb 0:3bf8ef959338 397 { 570, 8, 6, 4, 0, -5 }, /* 0xC7 Ccedilla */
oliverb 0:3bf8ef959338 398 { 576, 8, 5, 4, 0, -5 }, /* 0xC8 Egrave */
oliverb 0:3bf8ef959338 399 { 581, 8, 5, 4, 0, -5 }, /* 0xC9 Eacute */
oliverb 0:3bf8ef959338 400 { 586, 8, 5, 4, 0, -5 }, /* 0xCA Ecircumflex */
oliverb 0:3bf8ef959338 401 { 591, 8, 5, 4, 0, -5 }, /* 0xCB Edieresis */
oliverb 0:3bf8ef959338 402 { 596, 8, 5, 4, 0, -5 }, /* 0xCC Igrave */
oliverb 0:3bf8ef959338 403 { 601, 8, 5, 4, 0, -5 }, /* 0xCD Iacute */
oliverb 0:3bf8ef959338 404 { 606, 8, 5, 4, 0, -5 }, /* 0xCE Icircumflex */
oliverb 0:3bf8ef959338 405 { 611, 8, 5, 4, 0, -5 }, /* 0xCF Idieresis */
oliverb 0:3bf8ef959338 406 { 616, 8, 5, 4, 0, -5 }, /* 0xD0 Eth */
oliverb 0:3bf8ef959338 407 { 621, 8, 5, 4, 0, -5 }, /* 0xD1 Ntilde */
oliverb 0:3bf8ef959338 408 { 626, 8, 5, 4, 0, -5 }, /* 0xD2 Ograve */
oliverb 0:3bf8ef959338 409 { 631, 8, 5, 4, 0, -5 }, /* 0xD3 Oacute */
oliverb 0:3bf8ef959338 410 { 636, 8, 5, 4, 0, -5 }, /* 0xD4 Ocircumflex */
oliverb 0:3bf8ef959338 411 { 641, 8, 5, 4, 0, -5 }, /* 0xD5 Otilde */
oliverb 0:3bf8ef959338 412 { 646, 8, 5, 4, 0, -5 }, /* 0xD6 Odieresis */
oliverb 0:3bf8ef959338 413 { 651, 8, 3, 4, 0, -4 }, /* 0xD7 multiply */
oliverb 0:3bf8ef959338 414 { 654, 8, 5, 4, 0, -5 }, /* 0xD8 Oslash */
oliverb 0:3bf8ef959338 415 { 659, 8, 5, 4, 0, -5 }, /* 0xD9 Ugrave */
oliverb 0:3bf8ef959338 416 { 664, 8, 5, 4, 0, -5 }, /* 0xDA Uacute */
oliverb 0:3bf8ef959338 417 { 669, 8, 5, 4, 0, -5 }, /* 0xDB Ucircumflex */
oliverb 0:3bf8ef959338 418 { 674, 8, 5, 4, 0, -5 }, /* 0xDC Udieresis */
oliverb 0:3bf8ef959338 419 { 679, 8, 5, 4, 0, -5 }, /* 0xDD Yacute */
oliverb 0:3bf8ef959338 420 { 684, 8, 5, 4, 0, -5 }, /* 0xDE Thorn */
oliverb 0:3bf8ef959338 421 { 689, 8, 6, 4, 0, -5 }, /* 0xDF germandbls */
oliverb 0:3bf8ef959338 422 { 695, 8, 5, 4, 0, -5 }, /* 0xE0 agrave */
oliverb 0:3bf8ef959338 423 { 700, 8, 5, 4, 0, -5 }, /* 0xE1 aacute */
oliverb 0:3bf8ef959338 424 { 705, 8, 5, 4, 0, -5 }, /* 0xE2 acircumflex */
oliverb 0:3bf8ef959338 425 { 710, 8, 5, 4, 0, -5 }, /* 0xE3 atilde */
oliverb 0:3bf8ef959338 426 { 715, 8, 5, 4, 0, -5 }, /* 0xE4 adieresis */
oliverb 0:3bf8ef959338 427 { 720, 8, 5, 4, 0, -5 }, /* 0xE5 aring */
oliverb 0:3bf8ef959338 428 { 725, 8, 4, 4, 0, -4 }, /* 0xE6 ae */
oliverb 0:3bf8ef959338 429 { 729, 8, 5, 4, 0, -4 }, /* 0xE7 ccedilla */
oliverb 0:3bf8ef959338 430 { 734, 8, 5, 4, 0, -5 }, /* 0xE8 egrave */
oliverb 0:3bf8ef959338 431 { 739, 8, 5, 4, 0, -5 }, /* 0xE9 eacute */
oliverb 0:3bf8ef959338 432 { 744, 8, 5, 4, 0, -5 }, /* 0xEA ecircumflex */
oliverb 0:3bf8ef959338 433 { 749, 8, 5, 4, 0, -5 }, /* 0xEB edieresis */
oliverb 0:3bf8ef959338 434 { 754, 8, 5, 3, 0, -5 }, /* 0xEC igrave */
oliverb 0:3bf8ef959338 435 { 759, 8, 5, 3, 0, -5 }, /* 0xED iacute */
oliverb 0:3bf8ef959338 436 { 764, 8, 5, 4, 0, -5 }, /* 0xEE icircumflex */
oliverb 0:3bf8ef959338 437 { 769, 8, 5, 4, 0, -5 }, /* 0xEF idieresis */
oliverb 0:3bf8ef959338 438 { 774, 8, 5, 4, 0, -5 }, /* 0xF0 eth */
oliverb 0:3bf8ef959338 439 { 779, 8, 5, 4, 0, -5 }, /* 0xF1 ntilde */
oliverb 0:3bf8ef959338 440 { 784, 8, 5, 4, 0, -5 }, /* 0xF2 ograve */
oliverb 0:3bf8ef959338 441 { 789, 8, 5, 4, 0, -5 }, /* 0xF3 oacute */
oliverb 0:3bf8ef959338 442 { 794, 8, 5, 4, 0, -5 }, /* 0xF4 ocircumflex */
oliverb 0:3bf8ef959338 443 { 799, 8, 5, 4, 0, -5 }, /* 0xF5 otilde */
oliverb 0:3bf8ef959338 444 { 804, 8, 5, 4, 0, -5 }, /* 0xF6 odieresis */
oliverb 0:3bf8ef959338 445 { 809, 8, 5, 4, 0, -5 }, /* 0xF7 divide */
oliverb 0:3bf8ef959338 446 { 814, 8, 4, 4, 0, -4 }, /* 0xF8 oslash */
oliverb 0:3bf8ef959338 447 { 818, 8, 5, 4, 0, -5 }, /* 0xF9 ugrave */
oliverb 0:3bf8ef959338 448 { 823, 8, 5, 4, 0, -5 }, /* 0xFA uacute */
oliverb 0:3bf8ef959338 449 { 828, 8, 5, 4, 0, -5 }, /* 0xFB ucircumflex */
oliverb 0:3bf8ef959338 450 { 833, 8, 5, 4, 0, -5 }, /* 0xFC udieresis */
oliverb 0:3bf8ef959338 451 { 838, 8, 6, 4, 0, -5 }, /* 0xFD yacute */
oliverb 0:3bf8ef959338 452 { 844, 8, 5, 4, 0, -4 }, /* 0xFE thorn */
oliverb 0:3bf8ef959338 453 { 849, 8, 6, 4, 0, -5 }, /* 0xFF ydieresis */
oliverb 0:3bf8ef959338 454 { 855, 8, 1, 2, 0, -1 }, /* 0x11D gcircumflex */
oliverb 0:3bf8ef959338 455 { 856, 8, 5, 4, 0, -5 }, /* 0x152 OE */
oliverb 0:3bf8ef959338 456 { 861, 8, 4, 4, 0, -4 }, /* 0x153 oe */
oliverb 0:3bf8ef959338 457 { 865, 8, 5, 4, 0, -5 }, /* 0x160 Scaron */
oliverb 0:3bf8ef959338 458 { 870, 8, 5, 4, 0, -5 }, /* 0x161 scaron */
oliverb 0:3bf8ef959338 459 { 875, 8, 5, 4, 0, -5 }, /* 0x178 Ydieresis */
oliverb 0:3bf8ef959338 460 { 880, 8, 5, 4, 0, -5 }, /* 0x17D Zcaron */
oliverb 0:3bf8ef959338 461 { 885, 8, 5, 4, 0, -5 }, /* 0x17E zcaron */
oliverb 0:3bf8ef959338 462 { 890, 8, 1, 2, 0, -1 }, /* 0xEA4 uni0EA4 */
oliverb 0:3bf8ef959338 463 { 891, 8, 1, 2, 0, -1 }, /* 0x13A0 uni13A0 */
oliverb 0:3bf8ef959338 464 { 892, 8, 1, 2, 0, -3 }, /* 0x2022 bullet */
oliverb 0:3bf8ef959338 465 { 893, 8, 1, 4, 0, -1 }, /* 0x2026 ellipsis */
oliverb 0:3bf8ef959338 466 { 894, 8, 5, 4, 0, -5 }, /* 0x20AC Euro */
oliverb 0:3bf8ef959338 467 { 899, 8, 5, 4, 0, -5 }, /* 0xFFFD uniFFFD */
oliverb 0:3bf8ef959338 468 #endif /* (TOMTHUMB_USE_EXTENDED) */
oliverb 0:3bf8ef959338 469 };
oliverb 0:3bf8ef959338 470
oliverb 0:3bf8ef959338 471 const GFXfont TomThumb PROGMEM = {
oliverb 0:3bf8ef959338 472 (uint8_t *)TomThumbBitmaps,
oliverb 0:3bf8ef959338 473 (GFXglyph *)TomThumbGlyphs,
oliverb 0:3bf8ef959338 474 0x20, 0x7E, 6 };