font 0.6.0

The package provides a font toolbox.
Documentation
extern crate font;

mod common;

mod source_serif {
    use crate::common::{setup, trace, Fixture};

    #[test]
    fn draw_from_a_to_z() {
        let font = &setup(Fixture::SourceSerif)[0];
        for code in b'a'..=b'z' {
            font.case.draw(code as char).unwrap().unwrap();
        }
    }

    #[test]
    fn draw_o() {
        let font = &setup(Fixture::SourceSerif)[0];
        let glyph = font.case.draw('o').unwrap().unwrap();
        assert_eq!(glyph.len(), 2);
        #[rustfmt::skip]
        assert_eq!(&trace(&glyph), &vec![
            (274.0, 445.0),
            (409.0, 236.0),
            (274.0,  30.0),
            (140.0, 236.0),
            (274.0, 445.0),

            (274.0, 491.0),
            ( 45.0, 237.0),
            (274.0, -15.0),
            (504.0, 237.0),
            (274.0, 491.0),
        ]);
    }

    #[test]
    fn draw_r() {
        let font = &setup(Fixture::SourceSerif)[0];
        let glyph = font.case.draw('r').unwrap().unwrap();
        assert_eq!(glyph.bounding_box, (34.0, 0.0, 412.0, 491.0));
        assert_eq!(glyph.side_bearings, (34.0, 11.0));
    }

    #[test]
    fn open() {
        let file = setup(Fixture::SourceSerif);
        let font = &file[0];
        assert_eq!(font.units_per_em, 1000.0);
        assert_eq!(font.clipping_ascender, 918.0);
        assert_eq!(font.ascender, 730.0);
        assert_eq!(font.cap_height, 670.0);
        assert_eq!(font.x_height, 475.0);
        assert_eq!(font.baseline, 0.0);
        assert_eq!(font.descender, -270.0);
        assert_eq!(font.clipping_descender, -335.0);
        assert_eq!(font.line_gap, 0.0);
    }
}