TomThumb.h 20 KB

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