From b1ac6988fae975916466f0c63ff673caf80f417f Mon Sep 17 00:00:00 2001 From: Nathan Date: Fri, 6 Jun 2025 17:07:55 -0600 Subject: [PATCH] account for variable width spacing --- dot-matrix/src/font/font.rs | 9 ++++++++- dot-matrix/src/main.rs | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dot-matrix/src/font/font.rs b/dot-matrix/src/font/font.rs index 4287090..1357a99 100644 --- a/dot-matrix/src/font/font.rs +++ b/dot-matrix/src/font/font.rs @@ -32,6 +32,8 @@ impl Font { } pub fn get_char_bitmap(&self, index: u64) -> Option>> { + let mut char_width: u8 = 0; + let bytes = self .font_parsed .get("data")? @@ -39,6 +41,8 @@ impl Font { .iter() .find(|entry| entry.get("n").map_or(false, |n| n == index)) .and_then(|character| { + char_width = character.get("w")?.as_u64().unwrap() as u8; + character.get("b")?.as_array().map(|arr| { arr.iter() .filter_map(|val| val.as_u64()) @@ -52,7 +56,10 @@ impl Font { .flat_map(|&byte| (0..8).rev().map(move |i| (byte >> i) & 1)) .collect::>(); - let char_matrix = bits.chunks(5).map(|chunk| chunk.to_vec()).collect(); + let char_matrix = bits + .chunks(char_width.into()) + .map(|chunk| chunk.to_vec()) + .collect(); Some(char_matrix) } diff --git a/dot-matrix/src/main.rs b/dot-matrix/src/main.rs index 37d7530..3de3199 100644 --- a/dot-matrix/src/main.rs +++ b/dot-matrix/src/main.rs @@ -76,7 +76,7 @@ fn build_ui(app: >k::Application) { // insert_matrix_at(&mut dot_matrix, &insert_matrix, 0, 6); // insert_matrix_at(&mut dot_matrix, &char_bitmap, 0, 12); - let thing = String::from("i"); + let thing = String::from("ABCDEFG"); let ascii_values: &Vec = &thing.chars().map(|c| c as u8).collect(); let mut col_offset = 0;