some font enhancements for new display driver (working better with some displays)
This commit is contained in:
parent
b912995026
commit
f28c464add
|
|
@ -46,7 +46,9 @@
|
||||||
%VERSION_NAME%<br>
|
%VERSION_NAME%<br>
|
||||||
Copyright © 2019-2021 by Hansi Reiser, DL9RDZ<br>
|
Copyright © 2019-2021 by Hansi Reiser, DL9RDZ<br>
|
||||||
(version %VERSION_ID%)<br><br>
|
(version %VERSION_ID%)<br><br>
|
||||||
with contributions by Vigor and Xavier (M20 support), <a href="https://www.dl2mf.de/" target="_blank">Meinhard Guenther, DL2MF</a>,
|
with contributions by Vigor and Xavier (M20 support),
|
||||||
|
<a href="https://github.com/LukePrior">Luke Prior</a> and <a href="https://github.com/oh3bsg">OH3BSG</a> (SondeHub support),
|
||||||
|
<a href="https://www.dl2mf.de/" target="_blank">Meinhard Guenther, DL2MF</a>,
|
||||||
<a href="https://github.com/bazjo">Johannes</a>, <a href="http://www.p1337.synology.me/dokuwiki/doku.php?id=public:wettersonden">Robert Stefanowicz</a>,
|
<a href="https://github.com/bazjo">Johannes</a>, <a href="http://www.p1337.synology.me/dokuwiki/doku.php?id=public:wettersonden">Robert Stefanowicz</a>,
|
||||||
<a href="https://github.com/puspis">Josema</a>, and probably some more people I forgot to mention here.
|
<a href="https://github.com/puspis">Josema</a>, and probably some more people I forgot to mention here.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
const char *version_name = "rdzTTGOsonde";
|
const char *version_name = "rdzTTGOsonde";
|
||||||
const char *version_id = "sondehub-test";
|
const char *version_id = "devel20210524";
|
||||||
const int SPIFFS_MAJOR=2;
|
const int SPIFFS_MAJOR=2;
|
||||||
const int SPIFFS_MINOR=11;
|
const int SPIFFS_MINOR=11;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -16,6 +16,7 @@ extern const char *version_id;
|
||||||
#include <fonts/FreeSans9pt7b.h>
|
#include <fonts/FreeSans9pt7b.h>
|
||||||
#include <fonts/FreeSans12pt7b.h>
|
#include <fonts/FreeSans12pt7b.h>
|
||||||
#include <fonts/Picopixel.h>
|
#include <fonts/Picopixel.h>
|
||||||
|
#include <fonts/Terminal11x16.h>
|
||||||
|
|
||||||
extern Sonde sonde;
|
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[] = {
|
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
|
&FreeMono9pt7b, // 3
|
||||||
&FreeMono12pt7b, // 4
|
&FreeMono12pt7b, // 4
|
||||||
|
#endif
|
||||||
&FreeSans9pt7b, // 5
|
&FreeSans9pt7b, // 5
|
||||||
&FreeSans12pt7b, // 6
|
&FreeSans12pt7b, // 6
|
||||||
&Picopixel, // 7
|
&Picopixel, // 7
|
||||||
|
|
@ -324,8 +331,13 @@ struct gfxoffset_t {
|
||||||
// first value: offset: max offset from font glyphs (last column * (-1)) (check /, \, `, $)`
|
// 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)
|
// yclear:max height: max of (height in 3rd column) + (yofs + 6th column) (check j)
|
||||||
const struct gfxoffset_t gfxoffsets[]={
|
const struct gfxoffset_t gfxoffsets[]={
|
||||||
|
#ifdef ALT9225
|
||||||
|
{ 16, 18},
|
||||||
|
{ 16, 18},
|
||||||
|
#else
|
||||||
{ 11, 15 }, // 13+11-9 "j"
|
{ 11, 15 }, // 13+11-9 "j"
|
||||||
{ 15, 20 }, // 19+15-14
|
{ 15, 20 }, // 19+15-14
|
||||||
|
#endif
|
||||||
{ 13, 18 }, // 17+13-12 "j"
|
{ 13, 18 }, // 17+13-12 "j"
|
||||||
{ 17, 23 }, // 23+17-17
|
{ 17, 23 }, // 23+17-17
|
||||||
{ 4, 6}, // 6+4-4
|
{ 4, 6}, // 6+4-4
|
||||||
|
|
@ -368,6 +380,9 @@ void ILI9225Display::clear() {
|
||||||
|
|
||||||
// for now, 0=small=FreeSans9pt7b, 1=large=FreeSans18pt7b
|
// for now, 0=small=FreeSans9pt7b, 1=large=FreeSans18pt7b
|
||||||
void ILI9225Display::setFont(uint8_t fontindex) {
|
void ILI9225Display::setFont(uint8_t fontindex) {
|
||||||
|
#ifdef ALT9225
|
||||||
|
if(fontindex==1 || fontindex==2) { fontindex=3; }
|
||||||
|
#endif
|
||||||
findex = fontindex;
|
findex = fontindex;
|
||||||
switch(fontindex) {
|
switch(fontindex) {
|
||||||
#ifdef ALT9225
|
#ifdef ALT9225
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
//#define ALT9225
|
#define ALT9225
|
||||||
|
|
||||||
#ifndef Display_h
|
#ifndef Display_h
|
||||||
#define Display_h
|
#define Display_h
|
||||||
|
|
@ -9,7 +9,6 @@
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#ifdef ALT9225
|
#ifdef ALT9225
|
||||||
#include <Arduino_GFX_Library.h>
|
#include <Arduino_GFX_Library.h>
|
||||||
//#include <Arduino_GFX.h>
|
|
||||||
#else
|
#else
|
||||||
#include <TFT22_ILI9225.h>
|
#include <TFT22_ILI9225.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -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 };
|
||||||
Loading…
Reference in New Issue