Skip to content

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

A four-panel A4 comic page: Tom asks Bára to watch the chickens

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
cmf render examples/pes/pages/slepice.yaml -o slepice.png

A page with scene backgrounds

A three-panel page with illustrated 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

A single panel: Tom and Bára in the farmyard

cmf panel examples/pes/pages/kosticka.yaml --row 0 --col 1

A standalone illustration

A wide farmyard illustration with Tom waving and Bára beside him

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

A three-panel strip with a title, captions, scenes, sprites and all three bubble kinds

Title, page-wide frame and lettering, two scenes, captions, pixel sprites, three bubble kinds.
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.

Tom's seven face variants

The face slot. The last panel omits face: and gets the default.

Tom's six arms variants

The arms slot, with face: happy held constant.

Bára sitting, walking and walking flipped

Two poses and a flip. The faces are shared files, re-registered onto each body by anchor.

The dvur scene clear and raining, and the pokoj interior

A scene slot: one background, two weathers — plus a second scene with no slots.

Layout and lettering

Two rows of panels with different relative widths and heights

Row height and panel width as relative weights.

Three panels with different frame settings

Page-default frame, width: 0, and a heavy round red override.

Bubbles at all nine anchor positions

The nine at: anchors. Each column keeps its own top and bottom stack.

Three bubbles of different lengths stacked without overlapping

No coordinates at all — bubbles stack by their measured height.

Raster panels

An image cover-cropped, letterboxed, and composed on

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

Render them yourself

git clone https://github.com/mojzis/comicforge && cd comicforge
uv sync
uv run cmf render examples/pes/pages/slepice.yaml   -o slepice.png
uv run cmf render examples/pes/pages/kosticka.yaml  -o kosticka.png
uv run cmf scene  examples/pes/pages/dvur-scene.yaml -o dvur.png