Commit Graph

4 Commits

Author SHA1 Message Date
shahondin1624
6d67c051f0 fix: position reference footer below content to prevent overlap (Closes #25)
The reference footer was anchored to a fixed position near the bottom
margin, causing it to overlap with notes text on songs that had both
notes and references (e.g., "Die Gedanken sind frei").

Changed renderReferenceFooter to use flow-based positioning from the
current y-position after notes/metadata, ensuring the separator line,
abbreviation headers, and page numbers always render below the
preceding content without overlap.

Also updated calculateFooterReservation and MeasurementEngine to match
the simplified layout calculation, and added toc.highlight_column to
the example songbook.yaml to demonstrate column highlighting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 14:59:20 +01:00
a251fac053 fix: increase verse spacing default from 4mm to 6mm (Closes #24) (#27) 2026-03-17 14:52:49 +01:00
shahondin1624
ab91ad2db6 feat: support custom font files for song titles (Closes #4)
- Improve PdfFontMetrics: use canonical path for cache key, validate
  font file existence, use absolute paths for BaseFont.createFont
- Add font file path resolution in SongbookPipeline (relative to
  project directory)
- Add font file existence validation in Validator.validateConfig
- Add end-to-end tests: custom font loading, umlaut rendering,
  cache deduplication, missing file error
- Document custom font file usage in example songbook.yaml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 09:54:15 +01:00
shahondin1624
e386501b57 Initial implementation of songbook toolset
Kotlin/JVM multi-module project for generating a scout songbook PDF
from ChordPro-format text files. Includes ChordPro parser, layout engine
with greedy spread packing for double-page songs, OpenPDF renderer,
CLI (Clikt), Compose Desktop GUI, and 5 sample songs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 08:35:42 +01:00