From 9bb7af612c53e2b887427b4fdc7a7c4f291eba83 Mon Sep 17 00:00:00 2001 From: Sofia Date: Sat, 13 Sep 2025 15:11:53 +0300 Subject: [PATCH] Improve font rendering --- src/font.rs | 47 +++++++++++++++++++++++------------------------ src/main.rs | 4 ++-- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/font.rs b/src/font.rs index 1ceaf6b..2c4ee4c 100644 --- a/src/font.rs +++ b/src/font.rs @@ -41,8 +41,8 @@ fn letter(character: char) -> [u8; 8] { 0b10000001, ], 'i' => [ - 0b00111000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, - 0b00111000, + 0b00111100, 0b00011000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, + 0b00111100, ], 'j' => [ 0b00001110, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b10000010, 0b10000010, @@ -57,7 +57,7 @@ fn letter(character: char) -> [u8; 8] { 0b11111111, ], 'm' => [ - 0b01100110, 0b10011001, 0b10010001, 0b10010001, 0b10010001, 0b10000001, 0b10000001, + 0b00100100, 0b11011011, 0b10011001, 0b10011001, 0b10011001, 0b10000001, 0b10000001, 0b10000001, ], 'n' => [ @@ -105,7 +105,7 @@ fn letter(character: char) -> [u8; 8] { 0b10000001, ], 'y' => [ - 0b10000001, 0b10000001, 0b01000010, 0b00111100, 0b00011000, 0b00011000, 0b00011000, + 0b10000001, 0b01000010, 0b00100100, 0b00011000, 0b00011000, 0b00011000, 0b00011000, 0b00011000, ], 'z' => [ @@ -137,33 +137,32 @@ pub fn draw_text( let kerning = 9 * scale; let original_x = position.x; - for word in text.split(' ') { - let word_length = word.len() as u16 * kerning; - if curr_pos.x + word_length > 240 { - curr_pos.x = original_x; - curr_pos.y += kerning; - } - - for c in word.chars() { - if c == '\n' { - curr_pos.y += kerning; - continue; - } - if curr_pos.x + kerning > 240 { + for line in text.split('\n') { + for word in line.split(' ') { + let word_length = word.len() as u16 * kerning; + if curr_pos.x + word_length > 240 { curr_pos.x = original_x; curr_pos.y += kerning; } - if curr_pos.y + kerning > 240 { - curr_pos.y = 0; + + for c in word.chars() { + if curr_pos.x + kerning > 240 { + curr_pos.x = original_x; + curr_pos.y += kerning; + } + if curr_pos.y + kerning > 240 { + curr_pos.y = 0; + } + + Letter::from(c, fg, bg) + .iter() + .draw(display, curr_pos, scale); + curr_pos.x += kerning; } - Letter::from(c, fg, bg) - .iter() - .draw(display, curr_pos, scale); curr_pos.x += kerning; } - - curr_pos.x += kerning; + curr_pos.y += kerning; } } diff --git a/src/main.rs b/src/main.rs index 24929c5..b6e66e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -96,9 +96,9 @@ fn main() -> ! { draw_text( &mut display, - "hello there!", + "hi,my name is adafruit!nice to meet you!", Rgb565::white(), - Rgb565::red(), + Rgb565::black(), Vec2 { x: 10, y: 10 }, 3, );