feature: line spacing + characters are aligned

This commit is contained in:
2024-12-19 19:04:43 +01:00
parent 61debdcb85
commit bab3069152
5 changed files with 159 additions and 22 deletions

View File

@ -5,5 +5,6 @@
struct font {
uint32_t height;
uint32_t width;
uint32_t yoffset;
char *bitmap;
};

View File

@ -8,641 +8,769 @@ struct font consolas_regular_13_font[] = {\
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
{
.width = 1,
.height = 1,
.yoffset = 12,
.bitmap = " ",
},
{
.width = 3,
.height = 13,
.yoffset = 0,
.bitmap = "## ## ## ## ## ## ## ## ## ## #########",
},
{
.width = 6,
.height = 5,
.yoffset = 0,
.bitmap = "##############################",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = " ## ## ## ## ## ## #################### ## ## ## ## #################### ## ## ## ## ## ## ",
},
{
.width = 8,
.height = 15,
.yoffset = 0,
.bitmap = " ### ## ##### ###### ## ## ## ## ##### ###### ##### ### ## ### ######### ###### ## ## ",
},
{
.width = 11,
.height = 13,
.yoffset = 0,
.bitmap = " ### ## ##### ### ## ## ## ## ## ## ######## ### ## ## ###### ####### ## ## ## ### ## ## ## ##### ## ### ",
},
{
.width = 11,
.height = 13,
.yoffset = 0,
.bitmap = " #### ###### ## ## ## ## ###### #### #### ## ###### ## ## ##### ## #### ## #### ######## #### ### ",
},
{
.width = 3,
.height = 5,
.yoffset = 0,
.bitmap = "###############",
},
{
.width = 5,
.height = 16,
.yoffset = 0,
.bitmap = " # ### ## ## ## ## ## ## ## ## ## ## ## ## ### # ",
},
{
.width = 5,
.height = 16,
.yoffset = 0,
.bitmap = " # ### ## ## ## ## ## ## ## ## ## ## ## ## ### # ",
},
{
.width = 8,
.height = 8,
.yoffset = 0,
.bitmap = " ## # ## # ######## ###### ###### ######## # ## # ## ",
},
{
.width = 8,
.height = 8,
.yoffset = 4,
.bitmap = " ## ## ## ################ ## ## ## ",
},
{
.width = 5,
.height = 6,
.yoffset = 10,
.bitmap = " ### #### ### ####### ### ",
},
{
.width = 6,
.height = 2,
.yoffset = 7,
.bitmap = "############",
},
{
.width = 4,
.height = 3,
.yoffset = 10,
.bitmap = " ## ########",
},
{
.width = 9,
.height = 15,
.yoffset = 0,
.bitmap = " ## ## ### ## ### ## ### ## ## ### ## ### ## ### ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### ## ## ## ##### ###### ########## ###### ##### ## ## ## ###### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " ## #### ##### ## ## ## ## ## ## ## ## ################",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### # ## ## ## ### ## ### ### ### ################",
},
{
.width = 7,
.height = 12,
.yoffset = 1,
.bitmap = "##### ####### ## ## ## ##### ##### ## ## ######## ##### ",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = " ### ### #### ##### ## ## ### ## ### ## ## ## #################### ## ## ",
},
{
.width = 7,
.height = 12,
.yoffset = 1,
.bitmap = "###### ###### ## ## ##### ###### ## ## ## ######### ##### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ##### ## ## ###### ####### ## #### #### ##### ### ###### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "################ ### ## ### ## ### ## ### ### ### ### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ######### #### ##### ### ###### ###### ### ##### #### ######### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### ### ##### #### #### ## ####### ###### ## ## ##### #### ",
},
{
.width = 3,
.height = 9,
.yoffset = 4,
.bitmap = "######### #########",
},
{
.width = 5,
.height = 12,
.yoffset = 4,
.bitmap = " ### ### ### ### #### ### ####### ### ",
},
{
.width = 7,
.height = 10,
.yoffset = 3,
.bitmap = " # ### ### #### #### #### #### ### ### # ",
},
{
.width = 8,
.height = 5,
.yoffset = 6,
.bitmap = "################ ################",
},
{
.width = 7,
.height = 10,
.yoffset = 3,
.bitmap = " # ### ### #### #### #### #### ### ### # ",
},
{
.width = 6,
.height = 13,
.yoffset = 0,
.bitmap = "### ##### ### ## ## ##### #### ## ## ## ### ### ### ",
},
{
.width = 10,
.height = 16,
.yoffset = 0,
.bitmap = " #### ####### ## ## ## ## ## ##################### ######## ######## ######## ############## ## ###### ## ## ## ####### ##### ",
},
{
.width = 12,
.height = 12,
.yoffset = 1,
.bitmap = " ### #### #### ###### ## ## ## ## ### ### ######## ######## ### ### ## ## ### ###",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "###### ########## #### #### ########## ####### ## #### #### ######### ###### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### ## ### ## ## ## ## ## ## # ####### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "##### ####### ## ## ## #### #### #### #### #### ##### ## ####### ##### ",
},
{
.width = 7,
.height = 12,
.yoffset = 1,
.bitmap = "################ ## ## ################ ## ## ##############",
},
{
.width = 7,
.height = 12,
.yoffset = 1,
.bitmap = "################ ## ## ################ ## ## ## ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### ## #### ## ## ###### ###### #### ## ## ## ####### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "## #### #### #### #### #################### #### #### #### #### ##",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "################ ## ## ## ## ## ## ## ## ################",
},
{
.width = 6,
.height = 12,
.yoffset = 1,
.bitmap = "############ ## ## ## ## ## ## ### ####### ### ",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = "## ### ## ### ## ### ## ### ##### #### #### ##### ## ### ## ### ## ### ## ### ",
},
{
.width = 7,
.height = 12,
.yoffset = 1,
.bitmap = "## ## ## ## ## ## ## ## ## ## ##############",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = "### ####### ######## ######## ############################## ###### ## ###### ###### ###### ###### ###",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "### ##### ###### ###### ###### #### ## #### ## #### ###### ###### ###### ##### ###",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = " #### ######## ## ## ### #### #### #### #### #### ### ## ## ######## #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "###### ####### ## ##### #### #### ########## ###### ## ## ## ## ",
},
{
.width = 9,
.height = 15,
.yoffset = 1,
.bitmap = " #### ####### ## ## ## #### #### #### #### #### ## ## ## ####### ##### ## # ##### ### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "##### ####### ## ## ## ## ## ## ###### ##### ## ### ## ### ## ### ## ##### ###",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = " #### ###### ## # ## ### ##### ##### ### #### ######### ##### ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "################ ## ## ## ## ## ## ## ## ## ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "## #### #### #### #### #### #### #### #### #### ### ###### #### ",
},
{
.width = 12,
.height = 12,
.yoffset = 1,
.bitmap = "### ### ### ## ### ### ## ## ### ### ### ### ## ## ###### ###### #### #### ### ",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = " ## # ## ## ## ## ## ## ## ## ## ## ## ## ######## ######## ######## ######## ### ### ### ### ",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = "### ### ## ## ### ### ###### #### #### #### #### ###### ### ### ### ### ### ###",
},
{
.width = 10,
.height = 12,
.yoffset = 1,
.bitmap = "## ##### ### ## ## ## ## ###### #### #### ## ## ## ## ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 1,
.bitmap = "################ ## ### ## ### ### ### ### ## ################",
},
{
.width = 5,
.height = 16,
.yoffset = 0,
.bitmap = "############ ## ## ## ## ## ## ## ## ## ## ## ##########",
},
{
.width = 9,
.height = 15,
.yoffset = 0,
.bitmap = "## ### ## ### ## ### ## ## ### ## ### ## ### ## ## ",
},
{
.width = 5,
.height = 16,
.yoffset = 0,
.bitmap = "########## ## ## ## ## ## ## ## ## ## ## ## ############",
},
{
.width = 10,
.height = 6,
.yoffset = 1,
.bitmap = " ## #### ###### ## ## ## ## ### ###",
},
{
.width = 10,
.height = 2,
.yoffset = 14,
.bitmap = "####################",
},
{
.width = 7,
.height = 5,
.yoffset = 0,
.bitmap = " ### ### ## ",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = " #### ###### # ## ############## #### ########## ######",
},
{
.width = 8,
.height = 13,
.yoffset = 0,
.bitmap = "## ## ## ## ###### ####### ### #### #### #### #### ########## ##### ",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = " #### ######### ### ## ## ### # ###### #### ",
},
{
.width = 8,
.height = 13,
.yoffset = 0,
.bitmap = " ## ## ## ## ###### ########## #### #### #### #### ### ####### ### ##",
},
{
.width = 8,
.height = 9,
.yoffset = 4,
.bitmap = " #### ###### ### #################### ### ####### ######",
},
{
.width = 9,
.height = 13,
.yoffset = 0,
.bitmap = " #### ##### ## ## ## ####### ####### ## ## ## ## ## ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 4,
.bitmap = " ################ ## ## ## ####### ###### ## ####### ########## ########## ##### ",
},
{
.width = 7,
.height = 13,
.yoffset = 0,
.bitmap = "## ## ## ## ###### ########## #### #### #### #### #### #### ##",
},
{
.width = 8,
.height = 13,
.yoffset = 0,
.bitmap = " ### ### ### ##### ##### ## ## ## ## ## ################",
},
{
.width = 7,
.height = 16,
.yoffset = 0,
.bitmap = " ### ### ### ############## ## ## ## ## ## ## ### ######## #### ",
},
{
.width = 9,
.height = 13,
.yoffset = 0,
.bitmap = "## ## ## ## ## ### ## ### ##### #### #### ##### ## ### ## ### ## ### ",
},
{
.width = 8,
.height = 13,
.yoffset = 0,
.bitmap = "##### ##### ## ## ## ## ## ## ## ## ## ################",
},
{
.width = 8,
.height = 9,
.yoffset = 4,
.bitmap = "#### ## ################## ## #### ## #### ## #### ## #### ## #### ## ##",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = "###### ########## #### #### #### #### #### #### ##",
},
{
.width = 8,
.height = 9,
.yoffset = 4,
.bitmap = " #### ###### ### ##### #### #### ##### ### ###### #### ",
},
{
.width = 8,
.height = 12,
.yoffset = 4,
.bitmap = "###### ####### ### #### #### #### #### ########## ###### ## ## ## ",
},
{
.width = 8,
.height = 12,
.yoffset = 4,
.bitmap = " ###### ########## #### #### #### #### ### ####### ###### ## ## ##",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = "###### ########## #### #### ## ## ## ## ",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = " ##### ###### ## #### ##### #### ############### ",
},
{
.width = 9,
.height = 12,
.yoffset = 1,
.bitmap = " # ## ## ################## ## ## ## ## ## ###### #####",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = "## #### #### #### #### #### #### ########## ######",
},
{
.width = 10,
.height = 9,
.yoffset = 4,
.bitmap = "### ### ## ## ### ### ## ## ## ## ###### #### #### ## ",
},
{
.width = 10,
.height = 9,
.yoffset = 4,
.bitmap = "### ### ## ## ## ## ## ## ## ## ######## ######## ######## ### #### ### ### ",
},
{
.width = 11,
.height = 9,
.yoffset = 4,
.bitmap = " ### ### ### ### ### ### ##### #### #### ###### ###### ### ### ",
},
{
.width = 10,
.height = 12,
.yoffset = 4,
.bitmap = "### ### ### ## ### ### ## ## ###### ##### #### ### ## ### ##### #### ",
},
{
.width = 7,
.height = 9,
.yoffset = 4,
.bitmap = "############## ## ## ### ## ### ##############",
},
{
.width = 7,
.height = 16,
.yoffset = 0,
.bitmap = " ### #### ## ## ## ## ## ### #### ## ## ## ## ## ##### ####",
},
{
.width = 2,
.height = 18,
.yoffset = -2,
.bitmap = "####################################",
},
{
.width = 7,
.height = 16,
.yoffset = 0,
.bitmap = "### #### ## ## ## ## ## ### #### ## ## ## ## ## ##### #### ",
},
{
.width = 9,
.height = 4,
.yoffset = 6,
.bitmap = " ### ######## #### ######## #### ",
},
{
.width = 0,
.height = 0,
.yoffset = 0,
.bitmap = NULL,
},
};

View File

@ -9,9 +9,10 @@
#define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT 768
#define FONT_SIZE 13
#define VGA_WIDTH (SCREEN_WIDTH / FONT_SIZE)
#define VGA_HEIGHT (SCREEN_HEIGHT / FONT_SIZE)
#define FONT_WIDTH 13
#define FONT_HEIGHT 17
#define VGA_WIDTH (SCREEN_WIDTH / FONT_WIDTH)
#define VGA_HEIGHT (SCREEN_HEIGHT / FONT_HEIGHT)
#define TERM_COUNT 10
struct screen {
@ -19,7 +20,7 @@ struct screen {
size_t column;
uint32_t fg_color;
uint32_t bg_color;
uint16_t buffer[VGA_WIDTH * VGA_HEIGHT];
uint8_t buffer[VGA_WIDTH * VGA_HEIGHT];
uint32_t default_color;
struct icon *background;
struct font *font;