MBED Import of ADAFRUIT graphics library, BSD License

Dependents:   GP9002adafruit GP9002af_gray

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TomThumb.h Source File

TomThumb.h

00001 /**
00002 ** The original 3x5 font is licensed under the 3-clause BSD license:
00003 **
00004 ** Copyright 1999 Brian J. Swetland
00005 ** Copyright 1999 Vassilii Khachaturov
00006 ** Portions (of vt100.c/vt100.h) copyright Dan Marks
00007 ** 
00008 ** All rights reserved.
00009 **
00010 ** Redistribution and use in source and binary forms, with or without
00011 ** modification, are permitted provided that the following conditions
00012 ** are met:
00013 ** 1. Redistributions of source code must retain the above copyright
00014 **    notice, this list of conditions, and the following disclaimer.
00015 ** 2. Redistributions in binary form must reproduce the above copyright
00016 **    notice, this list of conditions, and the following disclaimer in the
00017 **    documentation and/or other materials provided with the distribution.
00018 ** 3. The name of the authors may not be used to endorse or promote products
00019 **    derived from this software without specific prior written permission.
00020 **
00021 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00022 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00023 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
00024 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00026 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00027 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00028 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00029 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00030 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00031 ** 
00032 ** Modifications to Tom Thumb for improved readability are from Robey Pointer, 
00033 ** see:
00034 ** http://robey.lag.net/2010/01/23/tiny-monospace-font.html
00035 ** 
00036 ** The original author does not have any objection to relicensing of Robey 
00037 ** Pointer's modifications (in this file) in a more permissive license.  See 
00038 ** the discussion at the above blog, and also here:
00039 ** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license
00040 **
00041 ** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font,
00042 ** with the help of this Python script:
00043 ** https://gist.github.com/skelliam/322d421f028545f16f6d
00044 ** William Skellenger (williamj@skellenger.net)
00045 ** Twitter: @skelliam
00046 ** 
00047 */
00048 
00049 #define TOMTHUMB_USE_EXTENDED 0
00050 
00051 const uint8_t TomThumbBitmaps[] PROGMEM = {
00052    0x00,                                /* 0x20 space */
00053    0x80, 0x80, 0x80, 0x00, 0x80,        /* 0x21 exclam */
00054    0xA0, 0xA0,                          /* 0x22 quotedbl */
00055    0xA0, 0xE0, 0xA0, 0xE0, 0xA0,        /* 0x23 numbersign */
00056    0x60, 0xC0, 0x60, 0xC0, 0x40,        /* 0x24 dollar */
00057    0x80, 0x20, 0x40, 0x80, 0x20,        /* 0x25 percent */
00058    0xC0, 0xC0, 0xE0, 0xA0, 0x60,        /* 0x26 ampersand */
00059    0x80, 0x80,                          /* 0x27 quotesingle */
00060    0x40, 0x80, 0x80, 0x80, 0x40,        /* 0x28 parenleft */
00061    0x80, 0x40, 0x40, 0x40, 0x80,        /* 0x29 parenright */
00062    0xA0, 0x40, 0xA0,                    /* 0x2A asterisk */
00063    0x40, 0xE0, 0x40,                    /* 0x2B plus */
00064    0x40, 0x80,                          /* 0x2C comma */
00065    0xE0,                                /* 0x2D hyphen */
00066    0x80,                                /* 0x2E period */
00067    0x20, 0x20, 0x40, 0x80, 0x80,        /* 0x2F slash */
00068    0x60, 0xA0, 0xA0, 0xA0, 0xC0,        /* 0x30 zero */
00069    0x40, 0xC0, 0x40, 0x40, 0x40,        /* 0x31 one */
00070    0xC0, 0x20, 0x40, 0x80, 0xE0,        /* 0x32 two */
00071    0xC0, 0x20, 0x40, 0x20, 0xC0,        /* 0x33 three */
00072    0xA0, 0xA0, 0xE0, 0x20, 0x20,        /* 0x34 four */
00073    0xE0, 0x80, 0xC0, 0x20, 0xC0,        /* 0x35 five */
00074    0x60, 0x80, 0xE0, 0xA0, 0xE0,        /* 0x36 six */
00075    0xE0, 0x20, 0x40, 0x80, 0x80,        /* 0x37 seven */
00076    0xE0, 0xA0, 0xE0, 0xA0, 0xE0,        /* 0x38 eight */
00077    0xE0, 0xA0, 0xE0, 0x20, 0xC0,        /* 0x39 nine */
00078    0x80, 0x00, 0x80,                    /* 0x3A colon */
00079    0x40, 0x00, 0x40, 0x80,              /* 0x3B semicolon */
00080    0x20, 0x40, 0x80, 0x40, 0x20,        /* 0x3C less */
00081    0xE0, 0x00, 0xE0,                    /* 0x3D equal */
00082    0x80, 0x40, 0x20, 0x40, 0x80,        /* 0x3E greater */
00083    0xE0, 0x20, 0x40, 0x00, 0x40,        /* 0x3F question */
00084    0x40, 0xA0, 0xE0, 0x80, 0x60,        /* 0x40 at */
00085    0x40, 0xA0, 0xE0, 0xA0, 0xA0,        /* 0x41 A */
00086    0xC0, 0xA0, 0xC0, 0xA0, 0xC0,        /* 0x42 B */
00087    0x60, 0x80, 0x80, 0x80, 0x60,        /* 0x43 C */
00088    0xC0, 0xA0, 0xA0, 0xA0, 0xC0,        /* 0x44 D */
00089    0xE0, 0x80, 0xE0, 0x80, 0xE0,        /* 0x45 E */
00090    0xE0, 0x80, 0xE0, 0x80, 0x80,        /* 0x46 F */
00091    0x60, 0x80, 0xE0, 0xA0, 0x60,        /* 0x47 G */
00092    0xA0, 0xA0, 0xE0, 0xA0, 0xA0,        /* 0x48 H */
00093    0xE0, 0x40, 0x40, 0x40, 0xE0,        /* 0x49 I */
00094    0x20, 0x20, 0x20, 0xA0, 0x40,        /* 0x4A J */
00095    0xA0, 0xA0, 0xC0, 0xA0, 0xA0,        /* 0x4B K */
00096    0x80, 0x80, 0x80, 0x80, 0xE0,        /* 0x4C L */
00097    0xA0, 0xE0, 0xE0, 0xA0, 0xA0,        /* 0x4D M */
00098    0xA0, 0xE0, 0xE0, 0xE0, 0xA0,        /* 0x4E N */
00099    0x40, 0xA0, 0xA0, 0xA0, 0x40,        /* 0x4F O */
00100    0xC0, 0xA0, 0xC0, 0x80, 0x80,        /* 0x50 P */
00101    0x40, 0xA0, 0xA0, 0xE0, 0x60,        /* 0x51 Q */
00102    0xC0, 0xA0, 0xE0, 0xC0, 0xA0,        /* 0x52 R */
00103    0x60, 0x80, 0x40, 0x20, 0xC0,        /* 0x53 S */
00104    0xE0, 0x40, 0x40, 0x40, 0x40,        /* 0x54 T */
00105    0xA0, 0xA0, 0xA0, 0xA0, 0x60,        /* 0x55 U */
00106    0xA0, 0xA0, 0xA0, 0x40, 0x40,        /* 0x56 V */
00107    0xA0, 0xA0, 0xE0, 0xE0, 0xA0,        /* 0x57 W */
00108    0xA0, 0xA0, 0x40, 0xA0, 0xA0,        /* 0x58 X */
00109    0xA0, 0xA0, 0x40, 0x40, 0x40,        /* 0x59 Y */
00110    0xE0, 0x20, 0x40, 0x80, 0xE0,        /* 0x5A Z */
00111    0xE0, 0x80, 0x80, 0x80, 0xE0,        /* 0x5B bracketleft */
00112    0x80, 0x40, 0x20,                    /* 0x5C backslash */
00113    0xE0, 0x20, 0x20, 0x20, 0xE0,        /* 0x5D bracketright */
00114    0x40, 0xA0,                          /* 0x5E asciicircum */
00115    0xE0,                                /* 0x5F underscore */
00116    0x80, 0x40,                          /* 0x60 grave */
00117    0xC0, 0x60, 0xA0, 0xE0,              /* 0x61 a */
00118    0x80, 0xC0, 0xA0, 0xA0, 0xC0,        /* 0x62 b */
00119    0x60, 0x80, 0x80, 0x60,              /* 0x63 c */
00120    0x20, 0x60, 0xA0, 0xA0, 0x60,        /* 0x64 d */
00121    0x60, 0xA0, 0xC0, 0x60,              /* 0x65 e */
00122    0x20, 0x40, 0xE0, 0x40, 0x40,        /* 0x66 f */
00123    0x60, 0xA0, 0xE0, 0x20, 0x40,        /* 0x67 g */
00124    0x80, 0xC0, 0xA0, 0xA0, 0xA0,        /* 0x68 h */
00125    0x80, 0x00, 0x80, 0x80, 0x80,        /* 0x69 i */
00126    0x20, 0x00, 0x20, 0x20, 0xA0, 0x40,  /* 0x6A j */
00127    0x80, 0xA0, 0xC0, 0xC0, 0xA0,        /* 0x6B k */
00128    0xC0, 0x40, 0x40, 0x40, 0xE0,        /* 0x6C l */
00129    0xE0, 0xE0, 0xE0, 0xA0,              /* 0x6D m */
00130    0xC0, 0xA0, 0xA0, 0xA0,              /* 0x6E n */
00131    0x40, 0xA0, 0xA0, 0x40,              /* 0x6F o */
00132    0xC0, 0xA0, 0xA0, 0xC0, 0x80,        /* 0x70 p */
00133    0x60, 0xA0, 0xA0, 0x60, 0x20,        /* 0x71 q */
00134    0x60, 0x80, 0x80, 0x80,              /* 0x72 r */
00135    0x60, 0xC0, 0x60, 0xC0,              /* 0x73 s */
00136    0x40, 0xE0, 0x40, 0x40, 0x60,        /* 0x74 t */
00137    0xA0, 0xA0, 0xA0, 0x60,              /* 0x75 u */
00138    0xA0, 0xA0, 0xE0, 0x40,              /* 0x76 v */
00139    0xA0, 0xE0, 0xE0, 0xE0,              /* 0x77 w */
00140    0xA0, 0x40, 0x40, 0xA0,              /* 0x78 x */
00141    0xA0, 0xA0, 0x60, 0x20, 0x40,        /* 0x79 y */
00142    0xE0, 0x60, 0xC0, 0xE0,              /* 0x7A z */
00143    0x60, 0x40, 0x80, 0x40, 0x60,        /* 0x7B braceleft */
00144    0x80, 0x80, 0x00, 0x80, 0x80,        /* 0x7C bar */
00145    0xC0, 0x40, 0x20, 0x40, 0xC0,        /* 0x7D braceright */
00146    0x60, 0xC0,                          /* 0x7E asciitilde */
00147 #if (TOMTHUMB_USE_EXTENDED)
00148    0x80, 0x00, 0x80, 0x80, 0x80,        /* 0xA1 exclamdown */
00149    0x40, 0xE0, 0x80, 0xE0, 0x40,        /* 0xA2 cent */
00150    0x60, 0x40, 0xE0, 0x40, 0xE0,        /* 0xA3 sterling */
00151    0xA0, 0x40, 0xE0, 0x40, 0xA0,        /* 0xA4 currency */
00152    0xA0, 0xA0, 0x40, 0xE0, 0x40,        /* 0xA5 yen */
00153    0x80, 0x80, 0x00, 0x80, 0x80,        /* 0xA6 brokenbar */
00154    0x60, 0x40, 0xA0, 0x40, 0xC0,        /* 0xA7 section */
00155    0xA0,                                /* 0xA8 dieresis */
00156    0x60, 0x80, 0x60,                    /* 0xA9 copyright */
00157    0x60, 0xA0, 0xE0, 0x00, 0xE0,        /* 0xAA ordfeminine */
00158    0x40, 0x80, 0x40,                    /* 0xAB guillemotleft */
00159    0xE0, 0x20,                          /* 0xAC logicalnot */
00160    0xC0,                                /* 0xAD softhyphen */
00161    0xC0, 0xC0, 0xA0,                    /* 0xAE registered */
00162    0xE0,                                /* 0xAF macron */
00163    0x40, 0xA0, 0x40,                    /* 0xB0 degree */
00164    0x40, 0xE0, 0x40, 0x00, 0xE0,        /* 0xB1 plusminus */
00165    0xC0, 0x40, 0x60,                    /* 0xB2 twosuperior */
00166    0xE0, 0x60, 0xE0,                    /* 0xB3 threesuperior */
00167    0x40, 0x80,                          /* 0xB4 acute */
00168    0xA0, 0xA0, 0xA0, 0xC0, 0x80,        /* 0xB5 mu */
00169    0x60, 0xA0, 0x60, 0x60, 0x60,        /* 0xB6 paragraph */
00170    0xE0, 0xE0, 0xE0,                    /* 0xB7 periodcentered */
00171    0x40, 0x20, 0xC0,                    /* 0xB8 cedilla */
00172    0x80, 0x80, 0x80,                    /* 0xB9 onesuperior */
00173    0x40, 0xA0, 0x40, 0x00, 0xE0,        /* 0xBA ordmasculine */
00174    0x80, 0x40, 0x80,                    /* 0xBB guillemotright */
00175    0x80, 0x80, 0x00, 0x60, 0x20,        /* 0xBC onequarter */
00176    0x80, 0x80, 0x00, 0xC0, 0x60,        /* 0xBD onehalf */
00177    0xC0, 0xC0, 0x00, 0x60, 0x20,        /* 0xBE threequarters */
00178    0x40, 0x00, 0x40, 0x80, 0xE0,        /* 0xBF questiondown */
00179    0x40, 0x20, 0x40, 0xE0, 0xA0,        /* 0xC0 Agrave */
00180    0x40, 0x80, 0x40, 0xE0, 0xA0,        /* 0xC1 Aacute */
00181    0xE0, 0x00, 0x40, 0xE0, 0xA0,        /* 0xC2 Acircumflex */
00182    0x60, 0xC0, 0x40, 0xE0, 0xA0,        /* 0xC3 Atilde */
00183    0xA0, 0x40, 0xA0, 0xE0, 0xA0,        /* 0xC4 Adieresis */
00184    0xC0, 0xC0, 0xA0, 0xE0, 0xA0,        /* 0xC5 Aring */
00185    0x60, 0xC0, 0xE0, 0xC0, 0xE0,        /* 0xC6 AE */
00186    0x60, 0x80, 0x80, 0x60, 0x20, 0x40,  /* 0xC7 Ccedilla */
00187    0x40, 0x20, 0xE0, 0xC0, 0xE0,        /* 0xC8 Egrave */
00188    0x40, 0x80, 0xE0, 0xC0, 0xE0,        /* 0xC9 Eacute */
00189    0xE0, 0x00, 0xE0, 0xC0, 0xE0,        /* 0xCA Ecircumflex */
00190    0xA0, 0x00, 0xE0, 0xC0, 0xE0,        /* 0xCB Edieresis */
00191    0x40, 0x20, 0xE0, 0x40, 0xE0,        /* 0xCC Igrave */
00192    0x40, 0x80, 0xE0, 0x40, 0xE0,        /* 0xCD Iacute */
00193    0xE0, 0x00, 0xE0, 0x40, 0xE0,        /* 0xCE Icircumflex */
00194    0xA0, 0x00, 0xE0, 0x40, 0xE0,        /* 0xCF Idieresis */
00195    0xC0, 0xA0, 0xE0, 0xA0, 0xC0,        /* 0xD0 Eth */
00196    0xC0, 0x60, 0xA0, 0xE0, 0xA0,        /* 0xD1 Ntilde */
00197    0x40, 0x20, 0xE0, 0xA0, 0xE0,        /* 0xD2 Ograve */
00198    0x40, 0x80, 0xE0, 0xA0, 0xE0,        /* 0xD3 Oacute */
00199    0xE0, 0x00, 0xE0, 0xA0, 0xE0,        /* 0xD4 Ocircumflex */
00200    0xC0, 0x60, 0xE0, 0xA0, 0xE0,        /* 0xD5 Otilde */
00201    0xA0, 0x00, 0xE0, 0xA0, 0xE0,        /* 0xD6 Odieresis */
00202    0xA0, 0x40, 0xA0,                    /* 0xD7 multiply */
00203    0x60, 0xA0, 0xE0, 0xA0, 0xC0,        /* 0xD8 Oslash */
00204    0x80, 0x40, 0xA0, 0xA0, 0xE0,        /* 0xD9 Ugrave */
00205    0x20, 0x40, 0xA0, 0xA0, 0xE0,        /* 0xDA Uacute */
00206    0xE0, 0x00, 0xA0, 0xA0, 0xE0,        /* 0xDB Ucircumflex */
00207    0xA0, 0x00, 0xA0, 0xA0, 0xE0,        /* 0xDC Udieresis */
00208    0x20, 0x40, 0xA0, 0xE0, 0x40,        /* 0xDD Yacute */
00209    0x80, 0xE0, 0xA0, 0xE0, 0x80,        /* 0xDE Thorn */
00210    0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80,  /* 0xDF germandbls */
00211    0x40, 0x20, 0x60, 0xA0, 0xE0,        /* 0xE0 agrave */
00212    0x40, 0x80, 0x60, 0xA0, 0xE0,        /* 0xE1 aacute */
00213    0xE0, 0x00, 0x60, 0xA0, 0xE0,        /* 0xE2 acircumflex */
00214    0x60, 0xC0, 0x60, 0xA0, 0xE0,        /* 0xE3 atilde */
00215    0xA0, 0x00, 0x60, 0xA0, 0xE0,        /* 0xE4 adieresis */
00216    0x60, 0x60, 0x60, 0xA0, 0xE0,        /* 0xE5 aring */
00217    0x60, 0xE0, 0xE0, 0xC0,              /* 0xE6 ae */
00218    0x60, 0x80, 0x60, 0x20, 0x40,        /* 0xE7 ccedilla */
00219    0x40, 0x20, 0x60, 0xE0, 0x60,        /* 0xE8 egrave */
00220    0x40, 0x80, 0x60, 0xE0, 0x60,        /* 0xE9 eacute */
00221    0xE0, 0x00, 0x60, 0xE0, 0x60,        /* 0xEA ecircumflex */
00222    0xA0, 0x00, 0x60, 0xE0, 0x60,        /* 0xEB edieresis */
00223    0x80, 0x40, 0x80, 0x80, 0x80,        /* 0xEC igrave */
00224    0x40, 0x80, 0x40, 0x40, 0x40,        /* 0xED iacute */
00225    0xE0, 0x00, 0x40, 0x40, 0x40,        /* 0xEE icircumflex */
00226    0xA0, 0x00, 0x40, 0x40, 0x40,        /* 0xEF idieresis */
00227    0x60, 0xC0, 0x60, 0xA0, 0x60,        /* 0xF0 eth */
00228    0xC0, 0x60, 0xC0, 0xA0, 0xA0,        /* 0xF1 ntilde */
00229    0x40, 0x20, 0x40, 0xA0, 0x40,        /* 0xF2 ograve */
00230    0x40, 0x80, 0x40, 0xA0, 0x40,        /* 0xF3 oacute */
00231    0xE0, 0x00, 0x40, 0xA0, 0x40,        /* 0xF4 ocircumflex */
00232    0xC0, 0x60, 0x40, 0xA0, 0x40,        /* 0xF5 otilde */
00233    0xA0, 0x00, 0x40, 0xA0, 0x40,        /* 0xF6 odieresis */
00234    0x40, 0x00, 0xE0, 0x00, 0x40,        /* 0xF7 divide */
00235    0x60, 0xE0, 0xA0, 0xC0,              /* 0xF8 oslash */
00236    0x80, 0x40, 0xA0, 0xA0, 0x60,        /* 0xF9 ugrave */
00237    0x20, 0x40, 0xA0, 0xA0, 0x60,        /* 0xFA uacute */
00238    0xE0, 0x00, 0xA0, 0xA0, 0x60,        /* 0xFB ucircumflex */
00239    0xA0, 0x00, 0xA0, 0xA0, 0x60,        /* 0xFC udieresis */
00240    0x20, 0x40, 0xA0, 0x60, 0x20, 0x40,  /* 0xFD yacute */
00241    0x80, 0xC0, 0xA0, 0xC0, 0x80,        /* 0xFE thorn */
00242    0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40,  /* 0xFF ydieresis */
00243    0x00,                                /* 0x11D gcircumflex */
00244    0x60, 0xC0, 0xE0, 0xC0, 0x60,        /* 0x152 OE */
00245    0x60, 0xE0, 0xC0, 0xE0,              /* 0x153 oe */
00246    0xA0, 0x60, 0xC0, 0x60, 0xC0,        /* 0x160 Scaron */
00247    0xA0, 0x60, 0xC0, 0x60, 0xC0,        /* 0x161 scaron */
00248    0xA0, 0x00, 0xA0, 0x40, 0x40,        /* 0x178 Ydieresis */
00249    0xA0, 0xE0, 0x60, 0xC0, 0xE0,        /* 0x17D Zcaron */
00250    0xA0, 0xE0, 0x60, 0xC0, 0xE0,        /* 0x17E zcaron */
00251    0x00,                                /* 0xEA4 uni0EA4 */
00252    0x00,                                /* 0x13A0 uni13A0 */
00253    0x80,                                /* 0x2022 bullet */
00254    0xA0,                                /* 0x2026 ellipsis */
00255    0x60, 0xE0, 0xE0, 0xC0, 0x60,        /* 0x20AC Euro */
00256    0xE0, 0xA0, 0xA0, 0xA0, 0xE0,        /* 0xFFFD uniFFFD */
00257 #endif /* (TOMTHUMB_USE_EXTENDED)  */
00258   };
00259 
00260 
00261 /* {offset, width, height, advance cursor, x offset, y offset} */
00262 const GFXglyph TomThumbGlyphs[] PROGMEM = {
00263    { 0, 8, 1, 2, 0, -5 },    /* 0x20 space */
00264    { 1, 8, 5, 2, 0, -5 },    /* 0x21 exclam */
00265    { 6, 8, 2, 4, 0, -5 },    /* 0x22 quotedbl */
00266    { 8, 8, 5, 4, 0, -5 },    /* 0x23 numbersign */
00267    { 13, 8, 5, 4, 0, -5 },   /* 0x24 dollar */
00268    { 18, 8, 5, 4, 0, -5 },   /* 0x25 percent */
00269    { 23, 8, 5, 4, 0, -5 },   /* 0x26 ampersand */
00270    { 28, 8, 2, 2, 0, -5 },   /* 0x27 quotesingle */
00271    { 30, 8, 5, 3, 0, -5 },   /* 0x28 parenleft */
00272    { 35, 8, 5, 3, 0, -5 },   /* 0x29 parenright */
00273    { 40, 8, 3, 4, 0, -5 },   /* 0x2A asterisk */
00274    { 43, 8, 3, 4, 0, -4 },   /* 0x2B plus */
00275    { 46, 8, 2, 3, 0, -2 },   /* 0x2C comma */
00276    { 48, 8, 1, 4, 0, -3 },   /* 0x2D hyphen */
00277    { 49, 8, 1, 2, 0, -1 },   /* 0x2E period */
00278    { 50, 8, 5, 4, 0, -5 },   /* 0x2F slash */
00279    { 55, 8, 5, 4, 0, -5 },   /* 0x30 zero */
00280    { 60, 8, 5, 3, 0, -5 },   /* 0x31 one */
00281    { 65, 8, 5, 4, 0, -5 },   /* 0x32 two */
00282    { 70, 8, 5, 4, 0, -5 },   /* 0x33 three */
00283    { 75, 8, 5, 4, 0, -5 },   /* 0x34 four */
00284    { 80, 8, 5, 4, 0, -5 },   /* 0x35 five */
00285    { 85, 8, 5, 4, 0, -5 },   /* 0x36 six */
00286    { 90, 8, 5, 4, 0, -5 },   /* 0x37 seven */
00287    { 95, 8, 5, 4, 0, -5 },   /* 0x38 eight */
00288    { 100, 8, 5, 4, 0, -5 },  /* 0x39 nine */
00289    { 105, 8, 3, 2, 0, -4 },  /* 0x3A colon */
00290    { 108, 8, 4, 3, 0, -4 },  /* 0x3B semicolon */
00291    { 112, 8, 5, 4, 0, -5 },  /* 0x3C less */
00292    { 117, 8, 3, 4, 0, -4 },  /* 0x3D equal */
00293    { 120, 8, 5, 4, 0, -5 },  /* 0x3E greater */
00294    { 125, 8, 5, 4, 0, -5 },  /* 0x3F question */
00295    { 130, 8, 5, 4, 0, -5 },  /* 0x40 at */
00296    { 135, 8, 5, 4, 0, -5 },  /* 0x41 A */
00297    { 140, 8, 5, 4, 0, -5 },  /* 0x42 B */
00298    { 145, 8, 5, 4, 0, -5 },  /* 0x43 C */
00299    { 150, 8, 5, 4, 0, -5 },  /* 0x44 D */
00300    { 155, 8, 5, 4, 0, -5 },  /* 0x45 E */
00301    { 160, 8, 5, 4, 0, -5 },  /* 0x46 F */
00302    { 165, 8, 5, 4, 0, -5 },  /* 0x47 G */
00303    { 170, 8, 5, 4, 0, -5 },  /* 0x48 H */
00304    { 175, 8, 5, 4, 0, -5 },  /* 0x49 I */
00305    { 180, 8, 5, 4, 0, -5 },  /* 0x4A J */
00306    { 185, 8, 5, 4, 0, -5 },  /* 0x4B K */
00307    { 190, 8, 5, 4, 0, -5 },  /* 0x4C L */
00308    { 195, 8, 5, 4, 0, -5 },  /* 0x4D M */
00309    { 200, 8, 5, 4, 0, -5 },  /* 0x4E N */
00310    { 205, 8, 5, 4, 0, -5 },  /* 0x4F O */
00311    { 210, 8, 5, 4, 0, -5 },  /* 0x50 P */
00312    { 215, 8, 5, 4, 0, -5 },  /* 0x51 Q */
00313    { 220, 8, 5, 4, 0, -5 },  /* 0x52 R */
00314    { 225, 8, 5, 4, 0, -5 },  /* 0x53 S */
00315    { 230, 8, 5, 4, 0, -5 },  /* 0x54 T */
00316    { 235, 8, 5, 4, 0, -5 },  /* 0x55 U */
00317    { 240, 8, 5, 4, 0, -5 },  /* 0x56 V */
00318    { 245, 8, 5, 4, 0, -5 },  /* 0x57 W */
00319    { 250, 8, 5, 4, 0, -5 },  /* 0x58 X */
00320    { 255, 8, 5, 4, 0, -5 },  /* 0x59 Y */
00321    { 260, 8, 5, 4, 0, -5 },  /* 0x5A Z */
00322    { 265, 8, 5, 4, 0, -5 },  /* 0x5B bracketleft */
00323    { 270, 8, 3, 4, 0, -4 },  /* 0x5C backslash */
00324    { 273, 8, 5, 4, 0, -5 },  /* 0x5D bracketright */
00325    { 278, 8, 2, 4, 0, -5 },  /* 0x5E asciicircum */
00326    { 280, 8, 1, 4, 0, -1 },  /* 0x5F underscore */
00327    { 281, 8, 2, 3, 0, -5 },  /* 0x60 grave */
00328    { 283, 8, 4, 4, 0, -4 },  /* 0x61 a */
00329    { 287, 8, 5, 4, 0, -5 },  /* 0x62 b */
00330    { 292, 8, 4, 4, 0, -4 },  /* 0x63 c */
00331    { 296, 8, 5, 4, 0, -5 },  /* 0x64 d */
00332    { 301, 8, 4, 4, 0, -4 },  /* 0x65 e */
00333    { 305, 8, 5, 4, 0, -5 },  /* 0x66 f */
00334    { 310, 8, 5, 4, 0, -4 },  /* 0x67 g */
00335    { 315, 8, 5, 4, 0, -5 },  /* 0x68 h */
00336    { 320, 8, 5, 2, 0, -5 },  /* 0x69 i */
00337    { 325, 8, 6, 4, 0, -5 },  /* 0x6A j */
00338    { 331, 8, 5, 4, 0, -5 },  /* 0x6B k */
00339    { 336, 8, 5, 4, 0, -5 },  /* 0x6C l */
00340    { 341, 8, 4, 4, 0, -4 },  /* 0x6D m */
00341    { 345, 8, 4, 4, 0, -4 },  /* 0x6E n */
00342    { 349, 8, 4, 4, 0, -4 },  /* 0x6F o */
00343    { 353, 8, 5, 4, 0, -4 },  /* 0x70 p */
00344    { 358, 8, 5, 4, 0, -4 },  /* 0x71 q */
00345    { 363, 8, 4, 4, 0, -4 },  /* 0x72 r */
00346    { 367, 8, 4, 4, 0, -4 },  /* 0x73 s */
00347    { 371, 8, 5, 4, 0, -5 },  /* 0x74 t */
00348    { 376, 8, 4, 4, 0, -4 },  /* 0x75 u */
00349    { 380, 8, 4, 4, 0, -4 },  /* 0x76 v */
00350    { 384, 8, 4, 4, 0, -4 },  /* 0x77 w */
00351    { 388, 8, 4, 4, 0, -4 },  /* 0x78 x */
00352    { 392, 8, 5, 4, 0, -4 },  /* 0x79 y */
00353    { 397, 8, 4, 4, 0, -4 },  /* 0x7A z */
00354    { 401, 8, 5, 4, 0, -5 },  /* 0x7B braceleft */
00355    { 406, 8, 5, 2, 0, -5 },  /* 0x7C bar */
00356    { 411, 8, 5, 4, 0, -5 },  /* 0x7D braceright */
00357    { 416, 8, 2, 4, 0, -5 },  /* 0x7E asciitilde */
00358 #if (TOMTHUMB_USE_EXTENDED)
00359    { 418, 8, 5, 2, 0, -5 },  /* 0xA1 exclamdown */
00360    { 423, 8, 5, 4, 0, -5 },  /* 0xA2 cent */
00361    { 428, 8, 5, 4, 0, -5 },  /* 0xA3 sterling */
00362    { 433, 8, 5, 4, 0, -5 },  /* 0xA4 currency */
00363    { 438, 8, 5, 4, 0, -5 },  /* 0xA5 yen */
00364    { 443, 8, 5, 2, 0, -5 },  /* 0xA6 brokenbar */
00365    { 448, 8, 5, 4, 0, -5 },  /* 0xA7 section */
00366    { 453, 8, 1, 4, 0, -5 },  /* 0xA8 dieresis */
00367    { 454, 8, 3, 4, 0, -5 },  /* 0xA9 copyright */
00368    { 457, 8, 5, 4, 0, -5 },  /* 0xAA ordfeminine */
00369    { 462, 8, 3, 3, 0, -5 },  /* 0xAB guillemotleft */
00370    { 465, 8, 2, 4, 0, -4 },  /* 0xAC logicalnot */
00371    { 467, 8, 1, 3, 0, -3 },  /* 0xAD softhyphen */
00372    { 468, 8, 3, 4, 0, -5 },  /* 0xAE registered */
00373    { 471, 8, 1, 4, 0, -5 },  /* 0xAF macron */
00374    { 472, 8, 3, 4, 0, -5 },  /* 0xB0 degree */
00375    { 475, 8, 5, 4, 0, -5 },  /* 0xB1 plusminus */
00376    { 480, 8, 3, 4, 0, -5 },  /* 0xB2 twosuperior */
00377    { 483, 8, 3, 4, 0, -5 },  /* 0xB3 threesuperior */
00378    { 486, 8, 2, 3, 0, -5 },  /* 0xB4 acute */
00379    { 488, 8, 5, 4, 0, -5 },  /* 0xB5 mu */
00380    { 493, 8, 5, 4, 0, -5 },  /* 0xB6 paragraph */
00381    { 498, 8, 3, 4, 0, -4 },  /* 0xB7 periodcentered */
00382    { 501, 8, 3, 4, 0, -3 },  /* 0xB8 cedilla */
00383    { 504, 8, 3, 2, 0, -5 },  /* 0xB9 onesuperior */
00384    { 507, 8, 5, 4, 0, -5 },  /* 0xBA ordmasculine */
00385    { 512, 8, 3, 3, 0, -5 },  /* 0xBB guillemotright */
00386    { 515, 8, 5, 4, 0, -5 },  /* 0xBC onequarter */
00387    { 520, 8, 5, 4, 0, -5 },  /* 0xBD onehalf */
00388    { 525, 8, 5, 4, 0, -5 },  /* 0xBE threequarters */
00389    { 530, 8, 5, 4, 0, -5 },  /* 0xBF questiondown */
00390    { 535, 8, 5, 4, 0, -5 },  /* 0xC0 Agrave */
00391    { 540, 8, 5, 4, 0, -5 },  /* 0xC1 Aacute */
00392    { 545, 8, 5, 4, 0, -5 },  /* 0xC2 Acircumflex */
00393    { 550, 8, 5, 4, 0, -5 },  /* 0xC3 Atilde */
00394    { 555, 8, 5, 4, 0, -5 },  /* 0xC4 Adieresis */
00395    { 560, 8, 5, 4, 0, -5 },  /* 0xC5 Aring */
00396    { 565, 8, 5, 4, 0, -5 },  /* 0xC6 AE */
00397    { 570, 8, 6, 4, 0, -5 },  /* 0xC7 Ccedilla */
00398    { 576, 8, 5, 4, 0, -5 },  /* 0xC8 Egrave */
00399    { 581, 8, 5, 4, 0, -5 },  /* 0xC9 Eacute */
00400    { 586, 8, 5, 4, 0, -5 },  /* 0xCA Ecircumflex */
00401    { 591, 8, 5, 4, 0, -5 },  /* 0xCB Edieresis */
00402    { 596, 8, 5, 4, 0, -5 },  /* 0xCC Igrave */
00403    { 601, 8, 5, 4, 0, -5 },  /* 0xCD Iacute */
00404    { 606, 8, 5, 4, 0, -5 },  /* 0xCE Icircumflex */
00405    { 611, 8, 5, 4, 0, -5 },  /* 0xCF Idieresis */
00406    { 616, 8, 5, 4, 0, -5 },  /* 0xD0 Eth */
00407    { 621, 8, 5, 4, 0, -5 },  /* 0xD1 Ntilde */
00408    { 626, 8, 5, 4, 0, -5 },  /* 0xD2 Ograve */
00409    { 631, 8, 5, 4, 0, -5 },  /* 0xD3 Oacute */
00410    { 636, 8, 5, 4, 0, -5 },  /* 0xD4 Ocircumflex */
00411    { 641, 8, 5, 4, 0, -5 },  /* 0xD5 Otilde */
00412    { 646, 8, 5, 4, 0, -5 },  /* 0xD6 Odieresis */
00413    { 651, 8, 3, 4, 0, -4 },  /* 0xD7 multiply */
00414    { 654, 8, 5, 4, 0, -5 },  /* 0xD8 Oslash */
00415    { 659, 8, 5, 4, 0, -5 },  /* 0xD9 Ugrave */
00416    { 664, 8, 5, 4, 0, -5 },  /* 0xDA Uacute */
00417    { 669, 8, 5, 4, 0, -5 },  /* 0xDB Ucircumflex */
00418    { 674, 8, 5, 4, 0, -5 },  /* 0xDC Udieresis */
00419    { 679, 8, 5, 4, 0, -5 },  /* 0xDD Yacute */
00420    { 684, 8, 5, 4, 0, -5 },  /* 0xDE Thorn */
00421    { 689, 8, 6, 4, 0, -5 },  /* 0xDF germandbls */
00422    { 695, 8, 5, 4, 0, -5 },  /* 0xE0 agrave */
00423    { 700, 8, 5, 4, 0, -5 },  /* 0xE1 aacute */
00424    { 705, 8, 5, 4, 0, -5 },  /* 0xE2 acircumflex */
00425    { 710, 8, 5, 4, 0, -5 },  /* 0xE3 atilde */
00426    { 715, 8, 5, 4, 0, -5 },  /* 0xE4 adieresis */
00427    { 720, 8, 5, 4, 0, -5 },  /* 0xE5 aring */
00428    { 725, 8, 4, 4, 0, -4 },  /* 0xE6 ae */
00429    { 729, 8, 5, 4, 0, -4 },  /* 0xE7 ccedilla */
00430    { 734, 8, 5, 4, 0, -5 },  /* 0xE8 egrave */
00431    { 739, 8, 5, 4, 0, -5 },  /* 0xE9 eacute */
00432    { 744, 8, 5, 4, 0, -5 },  /* 0xEA ecircumflex */
00433    { 749, 8, 5, 4, 0, -5 },  /* 0xEB edieresis */
00434    { 754, 8, 5, 3, 0, -5 },  /* 0xEC igrave */
00435    { 759, 8, 5, 3, 0, -5 },  /* 0xED iacute */
00436    { 764, 8, 5, 4, 0, -5 },  /* 0xEE icircumflex */
00437    { 769, 8, 5, 4, 0, -5 },  /* 0xEF idieresis */
00438    { 774, 8, 5, 4, 0, -5 },  /* 0xF0 eth */
00439    { 779, 8, 5, 4, 0, -5 },  /* 0xF1 ntilde */
00440    { 784, 8, 5, 4, 0, -5 },  /* 0xF2 ograve */
00441    { 789, 8, 5, 4, 0, -5 },  /* 0xF3 oacute */
00442    { 794, 8, 5, 4, 0, -5 },  /* 0xF4 ocircumflex */
00443    { 799, 8, 5, 4, 0, -5 },  /* 0xF5 otilde */
00444    { 804, 8, 5, 4, 0, -5 },  /* 0xF6 odieresis */
00445    { 809, 8, 5, 4, 0, -5 },  /* 0xF7 divide */
00446    { 814, 8, 4, 4, 0, -4 },  /* 0xF8 oslash */
00447    { 818, 8, 5, 4, 0, -5 },  /* 0xF9 ugrave */
00448    { 823, 8, 5, 4, 0, -5 },  /* 0xFA uacute */
00449    { 828, 8, 5, 4, 0, -5 },  /* 0xFB ucircumflex */
00450    { 833, 8, 5, 4, 0, -5 },  /* 0xFC udieresis */
00451    { 838, 8, 6, 4, 0, -5 },  /* 0xFD yacute */
00452    { 844, 8, 5, 4, 0, -4 },  /* 0xFE thorn */
00453    { 849, 8, 6, 4, 0, -5 },  /* 0xFF ydieresis */
00454    { 855, 8, 1, 2, 0, -1 },  /* 0x11D gcircumflex */
00455    { 856, 8, 5, 4, 0, -5 },  /* 0x152 OE */
00456    { 861, 8, 4, 4, 0, -4 },  /* 0x153 oe */
00457    { 865, 8, 5, 4, 0, -5 },  /* 0x160 Scaron */
00458    { 870, 8, 5, 4, 0, -5 },  /* 0x161 scaron */
00459    { 875, 8, 5, 4, 0, -5 },  /* 0x178 Ydieresis */
00460    { 880, 8, 5, 4, 0, -5 },  /* 0x17D Zcaron */
00461    { 885, 8, 5, 4, 0, -5 },  /* 0x17E zcaron */
00462    { 890, 8, 1, 2, 0, -1 },  /* 0xEA4 uni0EA4 */
00463    { 891, 8, 1, 2, 0, -1 },  /* 0x13A0 uni13A0 */
00464    { 892, 8, 1, 2, 0, -3 },  /* 0x2022 bullet */
00465    { 893, 8, 1, 4, 0, -1 },  /* 0x2026 ellipsis */
00466    { 894, 8, 5, 4, 0, -5 },  /* 0x20AC Euro */
00467    { 899, 8, 5, 4, 0, -5 },  /* 0xFFFD uniFFFD */
00468 #endif /* (TOMTHUMB_USE_EXTENDED) */
00469 };
00470 
00471 const GFXfont TomThumb PROGMEM = {
00472   (uint8_t  *)TomThumbBitmaps,
00473   (GFXglyph *)TomThumbGlyphs,
00474   0x20, 0x7E, 6 };