====== std.svg.text ====== Text ausgeben: einzeilig mit ''SvgTextAt'', mehrzeilig über ''SvgTextBegin'' + ''SvgTspan'', dazu Text entlang eines Pfads. Wie überall in ''std.svg'' gibt es **keinen Style-String**: Schrift, Gewicht, Anker und Ausrichtung werden vorab am Dokument gesetzt und gelten für das nächste Element. Ein einzeiliger Text wird mit ''SvgApply'' abgeschlossen; ein Textblock mit ''SvgTextEnd''. → [[lyx_-_programmiersprache:units:svg|std.svg]] · [[lyx_-_programmiersprache:units:svg:style|std.svg.style]] · [[lyx_-_programmiersprache:units:svg:defs|std.svg.defs]] ---- ===== Verwendung ===== import std.io; import std.svg.builder; import std.svg.elements; import std.svg.style; import std.svg.text; fn main(): int64 { var doc: int64 := SvgNew(800.0, 400.0); SvgSetPrettyPrint(doc, 1); SvgSetFont(doc, "DejaVu Sans", 24.0); SvgSetFillHex(doc, "black"); SvgTextAt(doc, 100.0, 50.0, "Hallo Welt"); SvgApply(doc); SvgSetTextAnchor(doc, SVG_ANCHOR_MIDDLE); SvgSetFontWeight(doc, SVG_WEIGHT_BOLD); SvgTextAt(doc, 400.0, 150.0, "Zentriert und fett"); SvgApply(doc); // Mehrzeilig: dy je Zeile in Benutzereinheiten SvgSetFont(doc, "DejaVu Sans", 18.0); SvgTextBegin(doc, 50.0, 250.0); SvgTspan(doc, "Erste Zeile", 0.0, 0.0); SvgTspan(doc, "Zweite Zeile", 0.0, 22.0); SvgTspanStyle(doc, "Dritte fett", SVG_WEIGHT_BOLD, 0.0, 22.0); SvgTextEnd(doc); Print(SvgToString(doc)); Print("\n"); SvgFree(doc); return 0; } Hallo Welt Zentriert und fett Erste Zeile Zweite Zeile Dritte fett Am zweiten Text sieht man die Regel: Die Schriftangabe des ersten Aufrufs ist mit dessen ''SvgApply'' verbraucht und muss für den Block erneut gesetzt werden. ---- ===== Konstanten ===== ^ Name ^ Wert ^ Verwendung ^ | ''SVG_ANCHOR_START'' / ''SVG_ANCHOR_MIDDLE'' / ''SVG_ANCHOR_END'' | 0–2 | ''SvgSetTextAnchor'' | | ''SVG_WEIGHT_NORMAL'' / ''SVG_WEIGHT_BOLD'' | 0 / 1 | ''SvgSetFontWeight'', ''SvgTspanStyle'' | | ''SVG_STYLE_NORMAL'' / ''SVG_STYLE_ITALIC'' | 0 / 1 | ''SvgSetFontStyle'' | | ''SVG_DECO_NONE'' / ''SVG_DECO_UNDERLINE'' / ''SVG_DECO_STRIKE'' / ''SVG_DECO_OVERLINE'' | 0–3 | ''SvgSetTextDecoration'' | | ''SVG_BASELINE_AUTO'' / ''SVG_BASELINE_MIDDLE'' / ''SVG_BASELINE_HANGING'' | 0–2 | ''SvgSetDominantBaseline'' | ---- ===== Funktionen ===== ^ Signatur ^ Sichtbarkeit ^ Beschreibung ^ | ''SvgSetFont(doc: int64, family: pchar, size: f64): void'' | pub | Schriftfamilie und -größe | | ''SvgSetFontWeight(doc: int64, weight: int64): void'' | pub | Gewicht, ''SVG_WEIGHT_*'' | | ''SvgSetFontStyle(doc: int64, style: int64): void'' | pub | Stil, ''SVG_STYLE_*'' | | ''SvgSetTextAnchor(doc: int64, anchor: int64): void'' | pub | Ausrichtung, ''SVG_ANCHOR_*'' | | ''SvgSetDominantBaseline(doc: int64, baseline: int64): void'' | pub | Grundlinie, ''SVG_BASELINE_*'' | | ''SvgSetLetterSpacing(doc: int64, spacing: f64): void'' | pub | Zeichenabstand | | ''SvgSetWordSpacing(doc: int64, spacing: f64): void'' | pub | Wortabstand | | ''SvgSetTextDecoration(doc: int64, deco: int64): void'' | pub | Unterstreichung usw., ''SVG_DECO_*'' | | ''SvgTextAt(doc: int64, x: f64, y: f64, text: pchar): void'' | pub | Einzeiliger Text, danach ''SvgApply'' | | ''SvgTextBegin(doc: int64, x: f64, y: f64): int64'' | pub | Textblock beginnen | | ''SvgTspan(doc: int64, text: pchar, dx: f64, dy: f64): void'' | pub | Zeile im Block | | ''SvgTspanStyle(doc: int64, text: pchar, weight: int64, dx: f64, dy: f64): void'' | pub | Zeile mit eigenem Gewicht | | ''SvgTextEnd(doc: int64): void'' | pub | Textblock schließen | | ''SvgTextOnPath(doc: int64, pathId: pchar, text: pchar, offset: f64): void'' | pub | Text entlang eines Pfads | Nicht vorhanden: ''SvgTextRotated'', ''SvgTextSpan'' und die ''SvgTextBlock''-Familie — für gedrehten Text die Transformationen aus ''std.svg.style'' vor dem Textaufruf setzen. Letzte Aktualisierung: 2026-08-19 — Seite gegen die echten Signaturen neu geschrieben (kein Style-Parameter, Konstanten statt Zeichenketten, ''SvgTextBegin''/''SvgTspan''/''SvgTextEnd'' statt Textblock-Typ). Beispiel mit ''lyxc 1.1.3I'' übersetzt und ausgeführt, Ausgabe übernommen.