fix: use include_bytes to embed Chinese font
This commit is contained in:
46
src/gui.rs
46
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<RwLock<AppState>>;
|
||||
|
||||
@@ -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<String, FontData> = 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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user