Vendor the JosefinSans variable font (upright + italic, weight range 100-700), OFL licensed. _AppRoot installs it as the ambient DefaultTextStyle at weight w300 (Light); ClideText inherits rather than re-specifying the family, so Alchemist's Ahem injection keeps goldens deterministic per D-024 while production renders the intended face. typography.dart gains clideUiFamily + clideUiFamilyFallback alongside the existing mono constants; .gitignore learns about Alchemist's failures/ diff output dir so local re-runs don't leak into `git status`. Co-Authored-By: Claude <noreply@anthropic.com>
68 lines
2.2 KiB
Dart
68 lines
2.2 KiB
Dart
/// Typography constants shared across widgets.
|
|
///
|
|
/// Two bundled families:
|
|
///
|
|
/// - [clideUiFamily] — Josefin Sans, the application-wide UI face.
|
|
/// Shipped as a variable font (weights 100-700) + italic companion;
|
|
/// default weight is [clideUiDefaultWeight] (Light / `w300`).
|
|
/// - [clideMonoFamily] — JetBrains Mono, for terminal panes, diff
|
|
/// views, code editors, and any other monospace surface.
|
|
///
|
|
/// Fallback chains exist for web builds + harnesses where the bundled
|
|
/// asset isn't picked up (rare, but possible during `flutter test` if
|
|
/// asset fonts aren't declared in the harness).
|
|
library;
|
|
|
|
import 'package:flutter/widgets.dart' show FontWeight;
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// UI face — Josefin Sans
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// The bundled application UI family. Always resolved first.
|
|
const String clideUiFamily = 'JosefinSans';
|
|
|
|
/// Default weight for UI text. Josefin Sans reads well at Light; the
|
|
/// rest of the design adjusts contrast and size to stay legible.
|
|
const FontWeight clideUiDefaultWeight = FontWeight.w300;
|
|
|
|
/// System fallback chain for the UI face. Sans-serif humanist faces
|
|
/// that sit close to Josefin's proportions, ordered by platform.
|
|
const List<String> clideUiFamilyFallback = [
|
|
// User system install of Josefin, if any.
|
|
'Josefin Sans',
|
|
// Platform humanist sans defaults.
|
|
'Inter',
|
|
'Helvetica Neue',
|
|
'Helvetica',
|
|
'Arial',
|
|
'sans-serif',
|
|
];
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Monospace face — JetBrains Mono
|
|
// ---------------------------------------------------------------------------
|
|
|
|
/// The bundled monospace family. Always resolved first.
|
|
const String clideMonoFamily = 'JetBrainsMono';
|
|
|
|
/// System fallback chain. Ordered by platform prevalence + quality of
|
|
/// programming-ligature / box-drawing coverage.
|
|
const List<String> clideMonoFamilyFallback = [
|
|
// macOS
|
|
'SF Mono',
|
|
'Menlo',
|
|
'Monaco',
|
|
// Linux — user system install under the canonical PostScript name
|
|
'JetBrains Mono',
|
|
'Fira Code',
|
|
'Hack',
|
|
'DejaVu Sans Mono',
|
|
'Liberation Mono',
|
|
// Windows
|
|
'Cascadia Code',
|
|
'Consolas',
|
|
// Last resort
|
|
'monospace',
|
|
];
|