From 89445d3a500f0fab251275d55572e64367a8d665 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sat, 11 Apr 2026 00:18:37 +0800 Subject: [PATCH] fix: use include_bytes to embed Chinese font --- src/gui.rs | 46 +++++++++++++++------------------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/src/gui.rs b/src/gui.rs index fce55b2..c955c83 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -5,7 +5,6 @@ use std::sync::{Arc, RwLock, Mutex}; use dotenv::dotenv; use std::env; use std::thread; -use std::collections::BTreeMap; pub type SharedState = Arc>; @@ -70,40 +69,25 @@ pub fn gui_run() { }; run_native("Proxmox VM Controller", options, Box::new(|cc| { - cc.egui_ctx.set_fonts(load_font_definitions()); + let mut fonts = FontDefinitions::default(); + + fonts.font_data.insert( + "my_font".to_owned(), + FontData::from_static(include_bytes!(r"C:\Windows\Fonts\msyh.ttc")), + ); + + fonts.families.get_mut(&FontFamily::Proportional) + .unwrap() + .insert(0, "my_font".to_owned()); + fonts.families.get_mut(&FontFamily::Monospace) + .unwrap() + .insert(0, "my_font".to_owned()); + + cc.egui_ctx.set_fonts(fonts); Ok(Box::new(App::new())) })).unwrap(); } -fn load_font_definitions() -> FontDefinitions { - let font_paths = [ - r"C:\Windows\Fonts\msyh.ttc", - r"C:\Windows\Fonts\msyh.ttf", - r"C:\Windows\Fonts\simhei.ttf", - ]; - - let mut font_data: BTreeMap = BTreeMap::new(); - let mut loaded_name = String::new(); - - for path in font_paths { - if let Ok(data) = std::fs::read(path) { - let name = if path.contains("msyh") { "msyh" } else { "simhei" }; - loaded_name = name.to_owned(); - font_data.insert(name.to_owned(), FontData::from_owned(data)); - break; - } - } - - let mut fonts: FontDefinitions = Default::default(); - if !loaded_name.is_empty() { - fonts.font_data = font_data; - fonts.families.entry(FontFamily::Proportional).or_default().insert(0, loaded_name.clone()); - fonts.families.entry(FontFamily::Monospace).or_default().insert(0, loaded_name); - } - - fonts -} - struct App { state: SharedState, }