From 28d06825cec962d99dd3d7c5a355fe49ec7244cd Mon Sep 17 00:00:00 2001 From: Sofia Date: Wed, 13 May 2026 21:24:03 +0300 Subject: [PATCH] Add font rendering --- Cargo.lock | 43 ++++++++++++++++ Cargo.toml | 7 ++- src/OpenSans_Condensed-Regular.ttf | Bin 0 -> 130492 bytes src/main.rs | 80 ++++++++++++++++++++++------- 4 files changed, 111 insertions(+), 19 deletions(-) create mode 100644 src/OpenSans_Condensed-Regular.ttf diff --git a/Cargo.lock b/Cargo.lock index 2874ff3..cbbc835 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" +dependencies = [ + "libm", +] + [[package]] name = "allocator-api2" version = "0.3.1" @@ -594,7 +603,9 @@ dependencies = [ "esp-bootloader-esp-idf", "esp-hal", "esp-println", + "libm", "log", + "rusttype", ] [[package]] @@ -826,6 +837,12 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "linked_list_allocator" version = "0.10.6" @@ -874,6 +891,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "owned_ttf_parser" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e6affeb1632d6ff6a23d2cd40ffed138e82f1532571a26f527c8a284bb2fbb" +dependencies = [ + "ttf-parser", +] + [[package]] name = "paste" version = "1.0.15" @@ -1018,6 +1044,17 @@ dependencies = [ "svgbobdoc", ] +[[package]] +name = "rusttype" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff8374aa04134254b7995b63ad3dc41c7f7236f69528b28553da7d72efaa967" +dependencies = [ + "ab_glyph_rasterizer", + "libm", + "owned_ttf_parser", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -1223,6 +1260,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "ttf-parser" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" + [[package]] name = "typenum" version = "1.20.0" diff --git a/Cargo.toml b/Cargo.toml index 727de0a..2555064 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ esp-bootloader-esp-idf = { version = "0.5.0", features = ["esp32", "log-04"] } log = "0.4.27" critical-section = "1.2.0" -esp-alloc = "0.10.0" +esp-alloc = { version = "0.10.0", features = ["esp32"] } esp-backtrace = { version = "0.19.0", features = [ "esp32", "panic-handler", @@ -20,6 +20,11 @@ esp-backtrace = { version = "0.19.0", features = [ ] } esp-println = { version = "0.17.0", features = ["esp32", "log-04"] } +# ttf-parser = {version = "^0.25.0", features = ["no-std-float"], default-features = false } +rusttype = {version = "^0.9.0", features = ["libm-math"], default-features = false } + +libm = "*" + # For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html [profile.dev] diff --git a/src/OpenSans_Condensed-Regular.ttf b/src/OpenSans_Condensed-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..67a73b86aa5a29830eaefc43d4991f24ed4acd3a GIT binary patch literal 130492 zcmbS!2Vm4i_WzXcZYmIp0ZGVivdN|=yPIqZHJyZ(KnNs&kWCMyUXdnym{}y#8uo>>&OE_B|2(LazNe_7z|7mxi*Ag8W)_b$|Z-|tC(F-9Y}=s%)$e{ezP zWt>FV;<~OT3J!}Ko4NpKbC;`yhNFfRJv5>eBaDua)kQx<4;j@cWW^pwTK0_&BNJr_ zjbDx&v~Nh$UIJye4%th@!M4c~DmqD+Cx@8Bkc<w1gCrfBC;$@)hK|2r1+Uv#@)dq5`3Ap~d{0XV zrR8)w;k1HQ0G~-K5znIah#P4);>DOFO7}s*D04C=;cNn%0DLl=jJT9dLp+_$L|nxd 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 literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index c15617c..2635b36 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,8 +7,9 @@ )] #![deny(clippy::large_stack_frames)] -// use embedded_graphics::{pixelcolor::Rgb565, prelude::DrawTarget}; -// use embedded_hal_bus::spi::ExclusiveDevice; +use core::{hint::black_box, mem::MaybeUninit}; + +use alloc::vec::Vec; use esp_hal::{ clock::CpuClock, delay::Delay, @@ -19,16 +20,19 @@ use esp_hal::{ }; use esp_backtrace as _; -// use mipidsi::{Builder, interface::SpiInterface, models::ST7789}; +use rusttype::Font; use crate::display::{Color, Display, Position, Rgb565, SetAddressMode}; +use esp_alloc::HEAP; -// use crate::display::{Color, Display, Position, Rgb565, Rotation}; +use alloc::vec; extern crate alloc; mod display; +static OPEN_SANS: &'static [u8] = include_bytes!("./OpenSans_Condensed-Regular.ttf"); + // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); @@ -91,7 +95,7 @@ fn main() -> ! { }; display.init(SetAddressMode { - color_order: display::ColorOrder::Bgr, + color_order: display::ColorOrder::Rgb, ..Default::default() }); display.set_tearing(display::TearingMode::Off); @@ -102,24 +106,64 @@ fn main() -> ! { Rgb565::yellow().as_color(), ); - let test_delay = Delay::new(); + let font = Font::try_from_bytes(OPEN_SANS).unwrap(); + let glyph = font.glyph('a'); + const SCALE: u16 = 30; + let scale = rusttype::Scale { + x: SCALE as f32 * 2., + y: SCALE as f32, + }; + let v_metrics = font.v_metrics(scale); + let offset = rusttype::Point { + x: 0.0, + y: v_metrics.ascent, + }; + let glyphs = font + .layout("Hello world", scale, offset) + .collect::>(); - let mut color = 0; + let width = libm::ceil( + glyphs + .iter() + .rev() + .map(|g| g.position().x as f32 + g.unpositioned().h_metrics().advance_width) + .next() + .unwrap_or(0.0) as f64, + ) as usize; + + let mut pixel_data = vec![Rgb565::white(); SCALE as usize * width]; + + for g in glyphs { + if let Some(bb) = g.pixel_bounding_box() { + g.draw(|x, y, cov| { + let x = bb.min.x + x as i32; + let y = bb.min.y + y as i32; + if x >= 0 && y >= 0 && x < width as i32 && y < SCALE as i32 { + let col = 255 - (255. * cov) as u8; + pixel_data[(x + y * width as i32) as usize] = Rgb565(col, col, col); + } + }); + } + } + + display.set_window( + Position { x: 0, y: 0 }, + Position { + x: width as u16 - 1, + y: SCALE as u16 - 1, + }, + ); + display.write(display::Writeable::Data( + &pixel_data + .iter() + .flat_map(|p| p.as_color().bytes) + .collect::>(), + )); loop { let delay_start = Instant::now(); - log::info!("Hello world: {}", color); - - color = (color + 50) % 200; - - display.draw_rect( - Position::new(0, 0), - Position::new(240, 240), - Color { - bytes: [color, color], - }, - ); + log::info!("Hello world"); while delay_start.elapsed() < Duration::from_millis(100) {} // test_delay.delay_millis(1);