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