49 lines
971 B
Rust
49 lines
971 B
Rust
use libm::include_font;
|
|
pub const FONT_SPLEEN_8X16: Font =
|
|
Font::new(include_font!("../../../resources/font/spleen-8x16.psf"));
|
|
|
|
pub const FONT_CP850_8X16: Font =
|
|
Font::new(include_font!("../../../resources/font/cp850-8x16.psf"));
|
|
|
|
// pub struct Font(pub [[u8; 16]; 512]);
|
|
|
|
pub struct Font {
|
|
width: usize,
|
|
height: usize,
|
|
length: u16,
|
|
data: [[u8; 16]; 512],
|
|
}
|
|
|
|
impl Font {
|
|
pub const fn new(data: [[u8; 16]; 512]) -> Self {
|
|
Self {
|
|
width: 8,
|
|
height: 16,
|
|
length: data.len() as u16,
|
|
data,
|
|
}
|
|
}
|
|
|
|
pub const fn glyph_for(&self, c: u16) -> &[u8] {
|
|
if c > self.length {
|
|
return &self.data[0];
|
|
}
|
|
|
|
&self.data[c as usize]
|
|
}
|
|
|
|
pub const fn width(&self) -> usize {
|
|
self.width
|
|
}
|
|
|
|
pub const fn height(&self) -> usize {
|
|
self.height
|
|
}
|
|
}
|
|
|
|
impl Default for Font {
|
|
fn default() -> Self {
|
|
FONT_CP850_8X16
|
|
}
|
|
}
|