From 33733fd1efda760d65ff9124b6d143a147edbd11 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 13 May 2021 11:26:51 +0200 Subject: [PATCH] Expose units_per_em and raw face id --- src/env/mod.rs | 13 +++++++++++++ src/font.rs | 15 ++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/env/mod.rs b/src/env/mod.rs index af3872dd7..c8ba46ec3 100644 --- a/src/env/mod.rs +++ b/src/env/mod.rs @@ -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. diff --git a/src/font.rs b/src/font.rs index 5a83f6c4c..01434d0af 100644 --- a/src/font.rs +++ b/src/font.rs @@ -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) -> 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) -> Em { - Em::from_units(units, self.units_per_em) - } } /// Identifies a vertical metric of a font.