feat: use Worte/Weise labels and render metadata at page bottom (Closes #5)

Add metadata_labels ("abbreviated"/"german") and metadata_position
("top"/"bottom") options to LayoutConfig. German labels use "Worte:" and
"Weise:" instead of "T:" and "M:", with "Worte und Weise:" when lyricist
and composer are the same person. Metadata at bottom position renders
after notes with word-wrapping. MeasurementEngine accounts for two-line
metadata in German label mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shahondin1624
2026-03-17 09:41:48 +01:00
parent 0139327034
commit 62aa32c13d
4 changed files with 106 additions and 17 deletions

View File

@@ -51,7 +51,9 @@ data class LayoutConfig(
val margins: Margins = Margins(),
val chordLineSpacing: Float = 3f, // mm
val verseSpacing: Float = 4f, // mm
val pageNumberPosition: String = "bottom-outer"
val pageNumberPosition: String = "bottom-outer",
val metadataLabels: String = "abbreviated", // "abbreviated" (M:/T:) or "german" (Worte:/Weise:)
val metadataPosition: String = "top" // "top" (after title) or "bottom" (bottom of last page)
)
data class Margins(