use crate::*;
pub struct Font<'a> {
pub(crate) raw: &'a [u8],
}
impl Font<'_> {
#[must_use]
pub fn is_ascii(&self) -> bool {
self.raw[1] == 0
}
#[must_use]
pub fn line_width_ascii(&self, t: &str) -> u32 {
t.len() as u32 * u32::from(self.char_width())
}
#[must_use]
pub fn line_width_utf8(&self, t: &str) -> u32 {
t.chars().count() as u32 * u32::from(self.char_width())
}
#[must_use]
pub fn char_width(&self) -> u8 {
self.raw[2]
}
#[must_use]
pub fn char_height(&self) -> u8 {
self.raw[3]
}
#[must_use]
pub fn baseline(&self) -> u8 {
self.raw[4]
}
}
impl<'a> From<File<'a>> for Font<'a> {
fn from(value: File<'a>) -> Self {
Self { raw: value.raw }
}
}
#[cfg(feature = "alloc")]
impl<'a> From<&'a FileBuf> for Font<'a> {
fn from(value: &'a FileBuf) -> Self {
Self { raw: &value.raw }
}
}