write_fonts/tables/
instance_record.rs

1//! An fvar InstanceRecord
2
3#[allow(unused_imports)]
4use crate::codegen_prelude::*;
5
6/// The [InstanceRecord](https://learn.microsoft.com/en-us/typography/opentype/spec/fvar#instancerecord)
7#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub struct InstanceRecord {
10    /// The name ID for entries in the 'name' table that provide subfamily names for this instance.
11    pub subfamily_name_id: NameId,
12    /// Reserved for future use — set to 0.
13    pub flags: u16,
14    /// The coordinates array for this instance.
15    pub coordinates: Vec<Fixed>,
16    /// Optional. The name ID for entries in the 'name' table that provide PostScript names for this instance.
17    pub post_script_name_id: Option<NameId>,
18}
19
20impl FontWrite for InstanceRecord {
21    fn write_into(&self, writer: &mut TableWriter) {
22        self.subfamily_name_id.write_into(writer);
23        self.flags.write_into(writer);
24        self.coordinates.write_into(writer);
25        if let Some(name_id) = self.post_script_name_id {
26            name_id.write_into(writer);
27        }
28    }
29}
30
31impl Validate for InstanceRecord {
32    fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
33}
34
35impl<'a> FromObjRef<read_fonts::tables::fvar::InstanceRecord<'a>> for InstanceRecord {
36    fn from_obj_ref(from: &read_fonts::tables::fvar::InstanceRecord<'a>, _data: FontData) -> Self {
37        InstanceRecord {
38            subfamily_name_id: from.subfamily_name_id,
39            flags: from.flags,
40            coordinates: from.coordinates.iter().map(|be| be.get()).collect(),
41            post_script_name_id: from.post_script_name_id,
42        }
43    }
44}