pub struct MathKern<'a> {
data: TableDataRef<'a, MathKernFixedHeader>,
}Expand description
Fields§
§data: TableDataRef<'a, MathKernFixedHeader>Implementations§
Source§impl<'a> MathKern<'a>
impl<'a> MathKern<'a>
pub const MIN_SIZE: usize = u16::RAW_BYTE_LEN
Sourcepub fn resolve_offset<O: Offset, R: FontRead<'a, Args = ()>>(
&self,
offset: O,
) -> Result<R, ReadError>
pub fn resolve_offset<O: Offset, R: FontRead<'a, Args = ()>>( &self, offset: O, ) -> Result<R, ReadError>
Resolve the provided offset from the start of this table.
Sourcepub fn offset_data(&self) -> FontData<'a>
pub fn offset_data(&self) -> FontData<'a>
Return a reference to this table’s raw data.
We use this in the compile crate to resolve offsets.
Sourcepub fn shape(&self) -> &Self
👎Deprecated: just use the base type directly
pub fn shape(&self) -> &Self
just use the base type directly
Return a reference to the table’s ‘Shape’ struct.
This is a low level implementation detail, but it can be useful in some cases where you want to know things about a table’s layout, such as the byte offsets of specific fields.
Sourcepub fn height_count(&self) -> u16
pub fn height_count(&self) -> u16
Number of heights at which the kern value changes.
Sourcepub fn correction_height(&self) -> &'a [MathValueRecord]
pub fn correction_height(&self) -> &'a [MathValueRecord]
Array of correction heights, in design units, sorted from lowest to highest.
Sourcepub fn kern_values(&self) -> &'a [MathValueRecord]
pub fn kern_values(&self) -> &'a [MathValueRecord]
Array of kerning values for different height ranges, in design units.
There is one more of these than there are correction heights: the first applies below the first correction height, and the last above the last.
pub fn height_count_byte_range(&self) -> Range<usize> ⓘ
pub fn correction_height_byte_range(&self) -> Range<usize> ⓘ
pub fn kern_values_byte_range(&self) -> Range<usize> ⓘ
Source§impl MathKern<'_>
impl MathKern<'_>
Sourcepub fn kerning(&self, correction_height: i32) -> Option<i32>
pub fn kerning(&self, correction_height: i32) -> Option<i32>
The kern to apply at a height above the baseline, in design units.
The table divides the vertical range into bands, and this answers the
value for the band correction_height falls in: the one whose lower
bound is the last correction height at or below it. A height above
every correction height takes the final value.
Correction heights are stored in ascending order and there are rarely more than a handful, so this walks them.
The heights are compared as the font stores them, without the device
adjustments they may carry. Applying those would mean choosing a size
and a coordinate space to compare in, which is the caller’s to choose:
entries_for_ppem hands over the bands so it
can.
Sourcepub fn entries_for_ppem(
&self,
ppem: u16,
) -> impl Iterator<Item = MathKernEntry> + '_
pub fn entries_for_ppem( &self, ppem: u16, ) -> impl Iterator<Item = MathKernEntry> + '_
The upper bound and kern of each band, lowest first.
Every value comes as read at ppem, carrying its own adjustment.
This is what to pick a kern from when the adjustments matter. Which band a height falls in depends on the space the comparison happens in – design units, pixels, or a scaled position, the last of which also decides whether the vertical axis points up or down – and only the caller knows that.