pub trait FontLayout {
fn line_height(&self) -> u16;
fn character_width(&self, character: char) -> u16;
fn baseline(&self) -> u16 {
self.line_height()
}
fn str_width(&self, text: &str) -> u16 {
text.chars().map(|c| self.character_width(c)).sum()
}
}
#[derive(Default, Clone, Copy, Debug, PartialEq, Eq)]
pub struct CharacterBufferFont;
impl FontLayout for CharacterBufferFont {
#[inline]
fn line_height(&self) -> u16 {
1
}
#[inline]
fn character_width(&self, _: char) -> u16 {
1
}
}
#[cfg(feature = "embedded-graphics")]
mod embedded_graphics_fonts {
use super::FontLayout;
impl FontLayout for embedded_graphics::mono_font::MonoFont<'_> {
#[inline]
fn line_height(&self) -> u16 {
self.character_size.height as u16
}
#[inline]
fn character_width(&self, _: char) -> u16 {
self.character_size.width as u16 + self.character_spacing as u16
}
#[inline]
fn baseline(&self) -> u16 {
self.baseline as u16
}
}
}