Prep your dish: Heat the oven to 350°F (175°C). Butter a medium baking dish (about 8x10 inches or similar).
Butter the bread: Lightly butter each slice on one side. If using a soft, enriched bread like brioche, go easy on the butter—it’s already rich.
Cut and layer: Cut the bread into halves or triangles. Arrange a layer of bread, buttered side up, in the dish. Scatter some raisins and a little zest, if using. Repeat with another layer, tucking in the fruit so it’s evenly spread.
Warm the dairy: In a saucepan, gently heat the milk and cream until steaming but not boiling. Take off the heat.
Whisk the custard: In a bowl, whisk the eggs, sugar, vanilla, cinnamon, and nutmeg. Slowly pour in the warm milk mixture, whisking steadily so the eggs don’t scramble.
Soak the bread: Pour the custard evenly over the bread. Use the back of a spoon to press the top lightly so everything gets a chance to soak.
Rest: Let the dish sit for 20–30 minutes. This helps the bread absorb the custard and prevents a dry pudding.
Top and bake: Sprinkle the top with a little demerara or caster sugar. Bake for 35–45 minutes, until puffed, set in the middle, and golden on top. A slight wobble in the center is fine.
Cool slightly and serve: Let it rest for 10 minutes before serving. Spoon into bowls and add cream, custard, or ice cream.