1use std::sync::LazyLock;
2
3use crate::{EmbeddedFont, EmbeddedFontId};
4
5#[must_use]
7pub(crate) fn embedded_font(id: EmbeddedFontId) -> &'static EmbeddedFont {
8 match id {
9 EmbeddedFontId::Regular => &NOTO_SANS_REGULAR,
10 EmbeddedFontId::Bold => &NOTO_SANS_BOLD,
11 EmbeddedFontId::Italic => &NOTO_SANS_ITALIC,
12 EmbeddedFontId::BoldItalic => &NOTO_SANS_BOLD_ITALIC,
13 EmbeddedFontId::Mono => &NOTO_SANS_MONO,
14 EmbeddedFontId::Math => &NOTO_SANS_MATH,
15 }
16}
17
18#[must_use]
20pub(crate) const fn pdf_resource_name(id: EmbeddedFontId) -> &'static [u8] {
21 RESOURCE_NAMES[id.pdf_resource_index() as usize]
22}
23
24include!(concat!(env!("OUT_DIR"), "/resource_names.rs"));
27
28static NOTO_SANS_REGULAR: LazyLock<EmbeddedFont> = LazyLock::new(|| {
29 EmbeddedFont::from_static(
30 include_bytes!("../data/NotoSans-Regular.ttf"),
31 "NotoSans",
32 false,
33 false,
34 )
35});
36
37static NOTO_SANS_BOLD: LazyLock<EmbeddedFont> = LazyLock::new(|| {
38 EmbeddedFont::from_static(
39 include_bytes!("../data/NotoSans-Bold.ttf"),
40 "NotoSans-Bold",
41 true,
42 false,
43 )
44});
45
46static NOTO_SANS_ITALIC: LazyLock<EmbeddedFont> = LazyLock::new(|| {
47 EmbeddedFont::from_static(
48 include_bytes!("../data/NotoSans-Italic.ttf"),
49 "NotoSans-Italic",
50 false,
51 true,
52 )
53});
54
55static NOTO_SANS_BOLD_ITALIC: LazyLock<EmbeddedFont> = LazyLock::new(|| {
56 EmbeddedFont::from_static(
57 include_bytes!("../data/NotoSans-BoldItalic.ttf"),
58 "NotoSans-BoldItalic",
59 true,
60 true,
61 )
62});
63
64static NOTO_SANS_MONO: LazyLock<EmbeddedFont> = LazyLock::new(|| {
65 EmbeddedFont::from_static(
66 include_bytes!("../data/NotoSansMono-Regular.ttf"),
67 "NotoSansMono",
68 false,
69 false,
70 )
71});
72
73static NOTO_SANS_MATH: LazyLock<EmbeddedFont> = LazyLock::new(|| {
74 EmbeddedFont::from_static(
75 include_bytes!("../data/NotoSansMath-Regular.ttf"),
76 "NotoSansMath",
77 false,
78 false,
79 )
80});