read_fonts/tables/
cpal.rs

1//! The [CPAL](https://docs.microsoft.com/en-us/typography/opentype/spec/cpal) table
2
3include!("../../generated/generated_cpal.rs");
4
5#[cfg(test)]
6mod tests {
7
8    use crate::{FontRef, TableProvider};
9
10    #[test]
11    fn read_sample() {
12        let font = FontRef::new(font_test_data::COLR_GRADIENT_RECT).unwrap();
13        let table = font.cpal().unwrap();
14        assert_eq!(table.version(), 0);
15        assert_eq!(table.num_palette_entries(), 2);
16        assert_eq!(table.num_palettes(), 2);
17        assert_eq!(table.num_color_records(), 4);
18
19        let color_records = table.color_records_array().unwrap().unwrap();
20
21        assert_eq!(color_records.len(), 4);
22        let color_tuples: Vec<[u8; 4]> = color_records
23            .iter()
24            .map(|cr| [cr.red(), cr.green(), cr.blue(), cr.alpha()])
25            .collect();
26        assert_eq!(
27            color_tuples,
28            vec![
29                [0x00, 0x00, 0xFF, 0xFF],
30                [0x00, 0xFF, 0xFF, 0xFF],
31                [0xAA, 0x00, 0xFF, 0xFF],
32                [0xAA, 0xFF, 0xFF, 0xFF],
33            ]
34        );
35    }
36}