Expose units_per_em and raw face id

This commit is contained in:
Laurenz 2021-05-13 11:26:51 +02:00
parent 3e03667c37
commit 33733fd1ef
2 changed files with 23 additions and 5 deletions

13
src/env/mod.rs vendored
View File

@ -190,6 +190,19 @@ pub struct FaceId(u32);
impl FaceId {
/// A blank initialization value.
pub const MAX: Self = Self(u32::MAX);
/// Create a face id from the raw underlying value.
///
/// This should only be called with values returned by
/// [`into_raw`](Self::into_raw).
pub fn from_raw(v: u32) -> Self {
Self(v)
}
/// Convert into the raw underlying value.
pub fn into_raw(self) -> u32 {
self.0
}
}
/// A unique identifier for a loaded resource.

View File

@ -69,6 +69,16 @@ impl Face {
&self.ttf
}
/// Get the number of units per em.
pub fn units_per_em(&self) -> f64 {
self.units_per_em
}
/// Convert from font units to an em length.
pub fn to_em(&self, units: impl Into<f64>) -> Em {
Em::from_units(units, self.units_per_em)
}
/// Look up a vertical metric.
pub fn vertical_metric(&self, metric: VerticalFontMetric) -> Em {
match metric {
@ -79,11 +89,6 @@ impl Face {
VerticalFontMetric::Descender => self.descender,
}
}
/// Convert from font units to an em length.
pub fn to_em(&self, units: impl Into<f64>) -> Em {
Em::from_units(units, self.units_per_em)
}
}
/// Identifies a vertical metric of a font.