fonts 0.2.0

High-performance font parsing and analysis library for Grida Canvas
Documentation
use std::fs;
use std::path::PathBuf;

use fonts::Parser;

fn font_path(rel: &str) -> PathBuf {
    PathBuf::from(env!("CARGO_MANIFEST_DIR"))
        .join("../../fixtures/fonts")
        .join(rel)
}

#[test]
fn parses_stat_axis_values() {
    let path = font_path(
        "Roboto_Flex/RobotoFlex-VariableFont_GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght.ttf",
    );
    let data = fs::read(path).unwrap();
    let parser = Parser::new(&data).unwrap();
    let stat = parser.stat();
    let opsz = stat.axes.iter().find(|a| a.tag == "opsz").unwrap();
    let values: Vec<i32> = opsz.values.iter().map(|v| v.value.round() as i32).collect();
    assert!(values.contains(&8));
    assert!(values.contains(&9));
    assert!(values.contains(&10));
    let wght = stat.axes.iter().find(|a| a.tag == "wght").unwrap();
    let bold = wght
        .values
        .iter()
        .find(|v| v.linked_value.map(|lv| lv.round() as i32) == Some(700))
        .unwrap();
    assert_eq!(bold.value.round() as i32, 400);
}