Add documentation and improve API

This commit is contained in:
Jeremy Soller 2022-10-18 17:13:48 -06:00
parent de572b1645
commit a242d817e9
No known key found for this signature in database
GPG key ID: 87F211AF2BE4C2FE
10 changed files with 76 additions and 71 deletions

27
src/font/font.rs Normal file
View file

@ -0,0 +1,27 @@
use std::{collections::HashMap, sync::Mutex};
use super::{CacheKey, CacheItem};
pub struct Font<'a> {
pub info: &'a fontdb::FaceInfo,
pub data: &'a [u8],
pub index: u32,
pub rustybuzz: rustybuzz::Face<'a>,
pub swash: swash::FontRef<'a>,
pub scale_context: Mutex<swash::scale::ScaleContext>,
pub cache: Mutex<HashMap<CacheKey, CacheItem>>,
}
impl<'a> Font<'a> {
pub fn new(info: &'a fontdb::FaceInfo, data: &'a [u8], index: u32) -> Option<Self> {
Some(Self {
info,
data,
index,
rustybuzz: rustybuzz::Face::from_slice(data, index)?,
swash: swash::FontRef::from_index(data, index as usize)?,
scale_context: Mutex::new(swash::scale::ScaleContext::new()),
cache: Mutex::new(HashMap::new()),
})
}
}