firefly_rust/graphics/
font.rs1use crate::*;
2
3pub struct Font<'a> {
8 pub(crate) raw: &'a [u8],
9}
10
11impl Font<'_> {
12 #[must_use]
14 pub fn is_ascii(&self) -> bool {
15 self.raw[1] == 0
16 }
17
18 #[must_use]
22 pub fn line_width_ascii(&self, t: &str) -> u32 {
23 t.len() as u32 * u32::from(self.char_width())
24 }
25
26 #[must_use]
30 pub fn line_width_utf8(&self, t: &str) -> u32 {
31 t.chars().count() as u32 * u32::from(self.char_width())
32 }
33
34 #[must_use]
36 pub fn char_width(&self) -> u8 {
37 self.raw[2]
38 }
39
40 #[must_use]
42 pub fn char_height(&self) -> u8 {
43 self.raw[3]
44 }
45
46 #[must_use]
48 pub fn baseline(&self) -> u8 {
49 self.raw[4]
50 }
51}
52
53impl<'a> From<File<'a>> for Font<'a> {
54 fn from(value: File<'a>) -> Self {
55 Self { raw: value.raw }
56 }
57}
58
59#[cfg(feature = "alloc")]
60impl<'a> From<&'a FileBuf> for Font<'a> {
61 fn from(value: &'a FileBuf) -> Self {
62 Self { raw: &value.raw }
63 }
64}