paperInkDefinition top-level constant
FamilyDefinition
const paperInkDefinition
Paper & ink (spec §5.3 #11; motion brief §2.3 "Paper & ink"): outlined
paper slips (rounded-rect fills, 2–6 % corners, under a hand-drawn
fineliner outline). Press: the outline "boils" to an alternate stroke
in frame 1 (tint), an ink wash spreads from the fingertip to its peak
and dries on effectsSlow (releaseAlt), the slip drops 1 dp
(release 1400/0.9, seeded × {0.9, 1, 1.1}); display glyphs bleed in
from 104 %; sound typewriter, haptic soft · 0.6. The palette is built
by buildPaperInkCandidate.
Implementation
const FamilyDefinition paperInkDefinition = FamilyDefinition(
family: ThemeFamily.paperInk,
brightnessWeights: [2, 7],
schemes: [Weighted(HarmonyScheme.analogous, 1)],
shapes: [Weighted(KeyShapeKind.roundedRect, 1)],
cornerPermille: IntRange(20, 60),
styles: [Weighted(KeyStyleKind.outlined, 1)],
keyStyle: KeyStyleSpec(
kind: KeyStyleKind.outlined,
outlineWidthCdp: 150,
edgeShadePermille: 650,
stateLayerPermille: 0,
),
displayFonts: [Weighted(FontIds.newsreader, 1)],
keyFonts: [Weighted(FontIds.newsreader, 1)],
displayWeight: IntRange(350, 450),
keyWeight: IntRange(400, 500),
operatorWeightBonus: IntRange(200, 300),
backgrounds: [Weighted(BackgroundKind.paperSheet, 1)],
patterns: [
Weighted(BackgroundPattern.none, 1),
Weighted(BackgroundPattern.stripes, 1),
Weighted(BackgroundPattern.grid, 1),
Weighted(BackgroundPattern.dots, 1),
],
sound: SoundPackId.typewriter,
dark: paperInkDarkRanges,
light: paperInkLightRanges,
motion: MotionSpec(
verb: PressVerb.ink,
scheme: MotionScheme.standard,
pressIn: SpringTokens.effectsFast,
release: SpringTokens.standardFast,
releaseAlt: SpringTokens.effectsSlow,
depthCdp: 100,
entry: EntryStyle.bleed,
entryScalePermille: 1040,
fx: PressFx.inkWash,
impact: ImpactStyle.soft,
impactPermille: 600,
),
motionRanges: MotionRanges(),
nonColourOperatorCue: OperatorCue.pattern,
bile: BileRule.v2,
);