read_fonts/tables/
gasp.rs

1//! The [gasp](https://learn.microsoft.com/en-us/typography/opentype/spec/gasp) table
2
3include!("../../generated/generated_gasp.rs");
4
5#[cfg(test)]
6mod tests {
7    use font_test_data::bebuffer::BeBuffer;
8
9    use super::*;
10
11    #[test]
12    fn smoke_test() {
13        let buf = BeBuffer::new()
14            .push(1u16) // version
15            .push(2u16) // number of records
16            .push(404u16) // record 1 ppem
17            .push(GaspRangeBehavior::GASP_GRIDFIT | GaspRangeBehavior::GASP_DOGRAY)
18            .push(u16::MAX)
19            .push(
20                GaspRangeBehavior::GASP_SYMMETRIC_GRIDFIT
21                    | GaspRangeBehavior::GASP_SYMMETRIC_SMOOTHING,
22            );
23
24        let gasp = Gasp::read(buf.data().into()).unwrap();
25        assert_eq!(gasp.version(), 1);
26        assert_eq!(
27            gasp.gasp_ranges()[0],
28            GaspRange {
29                range_max_ppem: 404.into(),
30                range_gasp_behavior: (GaspRangeBehavior::GASP_GRIDFIT
31                    | GaspRangeBehavior::GASP_DOGRAY)
32                    .into(),
33            }
34        );
35        assert_eq!(
36            gasp.gasp_ranges()[1],
37            GaspRange {
38                range_max_ppem: u16::MAX.into(),
39                range_gasp_behavior: (GaspRangeBehavior::GASP_SYMMETRIC_GRIDFIT
40                    | GaspRangeBehavior::GASP_SYMMETRIC_SMOOTHING)
41                    .into(),
42            }
43        );
44    }
45}