adds generated fonts + script

This commit is contained in:
Florian Klemenz 2022-05-03 16:32:40 +02:00
parent 9705273d18
commit 3dffca483d
10 changed files with 1740 additions and 31 deletions

View File

@ -1,6 +1,6 @@
CFLAGS=-g -Wall -lm CFLAGS=-g -Wall -lm
fbdash: fbdash.c fblib.o fbfont.o fbdash: fbdash.c fblib fbfont
gcc fblib.o fbfont.o -o $@ $(CFLAGS) $< gcc fblib.o fbfont.o -o $@ $(CFLAGS) $<
fblib: fblib.o fblib: fblib.o

BIN
fbdash

Binary file not shown.

View File

@ -54,9 +54,10 @@ void draw() {
char *text = "Hello!"; char *text = "Hell O_o!";
//render_string(fbp, arial_32, text, 0, 0, 255, 255, 255); render_string(fbp, ubuntu_mono_48, text, 15, 0, 255, 255, 255);
render_string(fbp, basic_8, text, 0, 0, 255, 255, 255); render_string(fbp, ubuntu_mono_24, text, 15, 50, 255, 255, 255);
render_string(fbp, basic_8, text, 15, 100, 255, 255, 255);
} }
// application entry point // application entry point

View File

@ -2,9 +2,16 @@
#include "fbfont.h" #include "fbfont.h"
#include "fonts/dhepper-font8x8/font8x8_basic.h" #include "fonts/dhepper-font8x8/font8x8_basic.h"
#include "fonts/Arial-32px.h" #include "fonts/Ubuntu_Mono_24.h"
#include "fonts/Ubuntu_Mono_48.h"
/*
fbfont arial_32 = { 22, 37, (char*)xbm_arial_32 }; * width
fbfont basic_8 = { 8, 8, (char*)font8x8_basic }; * height
* offset
* *xbm
*/
fbfont basic_8 = { 8, 8, 0, (char*)font8x8_basic };
fbfont ubuntu_mono_24 = { 8, 24, -32, (char*)xbmFont_Ubuntu_Mono_24 };
fbfont ubuntu_mono_48 = { 16, 48, -32, (char*)xbmFont_Ubuntu_Mono_48 };

View File

@ -5,12 +5,15 @@
struct s_fbfont { struct s_fbfont {
unsigned char width; unsigned char width;
unsigned char height; unsigned char height;
short offset;
char *xbm; char *xbm;
}; };
typedef struct s_fbfont fbfont; typedef struct s_fbfont fbfont;
extern fbfont arial_32;
extern fbfont basic_8; extern fbfont basic_8;
extern fbfont arial_24;
extern fbfont ubuntu_mono_24;
extern fbfont ubuntu_mono_48;
#endif #endif

View File

@ -179,7 +179,7 @@ void render_string(char *fbp, fbfont font, char *text, int x, int y, int r, int
// each character // each character
for (int char_pos = 0; char_pos < text_length; char_pos++) { for (int char_pos = 0; char_pos < text_length; char_pos++) {
//int char_code = 0; //int char_code = 0;
int char_code = *(text + char_pos); int char_code = *(text + char_pos) + font.offset;
int x_offset = char_pos * font.width + x; int x_offset = char_pos * font.width + x;
// each line of pixels // each line of pixels
@ -196,20 +196,20 @@ void render_string(char *fbp, fbfont font, char *text, int x, int y, int r, int
char mask = 1 << bit_number; char mask = 1 << bit_number;
if(current_byte & mask) { if(current_byte & mask) {
// plot the pixel // plot the pixel
printf("x"); //printf("x");
int x_pos = x_offset + byte_num * 8 + bit_number; int x_pos = x_offset + byte_num * 8 + bit_number;
put_pixel(fbp, x_pos, y_pos, 255, 255, 255); put_pixel(fbp, x_pos, y_pos, 255, 255, 255);
} }
else { else {
// leave empty (or maybe plot 'text backgr color') // leave empty (or maybe plot 'text backgr color')
printf(" "); //printf(" ");
} }
} // end "for bit_number" } // end "for bit_number"
} // end "for byte_num" } // end "for byte_num"
printf("\n"); //printf("\n");
} // end "for line" } // end "for line"

View File

@ -1,18 +0,0 @@
#define A_width 22
#define A_height 37
static char xbm_arial_32[1][111] = {
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3E, 0x00,
0x00, 0x3E, 0x00, 0x00, 0x77, 0x00, 0x00, 0x77, 0x00, 0x00, 0x77, 0x00,
0x80, 0xE3, 0x00, 0x80, 0xE3, 0x00, 0xC0, 0xE3, 0x00, 0xC0, 0xC1, 0x01,
0xC0, 0xC1, 0x01, 0xE0, 0x80, 0x03, 0xE0, 0x80, 0x03, 0xE0, 0xE9, 0x07,
0xF0, 0xFF, 0x07, 0xF0, 0xFF, 0x07, 0x78, 0x00, 0x0F, 0x38, 0x00, 0x0E,
0x38, 0x00, 0x1E, 0x3C, 0x00, 0x1C, 0x1C, 0x00, 0x1C, 0x1C, 0x00, 0x3C,
0x0E, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00
}
};

