From 8981d5e4cdfd58a471db32fd2f817543e5b59a70 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 19 Oct 2026 02:31:31 -0400 Subject: [PATCH] IDML import: ignore non-finite Minimum First Baseline offsets, clamp to 0..8640 Co-Authored-By: Claude Opus 5.5 --- crates/idml/src/import.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/idml/src/import.rs b/crates/idml/src/import.rs index 3493d60a7..7490218cb 100644 --- a/crates/idml/src/import.rs +++ b/crates/idml/src/import.rs @@ -1190,7 +1190,7 @@ impl<'r> Importer<'r> { } cs.vj = e.get("VerticalJustification").map(names::vj_in); cs.first_baseline = e.get("FirstBaselineOffset").map(names::first_baseline_in); - cs.first_baseline_min = e.num("MinimumFirstBaselineOffset").map(|v| v.max(0.0)); + cs.first_baseline_min = e.num("MinimumFirstBaselineOffset").filter(|v| v.is_finite()).map(|v| v.clamp(0.0, 8640.0)); cs.strokes = ["TopEdge", "LeftEdge", "BottomEdge", "RightEdge"].map(|side| self.cell_stroke_attrs(e, side)); if let Some(stroke) = uniform_cell_stroke(&cs.strokes) { cs.stroke = Some(stroke); @@ -2218,8 +2218,8 @@ impl<'r> Importer<'r> { if let Some(fb) = ce.get("FirstBaselineOffset") { cell.first_baseline = names::first_baseline_in(fb); } - if let Some(min) = ce.num("MinimumFirstBaselineOffset") { - cell.first_baseline_min = min.max(0.0); + if let Some(min) = ce.num("MinimumFirstBaselineOffset").filter(|v| v.is_finite()) { + cell.first_baseline_min = min.clamp(0.0, 8640.0); } cell.rotation = ce.num("RotationAngle").unwrap_or(cell.rotation); for (i, side) in ["TopEdge", "LeftEdge", "BottomEdge", "RightEdge"].iter().enumerate() {