Finished partial BDF output

This commit is contained in:
2026-01-23 05:01:58 +00:00
parent df94c45f51
commit 5d372568e2

View File

@@ -3,7 +3,7 @@ use std::fmt::Display;
mod bit_reader;
fn main() {
let font_file = include_bytes!("u8g2_font_logisoso24_tr.u8g2font");
let font_file = include_bytes!("u8g2_font_8x13_tr.u8g2font");
let header_bytes = &font_file[0..23];
let mut data_bytes = &font_file[23..];
@@ -120,6 +120,8 @@ fn main() {
for i in glyphs.iter() {
bdf_file.push_str(&format!("STARTCHAR {}\n", i.unicode as char));
bdf_file.push_str(&format!("ENCODING {}\n", i.unicode));
bdf_file.push_str(&format!("BBX {} {} {} {}\n", i.glyph_width, i.glyph_height, i.glyph_x, i.glyph_y));
bdf_file.push_str("BITMAP\n");
let mut decoded_bits = Vec::new();
@@ -143,17 +145,37 @@ fn main() {
}
}
let mut bdf_bitmap: Vec<Vec<u8>> = Vec::new();
let mut decoded_bits_iter = decoded_bits.iter();
while !decoded_bits.is_empty() {
for j in decoded_bits.iter().by_ref().take(i.glyph_width as usize) {
for _ in 0..i.glyph_height {
let bitmap_row = decoded_bits_iter.by_ref().take(i.glyph_width as usize).cloned().collect::<Vec<_>>();
let (chunks, remainder) = bitmap_row.as_chunks::<8>();
let mut bitmap_row_bytes = Vec::new();
for k in chunks {
bitmap_row_bytes.push(k.iter().fold(0_u8, |v, b| (v << 1) + (*b as u8)));
}
if remainder.len() != 0 {
let bits = remainder.len();
let mut last_byte = remainder.iter().fold(0_u8, |v, b| (v << 1) + (*b as u8));
last_byte = last_byte << 8-bits;
bitmap_row_bytes.push(last_byte);
}
let mut bitmap_hex = String::new();
for byte in bitmap_row_bytes {
bitmap_hex.push_str(&format!("{:X}", byte));
}
bitmap_hex.push('\n');
bdf_file.push_str(&bitmap_hex);
}
bdf_file.push_str("ENDCHAR\n");
}
bdf_file.push_str("ENDFONT");
println!("{bdf_file}");
}
#[derive(Debug)]