Zeilenhöhe-Regler statt "+ Text"; Linienstil editierbar; DOSSIER-Audit gesichert
- "+ Text"-Knopf entfernt (war ohnehin immer deaktiviert, kein Werkzeug dahinter — Text wird ein eigenständiges Zeichenwerkzeug, AUDIT B1). An seiner Stelle ein Zeilenhöhe-Regler (Stepper, Vielfaches der Schriftgrösse) — neues Paragraph.lineHeight, durchgereicht bis in HTML-Vorschau (line-height) und SVG-Render (kumulierte Zeilen- Vorschübe statt festem lineGap). - Linienstil im Attribute-Panel war rein informativ (kein Setter im Host-Kontrakt). onSetSelectionLineStyle ergänzt (nur Drawing2D), jetzt echtes Dropdown statt "—"-Anzeige. - docs/design/dossier-feature-audit.md: der ausführliche A1-A6/B1-B4/ C1-C3/D1-D3/E-Auditbericht aus einer alten Session gesichert (lag bisher nur im Transkript, nicht im Repo) — Quelle der HANDOVER.md- AUDIT-Kürzel.
This commit is contained in:
+14
-3
@@ -3012,13 +3012,24 @@ function renderPrimitive(
|
||||
});
|
||||
const extra: SvgLine[] = p.extraLines.map((line) => ({
|
||||
align: line.align,
|
||||
lineHeight: lineGap,
|
||||
tspans: [{ text: line.text, fontSize: baseFs * 0.8, fill: p.color }],
|
||||
}));
|
||||
const lines = [...docLines, ...extra];
|
||||
if (lines.length === 0) return null;
|
||||
// Block vertikal um den Anker zentrieren.
|
||||
const totalH = baseFs + (lines.length - 1) * lineGap;
|
||||
// Block vertikal um den Anker zentrieren. Absätze können eine eigene
|
||||
// Zeilenhöhe tragen (Text-Gruppe, Zeilenhöhe-Regler) — darum kumulierte
|
||||
// Vorschübe statt eines einzigen festen lineGap.
|
||||
const totalH = baseFs + lines.slice(1).reduce((sum, l) => sum + l.lineHeight, 0);
|
||||
const startY = c.y - totalH / 2 + baseFs * 0.8;
|
||||
const lineYs: number[] = [];
|
||||
{
|
||||
let y = startY;
|
||||
lines.forEach((line, k) => {
|
||||
if (k > 0) y += line.lineHeight;
|
||||
lineYs.push(y);
|
||||
});
|
||||
}
|
||||
return (
|
||||
<text style={{ pointerEvents: "none", userSelect: "none" }}>
|
||||
{lines.map((line, k) => {
|
||||
@@ -3032,7 +3043,7 @@ function renderPrimitive(
|
||||
<tspan
|
||||
key={k}
|
||||
x={c.x}
|
||||
y={startY + k * lineGap}
|
||||
y={lineYs[k]}
|
||||
textAnchor={anchor}
|
||||
>
|
||||
{line.tspans.map((ts, j) => (
|
||||
|
||||
Reference in New Issue
Block a user