uncommited wips

master
Ondřej Hruška 1 year ago
parent 14c9ca1971
commit cccb03ad13
  1. 18
      font.c
  2. 6
      font.h
  3. 14
      fontedit.c
  4. 587
      fontedit_35.c
  5. 588
      fontedit_45.c
  6. 943
      fontedit_57.c
  7. 40
      fontedit_gen45.c
  8. 36
      fontedit_gen45_extra.c
  9. 124
      fontedit_gen57.c
  10. 45
      fontedit_gen57_extra.c
  11. 28
      main.c

@ -5,23 +5,27 @@
#define FONT_EXTRAS_START (0x7e - 0x20 + 1)
struct utf_glyph5x {
union {
union utf_lookup {
const char symbol[4];
/// symbol as uint, but not decoded - just for matching!
const uint32_t uint;
};
};
struct utf_glyph5x {
union utf_lookup utf;
font5x_bitmap_t graphic;
};
struct utf_glyph4x {
union {
const char symbol[4];
const uint32_t uint;
};
union utf_lookup utf;
font4x_bitmap_t graphic;
};
struct utf_glyph3x {
union utf_lookup utf;
font3x_bitmap_t graphic;
};
#define F57_NUM_ASCII 95
#define F57_ASCII_START 0x20
#define F57_ASCII_END 0x7e

@ -19,6 +19,10 @@ typedef struct {
uint8_t data[4];
} font4x_bitmap_t;
typedef struct {
uint8_t data[3];
} font3x_bitmap_t;
/// Get font graphic for a character.
///
/// The returned pointer is PROGMEM!
@ -26,4 +30,6 @@ const font5x_bitmap_t *font57_getsym(const struct Utf8Char *ch);
const font4x_bitmap_t *font45_getsym(const struct Utf8Char *ch);
const font3x_bitmap_t *font35_getsym(const struct Utf8Char *ch);
#endif //GFX_FONT_H

@ -0,0 +1,14 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
void main() {
printf("const char* symbols[] = {\n");
for(int c = 32; c < 127; c++) {
printf(" // %d \"%c\"\n", c, c);
for(int j=0;j<5;j++){
printf(" \" \",\n");
}
}
printf("};\n");
}

@ -0,0 +1,587 @@
const char* symbols[] = {
// 32 " "
" ",
" ",
" ",
" ",
" ",
// 33 "!"
" X ",
" X ",
" X ",
" ",
" X ",
// 34 """
"X X",
"X X",
" ",
" ",
" ",
// 35 "#"
" X ",
"XXX",
" X ",
"XXX",
" X ",
// 36 "$"
" X ",
"XXX",
"XX ",
" XX",
"XXX",
// 37 "%"
"X X",
" X",
" X ",
"X ",
"X x",
// 38 "&"
"xxx",
" x ",
"xx ",
"x x",
"xxx",
// 39 "'"
" x ",
" x ",
" ",
" ",
" ",
// 40 "("
" x ",
"x ",
"x ",
"x ",
" x ",
// 41 ")"
"x ",
" x ",
" x ",
" x ",
"x ",
// 42 "*"
"x x",
" x ",
"x x",
" ",
" ",
// 43 "+"
" ",
" x ",
"xxx",
" x ",
" ",
// 44 ","
" ",
" ",
" ",
" x ",
"x ",
// 45 "-"
" ",
" ",
"xxx",
" ",
" ",
// 46 "."
" ",
" ",
" ",
"xx ",
"xx ",
// 47 "/"
" x",
" x",
" x ",
"x ",
"x ",
// 48 "0"
"xxx",
"x x",
"x x",
"x x",
"xxx",
// 49 "1"
" x ",
"xx ",
" x ",
" x ",
"xxx",
// 50 "2"
"xxx",
" x",
"xxx",
"x ",
"xxx",
// 51 "3"
"xxx",
" x",
" xx",
" x",
"xxx",
// 52 "4"
"x x",
"x x",
"xxx",
" x",
" x",
// 53 "5"
"xxx",
"x ",
"xxx",
" x",
"xxx",
// 54 "6"
"xxx",
"x ",
"xxx",
"x x",
"xxx",
// 55 "7"
"xxx",
"x x",
" x",
" x",
" x",
// 56 "8"
"xxx",
"x x",
"xxx",
"x x",
"xxx",
// 57 "9"
"xxx",
"x x",
"xxx",
" x",
"xxx",
// 58 ":"
" ",
" x ",
" ",
" x ",
" ",
// 59 ";"
" ",
" x ",
" ",
" x ",
"x ",
// 60 "<"
" x",
" x ",
"x ",
" x ",
" x",
// 61 "="
" ",
"xxx",
" ",
"xxx",
" ",
// 62 ">"
"x ",
" x ",
" x",
" x ",
"x ",
// 63 "?"
"xxx",
" x",
" xx",
" ",
" x ",
// 64 "@"
"xxx",
"x x",
"x x",
"x ",
" xx",
// 65 "A"
"xxx",
"x x",
"xxx",
"x x",
"x x",
// 66 "B"
"xx ",
"x x",
"xxx",
"x x",
"xxx",
// 67 "C"
"xxx",
"x ",
"x ",
"x ",
"xxx",
// 68 "D"
"xx ",
"x x",
"x x",
"x x",
"xx ",
// 69 "E"
"xxx",
"x ",
"xx ",
"x ",
"xxx",
// 70 "F"
"xxx",
"x ",
"xx ",
"x ",
"x ",
// 71 "G"
"xxx",
"x ",
"x x",
"x x",
"xxx",
// 72 "H"
"x x",
"x x",
"xxx",
"x x",
"x x",
// 73 "I"
"xxx",
" x ",
" x ",
" x ",
"xxx",
// 74 "J"
"xxx",
" x",
" x",
"x x",
"xxx",
// 75 "K"
"x x",
"x x",
"xx ",
"x x",
"x x",
// 76 "L"
"x ",
"x ",
"x ",
"x ",
"xxx",
// 77 "M"
"xxx",
"xxx",
"x x",
"x x",
"x x",
// 78 "N"
"xx ",
"x x",
"x x",
"x x",
"x x",
// 79 "O"
"xxx",
"x x",
"x x",
"x x",
"xxx",
// 80 "P"
"xxx",
"x x",
"xxx",
"x ",
"x ",
// 81 "Q"
"xxx",
"x x",
"x x",
"xxx",
" x",
// 82 "R"
"xxx",
"x x",
"xxx",
"xx ",
"x x",
// 83 "S"
"xxx",
"x ",
"xxx",
" x",
"xxx",
// 84 "T"
"xxx",
" x ",
" x ",
" x ",
" x ",
// 85 "U"
"x x",
"x x",
"x x",
"x x",
"xxx",
// 86 "V"
"x x",
"x x",
"x x",
"x x",
" x ",
// 87 "W"
"x x",
"x x",
"x x",
"xxx",
"xxx",
// 88 "X"
"x x",
"x x",
" x ",
"x x",
"x x",
// 89 "Y"
"x x",
"x x",
"xxx",
" x ",
" x ",
// 90 "Z"
"xxx",
" x",
" x ",
"x ",
"xxx",
// 91 "["
" xx",
" x ",
" x ",
" x ",
" xx",
// 92 "\"
"x ",
"x ",
" x ",
" x",
" x",
// 93 "]"
"xx ",
" x ",
" x ",
" x ",
"xx ",
// 94 "^"
" x ",
"x x",
" ",
" ",
" ",
// 95 "_"
" ",
" ",
" ",
" ",
"xxx",
// 96 "`"
"x ",
" x ",
" ",
" ",
" ",
// 97 "a"
"xx ",
" x",
"xxx",
"x x",
"xxx",
// 98 "b"
"x ",
"x ",
"xxx",
"x x",
"xxx",
// 99 "c"
" ",
" ",
"xxx",
"x ",
"xxx",
// 100 "d"
" x",
" x",
"xxx",
"x x",
"xxx",
// 101 "e"
"xxx",
"x x",
"xxx",
"x ",
" xx",
// 102 "f"
" xx",
" x ",
"xxx",
" x ",
" x ",
// 103 "g"
"xxx",
"x x",
"xxx",
" x",
"xx ",
// 104 "h"
"x ",
"x ",
"xxx",
"x x",
"x x",
// 105 "i"
" x ",
" ",
"xx ",
" x ",
"xxx",
// 106 "j"
" x",
" ",
" x",
"x x",
"xxx",
// 107 "k"
"x ",
"x ",
"x x",
"xx ",
"x x",
// 108 "l"
"xx ",
" x ",
" x ",
" x ",
"xxx",
// 109 "m"
" ",
" ",
"xxx",
"xxx",
"x x",
// 110 "n"
" ",
" ",
"xx ",
"x x",
"x x",
// 111 "o"
" ",
" ",
"xxx",
"x x",
"xxx",
// 112 "p"
" ",
"xxx",
"x x",
"xxx",
"x ",
// 113 "q"
" ",
"xxx",
"x x",
"xxx",
" x",
// 114 "r"
" ",
" ",
"xxx",
"x ",
"x ",
// 115 "s"
" ",
"xxx",
"xx ",
" x",
"xxx",
// 116 "t"
" x ",
"xxx",
" x ",
" x ",
" xx",
// 117 "u"
" ",
"x z",
"x x",
"x x",
"xxx",
// 118 "v"
" ",
"x x",
"x x",
"x x",
" x ",
// 119 "w"
" ",
" ",
"x x",
"xxx",
"xxx",
// 120 "x"
" ",
" ",
"x x",
" x ",
"x x",
// 121 "y"
" ",
"x x",
"xxx",
" x",
"xxx",
// 122 "z"
" ",
"xxx",
" xx",
"x ",
"xxx",
// 123 "{"
" x",
" x ",
"xx ",
" x ",
" x",
// 124 "|"
" x ",
" x ",
" x ",
" x ",
" x ",
// 125 "}"
"x ",
" x ",
" xx",
" x ",
"x ",
// 126 "~"
" ",
" xx",
"x x",
" ",
" ",
// Extras
// Extra 0 "°"
"xxx",
"xxx",
"xxx",
"xxx",
"xxx",
// Extra 1 "°"
"xxx",
"x x",
"xxx",
" ",
" ",
};

@ -0,0 +1,588 @@
const char *symbols[] = {
// 32 " "
" ",
" ",
" ",
" ",
" ",
// 33 "!"
" xx ",
" xx ",
" xx ",
" ",
" xx ",
// 34 """
"x x ",
"x x ",
" ",
" ",
" ",
// 35 "#"
" x x",
"xxxx",
" x x",
"xxxx",
" x x",
// 36 "$"
" xxx",
"x x ",
" xx ",
" x x",
"xxx ",
// 37 "%"
" ",
"x x",
" x ",
" x ",
"x x",
// 38 "&"
"xxx ",
"x x ",
"xxxx",
"x x ",
"xxxx",
// 39 "'"
" x ",
" x ",
" ",
" ",
" ",
// 40 "("
" x ",
" x ",
" x ",
" x ",
" x ",
// 41 ")"
" x ",
" x ",
" x ",
" x ",
" x ",
// 42 "*"
"x x",
" xx ",
"x x",
" ",
" ",
// 43 "+"
" ",
" x ",
"xxx ",
" x ",
" ",
// 44 ","
" ",
" ",
" ",
" x ",
" x ",
// 45 "-"
" ",
" ",
" ###",
" ",
" ",
// 46 "."
" ",
" ",
" ",
" ## ",
" ## ",
// 47 "/"
" ",
" x",
" x ",
" x ",
"x ",
// 48 "0"
" ## ",
"# #",
"# #",
"# #",
" ## ",
// 49 "1"
" # ",
" ## ",
"# # ",
" # ",
" ###",
// 50 "2"
" ## ",
"# #",
" # ",
" # ",
"####",
// 51 "3"
" ## ",
"# #",
" # ",
"# #",
" ## ",
// 52 "4"
"# ",
"# # ",
"####",
" # ",
" # ",
// 53 "5"
"####",
"# ",
"### ",
" #",
"### ",
// 54 "6"
" ###",
"# ",
"### ",
"# #",
" ## ",
// 55 "7"
"####",
" #",
" # ",
" # ",
"# ",
// 56 "8"
" ## ",
"# #",
" ## ",
"# #",
" ## ",
// 57 "9"
" ## ",
"# #",
" ## ",
" #",
"### ",
// 58 ":"
" ",
" x ",
" ",
" x ",
" ",
// 59 ";"
" ",
" x ",
" ",
" x ",
" x ",
// 60 "<"
" x ",
" x ",
"x ",
" x ",
" x ",
// 61 "="
" ",
"xxx ",
" ",
"xxx ",
" ",
// 62 ">"
"x ",
" x ",
" x ",
" x ",
"x ",
// 63 "?"
"xxx ",
" x",
" x ",
" ",
" x ",
// 64 "@"
"xxx ",
"x xx",
"x xx",
"x ",
"xxxx",
// 65 "A"
" xx ",
"x x",
"xxxx",
"x x",
"x x",
// 66 "B"
"xxx ",
"x x",
"xxx ",
"x x",
"xxx ",
// 67 "C"
" ## ",
"# #",
"# ",
"# #",
" ## ",
// 68 "D"
"xxx ",
"x x",
"x x",
"x x",
"xxx ",
// 69 "E"
"xxxx",
"x ",
"xxx ",
"x ",
"xxxx",
// 70 "F"
"xxxx",
"x ",
"xxx ",
"x ",
"x ",
// 71 "G"
" xxx",
"x ",
"x xx",
"x x",
" xx ",
// 72 "H"
"x x",
"x x",
"xxxx",
"x x",
"x x",
// 73 "I"
" xxx",
" x ",
" x ",
" x ",
" xxx",
// 74 "J"
"xxxx",
" x",
" x",
"x x",
" xx ",
// 75 "K"
"x x",
"x x ",
"xx ",
"x x ",
"x x",
// 76 "L"
"x ",
"x ",
"x ",
"x ",
"xxxx",
// 77 "M"
"## #",
"# ##",
"# #",
"# #",
"# #",
// 78 "N"
"x x",
"xx x",
"x xx",
"x x",
"x x",
// 79 "O"
" xx ",
"x x",
"x x",
"x x",
" xx ",
// 80 "P"
"### ",
"# #",
"### ",
"# ",
"# ",
// 81 "Q"
" xx ",
"x x",
"x x",
"x xx",
" xxx",
// 82 "R"
"xxx ",
"x x",
"xxx ",
"X x ",
"X x",
// 83 "S"
" xxx",
"x ",
" xx ",
" x",
"xxx ",
// 84 "T"
"xxx ",
" x ",
" x ",
" x ",
" x ",
// 85 "U"
"x x",
"x x",
"x x",
"x x",
" xx ",
// 86 "V"
"x x",
"x x",
"x x",
" x x",
" xx",
// 87 "W"
"x x",
"x x",
"xxxx",
"xxxx",
"x xx",
// 88 "X"
"x x",
"x x",
" xx ",
"x x ",
"x x",
// 89 "Y"
"x x",
"x x",
" xx ",
" x ",
" x ",
// 90 "Z"
"xxxx",
" x",
" xx ",
"x ",
"xxxx",
// 91 "["
" xx ",
" x ",
" x ",
" x ",
" xx ",
// 92 "\"
" ",
"x ",
" x ",
" x ",
" x",
// 93 "]"
" xx ",
" x ",
" x ",
" x ",
" xx ",
// 94 "^"
" x ",
"x x ",
" ",
" ",
" ",
// 95 "_"
" ",
" ",
" ",
" ",
"xxxx",
// 96 "`"
" x ",
" x ",
" ",
" ",
" ",
// 97 "a"
"xxx ",
" x",
" xxx",
"x x",
"xxxx",
// 98 "b"
"x ",
"x ",
"xxx ",
"x x",
"xxx ",
// 99 "c"
" ",
" xxx",
"x ",
"x ",
" xxx",
// 100 "d"
" x",
" x",
" xxx",
"x x",
" xxx",
// 101 "e"
" xx ",
"x x",
"xxxx",
"x ",
" xxx",
// 102 "f"
" xx",
" x ",
"xxx ",
" x ",
" x ",
// 103 "g"
"xxxx",
"x x",
" xxx",
" x",
"xxx ",
// 104 "h"
"x ",
"x ",
"xxx ",
"x x",
"x x",
// 105 "i"
" x ",
" ",
" xx ",
" x ",
" xxx",
// 106 "j"
" x ",
" ",
" x ",
"x x ",
"xxx ",
// 107 "k"
"x ",
"x x",
"x x ",
"xx ",
"x xx",
// 108 "l"
"xx ",
" x ",
" x ",
" x ",
"xxx ",
// 109 "m"
" ",
"xxxx",
"xxxx",
"x x",
"x x",
// 110 "n"
" ",
"xxx ",
"x x",
"x x",
"x x",
// 111 "o"
" ",
" xx ",
"x x",
"x x",
" xx ",
// 112 "p"
"xxx ",
"x x",
"xxx ",
"x ",
"x ",
// 113 "q"
" xxx",
"x x",
" xxx",
" x",
" x",
// 114 "r"
" ",
"x xx",
"xx x",
"x ",
"x ",
// 115 "s"
" ",
" xxx",
" x ",
" x ",
"xxx ",
// 116 "t"
" x ",
"xxx ",
" x ",
" x ",
" xx",
// 117 "u"
" ",
"x x",
"x x",
"x x",
" xxx",
// 118 "v"
" ",
"x x",
"x x",
" x x",
" x ",
// 119 "w"
" ",
"x x",
"x x",
"xxxx",
"xxxx",
// 120 "x"
" ",
"x x",
" xx ",
" xx ",
"x x",
// 121 "y"
"x x",
"x x",
"xxxx",
" x",
"xxx ",
// 122 "z"
" ",
"xxxx",
" x ",
" x ",
"xxxx",
// 123 "{"
" xx",
" x ",
" xx ",
" x ",
" xx",
// 124 "|"
" x ",
" x ",
" x ",
" x ",
" x ",
// 125 "}"
" xx ",
" x ",
" xx",
" x ",
" xx ",
// 126 "~"
" ",
"x x ",
" x x",
" ",
" ",
// Extras
// Extra 0 - unknown symbol
"####",
"# #",
"# #",
"# #",
"####",
// Extra 1 "°"
"xxx ",
"# # ",
"xxx ",
" ",
" ",
};

@ -0,0 +1,943 @@
const char *symbols[] = {
// 32 " "
" ",
" ",
" ",
" ",
" ",
" ",
" ",
// 33 "!"
" # ",
" # ",
" # ",
" # ",
" # ",
" ",
" # ",
// 34 """
" # # ",
" # # ",
" # # ",
" ",
" ",
" ",
" ",
// 35 "#"
" # # ",
" # # ",
"#####",
" # # ",
"#####",
" # # ",
" # # ",
// 36 "$"
" # ",
" ####",
"# # ",
" ### ",
" # #",
"#### ",
" # ",
// 37 "%"
"## ",
"## #",
" # ",
" # ",
" # ",
"# ##",
" ##",
// 38 "&"
" ## ",
"# # ",
"# # ",
" # ",
"# # #",
"# # ",
" ## #",
// 39 "'"
" ## ",
" # ",
" # ",
" ",
" ",
" ",
" ",
// 40 "("
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 41 ")"
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 42 "*"
" ",
" # ",
"# # #",
" ### ",
"# # #",
" # ",
" ",
// 43 "+"
" ",
" # ",
" # ",
"#####",
" # ",
" # ",
" ",
// 44 ","
" ",
" ",
" ",
" ",
" ## ",
" # ",
" # ",
// 45 "-"
" ",
" ",
" ",
"#####",
" ",
" ",
" ",
// 46 "."
" ",
" ",
" ",
" ",
" ",
" ## ",
" ## ",
// 47 "/"
" ",
" #",
" # ",
" # ",
" # ",
"# ",
" ",
// 48 "0"
" ### ",
"# #",
"# ##",
"# # #",
"## #",
"# #",
" ### ",
// 49 "1"
" # ",
" ## ",
" # ",
" # ",
" # ",
" # ",
" ### ",
// 50 "2"
" ### ",
"# #",
" #",
" # ",
" # ",
" # ",
"#####",
// 51 "3"
"#####",
" # ",
" # ",
" # ",
" #",
"# #",
" ### ",
// 52 "4"
" # ",
" ## ",
" # # ",
"# # ",
"#####",
" # ",
" # ",
// 53 "5"
"#####",
"# ",
"#### ",
" #",
" #",
"# #",
" ### ",
// 54 "6"
" ## ",
" # ",
"# ",
"#### ",
"# #",
"# #",
" ### ",
// 55 "7"
"#####",
" #",
" # ",
" # ",
" # ",
" # ",
" # ",
// 56 "8"
" ### ",
"# #",
"# #",
" ### ",
"# #",
"# #",
" ### ",
// 57 "9"
" ### ",
"# #",
"# #",
" ####",
" #",
" # ",
" ## ",
// 58 ":"
" ",
" ## ",
" ## ",
" ",
" ## ",
" ## ",
" ",
// 59 ";"
" ",
" ## ",
" ## ",
" ",
" ## ",
" # ",
" # ",
// 60 "<"
" # ",
" # ",
" # ",
"# ",
" # ",
" # ",
" # ",
// 61 "="
" ",
" ",
"#####",
" ",
"#####",
" ",
" ",
// 62 ">"
" # ",
" # ",
" # ",
" #",
" # ",
" # ",
" # ",
// 63 "?"
" ### ",
"# #",
" #",
" # ",
" # ",
" ",
" # ",
// 64 "@"
" ### ",
"# #",
" #",
" ## #",
"# # #",
"# # #",
" ### ",
// 65 "A"
" ### ",
"# #",
"# #",
"# #",
"#####",
"# #",
"# #",
// 66 "B"
"#### ",
"# #",
"# #",
"#### ",
"# #",
"# #",
"#### ",
// 67 "C"
" ### ",
"# #",
"# ",
"# ",
"# ",
"# #",
" ### ",
// 68 "D"
"### ",
"# # ",
"# #",
"# #",
"# #",
"# # ",
"### ",
// 69 "E"
"#####",
"# ",
"# ",
"#### ",
"# ",
"# ",
"#####",
// 70 "F"
"#####",
"# ",
"# ",
"#### ",
"# ",
"# ",
"# ",
// 71 "G"
" ### ",
"# #",
"# ",
"# ###",
"# #",
"# #",
" ####",
// 72 "H"
"# #",
"# #",
"# #",
"#####",
"# #",
"# #",
"# #",
// 73 "I"
" ### ",
" # ",
" # ",
" # ",
" # ",
" # ",
" ### ",
// 74 "J"
" ###",
" # ",
" # ",
" # ",
" # ",
"# # ",
" ## ",
// 75 "K"
"# #",
"# # ",
"# # ",
"## ",
"# # ",
"# # ",
"# #",
// 76 "L"
"# ",
"# ",
"# ",
"# ",
"# ",
"# ",
"#####",
// 77 "M"
"# #",
"## ##",
"# # #",
"# # #",
"# #",
"# #",
"# #",
// 78 "N"
"# #",
"# #",
"## #",
"# # #",
"# ##",
"# #",
"# #",
// 79 "O"
" ### ",
"# #",
"# #",
"# #",
"# #",
"# #",
" ### ",
// 80 "P"
"#### ",
"# #",
"# #",
"#### ",
"# ",
"# ",
"# ",
// 81 "Q"
" ### ",
"# #",
"# #",
"# #",
"# # #",
"# # ",
" ## #",
// 82 "R"
"#### ",
"# #",
"# #",
"#### ",
"# # ",
"# # ",
"# #",
// 83 "S"
" ####",
"# ",
"# ",
" ### ",
" #",
" #",
"#### ",
// 84 "T"
"#####",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 85 "U"
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
" ### ",
// 86 "V"
"# #",
"# #",
"# #",
"# #",
"# #",
" # # ",
" # ",
// 87 "W"
"# #",
"# #",
"# #",
"# # #",
"# # #",
"# # #",
" # # ",
// 88 "X"
"# #",
"# #",
" # # ",
" # ",
" # # ",
"# #",
"# #",
// 89 "Y"
"# #",
"# #",
"# #",
" # # ",
" # ",
" # ",
" # ",
// 90 "Z"
"#####",
" #",
" # ",
" # ",
" # ",
"# ",
"#####",
// 91 "["
" ### ",
" # ",
" # ",
" # ",
" # ",
" # ",
" ### ",
// 92 "\"
" ",
"# ",
" # ",
" # ",
" # ",
" #",
" ",
// 93 "]"
" ### ",
" # ",
" # ",
" # ",
" # ",
" # ",
" ### ",
// 94 "^"
" # ",
" # # ",
"# #",
" ",
" ",
" ",
" ",
// 95 "_"
" ",
" ",
" ",
" ",
" ",
" ",
"#####",
// 96 "`"
" # ",
" # ",
" # ",
" ",
" ",
" ",
" ",
// 97 "a"
" ",
" ",
" ### ",
" #",
" ####",
"# #",
" ####",
// 98 "b"
"# ",
"# ",
"# ## ",
"## #",
"# #",
"# #",
"#### ",
// 99 "c"
" ",
" ",
" ### ",
"# ",
"# ",
"# #",
" ### ",
// 100 "d"
" #",
" #",
" ## #",
"# ##",
"# #",
"# #",
" ####",
// 101 "e"
" ",
" ",
" ### ",
"# #",
"#####",
"# ",
" ### ",
// 102 "f"
" ## ",
" # #",
" # ",
"### ",
" # ",
" # ",
" # ",
// 103 "g"
" ",
" ####",
"# #",
"# #",
" ####",
" #",
" ### ",
// 104 "h"
"# ",
"# ",
"# ## ",
"## #",
"# #",
"# #",
"# #",
// 105 "i"
" # ",
" ",
" ## ",
" # ",
" # ",
" # ",
" ### ",
// 106 "j"
" # ",
" ",
" ## ",
" # ",
" # ",
"# # ",
" ## ",
// 107 "k"
"# ",
"# ",
"# # ",
"# # ",
"## ",
"# # ",
"# # ",
// 108 "l"
" ## ",
" # ",
" # ",
" # ",
" # ",
" # ",
" ### ",
// 109 "m"
" ",
" ",
"## # ",
"# # #",
"# # #",
"# #",
"# #",
// 110 "n"
" ",
" ",
"# ## ",
"## #",
"# #",
"# #",
"# #",
// 111 "o"
" ",
" ",
" ### ",
"# #",
"# #",
"# #",
" ### ",
// 112 "p"
" ",
" ",
"#### ",
"# #",
"#### ",
"# ",
"# ",
// 113 "q"
" ",
" ",
" ## #",
"# ##",
" ####",
" #",
" #",
// 114 "r"
" ",
" ",
"# ## ",
"## #",
"# ",
"# ",
"# ",
// 115 "s"
" ",
" ",
" ### ",
"# ",
" ### ",
" #",
"#### ",
// 116 "t"
" # ",
" # ",
"### ",
" # ",
" # ",
" # #",
" ## ",
// 117 "u"
" ",
" ",
"# #",
"# #",
"# #",
"# ##",
" ## #",
// 118 "v"
" ",
" ",
"# #",
"# #",
"# #",
" # # ",
" # ",
// 119 "w"
" ",
" ",
"# #",
"# #",
"# # #",
"# # #",
" # # ",
// 120 "x"
" ",
" ",
"# #",
" # # ",
" # ",
" # # ",
"# #",
// 121 "y"
" ",
" ",
"# #",
"# #",
" ####",
" #",
" ### ",
// 122 "z"
" ",
" ",
"#####",
" # ",
" # ",
" # ",
"#####",
// 123 "{"
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 124 "|"
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 125 "}"
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
" # ",
// 126 "~"
" ",
" ",
" ",
" ## #",
"# # ",
" ",
" ",
// Extras
// Extra 0
"#####",
"# #",
"# #",
"# #",
"# #",
"# #",
"#####",
// Extra 1
" ",
"# #",
" # # ",
" # ",
" # # ",
"# #",
" ",
// Extra 2
" ",
" # ",
" ### ",
"# # #",
" # ",
" # ",
" ",
// Extra 3
" ",
" # ",
" # ",
"# # #",
" ### ",
" # ",
" ",
// Extra 4
" ",
" # ",
" # ",
"#####",
" # ",
" # ",
" ",
// Extra 5
" ",
" # ",
" # ",
"#####",
" # ",
" # ",
" ",
// Extra 6
" ",
" ### ",
"# # #",
"# ###",
"# #",
" ### ",
" ",
// Extra 7
"#####",
"# #",
" ### ",
" # ",
" # # ",
"# #",
"#####",
// Extra 8
" ",
" ### ",
"# #",
"# # #",
"# #",
" ### ",
" ",
// Extra 9
" ",
" #",
" # #",
" # #",
"#####",
" # ",
" # ",
// Extra 10
" # ",
" # ##",
" # # ",
" ####",
" ### ",
"#####",
" ### ",
// Extra 11
" ### ",
" # # ",
" ### ",
" ",
" ",
" ",
" ",
// Extra 12
" ",
" ",
"# #",
"# #",
"# ##",
"### #",
"# ",
// Extra 13
" # ",
" # ",
"#### ",
" # #",
" # #",
" #",
" ### ",
// Extra 14
"# ",
"## ",
"### ",
"#### ",
"### ",
"## ",
"# ",
// Extra 15
" #",
" ##",
" ###",
" ####",
" ###",
" ##",
" #",
};
const char* extra_utf[] = {
"<EFBFBD>",
"×",
"",
"",
"",
"",
"",
"",
"",
"",
"🌡",
"°",
"μ",
"🔙",
"",
"",
};
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
void main() {
printf("static const font5x_bitmap_t PROGMEM font57[] = {\n");
const int fw = 5;
const int fh = 7;
for (int i = 32; i < 127; i++) {
uint8_t line[8] = {};
for(int j = 0; j < fh; j++) {
const char *row = symbols[(i - 32)*fh + j];
for(int k = 0; k < fw; k++) {
line[k] |= (row[k] != 32) << j;
}
}
printf(" {{");
for(int k = 0; k < fw; k++) {
if (k > 0) printf(", ");
printf("0x%02x", line[k]);
}
printf("}},\n");
}
printf("};\n");
// TODO specials
}

@ -0,0 +1,40 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
struct X {
uint8_t data[4];
};
const struct X font[] = {
{{0x0e, 0x11, 0x11, 0x0e}}, // 0
{{0x04, 0x12, 0x1f, 0x10}}, // 1
{{0x12, 0x19, 0x15, 0x12}}, // 2
{{0x0a, 0x11, 0x15, 0x0a}}, // 3
{{0x07, 0x04, 0x1e, 0x04}}, // 4
{{0x17, 0x15, 0x15, 0x09}}, // 5
{{0x0e, 0x15, 0x15, 0x09}}, // 6
{{0x11, 0x09, 0x05, 0x03}}, // 7
{{0x0a, 0x15, 0x15, 0x0a}}, // 8
{{0x12, 0x15, 0x15, 0x0a}}, // 9
{{0x00, 0x00, 0x00, 0x00}}, // ' '
};
void main() {
printf("const char* symbols[] = {\n");
for(int c = 0; c < 11; c++) {
printf(" // %d \"%c\"\n", c+'0', c+'0');
for(int j=0;j<5;j++){
printf(" \"");
for(int k=0;k<4;k++){
if (font[c].data[k]& (1<<j)) {
printf("#");
} else {
printf(" ");
}
}
printf("\",\n");
}
}
printf("};\n");
}

@ -0,0 +1,36 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
struct X {
uint8_t data[4];
};
const struct X font[] = {
{{0x1f, 0x11, 0x11, 0x1f}},
{{0x02, 0x05, 0x02, 0x00}},
{{0x00, 0x04, 0x04, 0x04}},
{{0x0e, 0x11, 0x11, 0x0a}},
{{0x1f, 0x05, 0x05, 0x02}},
{{0x1f, 0x01, 0x02, 0x1f}},
{{0x00, 0x18, 0x18, 0x00}},
};
void main() {
printf("const char* symbols[] = {\n");
for(int c = 0; c < 7; c++) {
printf(" // %d \"%c\"\n", c+'0', c+'0');
for(int j=0;j<5;j++){
printf(" \"");
for(int k=0;k<4;k++){
if (font[c].data[k]& (1<<j)) {
printf("#");
} else {
printf(" ");
}
}
printf("\",\n");
}
}
printf("};\n");
}

@ -0,0 +1,124 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
struct X {
uint8_t data[5];
};
const struct X font[] = {
{{0x00, 0x00, 0x00, 0x00, 0x00}}, // 0x20
{{0x00, 0x00, 0x5f, 0x00, 0x00}}, // ! 0x21
{{0x00, 0x07, 0x00, 0x07, 0x00}}, // \" 0x22
{{0x14, 0x7f, 0x14, 0x7f, 0x14}}, // # 0x23
{{0x24, 0x2a, 0x7f, 0x2a, 0x12}}, // $ 0x24
{{0x23, 0x13, 0x08, 0x64, 0x62}}, // % 0x25
{{0x36, 0x49, 0x55, 0x22, 0x50}}, // & 0x26
{{0x00, 0x05, 0x03, 0x00, 0x00}}, // ' 0x27
{{0x00, 0x1c, 0x22, 0x41, 0x00}}, // ( 0x28
{{0x00, 0x41, 0x22, 0x1c, 0x00}}, // ) 0x29
{{0x14, 0x08, 0x3e, 0x08, 0x14}}, // * 0x2a
{{0x08, 0x08, 0x3e, 0x08, 0x08}}, // + 0x2b
{{0x00, 0x50, 0x30, 0x00, 0x00}}, // , 0x2c
{{0x08, 0x08, 0x08, 0x08, 0x08}}, // - 0x2d
{{0x00, 0x60, 0x60, 0x00, 0x00}}, // . 0x2e
{{0x20, 0x10, 0x08, 0x04, 0x02}}, // / 0x2f
{{0x3e, 0x51, 0x49, 0x45, 0x3e}}, // 0 0x30
{{0x00, 0x42, 0x7f, 0x40, 0x00}}, // 1 0x31
{{0x42, 0x61, 0x51, 0x49, 0x46}}, // 2 0x32
{{0x21, 0x41, 0x45, 0x4b, 0x31}}, // 3 0x33
{{0x18, 0x14, 0x12, 0x7f, 0x10}}, // 4 0x34
{{0x27, 0x45, 0x45, 0x45, 0x39}}, // 5 0x35
{{0x3c, 0x4a, 0x49, 0x49, 0x30}}, // 6 0x36
{{0x01, 0x71, 0x09, 0x05, 0x03}}, // 7 0x37
{{0x36, 0x49, 0x49, 0x49, 0x36}}, // 8 0x38
{{0x06, 0x49, 0x49, 0x29, 0x1e}}, // 9 0x39
{{0x00, 0x36, 0x36, 0x00, 0x00}}, // : 0x3a
{{0x00, 0x56, 0x36, 0x00, 0x00}}, // ; 0x3b
{{0x08, 0x14, 0x22, 0x41, 0x00}}, // < 0x3c
{{0x14, 0x14, 0x14, 0x14, 0x14}}, // = 0x3d
{{0x00, 0x41, 0x22, 0x14, 0x08}}, // > 0x3e
{{0x02, 0x01, 0x51, 0x09, 0x06}}, // ? 0x3f
{{0x32, 0x49, 0x79, 0x41, 0x3e}}, // @ 0x40
{{0x7e, 0x11, 0x11, 0x11, 0x7e}}, // A 0x41
{{0x7f, 0x49, 0x49, 0x49, 0x36}}, // B 0x42
{{0x3e, 0x41, 0x41, 0x41, 0x22}}, // C 0x43
{{0x7f, 0x41, 0x41, 0x22, 0x1c}}, // D 0x44
{{0x7f, 0x49, 0x49, 0x49, 0x41}}, // E 0x45
{{0x7f, 0x09, 0x09, 0x09, 0x01}}, // F 0x46
{{0x3e, 0x41, 0x49, 0x49, 0x7a}}, // G 0x47
{{0x7f, 0x08, 0x08, 0x08, 0x7f}}, // H 0x48
{{0x00, 0x41, 0x7f, 0x41, 0x00}}, // I 0x49
{{0x20, 0x40, 0x41, 0x3f, 0x01}}, // J 0x4a
{{0x7f, 0x08, 0x14, 0x22, 0x41}}, // K 0x4b
{{0x7f, 0x40, 0x40, 0x40, 0x40}}, // L 0x4c
{{0x7f, 0x02, 0x0c, 0x02, 0x7f}}, // M 0x4d
{{0x7f, 0x04, 0x08, 0x10, 0x7f}}, // N 0x4e
{{0x3e, 0x41, 0x41, 0x41, 0x3e}}, // O 0x4f
{{0x7f, 0x09, 0x09, 0x09, 0x06}}, // P 0x50
{{0x3e, 0x41, 0x51, 0x21, 0x5e}}, // Q 0x51
{{0x7f, 0x09, 0x19, 0x29, 0x46}}, // R 0x52
{{0x46, 0x49, 0x49, 0x49, 0x31}}, // S 0x53
{{0x01, 0x01, 0x7f, 0x01, 0x01}}, // T 0x54
{{0x3f, 0x40, 0x40, 0x40, 0x3f}}, // U 0x55
{{0x1f, 0x20, 0x40, 0x20, 0x1f}}, // V 0x56
{{0x3f, 0x40, 0x38, 0x40, 0x3f}}, // W 0x57
{{0x63, 0x14, 0x08, 0x14, 0x63}}, // X 0x58
{{0x07, 0x08, 0x70, 0x08, 0x07}}, // Y 0x59
{{0x61, 0x51, 0x49, 0x45, 0x43}}, // Z 0x5a
{{0x00, 0x7f, 0x41, 0x41, 0x00}}, // [ 0x5b
{{0x02, 0x04, 0x08, 0x10, 0x20}}, // \\ 0x5c
{{0x00, 0x41, 0x41, 0x7f, 0x00}}, // ] 0x5d
{{0x04, 0x02, 0x01, 0x02, 0x04}}, // ^ 0x5e
{{0x40, 0x40, 0x40, 0x40, 0x40}}, // _ 0x5f
{{0x00, 0x01, 0x02, 0x04, 0x00}}, // ` 0x60
{{0x20, 0x54, 0x54, 0x54, 0x78}}, // a 0x61
{{0x7f, 0x48, 0x44, 0x44, 0x38}}, // b 0x62
{{0x38, 0x44, 0x44, 0x44, 0x20}}, // c 0x63
{{0x38, 0x44, 0x44, 0x48, 0x7f}}, // d 0x64
{{0x38, 0x54, 0x54, 0x54, 0x18}}, // e 0x65
{{0x08, 0x7e, 0x09, 0x01, 0x02}}, // f 0x66
{{0x0c, 0x52, 0x52, 0x52, 0x3e}}, // g 0x67
{{0x7f, 0x08, 0x04, 0x04, 0x78}}, // h 0x68
{{0x00, 0x44, 0x7d, 0x40, 0x00}}, // i 0x69
{{0x20, 0x40, 0x44, 0x3d, 0x00}}, // j 0x6a
{{0x7f, 0x10, 0x28, 0x44, 0x00}}, // k 0x6b
{{0x00, 0x41, 0x7f, 0x40, 0x00}}, // l 0x6c
{{0x7c, 0x04, 0x18, 0x04, 0x78}}, // m 0x6d
{{0x7c, 0x08, 0x04, 0x04, 0x78}}, // n 0x6e
{{0x38, 0x44, 0x44, 0x44, 0x38}}, // o 0x6f
{{0x7c, 0x14, 0x14, 0x14, 0x08}}, // p 0x70
{{0x08, 0x14, 0x14, 0x18, 0x7c}}, // q 0x71
{{0x7c, 0x08, 0x04, 0x04, 0x08}}, // r 0x72
{{0x48, 0x54, 0x54, 0x54, 0x20}}, // s 0x73
{{0x04, 0x3f, 0x44, 0x40, 0x20}}, // t 0x74
{{0x3c, 0x40, 0x40, 0x20, 0x7c}}, // u 0x75
{{0x1c, 0x20, 0x40, 0x20, 0x1c}}, // v 0x76
{{0x3c, 0x40, 0x30, 0x40, 0x3c}}, // w 0x77
{{0x44, 0x28, 0x10, 0x28, 0x44}}, // x 0x78
{{0x0c, 0x50, 0x50, 0x50, 0x3c}}, // y 0x79
{{0x44, 0x64, 0x54, 0x4c, 0x44}}, // z 0x7a
{{0x00, 0x08, 0x36, 0x41, 0x00}}, // { 0x7b
{{0x00, 0x00, 0x7f, 0x00, 0x00}}, // | 0x7c
{{0x00, 0x41, 0x36, 0x08, 0x00}}, // } 0x7d
{{0x10, 0x08, 0x08, 0x10, 0x08}}, // ~ 0x7e
};
void main() {
printf("const char* symbols[] = {\n");
for(int c = 32; c < 127; c++) {
printf(" // %d \"%c\"\n", c, c);
for(int j=0;j<7;j++){
printf(" \"");
for(int k=0;k<5;k++){
if (font[c - ' '].data[k]& (1<<j)) {
printf("#");
} else {
printf(" ");
}
}
printf("\",\n");
}
}
printf("};\n");
}

@ -0,0 +1,45 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
struct X {
uint8_t data[5];
};
const struct X font[] = {
{{0xFE, 0x82, 0x82, 0x82, 0xFE}},
{{0x22, 0x14, 0x08, 0x14, 0x22}},
{{0x08, 0x04, 0x3e, 0x04, 0x08}},
{{0x08, 0x10, 0x3e, 0x10, 0x08}},
{{0x08, 0x1c, 0x2a, 0x08, 0x08}},
{{0x08, 0x08, 0x2a, 0x1c, 0x08}},
{{0x1c, 0x22, 0x2e, 0x2a, 0x1c}},
{{0x63, 0x55, 0x4d, 0x55, 0x63}},
{{0x1c, 0x22, 0x2a, 0x22, 0x1c}},
{{0x10, 0x38, 0x54, 0x10, 0x1e}},
{{0x60, 0x9e, 0x81, 0x9e, 0x6a}},
{{0x00, 0x07, 0x05, 0x07, 0x00}},
{{0x7C, 0x20, 0x20, 0x10, 0x3C}},
{{0x04, 0x4e, 0x55, 0x44, 0x38}},
{{0x7f, 0x3e, 0x1c, 0x08, 0x00}},
{{0x00, 0x08, 0x1c, 0x3e, 0x7f}},
};
void main() {
printf("const char* symbols[] = {\n");
for(int c = 0; c < sizeof(font)/sizeof(font[0]); c++) {
printf(" // Extra %d\n", c, c);
for(int j=0;j<7;j++){
printf(" \"");
for(int k=0;k<5;k++){
if (font[c].data[k]& (1<<j)) {
printf("#");
} else {
printf(" ");
}
}
printf("\",\n");
}
}
printf("};\n");
}

@ -77,15 +77,15 @@ void main() {
fb_frame(0, 0, 140, 40, 2, 1);
uint8_t x = 3;
uint8_t w = 7;
uint8_t h = 10;
uint8_t th = 1;
uint8_t sp = 3;
x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 7, /*color*/ 1) + sp;
x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 9, /*color*/ 1) + sp;
x += fb_7seg_period(x, 3, w, h, th, /*color*/ 1) + sp;
x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 5, /*color*/ 1) + sp;
// uint8_t x = 3;
// uint8_t w = 7;
// uint8_t h = 10;
// uint8_t th = 1;
// uint8_t sp = 3;
// x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 7, /*color*/ 1) + sp;
// x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 9, /*color*/ 1) + sp;
// x += fb_7seg_period(x, 3, w, h, th, /*color*/ 1) + sp;
// x += fb_7seg_dig(x, 3, w, h, th, /*val*/ 5, /*color*/ 1) + sp;
//fb_circle(60, 15, 10, 1, 1);
// fb_circle(60, 15, 5, 1, 1);
@ -94,10 +94,14 @@ void main() {
//fb_invert();
fb_text(40, 12, "▶Ahoj→!", FONT_BOLD, 1);
// fb_text(40, 12, "▶Ahoj→!", FONT_BOLD, 1);
fb_text(3, 20, "43.15 μSv/h", FONT_DOUBLE, 1);
fb_text(36, 5, "-123456789.0 CPM°", FONT_TINY, 1);
fb_text(15, 15, "MEOW", FONT_DOUBLEH, 1);
fb_text(40, 15, "MEOW", FONT_DOUBLEW, 1);
fb_text(40, 23, "MEOW", FONT_BOLD, 1);
fb_frame(12,12,80,20,1,1);
// fb_text(36, 5, "-123456789.0 CPM°", FONT_TINY, 1);
// struct Utf8Iterator iter;
//// Utf8Iterator_Init_P(&iter, str);

Loading…
Cancel
Save