IDML import: ignore non-finite Minimum First Baseline offsets, clamp to 0..8640

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-19 02:31:31 -04:00
co-authored by Claude Opus 5.5
parent 08ce444054
commit 8981d5e4cd
+3 -3
View File
@@ -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() {