Type Alias read_fonts::tables::fvar::Fvar
source · pub type Fvar<'a> = TableRef<'a, FvarMarker>;
Expand description
The fvar (Font Variations) table
Aliased Type§
struct Fvar<'a> { /* private fields */ }
Implementations§
source§impl<'a> Fvar<'a>
impl<'a> Fvar<'a>
sourcepub fn version(&self) -> MajorMinor
pub fn version(&self) -> MajorMinor
Major version number of the font variations table — set to 1. Minor version number of the font variations table — set to 0.
sourcepub fn axis_instance_arrays_offset(&self) -> Offset16
pub fn axis_instance_arrays_offset(&self) -> Offset16
Offset in bytes from the beginning of the table to the start of the VariationAxisRecord array. The InstanceRecord array directly follows.
sourcepub fn axis_instance_arrays(&self) -> Result<AxisInstanceArrays<'a>, ReadError>
pub fn axis_instance_arrays(&self) -> Result<AxisInstanceArrays<'a>, ReadError>
Attempt to resolve axis_instance_arrays_offset
.
sourcepub fn axis_count(&self) -> u16
pub fn axis_count(&self) -> u16
The number of variation axes in the font (the number of records in the axes array).
sourcepub fn axis_size(&self) -> u16
pub fn axis_size(&self) -> u16
The size in bytes of each VariationAxisRecord — set to 20 (0x0014) for this version.
sourcepub fn instance_count(&self) -> u16
pub fn instance_count(&self) -> u16
The number of named instances defined in the font (the number of records in the instances array).
sourcepub fn instance_size(&self) -> u16
pub fn instance_size(&self) -> u16
The size in bytes of each InstanceRecord — set to either axisCount * sizeof(Fixed) + 4, or to axisCount * sizeof(Fixed) + 6.
source§impl<'a> Fvar<'a>
impl<'a> Fvar<'a>
sourcepub fn axes(&self) -> Result<&'a [VariationAxisRecord], ReadError>
pub fn axes(&self) -> Result<&'a [VariationAxisRecord], ReadError>
Returns the array of variation axis records.
sourcepub fn instances(
&self,
) -> Result<ComputedArray<'a, InstanceRecord<'a>>, ReadError>
pub fn instances( &self, ) -> Result<ComputedArray<'a, InstanceRecord<'a>>, ReadError>
Returns the array of instance records.
sourcepub fn user_to_normalized(
&self,
avar: Option<&Avar<'_>>,
user_coords: impl IntoIterator<Item = (Tag, Fixed)>,
normalized_coords: &mut [F2Dot14],
)
pub fn user_to_normalized( &self, avar: Option<&Avar<'_>>, user_coords: impl IntoIterator<Item = (Tag, Fixed)>, normalized_coords: &mut [F2Dot14], )
Converts user space coordinates provided by an unordered iterator
of (tag, value)
pairs to normalized coordinates in axis list order.
Stores the resulting normalized coordinates in the given slice.
- User coordinate tags that don’t match an axis are ignored.
- User coordinate values are clamped to the range of their associated axis before normalization.
- If more than one user coordinate is provided for the same tag, the last one is used.
- If no user coordinate for an axis is provided, the associated coordinate is set to the normalized value 0.0, representing the default location in variation space.
- The length of
normalized_coords
should equal the number of axes present in the this table. If the length is smaller, axes at out of bounds indices are ignored. If the length is larger, the excess entries will be filled with zeros.
If the Avar
table is provided, applies remapping of coordinates
according to the specification.