Skip to main content

mos_fonts/
resources.rs

1use std::sync::LazyLock;
2
3use crate::{EmbeddedFont, EmbeddedFontId};
4
5/// Return bundled font data for `id`.
6#[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/// Return the PDF resource name for embedded font `id`.
19#[must_use]
20pub(crate) const fn pdf_resource_name(id: EmbeddedFontId) -> &'static [u8] {
21    RESOURCE_NAMES[id.pdf_resource_index() as usize]
22}
23
24// Baked at build time by `build.rs`: 256 entries `b"F0"`..`b"F255"`
25// indexed by `EmbeddedFontId::pdf_resource_index`.
26include!(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});