Zum Inhalt springen

Trinkwasseraufbereitungsanlage

Anhang E.2 · aus Grundzeichen zusammengesetzt · Hauptfassung

technisch: mit Abweichung · 18.08.2026 · rvfachlich: noch nicht geprüft

„Technisch: mit Abweichung" heißt: das Bild ist gegen die Vorlage nachgemessen worden und weicht an einer benannten Stelle von ihr ab. Die Abweichung ist geprüft und benannt, sie ist also kein offener Fehler, sondern eine bekannte Ausnahme. „Fachlich noch nicht geprüft" heißt: niemand aus der Fachwelt hat bestätigt, dass dies das richtige Zeichen für diese Bedeutung ist. Beide Angaben stehen an jedem Zeichen dieser Website; die rechte ist die, die man leicht übersieht. Was genau abweicht, steht darunter im Wortlaut der Prüfung zum Aufklappen.

Wortlaut der Abweichung aus dem technischen Review (Fachsprache)

Körperhülle per matchFingerprint gegen die Referenz gegated, für `trailer` und `upright-rectangle` erstmals gegen Körperformen ohne Kapitel-1-Abschnitt. Der Anhängerrumpf ist dabei gegen zwei Belegdateien gegated (E.2.22 und 5.1.2.1), das Hochkantrechteck gegen E.2.26 — als einzige der 31 E.2-Dateien führt es einen ring-Kennwert und war damit auch vor dem Extraktorausbau gegated. Was kein Gate sieht: die Deichsel (role bodyExtra) erreicht matchFingerprint nicht, das nur role: body vergleicht; für sie steht eine eigene Rasterprüfung im Band x 1,5…3,5 / y 14…16 mm. Für die Beschriftungszonen prüft die Rasterprüfung in fonts.test.ts die Tinte gegen die deklarierte boxMm. Dazu die globalen Mehrgrößen-, viewBox-, Metadaten- und Kontrast-Gates. Alle fünf Referenzdateien sind einzeln vermessen; daraus stammen die vier Befunde und die eine deklarierte Abweichung. Abweichung der Umsetzung: Der THW-Lauf der Referenz endet rechts bei 26,0269 mm bei einer Körperkante von 29,0001 mm; da die Referenzschrift ihren Anker um 0,0269 mm überragt (an E.2.1 gemessen: Tinte 29,0269 bei Anker 29,0003), steht ihr Anker auf 26,0. Der Katalog setzt ihn auf 27,0, weil LABEL_SIDE_MARGIN_MM = 2 gegen die rechte Körperkante rechnet — 1,0 mm Unterschied, im Paarbild sichtbar. Für einen Mechanismus fehlt die Grundlage: n = 1 im gesamten Bestand (diese Körperform kommt in genau einer der 661 Referenzdateien vor), und zwei gleich gute Lesarten stehen nebeneinander — maxX − 3,0 oder rechte Kante der Farbfläche (28,0000) − 2,0. Beide erzeugen dasselbe Bild, belegt ist das Bild und nicht die Kante. Die Marge selbst ist an 30 anderen Zeichen des Anhangs belegt (Tinte 19,9870…29,0269 bei Körperkante 31,0003 mm) und wird für einen Einzelfall nicht aufgebrochen. Dieselbe Einordnung wie bei E.1.17, das seine 2,0009 mm waagerecht aus demselben Grund trägt.

Zeichen verwenden

So sieht es aus

Dasselbe Zeichen in sechs Größen — von 16 bis 256 Pixel breit —, jeweils auf hellem und auf dunklem Untergrund. Die drei Schaltflächen wechseln die Farbfassung: „Referenz“ ist die Palette der Vorlage, „Kontraststark hell“ hebt die Farben für schwierige Bildschirme an, „Druck monochrom“ ist die Fassung für Schwarz-Weiß-Druck und Kopien.

Bedeutung und Herkunft

Grundzeichen: Hochkantrechteck. Organisation: Technisches Hilfswerk. Kürzel: TW AA. Trägerkürzel: THW.

Kennung
recipe.E.2.26
Quelle
Anhang E.2 · BBK / BABZ: Taktische Zeichen im Bevölkerungsschutz — Empfehlungen zur Einführung einer FwDV 102/DV 102 · alle Quellen mit Prüfstand
Zeichenprofil
bund — die Maßregeln, nach denen dieses Zeichen gezeichnet ist

