use super::Font; use crate::documents::BuildXML; use crate::types::FontPitchType; use crate::xml_builder::*; use std::io::Write; use serde::Serialize; #[derive(Debug, Clone, PartialEq, Serialize, Default)] #[serde(rename_all = "camelCase")] pub struct FontTable {} impl FontTable { pub fn new() -> FontTable { Default::default() } } impl BuildXML for FontTable { fn build_to( &self, stream: xml::writer::EventWriter, ) -> xml::writer::Result> { let b = XMLBuilder::from(stream); let times = Font::new("Times New Roman", "00", "roman", FontPitchType::Variable); let symbol = Font::new("Symbol", "02", "roman", FontPitchType::Variable); let arial = Font::new("Arial", "00", "swiss", FontPitchType::Variable); b.declaration(Some(true))? .open_fonts()? .add_child(×)? .add_child(&symbol)? .add_child(&arial)? .close()? .into_inner() } } #[cfg(test)] mod tests { use super::*; use pretty_assertions::assert_str_eq; use std::str; #[test] fn test_settings() { let c = FontTable::new(); let b = c.build(); assert_str_eq!( str::from_utf8(&b).unwrap(), r#""# ); } }