Don't load fonts in doctests (#1711)

I was hoping this would speed up the doctests, but it doesn't really
This commit is contained in:
Emil Ernerfeldt 2022-06-10 14:33:16 +02:00 committed by GitHub
parent 317436c057
commit 8c7c4c764b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 51 deletions

View file

@ -527,6 +527,7 @@ pub enum WidgetType {
/// For use in tests; especially doctests. /// For use in tests; especially doctests.
pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) { pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) {
let ctx = Context::default(); let ctx = Context::default();
ctx.set_fonts(FontDefinitions::empty()); // prevent fonts from being loaded (save CPU time)
let _ = ctx.run(Default::default(), |ctx| { let _ = ctx.run(Default::default(), |ctx| {
run_ui(ctx); run_ui(ctx);
}); });
@ -535,6 +536,7 @@ pub fn __run_test_ctx(mut run_ui: impl FnMut(&Context)) {
/// For use in tests; especially doctests. /// For use in tests; especially doctests.
pub fn __run_test_ui(mut add_contents: impl FnMut(&mut Ui)) { pub fn __run_test_ui(mut add_contents: impl FnMut(&mut Ui)) {
let ctx = Context::default(); let ctx = Context::default();
ctx.set_fonts(FontDefinitions::empty()); // prevent fonts from being loaded (save CPU time)
let _ = ctx.run(Default::default(), |ctx| { let _ = ctx.run(Default::default(), |ctx| {
crate::CentralPanel::default().show(ctx, |ui| { crate::CentralPanel::default().show(ctx, |ui| {
add_contents(ui); add_contents(ui);

View file

@ -244,65 +244,65 @@ pub struct FontDefinitions {
} }
impl Default for FontDefinitions { impl Default for FontDefinitions {
/// Specifies the default fonts if the feature `default_fonts` is enabled,
/// otherwise this is the same as [`Self::empty`].
#[cfg(not(feature = "default_fonts"))]
fn default() -> Self {
Self::empty()
}
/// Specifies the default fonts if the feature `default_fonts` is enabled,
/// otherwise this is the same as [`Self::empty`].
#[cfg(feature = "default_fonts")]
fn default() -> Self { fn default() -> Self {
#[allow(unused)]
let mut font_data: BTreeMap<String, FontData> = BTreeMap::new(); let mut font_data: BTreeMap<String, FontData> = BTreeMap::new();
let mut families = BTreeMap::new(); let mut families = BTreeMap::new();
#[cfg(feature = "default_fonts")] font_data.insert(
{ "Hack".to_owned(),
font_data.insert( FontData::from_static(include_bytes!("../../fonts/Hack-Regular.ttf")),
);
font_data.insert(
"Ubuntu-Light".to_owned(),
FontData::from_static(include_bytes!("../../fonts/Ubuntu-Light.ttf")),
);
// Some good looking emojis. Use as first priority:
font_data.insert(
"NotoEmoji-Regular".to_owned(),
FontData::from_static(include_bytes!("../../fonts/NotoEmoji-Regular.ttf")),
);
// Bigger emojis, and more. <http://jslegers.github.io/emoji-icon-font/>:
font_data.insert(
"emoji-icon-font".to_owned(),
FontData::from_static(include_bytes!("../../fonts/emoji-icon-font.ttf")).tweak(
FontTweak {
scale: 0.8, // make it smaller
y_offset_factor: 0.07, // move it down slightly
y_offset: 0.0,
},
),
);
families.insert(
FontFamily::Monospace,
vec![
"Hack".to_owned(), "Hack".to_owned(),
FontData::from_static(include_bytes!("../../fonts/Hack-Regular.ttf")), "Ubuntu-Light".to_owned(), // fallback for √ etc
);
font_data.insert(
"Ubuntu-Light".to_owned(),
FontData::from_static(include_bytes!("../../fonts/Ubuntu-Light.ttf")),
);
// Some good looking emojis. Use as first priority:
font_data.insert(
"NotoEmoji-Regular".to_owned(), "NotoEmoji-Regular".to_owned(),
FontData::from_static(include_bytes!("../../fonts/NotoEmoji-Regular.ttf")),
);
// Bigger emojis, and more. <http://jslegers.github.io/emoji-icon-font/>:
font_data.insert(
"emoji-icon-font".to_owned(), "emoji-icon-font".to_owned(),
FontData::from_static(include_bytes!("../../fonts/emoji-icon-font.ttf")).tweak( ],
FontTweak { );
scale: 0.8, // make it smaller families.insert(
y_offset_factor: 0.07, // move it down slightly FontFamily::Proportional,
y_offset: 0.0, vec![
}, "Ubuntu-Light".to_owned(),
), "NotoEmoji-Regular".to_owned(),
); "emoji-icon-font".to_owned(),
],
families.insert( );
FontFamily::Monospace,
vec![
"Hack".to_owned(),
"Ubuntu-Light".to_owned(), // fallback for √ etc
"NotoEmoji-Regular".to_owned(),
"emoji-icon-font".to_owned(),
],
);
families.insert(
FontFamily::Proportional,
vec![
"Ubuntu-Light".to_owned(),
"NotoEmoji-Regular".to_owned(),
"emoji-icon-font".to_owned(),
],
);
}
#[cfg(not(feature = "default_fonts"))]
{
families.insert(FontFamily::Monospace, vec![]);
families.insert(FontFamily::Proportional, vec![]);
}
Self { Self {
font_data, font_data,
@ -311,6 +311,20 @@ impl Default for FontDefinitions {
} }
} }
impl FontDefinitions {
/// No fonts.
pub fn empty() -> Self {
let mut families = BTreeMap::new();
families.insert(FontFamily::Monospace, vec![]);
families.insert(FontFamily::Proportional, vec![]);
Self {
font_data: Default::default(),
families,
}
}
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
/// The collection of fonts used by `epaint`. /// The collection of fonts used by `epaint`.