Files
BlockSeasons/lib/ui/branding/feature_graphic_painter.dart
T
airkjw b0839aba2a fix(store): render feature-graphic wordmark with real font (Titan One, OFL)
The flutter_test default font draws every glyph as a box, so the wordmark was
unreadable. Load the OFL Titan One TTF via FontLoader in the generator and
render 'Block Seasons' + tagline with it; fit the text within the 1024 width.
Font used only by the asset generator, not bundled in the app.
2026-06-13 18:20:11 +09:00

43 lines
1.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// lib/ui/branding/feature_graphic_painter.dart
import 'package:flutter/material.dart';
import 'app_icon_painter.dart';
/// Paints the Play feature graphic (1024×500): navy field, the brand blocks on
/// the left, wordmark + tagline on the right.
class FeatureGraphic {
static void paint(Canvas canvas, Size size) {
final rect = Offset.zero & size;
AppIconMark.paintBackground(canvas, rect);
// Blocks on the left, vertically centered.
canvas.save();
final blockArea = size.height * 0.74;
canvas.translate(size.height * 0.16, (size.height - blockArea) / 2);
AppIconMark.paintBlocks(canvas, blockArea, groupFraction: 0.92);
canvas.restore();
// Text column begins just right of the blocks; kept within the 1024 width.
final textLeft = size.height * 0.94;
void text(String s, double dy, double fontSize, Color c) {
final tp = TextPainter(
text: TextSpan(
text: s,
style: TextStyle(
color: c,
fontSize: fontSize,
fontFamily: 'TitanOne',
letterSpacing: 0.5,
),
),
textDirection: TextDirection.ltr,
)..layout(maxWidth: size.width - textLeft - size.height * 0.06);
tp.paint(canvas, Offset(textLeft, dy));
}
text('Block Seasons', size.height * 0.33, 56, Colors.white);
text('A new season of blocks,\nevery few weeks.', size.height * 0.56, 22,
const Color(0xFFB9C4E6));
}
}