489
fonts/Ubuntu_Mono_24.h Normal file
View File

@ -0,0 +1,489 @@
#ifndef __XBM_FONT_Ubuntu_Mono_24_H__
#define __XBM_FONT_Ubuntu_Mono_24_H__
/*
Ubuntu_Mono//UbuntuMono-B.ttf bits
generated with genXBMfonts, https://github.com/masterzorag/xbm_tools
2015, masterzorag@gmail.com
*/
//#define LOWER_ASCII_CODE 32
//#define UPPER_ASCII_CODE 126
//#define FONT_W 8
//#define FONT_H 24
//#define BITS_IN_BYTE 8
char xbmFont_Ubuntu_Mono_24[95][24] = {
{ /* 0: ASCII 032 [ ] bits */
0x00
},
{ /* 1: ASCII 033 [!] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 2: ASCII 034 ["] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 3: ASCII 035 [#] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xD8, 0xD8, 0xFF, 0xFF, 0x6C,
0xFF, 0xFF, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 4: ASCII 036 [$] bits */
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7C, 0x7E, 0x03, 0x03, 0x0F, 0x3E,
0x78, 0x60, 0x60, 0x7F, 0x3E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 5: ASCII 037 [%] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x69, 0x69, 0x39, 0x3E, 0x18,
0xCC, 0x2C, 0x26, 0x26, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 6: ASCII 038 [&] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x66, 0x36, 0x1C, 0xDE,
0xFB, 0xF3, 0x73, 0xFE, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 7: ASCII 039 ['] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 8: ASCII 040 [(] bits */
0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
},
{ /* 9: ASCII 041 [)] bits */
0x00, 0x00, 0x00, 0x00, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x18, 0x18, 0x1C, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
},
{ /* 10: ASCII 042 [*] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x7F, 0x7F, 0x1C, 0x3E,
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 11: ASCII 043 [+] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18,
0xFF, 0xFF, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 12: ASCII 044 [,] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0C, 0x1C, 0x1C, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00,
},
{ /* 13: ASCII 045 [-] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 14: ASCII 046 [.] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 15: ASCII 047 [/] bits */
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30,
0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00,
},
{ /* 16: ASCII 048 [0] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x77, 0x63, 0x6B, 0x6B,
0x63, 0x63, 0x77, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 17: ASCII 049 [1] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x1F, 0x1A, 0x18, 0x18,
0x18, 0x18, 0x18, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 18: ASCII 050 [2] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x64, 0x60, 0x60, 0x30,
0x18, 0x0C, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 19: ASCII 051 [3] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x60, 0x60, 0x3C, 0x3C,
0x70, 0x60, 0x70, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 20: ASCII 052 [4] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x78, 0x6C, 0x66, 0x63,
0xFF, 0xFF, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 21: ASCII 053 [5] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x06, 0x06, 0x1E, 0x3E,
0x70, 0x60, 0x60, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 22: ASCII 054 [6] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3C, 0x0E, 0x02, 0x1F, 0x7F,
0x63, 0x63, 0x67, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 23: ASCII 055 [7] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x60, 0x30, 0x18, 0x18,
0x0C, 0x0C, 0x04, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 24: ASCII 056 [8] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x63, 0x63, 0x36, 0x3E,
0x73, 0x63, 0x63, 0x7F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 25: ASCII 057 [9] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x73, 0x63, 0x63, 0x7E,
0x7C, 0x20, 0x38, 0x1E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 26: ASCII 058 [:] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x08,
0x00, 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 27: ASCII 059 [;] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x08,
0x00, 0x00, 0x0C, 0x1C, 0x1C, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00,
},
{ /* 28: ASCII 060 [<] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E,
0x0E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 29: ASCII 061 [=] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 30: ASCII 062 [>] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3E, 0x70,
0x70, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 31: ASCII 063 [?] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x60, 0x60, 0x70, 0x38,
0x1C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 32: ASCII 064 [@] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xC6, 0xF3, 0xFB, 0xDB,
0xDB, 0xDB, 0xFB, 0xF3, 0x06, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 33: ASCII 065 [A] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x78, 0x6C, 0x6C, 0xCC,
0xFE, 0xFE, 0xC6, 0xC7, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 34: ASCII 066 [B] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x33, 0x33, 0x1F, 0x3F,
0x63, 0x63, 0x63, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 35: ASCII 067 [C] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFE, 0x86, 0x03, 0x03, 0x03,
0x03, 0x03, 0x86, 0xFE, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 36: ASCII 068 [D] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x33, 0x63, 0x63, 0x63,
0x63, 0x63, 0x33, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 37: ASCII 069 [E] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x03, 0x03, 0x3F, 0x3F,
0x03, 0x03, 0x03, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 38: ASCII 070 [F] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x03, 0x03, 0x3F, 0x3F,
0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 39: ASCII 071 [G] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0x06, 0x03, 0x03, 0xC3,
0xC3, 0xC3, 0xC6, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 40: ASCII 072 [H] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7F, 0x7F,
0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 41: ASCII 073 [I] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 42: ASCII 074 [J] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x72, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 43: ASCII 075 [K] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x63, 0x33, 0x1B, 0x0F, 0x0F,
0x1B, 0x33, 0x73, 0x63, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 44: ASCII 076 [L] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 45: ASCII 077 [M] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x67, 0x67, 0x67, 0x7B, 0x5B,
0x5B, 0x43, 0x43, 0x43, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 46: ASCII 078 [N] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x67, 0x6F, 0x6F, 0x6B,
0x7B, 0x73, 0x73, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 47: ASCII 079 [O] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 48: ASCII 080 [P] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x63, 0x63, 0x63, 0x3F,
0x1F, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 49: ASCII 081 [Q] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0x38, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00,
},
{ /* 50: ASCII 082 [R] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x73, 0x63, 0x73, 0x3F,
0x1F, 0x1B, 0x33, 0x33, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 51: ASCII 083 [S] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x03, 0x03, 0x0F, 0x3E,
0x78, 0x60, 0x60, 0x7F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 52: ASCII 084 [T] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 53: ASCII 085 [U] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
0x63, 0x63, 0x63, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 54: ASCII 086 [V] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xC3, 0x66, 0x66, 0x66, 0x66,
0x24, 0x3C, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 55: ASCII 087 [W] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xDB, 0xFB,
0xFF, 0xFF, 0xE7, 0xE7, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 56: ASCII 088 [X] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC6, 0x6C, 0x7C, 0x38, 0x38,
0x7C, 0x6C, 0xEE, 0xC6, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 57: ASCII 089 [Y] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x66, 0x66, 0x66, 0x3C, 0x3C,
0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 58: ASCII 090 [Z] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x70, 0x38, 0x18, 0x1C,
0x0C, 0x06, 0x06, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 59: ASCII 091 [[] bits */
0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00,
},
{ /* 60: ASCII 092 [\] bits */
0x00
},
{ /* 61: ASCII 093 []] bits */
0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00,
},
{ /* 62: ASCII 094 [^] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x6C, 0xEE, 0xC6, 0x86,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 63: ASCII 095 [_] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
},
{ /* 64: ASCII 096 [`] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 65: ASCII 097 [a] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x60,
0x7E, 0x7F, 0x63, 0x7F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 66: ASCII 098 [b] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x1F, 0x3F, 0x73,
0x63, 0x63, 0x73, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 67: ASCII 099 [c] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x07,
0x03, 0x03, 0x07, 0x7E, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 68: ASCII 100 [d] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x7C, 0x7E, 0x67,
0x63, 0x63, 0x67, 0x7E, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 69: ASCII 101 [e] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x63,
0x7F, 0x7F, 0x03, 0x7E, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 70: ASCII 102 [f] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x7C, 0x0C, 0x0C, 0x7F, 0x7F, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 71: ASCII 103 [g] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67,
0x63, 0x63, 0x67, 0x7E, 0x7E, 0x60, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00,
},
{ /* 72: ASCII 104 [h] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x3F, 0x3F, 0x63,
0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 73: ASCII 105 [i] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0F, 0x0F, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 74: ASCII 106 [j] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x7C, 0x7C, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00,
},
{ /* 75: ASCII 107 [k] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x73, 0x3B, 0x1B,
0x0F, 0x1F, 0x3B, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 76: ASCII 108 [l] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 77: ASCII 109 [m] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x6B,
0x6B, 0x6B, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 78: ASCII 110 [n] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x63,
0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 79: ASCII 111 [o] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x67,
0x63, 0x63, 0x73, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 80: ASCII 112 [p] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x73,
0x63, 0x63, 0x73, 0x3F, 0x1F, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
},
{ /* 81: ASCII 113 [q] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67,
0x63, 0x63, 0x67, 0x7E, 0x7C, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,
},
{ /* 82: ASCII 114 [r] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 83: ASCII 115 [s] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7F, 0x03,
0x0E, 0x3C, 0x60, 0x7F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 84: ASCII 116 [t] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x7F, 0x7F, 0x0C,
0x0C, 0x0C, 0x0C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 85: ASCII 117 [u] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63,
0x63, 0x63, 0x63, 0x7F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 86: ASCII 118 [v] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xC6, 0x66,
0x66, 0x2C, 0x3C, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 87: ASCII 119 [w] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xC7, 0xD7,
0xFE, 0xFE, 0xFE, 0xEE, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 88: ASCII 120 [x] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCE, 0x7C,
0x38, 0x78, 0x6C, 0xCE, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 89: ASCII 121 [y] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0x6C,
0x6C, 0x6C, 0x38, 0x38, 0x30, 0x18, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00,
},
{ /* 90: ASCII 122 [z] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x38,
0x18, 0x0C, 0x06, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
},
{ /* 91: ASCII 123 [{] bits */
0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x07,
0x07, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00,
},
{ /* 92: ASCII 124 [|] bits */
0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00,
},
{ /* 93: ASCII 125 [}] bits */
0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70,
0x70, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00,
},
{ /* 94: ASCII 126 [~] bits */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE,
0xFF, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
}
};
#endif //__XBM_FONT_H__

1047
fonts/Ubuntu_Mono_48.h Normal file

File diff suppressed because it is too large Load Diff

180
fonts/genXBMfonts.sh Executable file
View File

@ -0,0 +1,180 @@
#!/bin/bash
# file: genXBMfonts.sh
# brief: generate font glyphs and C header file from XBM images
# author: 2015, masterzorag@gmail.com
# This script uses ImageMagick convert to generate images of glyphs
# 1. rebuild $fontDestDir/xbm_font.h
# ./genXBMfonts.sh Razor_1911/ 16 16
# 2. use generated XBM fonts: hardcode in xbm_print
# cp Razor_1911/xbm/xbm_font.h xbm_font.h
# 3. rebuild xbm_tools
# make clean && make
# modded by Florian Klemenz
# Usage example:
# mkdir Ubuntu_Mono
# cp /usr/share/fonts/truetype/ubuntu/UbuntuMono-B.ttf Ubuntu_Mono/
# ./genXBMfonts.sh Ubuntu_Mono/ 24 48 32
# | | |
# | | -----> input font size for rendering (increase to fill space better, decrease if overflow)
# | --------> output height (must be multiple of 8 to work properly)
# -----------> output width (must be multiple of 8 to work properly)
if [ -z $1 ]; then
echo "$0 FontDir Font_W Font_H"
echo "$0 Razor_1911 16 16"
exit
fi
### arguments, keep 16x16 as default
FontDir=$1
Font_W=$2
Font_H=$3
name=$(basename $FontDir)
filename="${name}_${Font_H}"
pointsize=$4
#pointsize=$(expr ${Font_H} - 8)
### process argv end here ###
fonts="$fonts $(echo "$FontDir"/*.ttf)"
# ImageMagick supported extension: pnm, png, bmp, xpm, pbm... here we deal with xbm
type=xbm
echo "Found" $(echo "$fonts" | wc -w) "fonts"
# for each font
for i in $fonts
do
echo "$i"
fontDestDir="$FontDir/$type"
mkdir -p "$fontDestDir"
t=$fontDestDir/temp
out=${filename}.h
#out=$fontDestDir/${filename}.h
echo "$t, $out"
if [ -f "$t" ]
then
rm $t
rm $out
fi
# keep track of array index
n="0"
# chars=" ! a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + - / # . , \*"
# for c in $chars
# Better: do a printable range set, start from char ' ' (space): ASCII 32
# ASCII 127 is NOT printable and will write output.h file in binary form!
# keep it under 127 for now...
for c in `seq 32 126`
do
#printf "%d\t\x%x\n" $c $c
# compose decimal representation and label
d="$(printf %.3d $c)" #printf "\x$(printf %x $c)"
D="$(printf "\x$(printf %x $c)")"
# 1. build commented label header: array idx, ascii code, glyph
echo "{ /* $n: ASCII $d [$D] bits */" >> $t
# Generate (Font_W x Font_H) images, 1bpp of each character in ASCII range
# call imagemagick tool to convert bitmap
convert \
+antialias \
-depth 1 -colors 2 \
-size "$Font_W"x"$Font_H" \
-background white -fill black \
-font "$i" \
-pointsize ${pointsize} \
-density 72 \
-gravity center \
label:$D \
"$fontDestDir/$d.$type" &> /dev/null
# 2. check to build data bits
if [ -f "$fontDestDir/$d.$type" ]
then
echo "$n: $d.$type [$D]"
# extra: dump single XBM to console
./xbm_dump "$fontDestDir/$d.$type"
# 3a. strip data bits and push to output
tail -n+4 "$fontDestDir/$d.$type" | head --bytes -5 >> $t
else
echo "$n: $d.$type does not exists!"
# 3b. build zeroed data bit header for a missing ASCII code
printf "\t0x00" >> $t
fi
# 4. close data bits footer
printf "\n},\n" >> $t
# increase array count
((n+=1))
done
printf "I: range of %d ASCII codes\n" $n
# 1. build top C header
printf "#ifndef __XBM_FONT_${filename}_H__\n" > $out
printf "#define __XBM_FONT_${filename}_H__\n" >> $out
printf "\n/*\n\t%s bits\n" $fonts >> $out
printf "\tgenerated with genXBMfonts, https://github.com/masterzorag/xbm_tools\n" >> $out
printf "\t2015, masterzorag@gmail.com\n*/\n\n" >> $out
printf "//#define LOWER_ASCII_CODE %d\n" 32 >> $out
printf "//#define UPPER_ASCII_CODE %d\n" 126 >> $out
printf "//#define FONT_W %d\n" $Font_W >> $out
printf "//#define FONT_H %d\n" $Font_H >> $out
printf "//#define BITS_IN_BYTE %d\n\n" 8 >> $out
grr=$( expr $Font_W \* $Font_H / 8 )
echo "char xbmFont_${filename}[$n][$grr] = {" >> $out
# 2. fix: remove last ','
head --bytes -2 $t >> $out
# 3. build bottom C header: add "};"
printf "\n};\n" >> $out
printf "#endif //__XBM_FONT_H__\n" >> $out
# extra: cleanup from temp
rm $t
done # for i in fonts
# count and report exported
n=$(ls $fontDestDir/*.$type | wc -l)
printf "I: succesfully parsed %d ASCII codes\nDone\n\n" $n
# inquiry
file $out
# preview outputted C header
head -14 $out
echo "..."
tail -6 $out
# extra: look at exported XBM(s)
#viewnior $fontDestDir &> /dev/null
exit