diff --git a/docs/infrastructure/racks/rack01-elevation.svg b/docs/infrastructure/racks/rack01-elevation.svg
index 74a8a94..29b44b1 100644
--- a/docs/infrastructure/racks/rack01-elevation.svg
+++ b/docs/infrastructure/racks/rack01-elevation.svg
@@ -220,12 +220,12 @@
pdu01 · pdu · in-use · cluster: — · 0U left
-pdu01
+pdu01
pdu02 · pdu · in-use · cluster: — · 0U right
-pdu02
+pdu02
srv01 · server · staging · cluster: tappaas · shf01/front/slot 1
diff --git a/docs/infrastructure/racks/rack01.md b/docs/infrastructure/racks/rack01.md
index 93a5b09..7885848 100644
--- a/docs/infrastructure/racks/rack01.md
+++ b/docs/infrastructure/racks/rack01.md
@@ -227,12 +227,12 @@ _Auto-generated from `docs/hardware/*.md` (items with `rack: rack01`) — do not
pdu01 · pdu · in-use · cluster: — · 0U left
-pdu01
+pdu01
pdu02 · pdu · in-use · cluster: — · 0U right
-pdu02
+pdu02
srv01 · server · staging · cluster: tappaas · shf01/front/slot 1
diff --git a/scripts/gen_rack.py b/scripts/gen_rack.py
index 71d26b5..1efaa44 100644
--- a/scripts/gen_rack.py
+++ b/scripts/gen_rack.py
@@ -462,7 +462,8 @@ def render_svg(rack: str, items: list[dict]) -> str:
f"fill=\"{color}\" {_stroke_attrs(fm.get('status'))}/>"
)
p.append(
- f'{_esc(name)}'
)
p.append("")
diff --git a/tests/test_gen_rack.py b/tests/test_gen_rack.py
index 4842980..106fe9e 100644
--- a/tests/test_gen_rack.py
+++ b/tests/test_gen_rack.py
@@ -156,6 +156,14 @@ def test_render_svg_draws_zero_u_rail():
assert "rotate(-90" in svg
+def test_render_svg_rail_label_is_centered_across_bar():
+ # The rotated 0U rail label must be centered across the narrow bar width,
+ # not sitting on the alphabetic baseline (which reads off-centre).
+ items = [item(hostname="pdu01", kind="pdu", rack_face="left")]
+ svg = gen_rack.render_svg("rack01", items)
+ assert 'dominant-baseline="central"' in svg
+
+
def test_render_svg_both_face_draws_in_both_columns():
items = [item(hostname="dev", rack_u=10, u_height=1, rack_face="both")]
svg = gen_rack.render_svg("rack01", items)