Andere Bezeichnungen und frühere Kennungen führt der Katalog für dieses Zeichen noch nicht.

Für Entwicklerinnen und Entwickler

Ab hier stehen die Begriffe der Bibliothek: SymbolSpec, compose(), renderSvg(). Wer das Zeichen nur benutzen will, ist mit den Dateien oben fertig.

Bauanleitung als JSON

{
  "kind": "upright-rectangle",
  "organization": "thw",
  "labels": {
    "center": "TW AA",
    "bottomRight": "THW"
  }
}

Manifestschlüssel dieser Zeile: bbk-babz-2025:E.2.26 · dieselbe Spec im Baukasten öffnen

Codebeispiele

Vier Kanäle, ein Zeichen. Die Beispiele entstehen aus derselben Vorlage wie im Quickstart und im Baukasten (src/lib/code-samples.ts), damit sie nicht hinter den Paket-APIs zurückbleiben.

import { composeFromCatalog } from '@einsatzzeichen/catalog';
import { renderSvg } from '@einsatzzeichen/core';
import type { SymbolSpec } from '@einsatzzeichen/schema';
// Spezifikation für "recipe.E.2.26"
const spec: SymbolSpec = {
"kind": "upright-rectangle",
"organization": "thw",
"labels": {
"center": "TW AA",
"bottomRight": "THW"
}
};
const drawing = composeFromCatalog(spec);
const svg = renderSvg(drawing, { size: 64 });
import { Einsatzzeichen } from '@einsatzzeichen/react';
import { composeFromCatalog } from '@einsatzzeichen/catalog';
import type { SymbolSpec } from '@einsatzzeichen/schema';
// Spezifikation für "recipe.E.2.26"
const spec: SymbolSpec = {
"kind": "upright-rectangle",
"organization": "thw",
"labels": {
"center": "TW AA",
"bottomRight": "THW"
}
};
const drawing = composeFromCatalog(spec);
export function Symbol() {
return <Einsatzzeichen drawing={drawing} size={64} />;
}
import {
DEFAULT_TAG_NAME,
defineEinsatzzeichenElement,
type EinsatzzeichenElement,
} from '@einsatzzeichen/web-component';
import { composeFromCatalog } from '@einsatzzeichen/catalog';
import type { SymbolSpec } from '@einsatzzeichen/schema';
// Spezifikation für "recipe.E.2.26"
const spec: SymbolSpec = {
"kind": "upright-rectangle",
"organization": "thw",
"labels": {
"center": "TW AA",
"bottomRight": "THW"
}
};
// Registriert <einsatzzeichen-symbol> einmalig (ruft customElements.define auf).
defineEinsatzzeichenElement();
const element = document.createElement(DEFAULT_TAG_NAME) as EinsatzzeichenElement;
element.drawing = composeFromCatalog(spec);
document.body.append(element);
import maplibregl from 'maplibre-gl';
import { addSymbolImage } from '@einsatzzeichen/maplibre';
import { composeFromCatalog } from '@einsatzzeichen/catalog';
import type { SymbolSpec } from '@einsatzzeichen/schema';
// Spezifikation für "recipe.E.2.26"
const spec: SymbolSpec = {
"kind": "upright-rectangle",
"organization": "thw",
"labels": {
"center": "TW AA",
"bottomRight": "THW"
}
};
const map = new maplibregl.Map({ container: 'map', style: 'https://example.org/style.json' });
map.on('load', () => {
// addSymbolImage rastert die Zeichnung und ruft intern map.addImage(...) auf.
addSymbolImage(map, "recipe.E.2.26", composeFromCatalog(spec), { size: 64 });
});

Zulässige Kombinationen

Diese Spec setzt 3 Felder. Darunter steht, welche Werte gesetzt sind und welche Regeln aus validateSpec() an diesen Feldern hängen — 46 an der Zahl.

FeldWertRegeln an diesem Feld
Grundzeichenart
kind
Hochkantrechteck upright-rectangle
keine Regel allein an diesem Feld
Organisation
organization
Technisches Hilfswerk thw
circle-12-requires-hilfsorganisation

