Draw Mana Symbols π΄
Turn {W}{U}{B}{R}{G} into actual Magic cards
- img_composite
- margins
- textbox
- shadow
- image
- mask
Draw Mana Symbols is the pack's most gloriously niche node: it renders Magic: The Gathering mana costs as actual card-art symbols. Type {W}{U}{B}{R}{G} and get white, blue, black, red, and green mana icons rendered into an image. If you generate custom card frames, alter cards, or make MTG-themed content, this is the node that exists because the author wanted it - and it's honestly the only one of its kind I've seen in the ComfyUI ecosystem.
How it works
Under the hood it's a thin wrapper around the pack's Draw Text node. You type a mana cost in curly-brace notation and the node converts it before rendering:
{W}{U}{B}{R}{G}- the five colors{1}through{9}- generic mana{X}{Y}{Z},{C}(colorless),{H}(phyrexian),{S}(snow), plus fancy variants like{W-ORIGINAL}and{W-LIST}
Each maps to a glyph in the mana.ttf icon font that ships with the pack, so there's no model download and no external asset hunting - the font is in custom_nodes/comfyui-dreambait-nodes/fonts/. That's also why font_name defaults to mana.ttf and why the font list in the node includes the other packaged fonts (MPlantin, Gotham, horizon, etc.) for pairing body text with symbols.
Everything else is inherited from Draw Text: image_width/image_height (ignored if you composite onto an existing img_composite image), font_size, font_color, background_color, full alignment controls, x_percent/y_percent positioning, rotation_angle, even language for hyphenation. Outputs are image and mask - the mask lets you composite just the symbols onto a card frame without a colored background box. That's the workflow: render symbols with a transparent background, then use the mask to punch them into your card design.
The inputs you'll actually touch
text- the mana string, e.g.{1}{W}{W}for a two-white one-generic costfont_size- bigger than you think; 54 is the default and reads small at card scalebackground_color/background_opacity- settransparent(or use an 8-digit hex with alpha) if you're compositing onto a card
One tip: the whole system is case- and bracket-sensitive - {w} won't convert. Keep the braces and uppercase letters exactly as in the examples.
Install
It's part of drmbt/comfyui-dreambait-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/drmbt/comfyui-dreambait-nodes
then restart ComfyUI (or find it via ComfyUI Manager as "comfyui-dreambait-nodes"). The pack's full dependency list installs with it, heavy ML deps included, even though this node just needs Pillow and a font file. It's a fun utility, not a serious ML node - but it's the kind of well-executed specificity that makes a grab-bag pack worth keeping around.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | {W}{U}{B}{R}{G} | Text to render. Supports mana symbols in {W}{U}{B}{R}{G} format |
| image_width | INT | 51264β2048 | Width of output image. Ignored if img_composite is provided |
| image_height | INT | 51264β2048 | Height of output image. Ignored if img_composite is provided |
| font_name | COMBO | mana.ttf | TTF font file to use from the fonts directory |
| font_size | INT | 541β1024 | Font size in pixels |
| font_color | COMBO | white | Text color. Alpha controlled by opacity unless using 8-digit hex |
| font_opacity | FLOAT | 1.000β1 | Text opacity (ignored if using 8-digit hex color) |
| background_color | COMBO | black | Background color. Alpha controlled by opacity unless using 8-digit hex |
| background_opacity | FLOAT | 1.000β1 | Background opacity (ignored if using 8-digit hex color) |
| vertical_align | COMBO | top | 3 options: center, top, bottom |
| horizontal_align | COMBO | left | Horizontal text alignment |
| justify | BOOLEAN | false | Enable full justification (except last line of paragraph) |
| x_percent | FLOAT | 0.000β100 | Horizontal position as percentage of image width |
| y_percent | FLOAT | 0.000β100 | Vertical position as percentage of image height |
| x_offset | INT | 0-4096β4096 | Additional horizontal offset in pixels |
| y_offset | INT | 0-4096β4096 | Additional vertical offset in pixels |
| line_spacing | INT | 6-1024β1024 | Additional space between lines in pixels |
| rotation_angle | FLOAT | 0.0-360β360 | Text rotation angle in degrees |
| rotation_options | COMBO | 2 options: text center, image center | |
| language | COMBO | en_US | Language for hyphenation rules |
| font_color_hexopt | STRING | #000000 | Custom hex color (6 or 8 digits). 8-digit hex overrides opacity |
| bg_color_hexopt | STRING | #000000 | Custom hex color (6 or 8 digits). 8-digit hex overrides opacity |
| img_compositeopt | IMAGE | β | |
| marginsopt | MARGINS | β | |
| textboxopt | TEXTBOX | β | |
| shadowopt | SHADOW | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| mask | MASK | β |