use types::{GlyphId16, MajorMinor}; use super::*; use crate::tables::layout::{ClassDefFormat2, DeltaFormat, DeviceOrVariationIndex}; use font_test_data::gdef as test_data; #[test] fn gdef_header() { let table = Gdef::read(test_data::GDEF_HEADER.into()).unwrap(); assert_eq!(table.version(), MajorMinor::VERSION_1_0); assert_eq!(table.mark_attach_class_def_offset(), 0x5a); } #[test] fn glyph_class_def_table() { let table = ClassDefFormat2::read(test_data::GLYPHCLASSDEF_TABLE.into()).unwrap(); assert_eq!(table.class_range_count(), 4); let last_record = &table.class_range_records()[3]; assert_eq!(last_record.start_glyph_id(), GlyphId16::new(0x18f)); assert_eq!(last_record.end_glyph_id(), GlyphId16::new(0x18f)); } #[test] fn attach_list_table() { let table = AttachList::read(test_data::ATTACHLIST_TABLE.into()).unwrap(); assert_eq!(table.glyph_count(), 2); assert_eq!(table.attach_point_offsets().len(), 2); let attach_point = table.attach_points().get(1).unwrap(); assert_eq!(attach_point.point_indices()[0].get(), 14); assert_eq!(attach_point.point_indices()[1].get(), 23); } #[test] fn lig_caret_list() { let table = LigCaretList::read(test_data::LIGCARETLIST_TABLE.into()).unwrap(); let glyph1 = table.lig_glyphs().get(0).unwrap(); let glyph2 = table.lig_glyphs().get(1).unwrap(); assert_eq!(glyph1.caret_value_offsets().len(), 1); assert_eq!(glyph2.caret_value_offsets().len(), 2); let g1c0: CaretValueFormat1 = glyph1.caret_value_offsets()[0] .get() .resolve(glyph1.offset_data()) .unwrap(); assert_eq!(g1c0.coordinate(), 603); let g2c1: CaretValueFormat1 = glyph2.caret_value_offsets()[1] .get() .resolve(glyph2.offset_data()) .unwrap(); assert_eq!(g2c1.coordinate(), 1206); } #[test] fn caretvalueformat3() { let table = CaretValueFormat3::read(test_data::CARETVALUEFORMAT3_TABLE.into()).unwrap(); assert_eq!(table.coordinate(), 1206); let DeviceOrVariationIndex::Device(device) = table.device().unwrap() else { panic!("not a device table"); }; assert_eq!(device.start_size(), 12); assert_eq!(device.end_size(), 17); assert_eq!(device.delta_format(), DeltaFormat::Local4BitDeltas); assert_eq!( vec![0x1111, 0x2200], device .delta_value() .iter() .map(|x| x.get()) .collect::>() ); }