pub fn bundled_font_data() -> Vec<(&'static str, &'static [u8])> {
vec![
(
"Carlito",
include_bytes!("../fonts/Carlito-Regular.ttf").as_slice(),
),
(
"Carlito",
include_bytes!("../fonts/Carlito-Bold.ttf").as_slice(),
),
(
"Carlito",
include_bytes!("../fonts/Carlito-Italic.ttf").as_slice(),
),
(
"Carlito",
include_bytes!("../fonts/Carlito-BoldItalic.ttf").as_slice(),
),
(
"Caladea",
include_bytes!("../fonts/Caladea-Regular.ttf").as_slice(),
),
(
"Caladea",
include_bytes!("../fonts/Caladea-Bold.ttf").as_slice(),
),
(
"Caladea",
include_bytes!("../fonts/Caladea-Italic.ttf").as_slice(),
),
(
"Caladea",
include_bytes!("../fonts/Caladea-BoldItalic.ttf").as_slice(),
),
(
"Liberation Sans",
include_bytes!("../fonts/LiberationSans-Regular.ttf").as_slice(),
),
(
"Liberation Sans",
include_bytes!("../fonts/LiberationSans-Bold.ttf").as_slice(),
),
(
"Liberation Sans",
include_bytes!("../fonts/LiberationSans-Italic.ttf").as_slice(),
),
(
"Liberation Sans",
include_bytes!("../fonts/LiberationSans-BoldItalic.ttf").as_slice(),
),
(
"Liberation Serif",
include_bytes!("../fonts/LiberationSerif-Regular.ttf").as_slice(),
),
(
"Liberation Serif",
include_bytes!("../fonts/LiberationSerif-Bold.ttf").as_slice(),
),
(
"Liberation Serif",
include_bytes!("../fonts/LiberationSerif-Italic.ttf").as_slice(),
),
(
"Liberation Serif",
include_bytes!("../fonts/LiberationSerif-BoldItalic.ttf").as_slice(),
),
(
"Liberation Mono",
include_bytes!("../fonts/LiberationMono-Regular.ttf").as_slice(),
),
(
"Liberation Mono",
include_bytes!("../fonts/LiberationMono-Bold.ttf").as_slice(),
),
(
"Liberation Mono",
include_bytes!("../fonts/LiberationMono-Italic.ttf").as_slice(),
),
(
"Liberation Mono",
include_bytes!("../fonts/LiberationMono-BoldItalic.ttf").as_slice(),
),
]
}
#[cfg(test)]
mod tests {
use super::bundled_font_data;
use std::collections::BTreeSet;
use std::path::Path;
#[test]
fn every_bundled_font_family_has_a_licence_file() {
let family_licences = [
("Caladea", "LICENSE-Caladea"),
("Carlito", "LICENSE-Carlito"),
("Liberation Mono", "LICENSE-Liberation"),
("Liberation Sans", "LICENSE-Liberation"),
("Liberation Serif", "LICENSE-Liberation"),
];
let bundled_families = bundled_font_data()
.into_iter()
.map(|(family, _)| family)
.collect::<BTreeSet<_>>();
let licensed_families = family_licences
.iter()
.map(|(family, _)| *family)
.collect::<BTreeSet<_>>();
assert_eq!(bundled_families, licensed_families);
let fonts_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("fonts");
for (family, licence_file) in family_licences {
assert!(
fonts_dir.join(licence_file).is_file(),
"{family} is missing {licence_file}"
);
}
assert!(fonts_dir.join("NOTICE-Caladea").is_file());
}
}