read_fonts/tables/
stat.rs

1//! The [STAT](https://learn.microsoft.com/en-us/typography/opentype/spec/stat) table
2
3include!("../../generated/generated_stat.rs");
4
5#[cfg(test)]
6mod tests {
7    use types::{Fixed, NameId};
8
9    use crate::{table_provider::TableProvider, FontRef};
10
11    use super::*;
12
13    #[test]
14    fn smoke_test() {
15        let font = FontRef::new(font_test_data::VAZIRMATN_VAR).unwrap();
16        let table = font.stat().unwrap();
17        assert_eq!(table.design_axis_count(), 1);
18        let axis_record = &table.design_axes().unwrap()[0];
19        assert_eq!(axis_record.axis_tag(), Tag::new(b"wght"));
20        assert_eq!(axis_record.axis_name_id(), NameId::new(257));
21        assert_eq!(axis_record.axis_ordering(), 0);
22        let axis_values = table.offset_to_axis_values().unwrap().unwrap();
23        let axis_values = axis_values
24            .axis_values()
25            .iter()
26            .map(|x| x.unwrap())
27            .collect::<Vec<_>>();
28
29        assert_eq!(axis_values.len(), 3);
30        let last = &axis_values[2];
31        if let AxisValue::Format1(table) = last {
32            assert_eq!(table.axis_index(), 0);
33            assert_eq!(table.value_name_id(), NameId::new(264));
34            assert_eq!(table.value(), Fixed::from_f64(700.0));
35        }
36    }
37}