Card Titles
The node that keeps your tarot cards legible
- image
- IMAGE
The part where the model would have garbled the text
Every diffusion model mangles small in-image text, and Z-Image Turbo - the model this pack is built around - is no exception. Ask it to paint "THE FOOL" across the bottom of a card and you get a confident smear of nonsense letterforms. ProtoTeller doesn't fight that. It generates the card art clean (no text), then burns the title in afterwards with this node, the same way a real deck keeps art and lettering as separate layers.
CardTitles is a drop-in replacement for Comfyroll's CR Overlay Text, with zero Comfyroll dependency. The author re-implemented it in plain PIL so this pack doesn't drag in a whole other pack just to stamp a name on a card.
How it works
Under the hood it renders your text as a grayscale mask, then composites a solid-color text layer onto the card image using that mask. Because the text is drawn to a mask first and only then merged, the glyph edges stay clean instead of smearing into the art. The output is a single IMAGE ready to feed onward - into PreviewTextImage, or any Save Image node.
The inputs that matter
There are a lot of knobs here; most you can safely ignore for a first reading. The ones you'll actually touch:
- text - the card name (or reading text). Multiline, so you can stack a title and a subtitle.
- font_size - default 50. Card titles usually want bigger; tune to your card's resolution.
- font_color - 30 named colors plus "custom". Pick "custom" and set font_color_hex (the one optional input, like
#8B0000) when you want a specific color. - position_x / position_y - move the text block around the card; both default 0, range ±4096.
- rotation_angle - for a reversed card, rotate the title 180° so it reads right-side-up while the card is upside-down. You'll reach for this a lot in this pack.
- align / justify - vertical anchor (top/center/bottom) and horizontal anchor (left/center/right).
- rotation_options - rotate around the text's own center or the image's center; only matters when the text isn't in the middle of the card.
font_name ships one option: YoungSerif-Regular.ttf, bundled in the pack's fonts/ folder. It's a lovely serif that reads like a proper deck. Drop your own .ttf in there and it appears in the dropdown after a restart.
Install
Same as the rest of the pack: ComfyUI Manager → search "ProtoTeller", or
cd ComfyUI/custom_nodes
git clone https://github.com/DoctorDiffusion/ComfyUI-ProtoTeller
then restart ComfyUI. No extra Python dependencies - it's torch, numpy and PIL, all already present. The multi-gigabyte model downloads in the README are for the full tarot generation workflow; if you only want to stamp text on existing images, you need none of them.
Where people get burned
- Only one font bundled. Don't go hunting in the dropdown - add files to
custom_nodes/ComfyUI-ProtoTeller/fonts/. - There's no outline or shadow option, so white text on light card art just vanishes. Position the title on darker art or pick a contrasting color.
- Sizes are pixels at the card's native resolution. A size that looks right at 1024x1024 looks small if you stamp after upscaling - do your text last, after any resize.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| text | STRING | text | — |
| font_name | COMBO | 1 options: YoungSerif-Regular.ttf | |
| font_size | INT | 501–1024 | — |
| font_color | COMBO | 30 options: custom, aqua, black, blue, brown, coral, +24 | |
| align | COMBO | 3 options: center, top, bottom | |
| justify | COMBO | 3 options: center, left, right | |
| margins | INT | 0-1024–1024 | — |
| line_spacing | INT | 0-1024–1024 | — |
| position_x | INT | 0-4096–4096 | — |
| position_y | INT | 0-4096–4096 | — |
| rotation_angle | FLOAT | 0.0-360–360 | — |
| rotation_options | COMBO | 2 options: text center, image center | |
| font_color_hexopt | STRING | #000000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |