summaryrefslogtreecommitdiff
path: root/src/geom/em.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-04-08 15:08:26 +0200
committerLaurenz <laurmaedje@gmail.com>2022-04-08 15:45:14 +0200
commit712c00ecb72b67da2c0788e5d3eb4dcc6366b2a7 (patch)
treef5d7ef4341a4728c980d020cc173fa6bb70feaff /src/geom/em.rs
parent977ac77e6a3298be2644a8231e93acbef9f7f396 (diff)
Em units
Diffstat (limited to 'src/geom/em.rs')
-rw-r--r--src/geom/em.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/geom/em.rs b/src/geom/em.rs
index 3c772d96..ec1cfbda 100644
--- a/src/geom/em.rs
+++ b/src/geom/em.rs
@@ -29,7 +29,12 @@ impl Em {
/// Create an em length from a length at the given font size.
pub fn from_length(length: Length, font_size: Length) -> Self {
- Self(Scalar(length / font_size))
+ let result = length / font_size;
+ if result.is_finite() {
+ Self(Scalar(result))
+ } else {
+ Self::zero()
+ }
}
/// The number of em units.
@@ -38,8 +43,9 @@ impl Em {
}
/// Convert to a length at the given font size.
- pub fn resolve(self, font_size: Length) -> Length {
- self.get() * font_size
+ pub fn at(self, font_size: Length) -> Length {
+ let resolved = font_size * self.get();
+ if resolved.is_finite() { resolved } else { Length::zero() }
}
}