
Closes https://github.com/emilk/egui/issues/2068 Before this PR, the default font, Ubuntu-Light, was ~11% smaller than it should have been, and the default monospace font, Hack, was ~14% smaller. This means that setting the font size `12` in egui would yield smaller text than using that font size in any other app. Ooops! The change is that this PR now takes into account the ttf properties `units_per_em` and `height_unscaled`. If your egui application has specified you own font sizes or text styles you will see the text in your application grow larger, unless you go in and compensate by dividing all font sizes by ~1.21 for Ubuntu-Light/Proportional and ~1.16 for Hack/Monospace, and with something else if you are using a custom font! This effects any use of `FontId`, `RichText::size`, etc. This PR changes the default `Style::text_styles` to compensate, so the default egui style should look the same before and after this PR.
71 lines
2.3 KiB
Rust
71 lines
2.3 KiB
Rust
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
|
|
|
use eframe::egui;
|
|
use egui::{FontFamily, FontId, RichText, TextStyle};
|
|
|
|
#[inline]
|
|
fn heading2() -> TextStyle {
|
|
TextStyle::Name("Heading2".into())
|
|
}
|
|
|
|
#[inline]
|
|
fn heading3() -> TextStyle {
|
|
TextStyle::Name("ContextHeading".into())
|
|
}
|
|
|
|
fn configure_text_styles(ctx: &egui::Context) {
|
|
use FontFamily::Proportional;
|
|
|
|
let mut style = (*ctx.style()).clone();
|
|
style.text_styles = [
|
|
(TextStyle::Heading, FontId::new(25.0, Proportional)),
|
|
(heading2(), FontId::new(22.0, Proportional)),
|
|
(heading3(), FontId::new(19.0, Proportional)),
|
|
(TextStyle::Body, FontId::new(16.0, Proportional)),
|
|
(TextStyle::Monospace, FontId::new(12.0, Proportional)),
|
|
(TextStyle::Button, FontId::new(12.0, Proportional)),
|
|
(TextStyle::Small, FontId::new(8.0, Proportional)),
|
|
]
|
|
.into();
|
|
ctx.set_style(style);
|
|
}
|
|
|
|
fn content(ui: &mut egui::Ui) {
|
|
ui.heading("Top Heading");
|
|
ui.add_space(5.);
|
|
ui.label(LOREM_IPSUM);
|
|
ui.add_space(15.);
|
|
ui.label(RichText::new("Sub Heading").text_style(heading2()).strong());
|
|
ui.label(LOREM_IPSUM);
|
|
ui.add_space(15.);
|
|
ui.label(RichText::new("Context").text_style(heading3()).strong());
|
|
ui.add_space(5.);
|
|
ui.label(LOREM_IPSUM);
|
|
}
|
|
|
|
struct MyApp;
|
|
|
|
impl MyApp {
|
|
fn new(cc: &eframe::CreationContext<'_>) -> Self {
|
|
configure_text_styles(&cc.egui_ctx);
|
|
Self
|
|
}
|
|
}
|
|
|
|
impl eframe::App for MyApp {
|
|
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
|
egui::CentralPanel::default().show(ctx, content);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let options = eframe::NativeOptions::default();
|
|
|
|
eframe::run_native(
|
|
"egui example: global font style",
|
|
options,
|
|
Box::new(|cc| Box::new(MyApp::new(cc))),
|
|
);
|
|
}
|
|
|
|
pub const LOREM_IPSUM: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
|