diff --git a/fontir/src/error.rs b/fontir/src/error.rs index d55af2a4d..6345ec0e5 100644 --- a/fontir/src/error.rs +++ b/fontir/src/error.rs @@ -156,6 +156,8 @@ pub enum WorkError { }, #[error("No source with layerName \"{0}\" exists")] NoSourceForName(String), + #[error("Source file contained a feature we don't yet support: {0}")] + UnsupportedFeature(String), } /// An async work error, hence one that must be Send diff --git a/fontra2fontir/src/toir.rs b/fontra2fontir/src/toir.rs index fff96bb80..ec1bf80da 100644 --- a/fontra2fontir/src/toir.rs +++ b/fontra2fontir/src/toir.rs @@ -23,13 +23,13 @@ pub(crate) fn to_ir_static_metadata( .axes .iter() .map(|a| match a { - crate::fontra::FontraAxis::Discrete(_) => { - // Our IR doesn't yet support discrete axes. - panic!("Discrete axes are not yet supported: {a:?}") - } - crate::fontra::FontraAxis::Continuous(a) => a, + crate::fontra::FontraAxis::Discrete(_) => Err(WorkError::UnsupportedFeature(format!( + "discrete axis {a:?}" + ))), + crate::fontra::FontraAxis::Continuous(a) => Ok(a), }) .map(|a| { + let a = a?; let min = UserCoord::new(a.min_value as f32); let default = UserCoord::new(a.default_value as f32); let max = UserCoord::new(a.max_value as f32);