- 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>
Add ForewordConfig to BookConfig, Foreword model type, ForewordParser for
text files (quote/paragraphs/signatures), ForewordPage in PageContent,
pipeline integration to insert foreword after TOC, and PDF rendering with
styled quote, horizontal rule separator, word-wrapped paragraphs, and
right-aligned signatures.
Also adds Gradle wrapper and adjusts build toolchain for JDK 25 compat.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>