Skip to content

Instantly share code, notes, and snippets.

@10der
Created January 19, 2024 17:12
Show Gist options
  • Save 10der/6eaf4fd6a365121c877dfccbc13257cc to your computer and use it in GitHub Desktop.
Save 10der/6eaf4fd6a365121c877dfccbc13257cc to your computer and use it in GitHub Desktop.
/**
** 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
** Modifications for Awtrix for improved readability and LaMetric Style Copyright 2023 Blueforcer
** 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 TomThumb for improved readability are from Robey Pointer,
** see:
** http://robey.lag.net/2010/01/23/tiny-monospace-font.html
**
** Massive modifications in 2018-2023 for Awtrix for improved readability by Blueforcer
**
** 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
**
*/
// AwtrixFont Version 20230713
const uint8_t AwtrixBitmaps[] PROGMEM = {
0x00, /*[0] 0x20 space */
0x80, 0x80, 0x80, 0x00, 0x80, /*[1] 0x21 exclam */
0xA0, 0xA0, /*[2] 0x22 quotedbl */
0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /*[3] 0x23 numbersign */
0x60, 0xC0, 0x60, 0xC0, 0x40, /*[4] 0x24 dollar */
0xA0, 0x20, 0x40, 0x80, 0xA0, /*[5] 0x25 percent */
0xC0, 0xC0, 0xE0, 0xA0, 0x60, /*[6] 0x26 ampersand */
0x80, 0x80, /*[7] 0x27 quotesingle */
0x40, 0x80, 0x80, 0x80, 0x40, /*[8] 0x28 parenleft */
0x80, 0x40, 0x40, 0x40, 0x80, /*[9] 0x29 parenright */
0xA0, 0x40, 0xA0, /*[10] 0x2A asterisk */
0x40, 0xE0, 0x40, /*[11] 0x2B plus */
0x40, 0x80, /*[12] 0x2C comma */
0xE0, /*[13] 0x2D hyphen */
0x80, /*[14] 0x2E period */
0x20, 0x20, 0x40, 0x80, 0x80, /*[15] 0x2F slash */
0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /*[16] 0x30 zero */
0x40, 0xC0, 0x40, 0x40, 0xE0, /*[17] 0x31 one */
0xE0, 0x20, 0xE0, 0x80, 0xE0, /*[18] 0x32 two */
0xE0, 0x20, 0xE0, 0x20, 0xE0, /*[19] 0x33 three */
0xA0, 0xA0, 0xE0, 0x20, 0x20, /*[20] 0x34 four */
0xE0, 0x80, 0xE0, 0x20, 0xE0, /*[21] 0x35 five */
0xE0, 0x80, 0xE0, 0xA0, 0xE0, /*[22] 0x36 six */
0xE0, 0x20, 0x20, 0x20, 0x20, /*[23] 0x37 seven */
0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /*[24] 0x38 eight */
0xE0, 0xA0, 0xE0, 0x20, 0xE0, /*[25] 0x39 nine */
0x80, 0x00, 0x80, /*[26] 0x3A colon */
0x40, 0x00, 0x40, 0x80, /*[27] 0x3B semicolon */
0x20, 0x40, 0x80, 0x40, 0x20, /*[28] 0x3C less */
0xE0, 0x00, 0xE0, /*[29] 0x3D equal */
0x80, 0x40, 0x20, 0x40, 0x80, /*[30] 0x3E greater */
0xE0, 0x20, 0x40, 0x00, 0x40, /*[31] 0x3F question */
0x40, 0xA0, 0xE0, 0x80, 0x60, /*[32] 0x40 at */
0xC0, 0xA0, 0xE0, 0xA0, 0xA0, /*[33] 0x41 A */
0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /*[34] 0x42 B */
0x40, 0xA0, 0x80, 0xA0, 0x40, /*[35] 0x43 C */
0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /*[36] 0x44 D */
0xE0, 0x80, 0xE0, 0x80, 0xE0, /*[37] 0x45 E */
0xE0, 0x80, 0xE0, 0x80, 0x80, /*[38] 0x46 F */
0x60, 0x80, 0xA0, 0xA0, 0x60, /*[39] 0x47 G */
0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /*[40] 0x48 H */
0x80, 0x80, 0x80, 0x80, 0x80, /*[41] 0x49 I */
0x20, 0x20, 0x20, 0xA0, 0x40, /*[42] 0x4A J */
0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /*[43] 0x4B K */
0x80, 0x80, 0x80, 0x80, 0xE0, /*[44] 0x4C L */
0x88, 0xD8, 0xA8, 0x88, 0x88, /*[45] 0x4D M */
0x90, 0xD0, 0xB0, 0x90, 0x90, /*[46] 0x4E N */
0x40, 0xA0, 0xA0, 0xA0, 0x40, /*[47] 0x4F O */
0xE0, 0xA0, 0xC0, 0x80, 0x80, /*[48] 0x50 P */
0x40, 0xA0, 0xA0, 0xA0, 0x70, /*[49] 0x51 Q */
0xE0, 0xA0, 0xC0, 0xA0, 0xA0, /*[50] 0x52 R */
0xE0, 0x80, 0xE0, 0x20, 0xE0, /*[51] 0x53 S */
0xE0, 0x40, 0x40, 0x40, 0x40, /*[52] 0x54 T */
0xA0, 0xA0, 0xA0, 0xA0, 0xE0, /*[53] 0x55 U */
0xA0, 0xA0, 0xA0, 0xA0, 0x40, /*[54] 0x56 V */
0x88, 0x88, 0x88, 0xA8, 0x50, /*[55] 0x57 W */
0xA0, 0xA0, 0x40, 0xA0, 0xA0, /*[56] 0x58 X */
0xA0, 0xA0, 0xE0, 0x20, 0xC0, /*[57] 0x59 Y */
0xE0, 0x20, 0x40, 0x80, 0xE0, /*[58] 0x5A Z */
0xE0, 0x80, 0x80, 0x80, 0xE0, /*[59] 0x5B bracketleft */
0x80, 0x40, 0x20, /*[60] 0x5C backslash */
0xE0, 0x20, 0x20, 0x20, 0xE0, /*[61] 0x5D bracketright */
0x40, 0xA0, /*[62] 0x5E asciicircum */
0xE0, /*[63] 0x5F underscore */
0x80, 0x40, /*[64] 0x60 grave */
0xC0, 0x60, 0xA0, 0xE0, /*[65] 0x61 a */
0x80, 0xC0, 0xA0, 0xA0, 0xC0, /*[66] 0x62 b */
0x60, 0x80, 0x80, 0x60, /*[67] 0x63 c */
0x20, 0x60, 0xA0, 0xA0, 0x60, /*[68] 0x64 d */
0x60, 0xA0, 0xC0, 0x60, /*[69] 0x65 e */
0x20, 0x40, 0xE0, 0x40, 0x40, /*[70] 0x66 f */
0x60, 0xA0, 0xE0, 0x20, 0x40, /*[71] 0x67 g */
0x80, 0xC0, 0xA0, 0xA0, 0xA0, /*[72] 0x68 h */
0x80, 0x00, 0x80, 0x80, 0x80, /*[73] 0x69 i */
0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /*[74] 0x6A j */
0x80, 0xA0, 0xC0, 0xC0, 0xA0, /*[75] 0x6B k */
0xC0, 0x40, 0x40, 0x40, 0xE0, /*[76] 0x6C l */
0xE0, 0xE0, 0xE0, 0xA0, /*[77] 0x6D m */
0xC0, 0xA0, 0xA0, 0xA0, /*[78] 0x6E n */
0x40, 0xA0, 0xA0, 0x40, /*[79] 0x6F o */
0xC0, 0xA0, 0xA0, 0xC0, 0x80, /*[80] 0x70 p */
0x60, 0xA0, 0xA0, 0x60, 0x20, /*[81] 0x71 q */
0x60, 0x80, 0x80, 0x80, /*[82] 0x72 r */
0x60, 0xC0, 0x60, 0xC0, /*[83] 0x73 s */
0x40, 0xE0, 0x40, 0x40, 0x60, /*[84] 0x74 t */
0xA0, 0xA0, 0xA0, 0x60, /*[85] 0x75 u */
0xA0, 0xA0, 0xE0, 0x40, /*[86] 0x76 v */
0xA0, 0xE0, 0xE0, 0xE0, /*[87] 0x77 w */
0xA0, 0x40, 0x40, 0xA0, /*[88] 0x78 x */
0xA0, 0xA0, 0x60, 0x20, 0x40, /*[89] 0x79 y */
0xE0, 0x60, 0xC0, 0xE0, /*[90] 0x7A z */
0x60, 0x40, 0x80, 0x40, 0x60, /*[91] 0x7B braceleft */
0x80, 0x80, 0x80, 0x80, 0x80, /*[92] 0x7C bar */
0xC0, 0x40, 0x20, 0x40, 0xC0, /*[93] 0x7D braceright */
0x60, 0xC0, /*[94] 0x7E asciitilde */
0x80, 0x00, 0x80, 0x80, 0x80, /*[95] 0xA1 exclamdown */
0x40, 0xE0, 0x80, 0xE0, 0x40, /*[96] 0xA2 cent */
0x60, 0x40, 0xE0, 0x40, 0xE0, /*[97] 0xA3 sterling */
0xA0, 0x40, 0xE0, 0x40, 0xA0, /*[98] 0xA4 currency */
0xA0, 0xA0, 0x40, 0xE0, 0x40, /*[99] 0xA5 yen */
0x80, 0x80, 0x00, 0x80, 0x80, /*[100] 0xA6 brokenbar */
0x60, 0x40, 0xA0, 0x40, 0xC0, /*[101] 0xA7 section */
0xA0, /*[102] 0xA8 dieresis */
0x60, 0x80, 0x60, /*[103] 0xA9 copyright */
0x60, 0xA0, 0xE0, 0x00, 0xE0, /*[104] 0xAA ordfeminine */
0x40, 0x80, 0x40, /*[105] 0xAB guillemotleft */
0xE0, 0x20, /*[106] 0xAC logicalnot */
0xC0, /*[107] 0xAD softhyphen */
0xC0, 0xC0, 0xA0, /*[108] 0xAE registered */
0xE0, /*[109] 0xAF macron */
0xC0, 0xC0, 0x00, /*[110] 0xB0 degree */
0x40, 0xE0, 0x40, 0x00, 0xE0, /*[111] 0xB1 plusminus */
0xC0, 0x40, 0x60, /*[112] 0xB2 twosuperior */
0xE0, 0x60, 0xE0, /*[113] 0xB3 threesuperior */
0x40, 0x80, /*[114] 0xB4 acute */
0xA0, 0xA0, 0xA0, 0xC0, 0x80, /*[115] 0xB5 mu */
0x60, 0xA0, 0x60, 0x60, 0x60, /*[116] 0xB6 paragraph */
0xE0, 0xE0, 0xE0, /*[117] 0xB7 periodcentered */
0x40, 0x20, 0xC0, /*[118] 0xB8 cedilla */
0x80, 0x80, 0x80, /*[119] 0xB9 onesuperior */
0x40, 0xA0, 0x40, 0x00, 0xE0, /*[120] 0xBA ordmasculine */
0x80, 0x40, 0x80, /*[121] 0xBB guillemotright */
0x80, 0x80, 0x00, 0x60, 0x20, /*[122] 0xBC onequarter */
0x80, 0x80, 0x00, 0xC0, 0x60, /*[123] 0xBD onehalf */
0xC0, 0xC0, 0x00, 0x60, 0x20, /*[124] 0xBE threequarters */
0x40, 0x00, 0x40, 0x80, 0xE0, /*[125] 0xBF questiondown */
0x40, 0x20, 0x40, 0xE0, 0xA0, /*[126] 0xC0 Agrave */
0x40, 0x80, 0x40, 0xE0, 0xA0, /*[127] 0xC1 Aacute */
0xE0, 0x00, 0x40, 0xE0, 0xA0, /*[128] 0xC2 Acircumflex */
0x60, 0xC0, 0x40, 0xE0, 0xA0, /*[129] 0xC3 Atilde */
0xA0, 0x40, 0xA0, 0xE0, 0xA0, /*[130] 0xC4 Adieresis */
0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /*[131] 0xC5 Aring */
0x60, 0xC0, 0xE0, 0xC0, 0xE0, /*[132] 0xC6 AE */
0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /*[133] 0xC7 Ccedilla */
0x40, 0x20, 0xE0, 0xC0, 0xE0, /*[134] 0xC8 Egrave */
0x40, 0x80, 0xE0, 0xC0, 0xE0, /*[135] 0xC9 Eacute */
0xE0, 0x00, 0xE0, 0xC0, 0xE0, /*[136] 0xCA Ecircumflex */
0xA0, 0x00, 0xE0, 0xC0, 0xE0, /*[137] 0xCB Edieresis */
0x40, 0x20, 0xE0, 0x40, 0xE0, /*[138] 0xCC Igrave */
0x40, 0x80, 0xE0, 0x40, 0xE0, /*[139] 0xCD Iacute */
0xE0, 0x00, 0xE0, 0x40, 0xE0, /*[140] 0xCE Icircumflex */
0xA0, 0x00, 0xE0, 0x40, 0xE0, /*[141] 0xCF Idieresis */
0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /*[142] 0xD0 Eth */
0xC0, 0x60, 0xA0, 0xE0, 0xA0, /*[143] 0xD1 Ntilde */
0x40, 0x20, 0xE0, 0xA0, 0xE0, /*[144] 0xD2 Ograve */
0x40, 0x80, 0xE0, 0xA0, 0xE0, /*[145] 0xD3 Oacute */
0xE0, 0x00, 0xE0, 0xA0, 0xE0, /*[146] 0xD4 Ocircumflex */
0xC0, 0x60, 0xE0, 0xA0, 0xE0, /*[147] 0xD5 Otilde */
0xA0, 0x00, 0xE0, 0xA0, 0xE0, /*[148] 0xD6 Odieresis */
0xA0, 0x40, 0xA0, /*[149] 0xD7 multiply */
0x60, 0xA0, 0xE0, 0xA0, 0xC0, /*[150] 0xD8 Oslash */
0x80, 0x40, 0xA0, 0xA0, 0xE0, /*[151] 0xD9 Ugrave */
0x20, 0x40, 0xA0, 0xA0, 0xE0, /*[152] 0xDA Uacute */
0xE0, 0x00, 0xA0, 0xA0, 0xE0, /*[153] 0xDB Ucircumflex */
0xA0, 0x00, 0xA0, 0xA0, 0xE0, /*[154] 0xDC Udieresis */
0x20, 0x40, 0xA0, 0xE0, 0x40, /*[155] 0xDD Yacute */
0x80, 0xE0, 0xA0, 0xE0, 0x80, /*[156] 0xDE Thorn */
0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /*[157] 0xDF germandbls */
0x40, 0x20, 0x60, 0xA0, 0xE0, /*[158] 0xE0 agrave */
0x40, 0x80, 0x60, 0xA0, 0xE0, /*[159] 0xE1 aacute */
0xE0, 0x00, 0x60, 0xA0, 0xE0, /*[160] 0xE2 acircumflex */
0x60, 0xC0, 0x60, 0xA0, 0xE0, /*[161] 0xE3 atilde */
0xA0, 0x00, 0x60, 0xA0, 0xE0, /*[162] 0xE4 adieresis */
0x60, 0x60, 0x60, 0xA0, 0xE0, /*[163] 0xE5 aring */
0x60, 0xE0, 0xE0, 0xC0, /*[164] 0xE6 ae */
0x60, 0x80, 0x60, 0x20, 0x40, /*[165] 0xE7 copy&pasteistrash */
0x40, 0x20, 0x60, 0xE0, 0x60, /*[166] 0xE8 egrave */
0x40, 0x80, 0x60, 0xE0, 0x60, /*[167] 0xE9 eacute */
0xE0, 0x00, 0x60, 0xE0, 0x60, /*[168] 0xEA ecircumflex */
0xA0, 0x00, 0x60, 0xE0, 0x60, /*[169] 0xEB edieresis */
0x80, 0x40, 0x80, 0x80, 0x80, /*[170] 0xEC igrave */
0x40, 0x80, 0x40, 0x40, 0x40, /*[171] 0xED iacute */
0xE0, 0x00, 0x40, 0x40, 0x40, /*[172] 0xEE icircumflex */
0xA0, 0x00, 0x40, 0x40, 0x40, /*[173] 0xEF idieresis */
0x60, 0xC0, 0x60, 0xA0, 0x60, /*[174] 0xF0 eth */
0xC0, 0x60, 0xC0, 0xA0, 0xA0, /*[175] 0xF1 ntilde */
0x40, 0x20, 0x40, 0xA0, 0x40, /*[176] 0xF2 ograve */
0x40, 0x80, 0x40, 0xA0, 0x40, /*[177] 0xF3 oacute */
0xE0, 0x00, 0x40, 0xA0, 0x40, /*[178] 0xF4 ocircumflex */
0xC0, 0x60, 0x40, 0xA0, 0x40, /*[179] 0xF5 otilde */
0xA0, 0x00, 0x40, 0xA0, 0x40, /*[180] 0xF6 odieresis */
0x40, 0x00, 0xE0, 0x00, 0x40, /*[181] 0xF7 divide */
0x60, 0xE0, 0xA0, 0xC0, /*[182] 0xF8 oslash */
0x80, 0x40, 0xA0, 0xA0, 0x60, /*[183] 0xF9 ugrave */
0x20, 0x40, 0xA0, 0xA0, 0x60, /*[184] 0xFA uacute */
0xE0, 0x00, 0xA0, 0xA0, 0x60, /*[185] 0xFB ucircumflex */
0xA0, 0x00, 0xA0, 0xA0, 0x60, /*[186] 0xFC udieresis */
0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /*[187] 0xFD yacute */
0x80, 0xC0, 0xA0, 0xC0, 0x80, /*[188] 0xFE thorn */
0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /*[189] 0xFF ydieresis */
0x00, /*[190] 0x11D gcircumflex */
0x60, 0xC0, 0xE0, 0xC0, 0x60, /*[191] 0x152 OE */
0x60, 0xE0, 0xC0, 0xE0, /*[192] 0x153 oe */
0xA0, 0x60, 0xC0, 0x60, 0xC0, /*[193] 0x160 Scaron */
0xA0, 0x60, 0xC0, 0x60, 0xC0, /*[194] 0x161 scaron */
0xA0, 0x00, 0xA0, 0x40, 0x40, /*[195] 0x178 Ydieresis */
0xA0, 0xE0, 0x60, 0xC0, 0xE0, /*[196] 0x17D Zcaron */
0xA0, 0xE0, 0x60, 0xC0, 0xE0, /*[197] 0x17E zcaron */
0x00, /*[198] 0xEA4 uni0EA4 */
0x00, /*[199] 0x13A0 uni13A0 */
0x80, /*[200] 0x2022 bullet */
0xA0, /*[201] 0x2026 ellipsis */
0x60, 0xC0, 0xE0, 0xC0, 0x60, /*[202] 0x20AC Euro */
0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /*[203] 0xFFFD uniFFFD */
// cyr
0xE0, 0xA0, 0xE0, 0xA0, 0xA0, /*[204] 0x410 А */
0xE0, 0x80, 0xE0, 0xA0, 0xC0, /*[205] 0x411 Б */
0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /*[206] 0x412 В */
0xE0, 0x80, 0x80, 0x80, 0x80, /*[207] 0x413 Г */
0x60, 0x50, 0x50, 0x50, 0xE8, /*[208] 0x414 Д */
0xE0, 0x80, 0xC0, 0x80, 0xE0, /*[209] 0x415 Е */
0xA8, 0xA8, 0x70, 0xA8, 0xA8, /*[210] 0x416 Ж */
0xC0, 0x20, 0x60, 0x20, 0xE0, /*[211] 0x417 З */
0xA0, 0xA0, 0xA0, 0xA0, 0xC0, /*[212] 0x418 И */
0x40, 0x00, 0xA0, 0xA0, 0xA0, 0xA0, 0xC0, /*[213] 0x419 Й */
0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /*[214] 0x41A К */
0x60, 0xA0, 0xA0, 0xA0, 0xA0, /*[215] 0x41B Л */
0x88, 0xD8, 0xA8, 0x88, 0x88, /*[216] 0x41C М */
0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /*[217] 0x41D Н */
0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /*[218] 0x41E О */
0xE0, 0xA0, 0xA0, 0xA0, 0xA0, /*[219] 0x41F П */
0xE0, 0xA0, 0xE0, 0x80, 0x80, /*[220] 0x420 Р */
0xE0, 0x80, 0x80, 0x80, 0xE0, /*[221] 0x421 С */
0xE0, 0x40, 0x40, 0x40, 0x40, /*[222] 0x422 Т */
0xA0, 0xA0, 0xE0, 0x40, 0x40, /*[223] 0x423 У */
0xF8, 0xA8, 0xF8, 0x20, 0x20, /*[224] 0x424 Ф */
0xA0, 0xA0, 0x40, 0xA0, 0xA0, /*[225] 0x425 Х */
0xA0, 0xA0, 0xA0, 0xA0, 0xD0, /*[226] 0x426 Ц */
0xA0, 0xA0, 0x60, 0x20, 0x20, /*[227] 0x427 Ч */
0xA8, 0xA8, 0xA8, 0xA8, 0xF8, /*[228] 0x428 Ш */
0xA8, 0xA8, 0xA8, 0xA8, 0xF4, /*[229] 0x429 Щ */
0xC0, 0x40, 0x70, 0x50, 0x70, /*[230] 0x42A Ъ */
0x88, 0x88, 0xE8, 0xA8, 0xE8, /*[231] 0x42B Ы */
0x80, 0x80, 0xE0, 0xA0, 0xE0, /*[232] 0x42C Ь */
0xC0, 0x20, 0x60, 0x20, 0xC0, /*[233] 0x42D Э */
0xB8, 0xA8, 0xE8, 0xA8, 0xB8, /*[234] 0x42E Ю */
0xE0, 0xA0, 0x60, 0xA0, 0xA0, /*[235] 0x42F Я */
0xC0, 0x60, 0xA0, 0xE0, /*[236] 0x430 а */
0x60, 0xC0, 0xA0, 0xE0, /*[237] 0x431 б */
0x40, 0xA0, 0xC0, 0xA0, 0xC0, /*[238] 0x432 в */
0xE0, 0xA0, 0x80, 0x80, /*[239] 0x433 г */
0x60, 0x50, 0x50, 0xE8, /*[240] 0x434 д */
0x60, 0xA0, 0xC0, 0x60, /*[241] 0x435 е */
0xA8, 0x70, 0xA8, 0xA8, /*[242] 0x436 ж */
0x20, 0x40, 0x20, 0xE0, /*[243] 0x437 з */
0xA0, 0xA0, 0xA0, 0xC0, /*[244] 0x438 и */
0x40, 0x00, 0xA0, 0xA0, 0xA0, 0xC0, /*[245] 0x439 й */
0xA0, 0xC0, 0xA0, 0xA0, /*[246] 0x43A к */
0x60, 0xA0, 0xA0, 0xA0, /*[247] 0x43B л */
0x88, 0xD8, 0xA8, 0x88, /*[248] 0x43C м */
0xA0, 0xA0, 0xE0, 0xA0, /*[249] 0x43D н */
0x40, 0xA0, 0xA0, 0x40, /*[250] 0x43E о */
0xE0, 0xA0, 0xA0, 0xA0, /*[251] 0x43F п */
0xC0, 0xA0, 0xE0, 0x80, /*[252] 0x440 р */
0x60, 0x80, 0x80, 0x60, /*[253] 0x441 с */
0xE0, 0x40, 0x40, 0x40, /*[254] 0x442 т */
0xA0, 0xE0, 0x20, 0xC0, /*[255] 0x443 у */
0x78, 0xA8, 0xF0, 0x20, /*[256] 0x444 ф */
0xA0, 0x40, 0xA0, 0xA0, /*[257] 0x445 х */
0xA0, 0xA0, 0xA0, 0xD0, /*[258] 0x446 ц */
0xA0, 0xA0, 0x60, 0x20, /*[259] 0x447 ч */
0x88, 0xA8, 0xA8, 0x70, /*[260] 0x448 ш */
0x88, 0xA8, 0xA8, 0x74, /*[261] 0x449 щ */
0xC0, 0x60, 0x50, 0x60, /*[262] 0x44A ъ */
0x88, 0xC8, 0xA8, 0xC8, /*[263] 0x44B ы */
0x80, 0xC0, 0xA0, 0xC0, /*[264] 0x44C ь */
0xC0, 0x20, 0x60, 0x20, 0xC0, /*[265] 0x44D э */
0x98, 0xA8, 0xE8, 0xB0, /*[266] 0x44E ю */
0x60, 0xA0, 0x60, 0xA0, /*[267] 0x44F я */
0xA0, 0x00, 0xE0, 0x80, 0xC0, 0x80, 0xE0, /*[268] 0x401 Ё */
0x60, 0x80, 0xC0, 0x80, 0x60, /*[269] 0x404 Є */
0x80, 0x80, 0x80, 0x80, 0x80, /*[270] 0x406 І */
0xA0, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, /*[271] 0x407 Ї */
0xA0, 0x00, 0x60, 0xA0, 0xC0, 0x60, /*[272] 0x451 ё */
0x60, 0x80, 0xC0, 0x80, 0x60, /*[273] 0x454 є */
0x80, 0x00, 0x80, 0x80, 0x80, 0x80, /*[274] 0x456 і */
0xA0, 0x00, 0x40, 0x40, 0x40, 0x40, /*[275] 0x457 ї */
};
/* {offset, width, height, advance cursor, x offset, y offset} */
const GFXglyph AwtrixFontGlyphs[] PROGMEM = {
{0, 8, 1, 2, 0, -5}, /*[0] 0x20 space */
{1, 8, 5, 2, 0, -5}, /*[1] 0x21 exclam */
{6, 8, 2, 4, 0, -5}, /*[2] 0x22 quotedbl */
{8, 8, 5, 4, 0, -5}, /*[3] 0x23 numbersign */
{13, 8, 5, 4, 0, -5}, /*[4] 0x24 dollar */
{18, 8, 5, 4, 0, -5}, /*[5] 0x25 percent */
{23, 8, 5, 4, 0, -5}, /*[6] 0x26 ampersand */
{28, 8, 2, 2, 0, -5}, /*[7] 0x27 quotesingle */
{30, 8, 5, 3, 0, -5}, /*[8] 0x28 parenleft */
{35, 8, 5, 3, 0, -5}, /*[9] 0x29 parenright */
{40, 8, 3, 4, 0, -5}, /*[10] 0x2A asterisk */
{43, 8, 3, 4, 0, -4}, /*[11] 0x2B plus */
{46, 8, 2, 3, 0, -1}, /*[12] 0x2C comma */
{48, 8, 1, 4, 0, -3}, /*[13] 0x2D hyphen */
{49, 8, 1, 2, 0, -1}, /*[14] 0x2E period */
{50, 8, 5, 4, 0, -5}, /*[15] 0x2F slash */
{55, 8, 5, 4, 0, -5}, /*[16] 0x30 zero */
{60, 8, 5, 4, 0, -5}, /*[17] 0x31 one */
{65, 8, 5, 4, 0, -5}, /*[18] 0x32 two */
{70, 8, 5, 4, 0, -5}, /*[19] 0x33 three */
{75, 8, 5, 4, 0, -5}, /*[20] 0x34 four */
{80, 8, 5, 4, 0, -5}, /*[21] 0x35 five */
{85, 8, 5, 4, 0, -5}, /*[22] 0x36 six */
{90, 8, 5, 4, 0, -5}, /*[23] 0x37 seven */
{95, 8, 5, 4, 0, -5}, /*[24] 0x38 eight */
{100, 8, 5, 4, 0, -5}, /*[25] 0x39 nine */
{105, 8, 3, 2, 0, -4}, /*[26] 0x3A colon */
{108, 8, 4, 3, 0, -4}, /*[27] 0x3B semicolon */
{112, 8, 5, 4, 0, -5}, /*[28] 0x3C less */
{117, 8, 3, 4, 0, -4}, /*[29] 0x3D equal */
{120, 8, 5, 4, 0, -5}, /*[30] 0x3E greater */
{125, 8, 5, 4, 0, -5}, /*[31] 0x3F question */
{130, 8, 5, 4, 0, -5}, /*[32] 0x40 at */
{135, 8, 5, 4, 0, -5}, /*[33] 0x41 A */
{140, 8, 5, 4, 0, -5}, /*[34] 0x42 B */
{145, 8, 5, 4, 0, -5}, /*[35] 0x43 C */
{150, 8, 5, 4, 0, -5}, /*[36] 0x44 D */
{155, 8, 5, 4, 0, -5}, /*[37] 0x45 E */
{160, 8, 5, 4, 0, -5}, /*[38] 0x46 F */
{165, 8, 5, 4, 0, -5}, /*[39] 0x47 G */
{170, 8, 5, 4, 0, -5}, /*[40] 0x48 H */
{175, 8, 5, 2, 0, -5}, /*[41] 0x49 I */
{180, 8, 5, 4, 0, -5}, /*[42] 0x4A J */
{185, 8, 5, 4, 0, -5}, /*[43] 0x4B K */
{190, 8, 5, 4, 0, -5}, /*[44] 0x4C L */
{195, 8, 5, 6, 0, -5}, /*[45] 0x4D M */
{200, 8, 5, 5, 0, -5}, /*[46] 0x4E N */
{205, 8, 5, 4, 0, -5}, /*[47] 0x4F O */
{210, 8, 5, 4, 0, -5}, /*[48] 0x50 P */
{215, 8, 5, 5, 0, -5}, /*[49] 0x51 Q */
{220, 8, 5, 4, 0, -5}, /*[50] 0x52 R */
{225, 8, 5, 4, 0, -5}, /*[51] 0x53 S */
{230, 8, 5, 4, 0, -5}, /*[52] 0x54 T */
{235, 8, 5, 4, 0, -5}, /*[53] 0x55 U */
{240, 8, 5, 4, 0, -5}, /*[54] 0x56 V */
{245, 8, 5, 6, 0, -5}, /*[55] 0x57 W */
{250, 8, 5, 4, 0, -5}, /*[56] 0x58 X */
{255, 8, 5, 4, 0, -5}, /*[57] 0x59 Y */
{260, 8, 5, 4, 0, -5}, /*[58] 0x5A Z */
{265, 8, 5, 4, 0, -5}, /*[59] 0x5B bracketleft */
{270, 8, 3, 4, 0, -4}, /*[60] 0x5C backslash */
{273, 8, 5, 4, 0, -5}, /*[61] 0x5D bracketright */
{278, 8, 2, 4, 0, -5}, /*[62] 0x5E asciicircum */
{280, 8, 1, 4, 0, -1}, /*[63] 0x5F underscore */
{281, 8, 2, 3, 0, -5}, /*[64] 0x60 grave */
{283, 8, 4, 4, 0, -4}, /*[65] 0x61 a */
{287, 8, 5, 4, 0, -5}, /*[66] 0x62 b */
{292, 8, 4, 4, 0, -4}, /*[67] 0x63 c */
{296, 8, 5, 4, 0, -5}, /*[68] 0x64 d */
{301, 8, 4, 4, 0, -4}, /*[69] 0x65 e */
{305, 8, 5, 4, 0, -5}, /*[70] 0x66 f */
{310, 8, 5, 4, 0, -4}, /*[71] 0x67 g */
{315, 8, 5, 4, 0, -5}, /*[72] 0x68 h */
{320, 8, 5, 2, 0, -5}, /*[73] 0x69 i */
{325, 8, 6, 4, 0, -5}, /*[74] 0x6A j */
{331, 8, 5, 4, 0, -5}, /*[75] 0x6B k */
{336, 8, 5, 4, 0, -5}, /*[76] 0x6C l */
{341, 8, 4, 4, 0, -4}, /*[77] 0x6D m */
{345, 8, 4, 4, 0, -4}, /*[78] 0x6E n */
{349, 8, 4, 4, 0, -4}, /*[79] 0x6F o */
{353, 8, 5, 4, 0, -4}, /*[80] 0x70 p */
{358, 8, 5, 4, 0, -4}, /*[81] 0x71 q */
{363, 8, 4, 4, 0, -4}, /*[82] 0x72 r */
{367, 8, 4, 4, 0, -4}, /*[83] 0x73 s */
{371, 8, 5, 4, 0, -5}, /*[84] 0x74 t */
{376, 8, 4, 4, 0, -4}, /*[85] 0x75 u */
{380, 8, 4, 4, 0, -4}, /*[86] 0x76 v */
{384, 8, 4, 4, 0, -4}, /*[87] 0x77 w */
{388, 8, 4, 4, 0, -4}, /*[88] 0x78 x */
{392, 8, 5, 4, 0, -4}, /*[89] 0x79 y */
{397, 8, 4, 4, 0, -4}, /*[90] 0x7A z */
{401, 8, 5, 4, 0, -5}, /*[91] 0x7B braceleft */
{406, 8, 5, 2, 0, -5}, /*[92] 0x7C bar */
{411, 8, 5, 4, 0, -5}, /*[93] 0x7D braceright */
{416, 8, 2, 4, 0, -5}, /*[94] 0x7E asciitilde */
{418, 8, 5, 2, 0, -5}, /*[95] 0xA1 exclamdown */
{423, 8, 5, 4, 0, -5}, /*[96] 0xA2 cent */
{428, 8, 5, 4, 0, -5}, /*[97] 0xA3 sterling */
{433, 8, 5, 4, 0, -5}, /*[98] 0xA4 currency */
{438, 8, 5, 4, 0, -5}, /*[99] 0xA5 yen */
{443, 8, 5, 2, 0, -5}, /*[100] 0xA6 brokenbar */
{448, 8, 5, 4, 0, -5}, /*[101] 0xA7 section */
{453, 8, 1, 4, 0, -5}, /*[102] 0xA8 dieresis */
{454, 8, 3, 4, 0, -5}, /*[103] 0xA9 copyright */
{457, 8, 5, 4, 0, -5}, /*[104] 0xAA ordfeminine */
{462, 8, 3, 3, 0, -5}, /*[105] 0xAB guillemotleft */
{465, 8, 2, 4, 0, -4}, /*[106] 0xAC logicalnot */
{467, 8, 1, 3, 0, -3}, /*[107] 0xAD softhyphen */
{468, 8, 3, 4, 0, -5}, /*[108] 0xAE registered */
{471, 8, 1, 4, 0, -5}, /*[109] 0xAF macron */
{472, 8, 3, 3, 0, -5}, /*[110] 0xB0 degree */
{475, 8, 5, 4, 0, -5}, /*[111] 0xB1 plusminus */
{480, 8, 3, 4, 0, -5}, /*[112] 0xB2 twosuperior */
{483, 8, 3, 4, 0, -5}, /*[113] 0xB3 threesuperior */
{486, 8, 2, 3, 0, -5}, /*[114] 0xB4 acute */
{488, 8, 5, 4, 0, -5}, /*[115] 0xB5 mu */
{493, 8, 5, 4, 0, -5}, /*[116] 0xB6 paragraph */
{498, 8, 3, 4, 0, -4}, /*[117] 0xB7 periodcentered */
{501, 8, 3, 4, 0, -3}, /*[118] 0xB8 cedilla */
{504, 8, 3, 2, 0, -5}, /*[119] 0xB9 onesuperior */
{507, 8, 5, 4, 0, -5}, /*[120] 0xBA ordmasculine */
{512, 8, 3, 3, 0, -5}, /*[121] 0xBB guillemotright */
{515, 8, 5, 4, 0, -5}, /*[122] 0xBC onequarter */
{520, 8, 5, 4, 0, -5}, /*[123] 0xBD onehalf */
{525, 8, 5, 4, 0, -5}, /*[124] 0xBE threequarters */
{530, 8, 5, 4, 0, -5}, /*[125] 0xBF questiondown */
{535, 8, 5, 4, 0, -5}, /*[126] 0xC0 Agrave */
{540, 8, 5, 4, 0, -5}, /*[127] 0xC1 Aacute */
{545, 8, 5, 4, 0, -5}, /*[128] 0xC2 Acircumflex */
{550, 8, 5, 4, 0, -5}, /*[129] 0xC3 Atilde */
{555, 8, 5, 4, 0, -5}, /*[130] 0xC4 Adieresis */
{560, 8, 5, 4, 0, -5}, /*[131] 0xC5 Aring */
{565, 8, 5, 4, 0, -5}, /*[132] 0xC6 AE */
{570, 8, 6, 4, 0, -5}, /*[133] 0xC7 Ccedilla */
{576, 8, 5, 4, 0, -5}, /*[134] 0xC8 Egrave */
{581, 8, 5, 4, 0, -5}, /*[135] 0xC9 Eacute */
{586, 8, 5, 4, 0, -5}, /*[136] 0xCA Ecircumflex */
{591, 8, 5, 4, 0, -5}, /*[137] 0xCB Edieresis */
{596, 8, 5, 4, 0, -5}, /*[138] 0xCC Igrave */
{601, 8, 5, 4, 0, -5}, /*[139] 0xCD Iacute */
{606, 8, 5, 4, 0, -5}, /*[140] 0xCE Icircumflex */
{611, 8, 5, 4, 0, -5}, /*[141] 0xCF Idieresis */
{616, 8, 5, 4, 0, -5}, /*[142] 0xD0 Eth */
{621, 8, 5, 4, 0, -5}, /*[143] 0xD1 Ntilde */
{626, 8, 5, 4, 0, -5}, /*[144] 0xD2 Ograve */
{631, 8, 5, 4, 0, -5}, /*[145] 0xD3 Oacute */
{636, 8, 5, 4, 0, -5}, /*[146] 0xD4 Ocircumflex */
{641, 8, 5, 4, 0, -5}, /*[147] 0xD5 Otilde */
{646, 8, 5, 4, 0, -5}, /*[148] 0xD6 Odieresis */
{651, 8, 3, 4, 0, -4}, /*[149] 0xD7 multiply */
{654, 8, 5, 4, 0, -5}, /*[150] 0xD8 Oslash */
{659, 8, 5, 4, 0, -5}, /*[151] 0xD9 Ugrave */
{664, 8, 5, 4, 0, -5}, /*[152] 0xDA Uacute */
{669, 8, 5, 4, 0, -5}, /*[153] 0xDB Ucircumflex */
{674, 8, 5, 4, 0, -5}, /*[154] 0xDC Udieresis */
{679, 8, 5, 4, 0, -5}, /*[155] 0xDD Yacute */
{684, 8, 5, 4, 0, -5}, /*[156] 0xDE Thorn */
{689, 8, 6, 4, 0, -5}, /*[157] 0xDF germandbls */
{695, 8, 5, 4, 0, -5}, /*[158] 0xE0 agrave */
{700, 8, 5, 4, 0, -5}, /*[159] 0xE1 aacute */
{705, 8, 5, 4, 0, -5}, /*[160] 0xE2 acircumflex */
{710, 8, 5, 4, 0, -5}, /*[161] 0xE3 atilde */
{715, 8, 5, 4, 0, -5}, /*[162] 0xE4 adieresis */
{720, 8, 5, 4, 0, -5}, /*[163] 0xE5 aring */
{725, 8, 4, 4, 0, -4}, /*[164] 0xE6 ae */
{729, 8, 5, 4, 0, -4}, /*[165] 0xE7 ccedilla */
{734, 8, 5, 4, 0, -5}, /*[166] 0xE8 egrave */
{739, 8, 5, 4, 0, -5}, /*[167] 0xE9 eacute */
{744, 8, 5, 4, 0, -5}, /*[168] 0xEA ecircumflex */
{749, 8, 5, 4, 0, -5}, /*[169] 0xEB edieresis */
{754, 8, 5, 3, 0, -5}, /*[170] 0xEC igrave */
{759, 8, 5, 3, 0, -5}, /*[171] 0xED iacute */
{764, 8, 5, 4, 0, -5}, /*[172] 0xEE icircumflex */
{769, 8, 5, 4, 0, -5}, /*[173] 0xEF idieresis */
{774, 8, 5, 4, 0, -5}, /*[174] 0xF0 eth */
{779, 8, 5, 4, 0, -5}, /*[175] 0xF1 ntilde */
{784, 8, 5, 4, 0, -5}, /*[176] 0xF2 ograve */
{789, 8, 5, 4, 0, -5}, /*[177] 0xF3 oacute */
{794, 8, 5, 4, 0, -5}, /*[178] 0xF4 ocircumflex */
{799, 8, 5, 4, 0, -5}, /*[179] 0xF5 otilde */
{804, 8, 5, 4, 0, -5}, /*[180] 0xF6 odieresis */
{809, 8, 5, 4, 0, -5}, /*[181] 0xF7 divide */
{814, 8, 4, 4, 0, -4}, /*[182] 0xF8 oslash */
{818, 8, 5, 4, 0, -5}, /*[183] 0xF9 ugrave */
{823, 8, 5, 4, 0, -5}, /*[184] 0xFA uacute */
{828, 8, 5, 4, 0, -5}, /*[185] 0xFB ucircumflex */
{833, 8, 5, 4, 0, -5}, /*[186] 0xFC udieresis */
{838, 8, 6, 4, 0, -5}, /*[187] 0xFD yacute */
{844, 8, 5, 4, 0, -4}, /*[188] 0xFE thorn */
{849, 8, 6, 4, 0, -5}, /*[189] 0xFF ydieresis */
{855, 8, 1, 2, 0, -1}, /*[190] 0x11D gcircumflex */
{856, 8, 5, 4, 0, -5}, /*[191] 0x152 OE */
{861, 8, 4, 4, 0, -4}, /*[192] 0x153 oe */
{865, 8, 5, 4, 0, -5}, /*[193] 0x160 Scaron */
{870, 8, 5, 4, 0, -5}, /*[194] 0x161 scaron */
{875, 8, 5, 4, 0, -5}, /*[195] 0x178 Ydieresis */
{880, 8, 5, 4, 0, -5}, /*[196] 0x17D Zcaron */
{885, 8, 5, 4, 0, -5}, /*[197] 0x17E zcaron */
{890, 8, 1, 2, 0, -1}, /*[198] 0xEA4 uni0EA4 */
{891, 8, 1, 2, 0, -1}, /*[199] 0x13A0 uni13A0 */
{892, 8, 1, 2, 0, -3}, /*[200] 0x2022 bullet */
{893, 8, 1, 4, 0, -1}, /*[201] 0x2026 ellipsis */
{894, 8, 5, 4, 0, -5}, /*[202] 0x20AC Euro */
{899, 8, 5, 4, 0, -5}, /*[203] 0xFFFD uniFFFD */
//cyr
{904, 8, 5, 4, 0, -5}, /*[204] 0x410 А */
{909, 8, 5, 4, 0, -5}, /*[205] 0x411 Б */
{914, 8, 5, 4, 0, -5}, /*[206] 0x412 В */
{919, 8, 5, 4, 0, -5}, /*[207] 0x413 Г */
{924, 8, 5, 6, 0, -5}, /*[208] 0x414 Д */
{929, 8, 5, 4, 0, -5}, /*[209] 0x415 Е */
{934, 8, 5, 6, 0, -5}, /*[210] 0x416 Ж */
{939, 8, 5, 4, 0, -5}, /*[211] 0x417 З */
{944, 8, 5, 4, 0, -5}, /*[212] 0x418 И */
{949, 8, 7, 4, 0, -7}, /*[213] 0x419 Й */
{956, 8, 5, 4, 0, -5}, /*[214] 0x41A К */
{961, 8, 5, 4, 0, -5}, /*[215] 0x41B Л */
{966, 8, 5, 6, 0, -5}, /*[216] 0x41C М */
{971, 8, 5, 4, 0, -5}, /*[217] 0x41D Н */
{976, 8, 5, 4, 0, -5}, /*[218] 0x41E О */
{981, 8, 5, 4, 0, -5}, /*[219] 0x41F П */
{986, 8, 5, 4, 0, -5}, /*[220] 0x420 Р */
{991, 8, 5, 4, 0, -5}, /*[221] 0x421 С */
{996, 8, 5, 4, 0, -5}, /*[222] 0x422 Т */
{1001, 8, 5, 4, 0, -5}, /*[223] 0x423 У */
{1006, 8, 5, 6, 0, -5}, /*[224] 0x424 Ф */
{1011, 8, 5, 4, 0, -5}, /*[225] 0x425 Х */
{1016, 8, 5, 5, 0, -5}, /*[226] 0x426 Ц */
{1021, 8, 5, 4, 0, -5}, /*[227] 0x427 Ч */
{1026, 8, 5, 6, 0, -5}, /*[228] 0x428 Ш */
{1031, 8, 5, 7, 0, -5}, /*[229] 0x429 Щ */
{1036, 8, 5, 5, 0, -5}, /*[230] 0x42A Ъ */
{1041, 8, 5, 6, 0, -5}, /*[231] 0x42B Ы */
{1046, 8, 5, 4, 0, -5}, /*[232] 0x42C Ь */
{1051, 8, 5, 4, 0, -5}, /*[233] 0x42D Э */
{1056, 8, 5, 6, 0, -5}, /*[234] 0x42E Ю */
{1061, 8, 5, 4, 0, -5}, /*[235] 0x42F Я */
{1066, 8, 4, 4, 0, -4}, /*[236] 0x430 а */
{1070, 8, 4, 4, 0, -4}, /*[237] 0x431 б */
{1074, 8, 5, 4, 0, -5}, /*[238] 0x432 в */
{1079, 8, 4, 4, 0, -4}, /*[239] 0x433 г */
{1083, 8, 4, 6, 0, -4}, /*[240] 0x434 д */
{1087, 8, 4, 4, 0, -4}, /*[241] 0x435 е */
{1091, 8, 4, 6, 0, -4}, /*[242] 0x436 ж */
{1095, 8, 5, 4, 0, -5}, /*[243] 0x437 з */
{1100, 8, 4, 4, 0, -4}, /*[244] 0x438 и */
{1104, 8, 6, 4, 0, -6}, /*[245] 0x439 й */
{1110, 8, 4, 4, 0, -4}, /*[246] 0x43A к */
{1114, 8, 4, 4, 0, -4}, /*[247] 0x43B л */
{1118, 8, 4, 6, 0, -4}, /*[248] 0x43C м */
{1122, 8, 4, 4, 0, -4}, /*[249] 0x43D н */
{1126, 8, 4, 4, 0, -4}, /*[250] 0x43E о */
{1130, 8, 4, 4, 0, -4}, /*[251] 0x43F п */
{1134, 8, 4, 4, 0, -4}, /*[252] 0x440 р */
{1138, 8, 4, 4, 0, -4}, /*[253] 0x441 с */
{1142, 8, 4, 4, 0, -4}, /*[254] 0x442 т */
{1146, 8, 4, 4, 0, -4}, /*[255] 0x443 у */
{1150, 8, 4, 6, 0, -4}, /*[256] 0x444 ф */
{1154, 8, 4, 4, 0, -4}, /*[257] 0x445 х */
{1158, 8, 4, 5, 0, -4}, /*[258] 0x446 ц */
{1162, 8, 4, 4, 0, -4}, /*[259] 0x447 ч */
{1166, 8, 4, 6, 0, -4}, /*[260] 0x448 ш */
{1170, 8, 4, 7, 0, -4}, /*[261] 0x449 щ */
{1174, 8, 4, 5, 0, -4}, /*[262] 0x44A ъ */
{1178, 8, 4, 6, 0, -4}, /*[263] 0x44B ы */
{1182, 8, 4, 4, 0, -4}, /*[264] 0x44C ь */
{1186, 8, 5, 4, 0, -5}, /*[265] 0x44D э */
{1191, 8, 4, 6, 0, -4}, /*[266] 0x44E ю */
{1195, 8, 4, 4, 0, -4}, /*[267] 0x44F я */
{1199, 8, 7, 4, 0, -7}, /*[268] 0x401 Ё */
{1206, 8, 5, 4, 0, -5}, /*[269] 0x404 Є */
{1211, 8, 5, 2, 0, -5}, /*[270] 0x406 І */
{1216, 8, 7, 4, 0, -7}, /*[271] 0x407 Ї */
{1223, 8, 6, 4, 0, -6}, /*[272] 0x451 ё */
{1229, 8, 5, 4, 0, -5}, /*[273] 0x454 є */
{1234, 8, 6, 2, 0, -6}, /*[274] 0x456 і */
{1240, 8, 6, 4, 0, -6}, /*[275] 0x457 ї */
};
const GFXfont AwtrixFont PROGMEM = {
(uint8_t *)AwtrixBitmaps,
(GFXglyph *)AwtrixFontGlyphs,
0x20, 0xFF, 6};
from PIL import Image, ImageOps
import re
f = open("AwtrixFont.h", "r")
Lines = f.readlines()
gfxBitmap = []
gfxGlyph = []
bitmap = False
glyph = False
for line in Lines:
text = line.strip()
text = re.sub(r'\/\*(.+?)\*\/', '', text)
if bitmap:
if text.startswith("0x"):
result = [x.strip() for x in text.split(',')]
result = list(filter(None, result))
for item in result:
gfxBitmap.append(int(item, 16))
if glyph:
if text.startswith("{"):
text = text.replace("{", "")
text = text.replace("}", "")
result = [x.strip() for x in text.split(',')]
result = list(filter(None, result))
gl = []
for item in result:
gl.append(int(item))
gfxGlyph.append(gl)
if 'AwtrixBitmaps' in text:
bitmap = True
glyph = False
if 'AwtrixFontGlyphs' in text:
bitmap = False
glyph = True
print(gfxBitmap)
print(gfxGlyph)
c1 = None
def utf8ascii(ascii) :
global c1
if (ascii < 128):
c1 = 0
return ascii
last = c1
c1 = ascii
if last == 0xC2:
return (ascii)-34
if last == 0xC3:
return (ascii | 0xC0) - 34
if last == 0x82:
if (ascii == 0xAC):
return 0xEA
if last == 0xD1:
if (ascii == 0x91): # ё
return 272 + 32
if (ascii == 0x94): # є
return 273 + 32
if (ascii == 0x96): # і
return 274 + 32
if (ascii == 0x97): # ї
return 275 + 32
if last == 0xD0:
if (ascii == 0x81): # Ё
return 268 + 32
if (ascii == 0x84): # Є
return 269 + 32
if (ascii == 0x86): # І
return 270 + 32
if (ascii == 0x87): # Ї
return 271 + 32
return (ascii) + 92
return 0
gfxOrdFirstCh = 0x20
gfxGlylen = 1
maxX = 100
maxY = 100
def drawChar(x, y, ch, color):
Barray = gfxBitmap
Garray = gfxGlyph
Goff = int((ord(ch) - gfxOrdFirstCh) * gfxGlylen)
(bo,w,h,xa,xo,yo) = Garray[Goff]
bits = 0
bit = 0
y = maxY - y - 1
yy=0
while yy<h: #for yy in range(h):
xx=0
while xx<w:
if(not(bit & 7)):
bits = Barray[bo]
bo+=1
bit+=1
if(bits & 0x80):
x1 = x+xx+xo
x1=maxX - x1
img.putpixel((x1,y+yy+yo), color)
bits <<= 1
xx+=1
yy+=1
return w
img = Image.new("RGB", (800, 600))
alpha = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
#alpha = "ЁЄІЇ"
#alpha = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
#alpha = "ёэії"
idx = 0
for char in alpha:
idx = idx + 10
my_bytes = bytes(char, 'UTF-8')
int_char = 0
for b in my_bytes:
int_char = utf8ascii(b)
if int_char != 0:
drawChar(100 + idx, 90, chr(int_char), (255,255,255))
img = ImageOps.mirror(img)
img.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment