Skip to main content

mos_fonts/
resources.rs

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
20// Baked at build time by `build.rs`: 256 entries `b"F0"`..`b"F255"`
21// indexed by `EmbeddedFontId::pdf_resource_index`.
22include!(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});