Gallery¶
Every image on this site — this page included — is rendered when the documentation is built, from the spec printed underneath it. Nothing here is a screenshot, so nothing here can drift from what the code actually draws.
The art comes from examples/pes/, the demo project in the repository. It ships
with the source, never with the package: the engine itself contains no art
at all.
A page¶

examples/pes/pages/slepice.yaml — a 2 × 2 A4 page, no scenes, three pixel sprites, all three bubble kinds.title: "Bára hlídá slepice"
page: A4
px_per_mm: 4
margin_mm: 14
gutter_mm: 6
library: "../characters"
pixel_dir: "../pixel"
rows:
- height: 1.0
panels:
- actors:
- {char: tom, face: happy, arms: wave, x: 0.34, y: 0.66, scale: 0.86}
- {char: bara, face: neutral, x: 0.72, y: 0.78, scale: 0.46}
bubbles:
- text: "Báro, hlídej slepice!"
kind: speech
speaker: tom
- actors:
- {char: bara, face: happy, x: 0.45, y: 0.74, scale: 0.55}
pixel:
- {art: sun, x: 0.82, y: 0.24, scale: 0.26}
bubbles:
- text: "Hlídám! Haf!"
kind: shout
speaker: bara
- height: 1.0
panels:
- actors:
- {char: bara, face: neutral, x: 0.5, y: 0.72, scale: 0.5}
pixel:
- {art: bone, x: 0.78, y: 0.7, scale: 0.12}
bubbles:
- text: "Kdyby tak byla nějaká kost..."
kind: thought
speaker: bara
- actors:
- {char: tom, face: surprised, arms: point, x: 0.4, y: 0.66, scale: 0.86}
pixel:
- {art: heart, x: 0.8, y: 0.3, scale: 0.16}
bubbles:
- text: "Hodná holka!"
kind: speech
speaker: tom
A page with scene backgrounds¶

examples/pes/pages/kosticka.yaml — scenes (pokoj, dvur), pixel art, and manually placed bubbles.title: "Kostička"
page: A4
px_per_mm: 4
margin_mm: 14
gutter_mm: 6
library: "../characters"
scenes_dir: "../scenes"
pixel_dir: "../pixel"
rows:
- height: 1.0
panels:
- scene: pokoj
actors:
- {char: bara, pose: walk, face: neutral, x: 0.42, y: 0.74, scale: 0.5}
pixel:
- {art: bone, x: 0.8, y: 0.68, scale: 0.14}
bubbles:
- text: "Co to tu voní?"
kind: thought
x: 0.4
y: 0.22
to: [0.5, 0.55]
- scene: {name: dvur, weather: clear}
actors:
- {char: tom, face: laugh, arms: thumbsup, x: 0.4, y: 0.66, scale: 0.86}
- {char: bara, face: happy, x: 0.74, y: 0.78, scale: 0.46}
bubbles:
- text: "Tady máš kostičku!"
kind: speech
x: 0.5
y: 0.18
to: [0.4, 0.42]
- height: 1.0
panels:
- actors:
- {char: bara, face: happy, x: 0.5, y: 0.74, scale: 0.55}
pixel:
- {art: heart, x: 0.78, y: 0.28, scale: 0.16}
- {art: star, x: 0.2, y: 0.3, scale: 0.12}
bubbles:
- text: "Mňam! Děkuju! Haf haf!"
kind: shout
x: 0.5
y: 0.2
to: [0.5, 0.5]
One panel of it¶

cmf panel examples/pes/pages/kosticka.yaml --row 0 --col 1A standalone illustration¶

examples/pes/pages/dvur-scene.yaml — one background filling the canvas. Rendered with cmf scene.# Standalone illustration: a single scene filling the canvas, no comic grid.
# uv run comicforge scene examples/pes/pages/dvur-scene.yaml -o dvur.png
title: "Na dvoře"
type: scene
scene:
name: dvur
weather: clear
scale: 3
library: "../characters"
scenes_dir: "../scenes"
actors:
- {char: bara, face: happy, x: 0.34, y: 0.82, scale: 0.42}
- {char: tom, face: laugh, arms: wave, x: 0.66, y: 0.78, scale: 0.62}
bubbles:
- text: "Krásný den na dvoře!"
kind: speech
x: 0.6
y: 0.46
to: [0.64, 0.62]
A strip, with everything at once¶

title: "Ztracená kostička"
title_style: {font_size: 22, color: "#21304a"}
page: [190, 95] # a custom [width_mm, height_mm] — or A4 / A5 / letter
px_per_mm: 5
margin_mm: 8
gutter_mm: 5
library: "../../examples/pes/characters"
scenes_dir: "../../examples/pes/scenes"
pixel_dir: "../../examples/pes/pixel"
frame: {width: 3, radius: 8}
bubble_style: {font_size: 13, em: 0.95}
rows:
- panels:
- scene: pokoj
caption: "Bára hledala celé odpoledne."
actors:
- {char: bara, pose: walk, face: neutral, x: 0.42, y: 0.68, scale: 0.48}
bubbles:
- {text: "Kde jenom je?", kind: thought, speaker: bara, max_chars: 12}
- scene: {name: dvur, weather: clear}
caption: "Tom ji našel u boudy."
actors:
- {char: tom, face: happy, arms: point, x: 0.34, y: 0.64, scale: 0.76}
- {char: bara, pose: sit, face: happy, x: 0.76, y: 0.70, scale: 0.38}
bubbles:
- {text: "Tady!", kind: speech, speaker: tom}
- caption: "Konec pátrání."
actors:
- {char: bara, pose: walk, face: happy, x: 0.5, y: 0.6, scale: 0.5}
pixel:
- {art: heart, x: 0.8, y: 0.28, scale: 0.2}
- {art: bone, x: 0.2, y: 0.32, scale: 0.18}
bubbles:
- {text: "Haf!", kind: shout, speaker: bara}
Contact sheets¶
Every variant of one slot, as a grid of panels — a useful thing to keep in a project of your own as art documentation that cannot go stale.

face slot. The last panel omits face: and gets the default.
arms slot, with face: happy held constant.
flip. The faces are shared files, re-registered onto each body by anchor.
Layout and lettering¶

height and panel width as relative weights.
width: 0, and a heavy round red override.
at: anchors. Each column keeps its own top and bottom stack.
Raster panels¶

fit: cover, fit: contain, and an actor plus a bubble on top of a bitmap.