feat(cover): redraw placeholder covers in nine selectable styles

Replace the lattice placeholder with a typesetting engine that measures real glyphs, balances line
breaks and parses series, subtitles and sort-form authors before drawing.
Add a placeholderCoverStyle display preference, Bauhaus by default, with a style switcher and sample
shelf in Book Covers settings. Colours follow the series, author or title, so a cover stays the same
when genres arrive later; only Paperback's bands use genre.
This commit is contained in:
neon
2026-10-15 00:43:21 +00:00
parent 97cd03325f
commit c54986d5d2
35 changed files with 3390 additions and 228 deletions
+28
View File
@@ -283,6 +283,21 @@
"loadError": "Failed to load the default cover search provider",
"saveError": "Failed to save the default cover search provider"
},
"placeholderStyle": {
"title": "Placeholder style",
"hint": "Books without cover art are drawn in this style.",
"options": {
"bauhaus": "Bauhaus",
"constructivist": "Constructivist",
"memphis": "Memphis",
"clothbound": "Clothbound",
"poster": "Poster",
"aurora": "Aurora",
"vista": "Vista",
"marbled": "Marbled",
"paperback": "Paperback"
}
},
"displayMode": {
"title": "Cover display mode",
"hint": "Controls how real covers fit inside book slots when aspect ratios differ",
@@ -5085,6 +5100,19 @@
},
"book": {
"untitled": "Untitled",
"placeholder": {
"volume": "Vol. {number}",
"genre": {
"horror": "Horror",
"romance": "Romance",
"fantasy": "Fantasy",
"scifi": "Sci-fi",
"mystery": "Mystery",
"classic": "Classics",
"nonfiction": "Non-fiction",
"young": "Young readers"
}
},
"unknownFormat": "unknown",
"collapsedSeries": {
"label": "Series",