diff --git a/crates/ui-egui/tests/it/signing.rs b/crates/ui-egui/tests/it/signing.rs
--- a/crates/ui-egui/tests/it/signing.rs
+++ b/crates/ui-egui/tests/it/signing.rs
@@ -462,6 +462,10 @@ fn the_signature_labels_follow_the_interface_language() {
     let cert = pdfcraft_engine::sign::pkcs12::open(&std::fs::read(p12).unwrap(), "test").unwrap().certificate;
     let note = "The labels are in English: the signature's font can't draw them in this language.";
     for (code, labels, in_english) in [("de", ["(Digital", "(Grund:", "(Datum:"], false), ("zh-hans", ["(Digitally", "(Reason:", "(Date:"], true)] {
+        // Only the Chinese case needs a face that draws Chinese; German still runs without one.
+        if in_english && crate::support::skip_without_glyphs("the_signature_labels_follow_the_interface_language", code, "") {
+            continue;
+        }
         let dir = dir().join(code);
         std::fs::create_dir_all(&dir).unwrap();
         let mut h = harness(dir.clone());
diff --git a/crates/ui-egui/tests/it/support/mod.rs b/crates/ui-egui/tests/it/support/mod.rs
--- a/crates/ui-egui/tests/it/support/mod.rs
+++ b/crates/ui-egui/tests/it/support/mod.rs
@@ -103,3 +103,12 @@ pub fn skip_without_glyphs(name: &str, language: &str, text: &str) -> bool {
     eprintln!("skipping {name}: no interface font draws {missing:?} (set CRAFT_FONTS_DIR to a craft-fonts checkout with a face for it)");
     true
 }
+
+/// No interface font draws a private-use plane-16 character, so the skip path is taken without
+/// craft-fonts or system faces; plain Latin text is always drawn and never skips.
+#[test]
+fn skip_without_glyphs_skips_only_for_undrawable_text() {
+    let required = std::env::var("CRAFT_FONTS_REQUIRED").as_deref() == Ok("1");
+    assert_eq!(skip_without_glyphs("test", "en", "\u{10FFFD}"), !required);
+    assert!(!skip_without_glyphs("test", "en", "Hello"));
+}