12-mm-Kreis braucht einen vermessenen Organisationsvertrag. Der 12-mm-Kreis außerhalb der gebänderten Fassung verlangt einen vollständig vermessenen Organisationsvertrag: die weiße HiOrg-Fassung aus F.3 oder genau eine der drei farbigen Art-, Varianten- und Markenfassungen. Die weiße F.3-Fassung gilt nur für `bodyVariant` `undefined` oder `raised-gable`, nicht für `raised-circle-1mm`; fehlende oder vertauschte Werte sind an keiner Datei belegt. Setze `organization` auf `hilfsorganisation` mit einem dieser beiden `bodyVariant`-Werte oder bilde eine der gemessenen farbigen Kombinationen genau nach.

circle-12-requires-organization

Gebänderter Kreis braucht eine Organisation. Der gebänderte 12-mm-Kreis füllt seine Körperfläche in der Organisationsfarbe und braucht deshalb eine Organisation. Ohne sie hätte die Fläche keine gemessene Farbe. Setze `organization` oder wechsle die Körpervariante.

reduced-house-requires-hilfsorganisation

Reduzierte Hauskontur nur als HiOrg-Fläche. Die reduzierte Hauskontur ist in beiden F.3-Belegen ausschließlich als weiße HiOrg-Körperfläche vermessen. Andere oder fehlende Organisationszuordnungen sind auch ohne Beschriftung nicht belegt. Setze `organization` auf `hilfsorganisation`.

Beschriftungen
labels
TW AA center
THW bottomRight
above-left-label-requires-measured-body

Zone oberhalb links braucht ein vermessenes Profil. Ein Lauf in `labels.aboveLeft` steht über dem Körper, und seine Grundlinie führt nur, wessen Körperprofil sie vermessen hat; die Meldung nennt das Luftfahrzeug aus F.2.7. Andere Arten erben diesen Wert nicht, weil ihre Hülle anders verläuft. Entferne den Lauf oder wechsle auf eine Art und Variante, deren Profil diese Zone führt.

above-left-metrics-complete

aboveLeft-Metriken nur vollständig. Wer `labels.aboveLeftMetrics` setzt, muss den Lauf `labels.aboveLeft` und alle drei Maße zusammen angeben: Versalhöhe, Grundlinie und Anker, jeweils endlich und die Versalhöhe größer als null. Ein halber Satz mischte unbelegte Profilwerte in eine gemessene Lage. Ergänze die fehlenden Felder oder lass den Metriksatz ganz weg.

above-left-metrics-within-viewbox

aboveLeft-Lauf muss in der ViewBox bleiben. Aus Anker, Grundlinie und Versalhöhe berechnet die Komposition eine Textbox. Ihr Anker muss innerhalb der vermessenen Profilbox liegen, die Box selbst vollständig innerhalb der 32-mm-ViewBox. Sonst stünde Text außerhalb der Zeichenfläche und wäre im Bild abgeschnitten. Rücke Anker oder Grundlinie nach innen oder verkleinere die Versalhöhe.

below-right-label-requires-measured-body

Zone unterhalb rechts braucht ein vermessenes Profil. Lage und Tinte von `labels.belowRight` hängen am Körperprofil und sind nur dort vermessen, wo es Werte führt: am angehobenen Wasserfahrzeugrumpf (E.2.27 bis E.2.31) und am gebänderten 12-mm-Kreis (G.3.5). An anderen Körperformen entstünde ein Lauf, den keine Referenzdatei zeigt und den auch kein Gate meldete. Entferne die Zone oder wähle eine Art und Variante, deren Profil sie führt.

below-right-label-requires-organization

