use crate::sfnt::tables::cmap::EncodingRecord;
#[derive(Debug, PartialEq, Eq, Clone)]
pub struct Context {
pub cmap_encoding_records: Option<Vec<EncodingRecord>>,
pub cmap_format4_advanced_segment_merging: bool,
pub cmap_format4_evaluate_all_segments: bool,
}
impl Context {
pub fn new(o: Optimization) -> Self {
Context {
cmap_encoding_records: None,
cmap_format4_advanced_segment_merging: o >= Optimization::O1,
cmap_format4_evaluate_all_segments: o >= Optimization::O2,
}
}
}
impl Default for Context {
fn default() -> Self {
Context::new(Optimization::O0)
}
}
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
pub enum Optimization {
O0,
O1,
O2,
O3,
}
impl Optimization {
pub fn from_name(name: &str) -> Option<Optimization> {
match name {
"O0" => Some(Optimization::O0),
"O1" => Some(Optimization::O1),
"O2" => Some(Optimization::O2),
"O3" => Some(Optimization::O3),
_ => None,
}
}
}
impl Default for Optimization {
fn default() -> Self {
Optimization::O0
}
}