diff --git a/assets/vk/cover/build-cover.mjs b/assets/vk/cover/build-cover.mjs index af539d9..8cf54cb 100644 --- a/assets/vk/cover/build-cover.mjs +++ b/assets/vk/cover/build-cover.mjs @@ -425,11 +425,15 @@ function tileTexture(pal, grid, opts) { ctx.stroke(); ctx.restore(); + // Letter in the top-left corner, value in the bottom-right — the in-game tile layout. + // The glyph is placed by its INK box, not by the text origin, so every letter lines up + // on the same corner regardless of its side bearings and ascent. ctx.fillStyle = pal.tileText; ctx.font = brand ? `${TEX_CELL * 0.74}px EruditBrand` : `700 ${TEX_CELL * 0.66}px DejaVu Sans`; - ctx.textAlign = 'center'; + ctx.textAlign = 'left'; ctx.textBaseline = 'alphabetic'; - ctx.fillText(letter, x + w * 0.46, y + w * (brand ? 0.79 : 0.775)); + const m = ctx.measureText(letter); + ctx.fillText(letter, x + w * 0.1 + m.actualBoundingBoxLeft, y + w * 0.1 + m.actualBoundingBoxAscent); ctx.font = `600 ${TEX_CELL * 0.23}px DejaVu Sans`; ctx.textAlign = 'right'; @@ -679,6 +683,22 @@ const VARIANTS = [ vignette(ctx, W, H, 0.6); }, }, + { + id: 'day-spot', + title: 'День — тот же кадр, светлая пара к night-spot', + palette: WARM, + font: 'brand', + cam: { elevDeg: 27, dist: 24, widthFrac: 1.4, aimX: 0.8, aimY: WORDS_Y, aimYFrac: 0.56 }, + background(ctx, W, H) { + linear(ctx, W, H, [[0, '#fbf3e7'], [0.6, '#f0e2ce'], [1, '#d8bd98']], 0, 0, 0, H); + radialGlow(ctx, W, H, W * 0.5, H * 0.5, W * 0.55, 'rgba(255,250,236,0.85)', 'rgba(255,250,236,0)'); + }, + effects(ctx, W, H) { + farHaze(ctx, W, H, '251,243,231', 0.5, 0.9); + nearFade(ctx, W, H, '150,113,72', 0.84, 0.35); + vignette(ctx, W, H, 0.3); + }, + }, { id: 'brand-blue', title: 'Бренд-градиент — доска парит, продуктовый вид', diff --git a/assets/vk/cover/preview/contact-sheet.png b/assets/vk/cover/preview/contact-sheet.png index b06c4e6..70c4385 100644 Binary files a/assets/vk/cover/preview/contact-sheet.png and b/assets/vk/cover/preview/contact-sheet.png differ diff --git a/assets/vk/cover/preview/cover-brand-blue.png b/assets/vk/cover/preview/cover-brand-blue.png index bc6ad28..2a22cac 100644 Binary files a/assets/vk/cover/preview/cover-brand-blue.png and b/assets/vk/cover/preview/cover-brand-blue.png differ diff --git a/assets/vk/cover/preview/cover-day-spot.png b/assets/vk/cover/preview/cover-day-spot.png new file mode 100644 index 0000000..4ec2314 Binary files /dev/null and b/assets/vk/cover/preview/cover-day-spot.png differ diff --git a/assets/vk/cover/preview/cover-flat-app.png b/assets/vk/cover/preview/cover-flat-app.png index 235c831..3917c90 100644 Binary files a/assets/vk/cover/preview/cover-flat-app.png and b/assets/vk/cover/preview/cover-flat-app.png differ diff --git a/assets/vk/cover/preview/cover-macro-low.png b/assets/vk/cover/preview/cover-macro-low.png index d7f7ea1..6b88c88 100644 Binary files a/assets/vk/cover/preview/cover-macro-low.png and b/assets/vk/cover/preview/cover-macro-low.png differ diff --git a/assets/vk/cover/preview/cover-night-spot.png b/assets/vk/cover/preview/cover-night-spot.png index f6f965a..eb79afd 100644 Binary files a/assets/vk/cover/preview/cover-night-spot.png and b/assets/vk/cover/preview/cover-night-spot.png differ diff --git a/assets/vk/cover/preview/cover-night-wordmark.png b/assets/vk/cover/preview/cover-night-wordmark.png index 462055c..13b473c 100644 Binary files a/assets/vk/cover/preview/cover-night-wordmark.png and b/assets/vk/cover/preview/cover-night-wordmark.png differ diff --git a/assets/vk/cover/preview/cover-warm-table.png b/assets/vk/cover/preview/cover-warm-table.png index e649a02..878f5a3 100644 Binary files a/assets/vk/cover/preview/cover-warm-table.png and b/assets/vk/cover/preview/cover-warm-table.png differ