Lauf in Organisationsfarbe braucht eine Organisation. Führt das Körperprofil diese Zone in der Organisationsfarbe (#003296 an E.2.27 bis E.2.31), braucht der Lauf eine Organisation, die diese Farbe liefert. Ohne sie hätte der Text keine gemessene Farbe. Setze `organization` oder entferne `labels.belowRight`.

bottom-center-label-requires-measured-body

Zone unten mittig braucht ein vermessenes Profil. `labels.bottomCenter` verlangt ein Profil mit vermessener Grundlinie: die taktische Formation (2,0 mm über der Körperunterkante, F.1.18/F.1.20) und der gebänderte 12-mm-Kreis (6,0 mm, G.3.5). Für andere Arten und Varianten gibt es keine Messung, aus der die Lage folgte. Entferne die Zone oder wechsle auf eines der beiden Profile.

bottom-right-metrics-complete

bottomRight-Metriken nur vollständig. Ein gemessener bottomRight-Satz muss alle fünf Felder gemeinsam führen: Versalhöhe, Grundlinie, Anker, Boxanfang und Boxbreite. Fehlt eines, mischte die Komposition unbelegte Werte in eine gemessene Lage. Ergänze die fehlenden Felder oder entferne `labels.bottomRightMetrics`.

bottom-right-metrics-require-bottom-right-label

bottomRight-Metriken brauchen ihren Lauf. Metriken ohne den zugehörigen Text hätten keine Wirkung — Versalhöhe, Grundlinie, Anker und Box würden still verschluckt. Deshalb verlangt `labels.bottomRightMetrics` einen nichtleeren `labels.bottomRight`. Setze den Lauf oder entferne den Metriksatz.

bottom-right-metrics-require-measured-body

bottomRight-Metriken nur an vermessener Hülle. Individuelle bottomRight-Metriken sind nur an einem Körperprofil zulässig, das eine vollständig vermessene relative Textbox führt; belegt ist das am angehobenen Luftfahrzeugrumpf. An anderen Profilen gäbe es keine Hülle, gegen die die Box geprüft würde. Wechsle Art und Variante oder verzichte auf den Metriksatz.

bottom-right-metrics-within-body

bottomRight-Textbox muss im Körper liegen. Die vollständige Textbox aus Boxanfang, Boxbreite und den abgeleiteten vertikalen Schriftmetriken muss innerhalb der vermessenen Körperhülle liegen, und der Anker innerhalb der Box. Sonst stünde der Lauf teilweise außerhalb des Körpers. Verschiebe Box oder Anker nach innen oder verkleinere Breite und Versalhöhe.

center-anchor-override-requires-measured-trailer

Abweichender mittiger Anker nur am Anhänger. Ein eigener x-Anker des mittigen Laufs ist allein am vermessenen Anhängerprofil belegt, und dort nur mit genau dessen gemessenem Wert; außerdem braucht er einen `labels.center`. Ein freier Wert wäre keine Messung, sondern eine Schätzung. Setze den gemessenen Wert am Anhänger oder entferne `labels.centerAnchorFromBodyLeftMm`.

center-baseline-not-measured

Mittige Grundlinie nur mit vermessenem Wert. Führt das Profil eine Liste vermessener Abweichungen, muss die angegebene mittige Grundlinie einem dieser Werte entsprechen; am Anhänger sind das die beiden Werte aus I.2.5/I.2.6. Zwischenwerte sind an keiner Referenzdatei belegt. Nimm einen der vermessenen Werte oder lass das Feld weg, dann gilt der Profilwert.

center-baseline-override-requires-measured-body

Abweichende mittige Grundlinie nur an vermessenem Profil. Eine eigene Grundlinie für den mittigen Lauf akzeptieren nur Profile, die das ausdrücklich erlauben — taktische Formation in Normalfassung, Landfahrzeug in Normalfassung und Anhänger. Andere Körperprofile behalten ihren Wert, damit keine ungemessene Lage entsteht. Entferne `labels.centerBaselineFromBodyBottomMm` oder wechsle das Profil.

center-baseline-positive

Mittige Grundlinie muss positiv sein. Der Abstand der mittigen Grundlinie von der Körperunterkante muss eine endliche Zahl größer als null sein. Null, negative Werte, NaN oder Infinity ergäben keine Lage im Körper. Korrigiere `labels.centerBaselineFromBodyBottomMm` oder lass das Feld weg.

center-baseline-requires-center-label

Mittige Grundlinie braucht ihren Lauf. Eine gemessene mittige Grundlinie ohne mittigen Lauf hätte keine Wirkung und würde still verschluckt. Deshalb verlangt `labels.centerBaselineFromBodyBottomMm` ein gesetztes `labels.center`. Setze den Lauf oder entferne die Grundlinie.

center-box-margin-non-negative

Rand der mittigen Textbox darf nicht negativ sein. Der Rand der mittigen Textbox muss endlich und mindestens null sein. Negative Werte oder NaN ergäben keine Box, in der Text stehen könnte. Korrigiere `labels.centerBoxMarginMm` oder entferne das Feld.

center-box-margin-override-requires-measured-body

Eigener Boxrand nur an vermessener Hülle. Ein eigener Rand der mittigen Textbox ist nur an Profilen zulässig, die ihn erlauben und eine vermessene Körperhülle führen; belegt ist das an der taktischen Formation. Ohne Hülle gäbe es keine Breite, gegen die der Rand geprüft würde. Entferne `labels.centerBoxMarginMm` oder wechsle auf ein Profil mit vermessener Hülle.

center-box-margin-requires-center-label

Boxrand braucht einen mittigen Lauf. Ein Rand ohne mittigen Lauf hat keine Wirkung und würde still verschluckt. `labels.centerBoxMarginMm` verlangt deshalb ein gesetztes `labels.center`. Setze den Lauf oder entferne den Rand.

center-box-margin-within-body

Boxrand muss Breite übrig lassen. Der Rand wird links und rechts abgezogen; die doppelte Angabe muss kleiner bleiben als die vermessene Körperbreite, damit eine positive Boxbreite übrig bleibt. Sonst entstünde eine Box ohne Fläche, in der kein Text stünde. Verkleinere `labels.centerBoxMarginMm`.

center-cap-height-positive

Mittige Versalhöhe muss positiv sein. Die Versalhöhe des mittigen Laufs muss endlich und größer als null sein; sie ist eine Messung an der Referenzdatei und keine freie Größe. Null oder negative Werte ergäben keinen sichtbaren Text. Korrigiere `labels.centerCapHeightMm` oder lass das Feld weg.

center-cap-height-requires-center-label

Mittige Versalhöhe braucht ihren Lauf. Eine Versalhöhe ohne mittigen Lauf hätte keine Wirkung und würde still verschluckt — genau der lautlose Ausfall, den die Regeln an anderer Stelle abfangen. Setze `labels.center` oder entferne `labels.centerCapHeightMm`.

center-label-within-body

Mittige Textbox muss im Körper liegen. Erlaubt das Profil eine eigene mittige Grundlinie, prüft die Regel die daraus und aus der Versalhöhe abgeleitete Textbox gegen die vermessene Körperhülle. Sie muss vollständig darin liegen, sonst ragte der Lauf über den Körper hinaus. Rücke die Grundlinie näher an die Unterkante oder verkleinere die Versalhöhe.

circle-top-left-anchor-within-viewbox

Kreislabel-Anker muss in der ViewBox bleiben. Der Anker des topLeft-Laufs am 12-mm-Kreis wird relativ zur Kreisfläche angegeben und darf außerhalb davon beginnen; seine absolute Lage muss aber innerhalb der 32-mm-ViewBox bleiben und darf die rechte Kante der deklarierten Textbox bei 26 mm nicht überschreiten. Sonst liefe der Text aus der Zeichenfläche. Verkleinere `anchorFromBodyLeftMm` in `labels.topLeftMetrics`.

circle-top-left-baseline-within-viewbox

Kreislabel-Grundlinie muss in der ViewBox bleiben. Auch die Grundlinie darf außerhalb der Kreisfläche liegen, die daraus und aus der Versalhöhe berechnete Textbox muss aber vollständig innerhalb der 32-mm-ViewBox bleiben. Ein Lauf über der Oberkante wäre im Bild abgeschnitten. Verschiebe `baselineFromBodyTopMm` nach unten oder verkleinere die Versalhöhe.

circle-top-left-requires-metrics

Kreislabel nur mit vollständigem Metriksatz. Ein topLeft-Lauf an den beiden vermessenen Kreisfassungen verlangt immer den vollständigen Metriksatz aus Versalhöhe, Grundlinie und Anker. Die Kreisprofile führen keinen allgemeinen Default, aus dem sich die Lage ergäbe. Ergänze `labels.topLeftMetrics` oder entferne den Lauf.

colored-circle-top-left-not-measured

Farbige Kreisverträge tragen kein topLeft-Label. Die drei exakt vermessenen farbigen Kreisverträge führen weder einen topLeft-Lauf noch die zugehörigen F.3-Metriken; die weißen Kreislabelverträge werden nicht auf sie vererbt. Entferne `labels.topLeft` samt `labels.topLeftMetrics` oder wechsle auf die weiße HiOrg-Fassung.

in-body-ink-requires-in-body-label

Tintenoverride braucht einen Lauf im Körper. Ein gemessener Tintenoverride wirkt nur auf Läufe im Körper: center, topLeft, bottomLeft, bottomCenter, bottomRight und die Zeilen aus topLeftLines. Läufe oberhalb des Körpers oder auf der Ausgabeoberfläche haben eigene Tintenverträge und werden nicht erfasst. Setze einen nichtleeren Lauf im Körper oder entferne `labels.inBodyInk`.

label-not-blank

Beschriftungszone darf nicht leer sein. Keine Beschriftungszone darf leer sein oder nur aus Leerzeichen bestehen; bei mehrzeiligen Zonen gilt das auch für jede einzelne Zeile. Ein leerer Lauf erzeugte ein Textprimitiv ohne Tinte, das jedes Gate besteht und im Bild fehlt. Setze einen Text oder entferne die Zone.

surface-label-foot-conflict

Oberflächenlauf und Bezeichnung im selben Streifen. Bezeichnung und schwarze Oberflächenläufe belegen denselben Streifen unterhalb des Körpers. Eine vermessene Ausweichposition gibt es nicht, also schließen sie sich aus. Entferne `designation` oder die Läufe `labels.surfaceBelowLeft` und `labels.surfaceBelowRight`.

surface-label-requires-measured-body

Oberflächenläufe nur an vermessenem Profil. Schwarze Oberflächenläufe stehen außerhalb des Körpers auf der Ausgabefläche und sind nur an den Profilen vermessen, die dafür Werte führen — am angehobenen Luftfahrzeugrumpf und am um 1 mm angehobenen 12-mm-Kreis. Andere Profile haben für diese Zone keine gemessene Grundlinie. Entferne die Läufe oder wechsle Art und Variante.

surface-left-label-requires-measured-anchor

Linker Oberflächenlauf braucht einen linken Anker. Der linke schwarze Oberflächenlauf verlangt ein Profil, das einen links vermessenen Anker führt. Führt das Profil nur den rechten, bliebe die linke Lage geraten. Nutze `labels.surfaceBelowRight` oder wechsle auf ein Profil mit linkem Anker.

surface-right-label-requires-measured-anchor

Rechter Oberflächenlauf braucht einen rechten Anker. Der rechte schwarze Oberflächenlauf verlangt ein Profil, das einen rechts vermessenen Anker führt. Führt das Profil nur den linken, bliebe die rechte Lage geraten. Nutze `labels.surfaceBelowLeft` oder wechsle auf ein Profil mit rechtem Anker.

top-left-anchor-within-body

topLeft-Anker muss im Landfahrzeugkörper liegen. Am Landfahrzeug muss der Anker des topLeft-Laufs endlich sein und zwischen 0 und 28 mm rechts der linken Körperkante liegen; das ist die vermessene Breite der Box. Größere Werte schöben den Text über die rechte Innenmarge hinaus. Korrigiere `anchorFromBodyLeftMm` in `labels.topLeftMetrics`.

top-left-baseline-within-body

topLeft-Grundlinie muss im Körper liegen. Am Landfahrzeug muss die topLeft-Grundlinie mindestens eine Versalhöhe unter der Körperoberkante und höchstens 20,25 mm darunter liegen, also innerhalb der vermessenen Hülle. Andernfalls ragte der Text oben oder unten aus dem Körper. Korrigiere `baselineFromBodyTopMm` oder die Versalhöhe.

top-left-cap-height-positive

topLeft-Versalhöhe muss positiv sein. Die Versalhöhe des topLeft-Laufs muss endlich und größer als null sein. Null oder negative Werte ergäben keinen sichtbaren Text. Korrigiere `capHeightMm` in `labels.topLeftMetrics`.

top-left-label-requires-measured-body

Zone oben links braucht ein vermessenes Profil. Die Grundlinie der Zone oben links ist an der taktischen Formation (5,0 mm unter der Körperoberkante), an den F.2-Landfahrzeugen (6,75 mm), am Festflügel-Luftfahrzeug und an den beiden Kreisfassungen vermessen. Andere Profile erben keinen dieser Werte, weil ihre Hülle anders verläuft; am Gebäudekörper liefe der Formationsanker aus dem Polygon heraus. Entferne `labels.topLeft` oder wechsle auf ein Profil mit gemessener Grundlinie.

top-left-lines-exactly-two

Zweizeilige Zone braucht genau zwei Zeilen. Die zweizeilige obere Beschriftungszone ist genau zweizeilig vermessen. Eine, drei oder mehr Zeilen hätten keine belegten Grundlinien. Gib in `labels.topLeftLines` genau zwei Zeilen an.

top-left-lines-require-measured-body

Zweizeilige Zone nur am vermessenen Körper. Die zweizeilige obere Zone ist am Landfahrzeug aus F.2.8 vermessen; sie verlangt ein Profil mit zwei Grundlinien und eine Körpervariante, die zu dieser Art gehört. Für andere Körperformen gibt es keine Messung, aus der ihre Lage folgte. Nutze `labels.topLeft` einzeilig oder wechsle auf das vermessene Landfahrzeugprofil.

top-left-metrics-complete

topLeft-Metriken nur vollständig. Ein gemessener topLeft-Satz muss Versalhöhe, Grundlinie und Anker gemeinsam führen. Ein partielles Objekt mischte unbelegte Profilwerte in eine gemessene Lage. Ergänze die fehlenden Felder oder entferne `labels.topLeftMetrics` ganz.

top-left-metrics-require-measured-vehicle-land

Eigene topLeft-Metriken nur an vermessenen Fassungen. Individuelle topLeft-Metriken sind nur am normalen und am gebänderten F.2-Landfahrzeug, an den beiden F.3-Kreisfassungen und am Festflügel-Luftfahrzeug vermessen. Andere Arten und Varianten behalten ihre eigenen Profilwerte, statt eine fremde Messung zu übernehmen. Entferne den Metriksatz oder wechsle Art und Variante.

top-left-metrics-require-top-left-label

topLeft-Metriken brauchen ihren Lauf. Metriken der oberen linken Zone ohne nichtleeren `labels.topLeft` hätten keine Wirkung; alle drei Maße würden still verschluckt. Setze den Lauf oder entferne `labels.topLeftMetrics`.

top-left-metrics-required-by-profile

Profil verlangt den vollständigen topLeft-Satz. Manche Körperprofile belegen den topLeft-Lauf ausschließlich mit einem vollständigen quellenspezifischen Metriksatz; belegt ist das am Festflügel-Luftfahrzeug. Ein Profildefault wäre dort nur eine Teilmessung. Ergänze `labels.topLeftMetrics` oder entferne den Lauf.

top-left-metrics-within-body

topLeft-Lauf muss in der Körperhülle liegen. Am Festflügel-Luftfahrzeug müssen der Anker und die aus Grundlinie und Versalhöhe abgeleitete vertikale Textbox innerhalb der vermessenen Körperhülle liegen, mit 2 mm Innenmarge an der rechten Kante. Sonst stünde der Lauf über dem Rumpf. Rücke Anker oder Grundlinie nach innen oder verkleinere die Versalhöhe.

Die Zuordnung ist von Hand gepflegt und steht an der Erklärung jeder Regel (src/lib/rule-explanations.ts): eingetragen ist das Feld, das man ändern müsste, damit die Regel nicht mehr greift. validateSpec() selbst führt keine Feldzuordnung — deshalb bleibt diese Liste nicht die vollständige Prüfung. Regeln, die zwei Achsen gegeneinander stellen, erscheinen nur unter einer von beiden, und eine Regel ohne einzelnes Feld — wie der Streit um die Kopfzone — steht in keiner Zeile dieser Tabelle. Wer wissen will, ob eine geänderte Kombination trägt, ändert sie im Baukasten: dort läuft dieselbe Komposition wie im Katalog, und jede abgelehnte Kombination kommt mit ihrer Regel und deren Erklärung zurück.

Nachweise

Diese Testarten decken die Zeile dieses Zeichens in der Prüfliste ab:

  • Körper-Fingerprint gegen die Referenzdatei (matchFingerprint) body-fingerprint
  • SVG-Snapshot: die Ausgabe von renderSvg bleibt bytegleich svg-snapshot

Gemessen und gerendert wird im Profil bund; die Profile und ihre Prüfstände stehen auf der Grundlage-Seite, der gesamte Prüfstand unter Stand der Prüfung.

Texte und Code dieser Website sind mit KI-Unterstützung entstanden und werden von Menschen geprüft; der fachliche Reviewstatus steht an jedem Zeichen.