2019-11-14 12:21:45 +02:00
use super ::Font ;
use crate ::documents ::BuildXML ;
use crate ::types ::FontPitchType ;
use crate ::xml_builder ::* ;
2020-02-11 10:01:39 +02:00
use serde ::Serialize ;
2024-10-30 07:53:26 +02:00
#[ derive(Debug, Clone, PartialEq, Serialize, Default) ]
2020-02-11 10:01:39 +02:00
#[ serde(rename_all = " camelCase " ) ]
2019-11-14 12:21:45 +02:00
pub struct FontTable { }
impl FontTable {
pub fn new ( ) -> FontTable {
Default ::default ( )
}
}
impl BuildXML for FontTable {
fn build ( & self ) -> Vec < u8 > {
let b = XMLBuilder ::new ( ) ;
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 ( & times )
. add_child ( & symbol )
. add_child ( & arial )
. close ( )
. build ( )
}
}
#[ cfg(test) ]
mod tests {
use super ::* ;
#[ cfg(test) ]
use pretty_assertions ::assert_eq ;
use std ::str ;
#[ test ]
fn test_settings ( ) {
let c = FontTable ::new ( ) ;
let b = c . build ( ) ;
assert_eq! (
str ::from_utf8 ( & b ) . unwrap ( ) ,
r #" <?xml version= " 1.0 " encoding= " UTF - 8 " standalone= " yes " ?>
< w :fonts xmlns :w = " http://schemas.openxmlformats.org/wordprocessingml/2006/main " xmlns :r = " http://schemas.openxmlformats.org/officeDocument/2006/relationships " > < w :font w :name = " Times New Roman " >
< w :charset w :val = " 00 " / >
< w :family w :val = " roman " / >
< w :pitch w :val = " variable " / >
< / w :font > < w :font w :name = " Symbol " >
< w :charset w :val = " 02 " / >
< w :family w :val = " roman " / >
< w :pitch w :val = " variable " / >
< / w :font > < w :font w :name = " Arial " >
< w :charset w :val = " 00 " / >
< w :family w :val = " swiss " / >
< w :pitch w :val = " variable " / >
< / w :font > < / w :fonts > " #
) ;
}
}