diff --git a/RX_FSK/data/index.html b/RX_FSK/data/index.html
index dba123c..d3e1cb4 100644
--- a/RX_FSK/data/index.html
+++ b/RX_FSK/data/index.html
@@ -46,7 +46,9 @@
%VERSION_NAME%
Copyright © 2019-2021 by Hansi Reiser, DL9RDZ
(version %VERSION_ID%)
- with contributions by Vigor and Xavier (M20 support), Meinhard Guenther, DL2MF,
+ with contributions by Vigor and Xavier (M20 support),
+ Luke Prior and OH3BSG (SondeHub support),
+ Meinhard Guenther, DL2MF,
Johannes, Robert Stefanowicz,
Josema, and probably some more people I forgot to mention here.
diff --git a/RX_FSK/version.h b/RX_FSK/version.h
index 43b70b7..f7d101c 100644
--- a/RX_FSK/version.h
+++ b/RX_FSK/version.h
@@ -1,4 +1,4 @@
const char *version_name = "rdzTTGOsonde";
-const char *version_id = "sondehub-test";
+const char *version_id = "devel20210524";
const int SPIFFS_MAJOR=2;
const int SPIFFS_MINOR=11;
diff --git a/fontconverter b/fontconverter
new file mode 100755
index 0000000..c836474
--- /dev/null
+++ b/fontconverter
@@ -0,0 +1,110 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Data::Dumper;
+
+my $fontname = "Terminal11x16";
+
+my @data;
+# read font bitmap
+while(<>) {
+ my @dt = map { $_=~/(0x..)/ ? (hex($1)) : () } split(/,/,$_);
+ push @data, @dt;
+}
+
+my $width = shift @data;
+my $height = shift @data;
+my $first = shift @data;
+my $count = shift @data;
+my $nbrows = int(($height+7)/8);
+my $charofs = $width * $nbrows + 1;
+
+## process all glyphs
+my @bitmap;
+my @glyph;
+my $bitofs = 0;
+
+#$count=2;
+
+sub optimize_glyph {
+ my $w = shift;
+ my $h = shift;
+ my $pix = shift;
+ my $xofs = 0;
+ my $yofs = 0;
+
+ # shrink 2D pixel array if possible
+ while(@$pix) {
+ if ( @{$pix->[0]} == grep { $_ == 0 } @{$pix->[0]} ) { shift(@$pix); $yofs++; $h--; }
+ else { last; }
+ }
+ while(@$pix) {
+ if ( @{$pix->[-1]} == grep { $_ == 0 } @{$pix->[-1]} ) { pop(@$pix); $h--; }
+ else { last; }
+ }
+
+ # transform 2D pixel array into compact byte sequence
+ my @all;
+ for(@$pix) { push @all, @$_; }
+ #print("pix size: ".(@all)."\n");
+ my @res;
+ while(@all) {
+ my @b = splice(@all,0,8);
+ while(@b<8) { push @b,0; }
+ my $res = 0;
+ while(@b) { $res = ($res*2) + (shift(@b)?1:0); }
+ push @res,$res;
+ }
+ return ($w, $h, \@res, $xofs, $yofs);
+}
+
+for my $c ($first .. $first+$count-1) {
+ # Convert char $c
+ my @gly = splice(@data,0,$charofs);
+ my $glywidth = shift @gly;
+ my @pixmap;
+ # print("Converting $c ($width x $height => nbrows=$nbrows)");
+ for my $x (0..$glywidth-1) {
+ for my $y (0..$height-1) {
+ my $g = $gly[$x * $nbrows + int($y/8)];
+ $pixmap[$y]->[$x] = (($g >> ($y%8))&1) ? 1 : 0;
+ #print("$x, $y : $pixmap[$y]->[$x]\n");
+ }
+ }
+ # pixmap is now my glyph
+ my ($w, $h, $d, $xofs, $yofs) = optimize_glyph($glywidth, $height, \@pixmap);
+
+ my $glyph = {
+ "offset" => $bitofs,
+ "width" => $w,
+ "height" => $h,
+ "xadv" => $w+1,
+ "xofs" => $xofs,
+ "yofs" => -$height + $yofs,
+ "c" => $c,
+ };
+ push @bitmap, @$d;
+ $bitofs += @$d;
+ push @glyph, $glyph;
+
+ #print(Dumper($glyph,$d));
+}
+
+#print(Dumper(\@glyph));
+
+printf("const uint8_t %sBitmap[] = {\n", $fontname);
+while(my @bm = splice(@bitmap,0,12)) { print( " ".join(", ", map { sprintf("0x%02X",$_) } @bm ).",\n" ); }
+print("};\n\n");
+
+printf("const GFXglyph %sGlyphs[] = {\n", $fontname);
+for my $gl (@glyph) {
+ printf(" { %5d, %3d, %3d, %3d, %4d, %4d }, // 0x%02x '%c'\n ", $gl->{"offset"}, $gl->{"width"}, $gl->{"height"},
+ $gl->{"xadv"}, $gl->{"xofs"}, $gl->{"yofs"}, $gl->{"c"}, $gl->{"c"});
+}
+print("};\n");
+
+printf("const GFXfont %sFont = {\n", $fontname);
+printf(" (uint8_t *)%sBitmap,\n", $fontname);
+printf(" (GFXglyph *)%sGlyphs,\n", $fontname);
+printf(" 0x%02X, 0x%02X, %d };\n", $first, $first+$count-1, $height+2+8); # warum auch immer +8
diff --git a/libraries/SondeLib/Display.cpp b/libraries/SondeLib/Display.cpp
index 76c3428..efe5b7a 100644
--- a/libraries/SondeLib/Display.cpp
+++ b/libraries/SondeLib/Display.cpp
@@ -16,6 +16,7 @@ extern const char *version_id;
#include
#include
#include
+#include
extern Sonde sonde;
@@ -311,8 +312,14 @@ void U8x8Display::drawQS(uint8_t x, uint8_t y, uint8_t len, uint8_t /*size*/, ui
const GFXfont *gfl[] = {
+#ifdef ALT9225
+ &Terminal11x16Font, // 3 (replacement for 1 or 2 with old library)
+ &Terminal11x16Font, // 4 (replacement for 1 or 2 with old library)
+#else
+ // nobody was using them, so removed with new library
&FreeMono9pt7b, // 3
&FreeMono12pt7b, // 4
+#endif
&FreeSans9pt7b, // 5
&FreeSans12pt7b, // 6
&Picopixel, // 7
@@ -324,8 +331,13 @@ struct gfxoffset_t {
// first value: offset: max offset from font glyphs (last column * (-1)) (check /, \, `, $)`
// yclear:max height: max of (height in 3rd column) + (yofs + 6th column) (check j)
const struct gfxoffset_t gfxoffsets[]={
+#ifdef ALT9225
+ { 16, 18},
+ { 16, 18},
+#else
{ 11, 15 }, // 13+11-9 "j"
{ 15, 20 }, // 19+15-14
+#endif
{ 13, 18 }, // 17+13-12 "j"
{ 17, 23 }, // 23+17-17
{ 4, 6}, // 6+4-4
@@ -368,6 +380,9 @@ void ILI9225Display::clear() {
// for now, 0=small=FreeSans9pt7b, 1=large=FreeSans18pt7b
void ILI9225Display::setFont(uint8_t fontindex) {
+#ifdef ALT9225
+ if(fontindex==1 || fontindex==2) { fontindex=3; }
+#endif
findex = fontindex;
switch(fontindex) {
#ifdef ALT9225
diff --git a/libraries/SondeLib/Display.h b/libraries/SondeLib/Display.h
index ccae094..e35815f 100644
--- a/libraries/SondeLib/Display.h
+++ b/libraries/SondeLib/Display.h
@@ -1,4 +1,4 @@
-//#define ALT9225
+#define ALT9225
#ifndef Display_h
#define Display_h
@@ -9,7 +9,6 @@
#include
#ifdef ALT9225
#include
-//#include
#else
#include
#endif
diff --git a/libraries/SondeLib/fonts/Terminal11x16.h b/libraries/SondeLib/fonts/Terminal11x16.h
new file mode 100644
index 0000000..7cdf6e4
--- /dev/null
+++ b/libraries/SondeLib/fonts/Terminal11x16.h
@@ -0,0 +1,221 @@
+const uint8_t Terminal11x16Bitmap[] = {
+ 0x0C, 0x18, 0x78, 0xF1, 0xE3, 0xC7, 0x86, 0x0C, 0x18, 0x00, 0x00, 0xC1,
+ 0x80, 0x33, 0x33, 0x33, 0x33, 0x0C, 0xC1, 0x98, 0x33, 0x3F, 0xF1, 0x98,
+ 0x33, 0x0C, 0xC1, 0x98, 0xFF, 0x8C, 0xC1, 0x98, 0x33, 0x00, 0x0C, 0x06,
+ 0x0F, 0xCF, 0xF6, 0xC3, 0x61, 0xFC, 0x7F, 0x0D, 0x86, 0xDF, 0xE7, 0xE0,
+ 0xC0, 0x60, 0x00, 0x2E, 0x0D, 0xC3, 0xB8, 0xE0, 0x38, 0x0E, 0x03, 0x80,
+ 0xE0, 0x38, 0x0E, 0x3B, 0x87, 0x60, 0xE0, 0x0E, 0x06, 0xC3, 0x30, 0xCC,
+ 0x36, 0x07, 0x03, 0xC1, 0xF0, 0x66, 0xD9, 0xE6, 0x31, 0xDE, 0x3C, 0xC0,
+ 0x1C, 0x71, 0xC3, 0x0C, 0x60, 0x07, 0x0C, 0x1C, 0x18, 0x38, 0x38, 0x38,
+ 0x38, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x07, 0x38, 0x0C, 0x0E, 0x06, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x38, 0x6D, 0xB6, 0xCF,
+ 0xC3, 0xC7, 0xF8, 0xF0, 0xFC, 0xDB, 0x6D, 0x80, 0x0C, 0x06, 0x03, 0x0F,
+ 0xF7, 0xF8, 0x60, 0x30, 0x18, 0x1C, 0x71, 0xC3, 0x18, 0x7F, 0xBF, 0xC0,
+ 0x1C, 0x71, 0xC0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03,
+ 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x1F, 0x0F, 0xF9, 0x83,
+ 0x60, 0x7C, 0x1F, 0x86, 0xF1, 0x9E, 0x63, 0xD8, 0x7E, 0x0F, 0x81, 0xB0,
+ 0x67, 0xFC, 0x3E, 0x00, 0x06, 0x03, 0x83, 0xE0, 0xF8, 0x06, 0x01, 0x80,
+ 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x3F, 0xCF, 0xF0, 0x3F, 0x8F,
+ 0xFB, 0x83, 0xE0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80,
+ 0xE0, 0x38, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0x8F, 0xFB, 0x83, 0xE0, 0x30,
+ 0x06, 0x01, 0xC7, 0xF0, 0xFC, 0x00, 0xC0, 0x0F, 0x01, 0xF0, 0x77, 0xFC,
+ 0x7F, 0x00, 0x03, 0x80, 0xF0, 0x3E, 0x0E, 0xC3, 0x98, 0xE3, 0x38, 0x66,
+ 0x0C, 0xFF, 0xFF, 0xFC, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x60, 0x0C, 0x01, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x60, 0x0F,
+ 0x01, 0xF0, 0x77, 0xFC, 0x7F, 0x00, 0x07, 0x81, 0xF0, 0x70, 0x1C, 0x07,
+ 0x00, 0xC0, 0x3F, 0xE7, 0xFE, 0xE0, 0xF8, 0x0F, 0x01, 0xF0, 0x77, 0xFC,
+ 0x7F, 0x00, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0x60, 0x18, 0x03, 0x00, 0xC0,
+ 0x18, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07,
+ 0xF1, 0xC7, 0x30, 0x66, 0x0C, 0xE3, 0x8F, 0xE3, 0xFE, 0xE0, 0xF8, 0x0F,
+ 0x01, 0xF0, 0x77, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xFB, 0x83, 0xE0, 0x3C,
+ 0x07, 0xC1, 0xDF, 0xF9, 0xFF, 0x00, 0xC0, 0x38, 0x0E, 0x03, 0x83, 0xE0,
+ 0x78, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x01, 0xC7, 0x1C, 0x1C, 0x71, 0xC0,
+ 0x00, 0x01, 0xC7, 0x1C, 0x30, 0xC6, 0x01, 0x81, 0xC1, 0xC1, 0xC1, 0xC1,
+ 0xC1, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0C, 0x7F, 0xDF,
+ 0xF0, 0x00, 0x00, 0x7F, 0xDF, 0xF0, 0x60, 0x38, 0x0E, 0x03, 0x80, 0xE0,
+ 0x38, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, 0x3F, 0x1F,
+ 0xEE, 0x1F, 0x03, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x0C, 0x03, 0x00, 0xC0,
+ 0x00, 0x0C, 0x03, 0x00, 0x3F, 0x8F, 0xF9, 0x83, 0x67, 0xBD, 0xF7, 0xB6,
+ 0xF6, 0xDE, 0xDB, 0xDB, 0x7B, 0xFB, 0x3E, 0x70, 0x07, 0xF8, 0x3F, 0x00,
+ 0x0C, 0x03, 0x01, 0xE0, 0x78, 0x1E, 0x0C, 0xC3, 0x30, 0xCC, 0x61, 0x9F,
+ 0xE7, 0xFB, 0x03, 0xC0, 0xF0, 0x30, 0xFE, 0x3F, 0xCC, 0x3B, 0x06, 0xC1,
+ 0xB0, 0xEF, 0xF3, 0xFE, 0xC1, 0xF0, 0x3C, 0x0F, 0x07, 0xFF, 0xBF, 0xC0,
+ 0x1F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+ 0x06, 0x0D, 0xC7, 0x3F, 0x87, 0xC0, 0xFE, 0x3F, 0xCC, 0x3B, 0x06, 0xC0,
+ 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x1B, 0x0E, 0xFF, 0x3F, 0x80,
+ 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0F, 0xF3, 0xFC, 0xC0, 0x30,
+ 0x0C, 0x03, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0,
+ 0x30, 0x0F, 0xF3, 0xFC, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x00,
+ 0x1F, 0x8F, 0xF7, 0x0D, 0x80, 0xC0, 0x30, 0x0C, 0x7F, 0x1F, 0xC0, 0xF0,
+ 0x36, 0x0D, 0xC3, 0x3F, 0xC7, 0xF0, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+ 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30,
+ 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x3F, 0x3F, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03,
+ 0x00, 0xF0, 0x3C, 0x0F, 0x86, 0x7F, 0x8F, 0xC0, 0xC0, 0xF0, 0x7C, 0x3B,
+ 0x1C, 0xCE, 0x37, 0x0F, 0x83, 0xE0, 0xDC, 0x33, 0x8C, 0x73, 0x0E, 0xC1,
+ 0xF0, 0x30, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+ 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xFF, 0xFF, 0xF0, 0xC0, 0xF8, 0x7E, 0x1F,
+ 0xCF, 0xF3, 0xF7, 0xBD, 0xEF, 0x33, 0xCC, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+ 0xF0, 0x30, 0xC0, 0xF8, 0x3E, 0x0F, 0xC3, 0xD8, 0xF6, 0x3C, 0xCF, 0x33,
+ 0xC6, 0xF1, 0xBC, 0x3F, 0x07, 0xC1, 0xF0, 0x30, 0x1E, 0x0F, 0xC7, 0x39,
+ 0x86, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xCE, 0x3F,
+ 0x07, 0x80, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x1F, 0xFE,
+ 0xFF, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x00, 0x1E, 0x0F, 0xC7, 0x39,
+ 0x86, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF1, 0xB6, 0x79, 0xCE, 0x3F,
+ 0xC7, 0xB0, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0, 0x3C, 0x1F, 0xFE,
+ 0xFF, 0x33, 0x8C, 0x73, 0x0E, 0xC1, 0xF0, 0x30, 0x3F, 0x1F, 0xEE, 0x1F,
+ 0x03, 0xC0, 0x38, 0x07, 0xF0, 0xFE, 0x01, 0xC0, 0x3C, 0x0F, 0x87, 0x7F,
+ 0x8F, 0xC0, 0x7F, 0xBF, 0xC3, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C,
+ 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+ 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x7F, 0x8F, 0xC0,
+ 0xC0, 0xF0, 0x3C, 0x0D, 0x86, 0x61, 0x98, 0x63, 0x30, 0xCC, 0x33, 0x07,
+ 0x81, 0xE0, 0x78, 0x0C, 0x03, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+ 0xF0, 0x3C, 0x0F, 0x33, 0xCC, 0xF7, 0xBF, 0x3F, 0x87, 0xE1, 0xF0, 0x30,
+ 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33, 0x07, 0x80, 0xC0, 0x30, 0x1E, 0x0C,
+ 0xC6, 0x19, 0x86, 0xC0, 0xF0, 0x30, 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33,
+ 0x0C, 0xC1, 0xE0, 0x78, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+ 0xFF, 0xFF, 0xF0, 0x18, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C,
+ 0x06, 0x01, 0x80, 0xFF, 0xFF, 0xF0, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x3F, 0x80, 0x18, 0x03, 0x80,
+ 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80,
+ 0x30, 0x3F, 0x3F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x3F, 0x3F, 0x04, 0x01, 0xC0, 0x7C, 0x1D, 0xC7, 0x1D, 0xC1, 0xF0,
+ 0x18, 0xFF, 0xFF, 0xFC, 0x0E, 0x1C, 0x38, 0x60, 0xC0, 0xC0, 0x3F, 0x9F,
+ 0xF0, 0x0C, 0xFF, 0x7F, 0xF0, 0x3C, 0x0F, 0xFF, 0x7F, 0xC0, 0xC0, 0x30,
+ 0x0C, 0x03, 0x00, 0xC0, 0x37, 0xCF, 0xFB, 0x87, 0xC0, 0xF0, 0x3C, 0x0F,
+ 0x07, 0xFF, 0xBF, 0xC0, 0x3F, 0x1F, 0xEE, 0x0F, 0x00, 0xC0, 0x30, 0x0E,
+ 0x0D, 0xFE, 0x3F, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xCF, 0xB7,
+ 0xFF, 0x8F, 0xC0, 0xF0, 0x3C, 0x0F, 0x83, 0x7F, 0xCF, 0xF0, 0x3F, 0x1F,
+ 0xEE, 0x0F, 0xFF, 0xFF, 0xB0, 0x0E, 0x01, 0xFE, 0x3F, 0x00, 0x0F, 0x1F,
+ 0x38, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+ 0x3F, 0xDF, 0xFE, 0x0F, 0x03, 0xE1, 0xDF, 0xF3, 0xEC, 0x03, 0x01, 0xDF,
+ 0xE7, 0xF0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0xF3, 0xFD, 0xC7, 0xC1,
+ 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0C, 0x0C, 0x0C, 0x00, 0x1C, 0x1C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x3F, 0x03, 0x03, 0x00, 0x07, 0x07, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x33, 0x3F, 0x1E, 0x60, 0x30, 0x18, 0x0C,
+ 0x06, 0x03, 0x19, 0x9C, 0xDC, 0x7C, 0x3E, 0x1B, 0x8C, 0xE6, 0x3B, 0x0C,
+ 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x3F, 0x3F, 0xB3, 0x3F, 0xEF, 0xFF, 0x33, 0xCC, 0xF3, 0x3C, 0xCF, 0x33,
+ 0xCC, 0xC0, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83,
+ 0x60, 0xC0, 0x3F, 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x3E, 0x1D, 0xFE,
+ 0x3F, 0x00, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF8, 0x7F, 0xFB, 0x7C,
+ 0xC0, 0x30, 0x0C, 0x00, 0x3F, 0xDF, 0xFE, 0x0F, 0x03, 0xC0, 0xF8, 0x77,
+ 0xFC, 0xFB, 0x00, 0xC0, 0x30, 0x0C, 0x6F, 0x9F, 0xF7, 0x0D, 0x80, 0x60,
+ 0x18, 0x06, 0x01, 0x80, 0x60, 0x00, 0x7E, 0xFF, 0xC0, 0xFE, 0x7F, 0x03,
+ 0x03, 0xFF, 0x7E, 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x3F, 0x1F, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E,
+ 0x1D, 0xFF, 0x3E, 0xC0, 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x33, 0x0C, 0xC1,
+ 0xE0, 0x78, 0x0C, 0x00, 0xCC, 0xF3, 0x3C, 0xCF, 0x33, 0xCC, 0xF7, 0xB7,
+ 0xF9, 0xCE, 0x21, 0x00, 0xC1, 0xF1, 0xDD, 0xC7, 0xC1, 0xC1, 0xF1, 0xDD,
+ 0xC7, 0xC1, 0x80, 0x61, 0xB0, 0xCC, 0xC6, 0x61, 0xE0, 0xF0, 0x30, 0x18,
+ 0x18, 0x0C, 0x0C, 0x00, 0xFF, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
+ 0xFF, 0xFF, 0x80, 0x07, 0x87, 0xC7, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0xE0,
+ 0x38, 0x0C, 0x06, 0x03, 0x01, 0xC0, 0x7C, 0x1E, 0x0C, 0x30, 0xC3, 0x0C,
+ 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x78, 0x3E, 0x03, 0x80, 0xC0,
+ 0x60, 0x30, 0x1C, 0x07, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE3, 0xE1, 0xE0,
+ 0x38, 0xDB, 0x6C, 0x70, 0x0C, 0x07, 0x83, 0x31, 0x86, 0xC0, 0xF0, 0x3F,
+ 0xFF, 0xFF,
+};
+
+const GFXglyph Terminal11x16Glyphs[] = {
+ { 0, 6, 0, 7, 0, 0 }, // 0x20 ' '
+ { 0, 7, 14, 8, 0, -16 }, // 0x21 '!'
+ { 13, 8, 4, 9, 0, -14 }, // 0x22 '"'
+ { 17, 11, 12, 12, 0, -15 }, // 0x23 '#'
+ { 34, 9, 14, 10, 0, -16 }, // 0x24 '$'
+ { 50, 11, 12, 12, 0, -14 }, // 0x25 '%'
+ { 67, 10, 13, 11, 0, -15 }, // 0x26 '&'
+ { 84, 6, 6, 7, 0, -16 }, // 0x27 '''
+ { 89, 8, 14, 9, 0, -16 }, // 0x28 '('
+ { 103, 8, 14, 9, 0, -16 }, // 0x29 ')'
+ { 117, 9, 9, 10, 0, -13 }, // 0x2a '*'
+ { 128, 9, 8, 10, 0, -12 }, // 0x2b '+'
+ { 137, 6, 5, 7, 0, -5 }, // 0x2c ','
+ { 141, 9, 2, 10, 0, -9 }, // 0x2d '-'
+ { 144, 6, 3, 7, 0, -5 }, // 0x2e '.'
+ { 147, 11, 12, 12, 0, -15 }, // 0x2f '/'
+ { 164, 11, 14, 12, 0, -16 }, // 0x30 '0'
+ { 184, 10, 14, 11, 0, -16 }, // 0x31 '1'
+ { 202, 11, 14, 12, 0, -16 }, // 0x32 '2'
+ { 222, 11, 14, 12, 0, -16 }, // 0x33 '3'
+ { 242, 11, 14, 12, 0, -16 }, // 0x34 '4'
+ { 262, 11, 14, 12, 0, -16 }, // 0x35 '5'
+ { 282, 11, 14, 12, 0, -16 }, // 0x36 '6'
+ { 302, 11, 14, 12, 0, -16 }, // 0x37 '7'
+ { 322, 11, 14, 12, 0, -16 }, // 0x38 '8'
+ { 342, 11, 14, 12, 0, -16 }, // 0x39 '9'
+ { 362, 6, 9, 7, 0, -12 }, // 0x3a ':'
+ { 369, 6, 12, 7, 0, -12 }, // 0x3b ';'
+ { 378, 9, 14, 10, 0, -16 }, // 0x3c '<'
+ { 394, 10, 6, 11, 0, -11 }, // 0x3d '='
+ { 402, 9, 14, 10, 0, -16 }, // 0x3e '>'
+ { 418, 10, 14, 11, 0, -16 }, // 0x3f '?'
+ { 436, 11, 14, 12, 0, -16 }, // 0x40 '@'
+ { 456, 10, 14, 11, 0, -16 }, // 0x41 'A'
+ { 474, 10, 14, 11, 0, -16 }, // 0x42 'B'
+ { 492, 10, 14, 11, 0, -16 }, // 0x43 'C'
+ { 510, 10, 14, 11, 0, -16 }, // 0x44 'D'
+ { 528, 10, 14, 11, 0, -16 }, // 0x45 'E'
+ { 546, 10, 14, 11, 0, -16 }, // 0x46 'F'
+ { 564, 10, 14, 11, 0, -16 }, // 0x47 'G'
+ { 582, 10, 14, 11, 0, -16 }, // 0x48 'H'
+ { 600, 8, 14, 9, 0, -16 }, // 0x49 'I'
+ { 614, 10, 14, 11, 0, -16 }, // 0x4a 'J'
+ { 632, 10, 14, 11, 0, -16 }, // 0x4b 'K'
+ { 650, 10, 14, 11, 0, -16 }, // 0x4c 'L'
+ { 668, 10, 14, 11, 0, -16 }, // 0x4d 'M'
+ { 686, 10, 14, 11, 0, -16 }, // 0x4e 'N'
+ { 704, 10, 14, 11, 0, -16 }, // 0x4f 'O'
+ { 722, 10, 14, 11, 0, -16 }, // 0x50 'P'
+ { 740, 10, 14, 11, 0, -16 }, // 0x51 'Q'
+ { 758, 10, 14, 11, 0, -16 }, // 0x52 'R'
+ { 776, 10, 14, 11, 0, -16 }, // 0x53 'S'
+ { 794, 9, 14, 10, 0, -16 }, // 0x54 'T'
+ { 810, 10, 14, 11, 0, -16 }, // 0x55 'U'
+ { 828, 10, 14, 11, 0, -16 }, // 0x56 'V'
+ { 846, 10, 14, 11, 0, -16 }, // 0x57 'W'
+ { 864, 10, 14, 11, 0, -16 }, // 0x58 'X'
+ { 882, 10, 14, 11, 0, -16 }, // 0x59 'Y'
+ { 900, 10, 14, 11, 0, -16 }, // 0x5a 'Z'
+ { 918, 8, 14, 9, 0, -16 }, // 0x5b '['
+ { 932, 11, 12, 12, 0, -15 }, // 0x5c '\'
+ { 949, 8, 14, 9, 0, -16 }, // 0x5d ']'
+ { 963, 11, 7, 12, 0, -16 }, // 0x5e '^'
+ { 973, 11, 2, 12, 0, -2 }, // 0x5f '_'
+ { 976, 7, 6, 8, 0, -15 }, // 0x60 '`'
+ { 982, 10, 9, 11, 0, -11 }, // 0x61 'a'
+ { 994, 10, 14, 11, 0, -16 }, // 0x62 'b'
+ { 1012, 10, 9, 11, 0, -11 }, // 0x63 'c'
+ { 1024, 10, 14, 11, 0, -16 }, // 0x64 'd'
+ { 1042, 10, 9, 11, 0, -11 }, // 0x65 'e'
+ { 1054, 8, 14, 9, 0, -16 }, // 0x66 'f'
+ { 1068, 10, 11, 11, 0, -11 }, // 0x67 'g'
+ { 1082, 9, 14, 10, 0, -16 }, // 0x68 'h'
+ { 1098, 8, 12, 9, 0, -14 }, // 0x69 'i'
+ { 1110, 8, 14, 9, 0, -14 }, // 0x6a 'j'
+ { 1124, 9, 14, 10, 0, -16 }, // 0x6b 'k'
+ { 1140, 8, 14, 9, 0, -16 }, // 0x6c 'l'
+ { 1154, 10, 9, 11, 0, -11 }, // 0x6d 'm'
+ { 1166, 10, 9, 11, 0, -11 }, // 0x6e 'n'
+ { 1178, 10, 9, 11, 0, -11 }, // 0x6f 'o'
+ { 1190, 10, 11, 11, 0, -11 }, // 0x70 'p'
+ { 1204, 10, 11, 11, 0, -11 }, // 0x71 'q'
+ { 1218, 10, 9, 11, 0, -11 }, // 0x72 'r'
+ { 1230, 8, 9, 9, 0, -11 }, // 0x73 's'
+ { 1239, 8, 13, 9, 0, -15 }, // 0x74 't'
+ { 1252, 10, 9, 11, 0, -11 }, // 0x75 'u'
+ { 1264, 10, 9, 11, 0, -11 }, // 0x76 'v'
+ { 1276, 10, 9, 11, 0, -11 }, // 0x77 'w'
+ { 1288, 9, 9, 10, 0, -11 }, // 0x78 'x'
+ { 1299, 9, 11, 10, 0, -11 }, // 0x79 'y'
+ { 1312, 9, 9, 10, 0, -11 }, // 0x7a 'z'
+ { 1323, 9, 15, 10, 0, -16 }, // 0x7b '{'
+ { 1340, 6, 14, 7, 0, -16 }, // 0x7c '|'
+ { 1351, 9, 15, 10, 0, -16 }, // 0x7d '}'
+ { 1368, 10, 3, 11, 0, -14 }, // 0x7e '~'
+ { 1372, 10, 8, 11, 0, -12 }, // 0x7f ''
+ };
+const GFXfont Terminal11x16Font = {
+ (uint8_t *)Terminal11x16Bitmap,
+ (GFXglyph *)Terminal11x16Glyphs,
+ 0x20, 0x7F, 26 };