diff --git a/render-wasm/src/fonts/WorkSans-Numeric.ttf b/render-wasm/src/fonts/WorkSans-Numeric.ttf index 9566da91be..eeb70b375f 100644 Binary files a/render-wasm/src/fonts/WorkSans-Numeric.ttf and b/render-wasm/src/fonts/WorkSans-Numeric.ttf differ diff --git a/render-wasm/src/render/rulers.rs b/render-wasm/src/render/rulers.rs index 582469e8ee..0d4fbd2379 100644 --- a/render-wasm/src/render/rulers.rs +++ b/render-wasm/src/render/rulers.rs @@ -74,15 +74,13 @@ fn calculate_step_size(zoom: f32) -> f32 { } fn format_label(value: f32) -> String { - // Match `format-number` in app.main.ui.formats: round to integer if whole, - // else 2 decimals. Tick steps are integers in our table, so this is the - // common path. - let rounded = value.round(); - if (value - rounded).abs() < 1e-3 { - format!("{}", rounded as i64) - } else { - format!("{:.2}", value) - } + // Match `format-number` in app.main.ui.formats: round to at most 2 decimals. + // Display drops trailing zeros for free, so 123.00 -> "123", + // 123.50 -> "123.5", 123.456 -> "123.46". + let rounded = (value * 100.0).round() / 100.0; + // Normalize -0.0 so we don't render "-0". + let rounded = if rounded == 0.0 { 0.0 } else { rounded }; + format!("{rounded}") } fn with_alpha(color: Color, alpha_fraction: f32) -> Color {