pub const CM_REGULAR: &[u8] = include_bytes!("../fonts/computer-modern/cmunrm.ttf");
pub const CM_BOLD: &[u8] = include_bytes!("../fonts/computer-modern/cmunbx.ttf");
pub const CM_ITALIC: &[u8] = include_bytes!("../fonts/computer-modern/cmunti.ttf");
pub const CM_BOLD_ITALIC: &[u8] = include_bytes!("../fonts/computer-modern/cmunbi.ttf");
pub const CM_TYPEWRITER: &[u8] = include_bytes!("../fonts/computer-modern/cmuntt.ttf");
pub const PLEX_REGULAR: &[u8] = include_bytes!("../fonts/ibm-plex-sans/IBMPlexSans-Regular.ttf");
pub const PLEX_BOLD: &[u8] = include_bytes!("../fonts/ibm-plex-sans/IBMPlexSans-Bold.ttf");
pub const PLEX_ITALIC: &[u8] = include_bytes!("../fonts/ibm-plex-sans/IBMPlexSans-Italic.ttf");
pub const PLEX_BOLD_ITALIC: &[u8] =
include_bytes!("../fonts/ibm-plex-sans/IBMPlexSans-BoldItalic.ttf");
pub const NOTO_SANS_MATH_SYMBOLS: &[u8] =
include_bytes!("../fonts/noto-sans-math/NotoSansMathSymbols.ttf");
pub const ALL_FACES: [(&str, &[u8]); 10] = [
("cm-regular", CM_REGULAR),
("cm-bold", CM_BOLD),
("cm-italic", CM_ITALIC),
("cm-bold-italic", CM_BOLD_ITALIC),
("cm-typewriter", CM_TYPEWRITER),
("plex-regular", PLEX_REGULAR),
("plex-bold", PLEX_BOLD),
("plex-italic", PLEX_ITALIC),
("plex-bold-italic", PLEX_BOLD_ITALIC),
("noto-sans-math-symbols", NOTO_SANS_MATH_SYMBOLS),
];
#[cfg(test)]
#[allow(clippy::panic, clippy::expect_used)]
mod tests {
use super::ALL_FACES;
use crate::Font;
#[test]
fn every_bundled_face_parses() {
for (name, bytes) in ALL_FACES {
let font = Font::parse(bytes.to_vec())
.unwrap_or_else(|e| panic!("bundled face {name} failed to parse: {e}"));
assert!(font.units_per_em > 0, "{name}: zero units_per_em");
assert!(font.num_glyphs > 0, "{name}: zero glyphs");
}
}
}