Text Maker
Styled text that comes out as image, SVG, and mask at once
- image
- svg
- mask
ComfyUI's stock text handling stops at CLIP conditioning - if you want the word "HELLO" as an actual image, you're normally building it in another app. Text Maker renders text into three outputs at once: a rasterized image, a vector svg, and a mask. Title cards, logos, subtitles, watermark text, callout labels - it's the node that makes text a first-class citizen in your graph.
It's from orion4d/ComfyUI_DAO_master, the French-authored vector-and-image pack. The SVG output is the differentiator: enable svg_vectorize and it converts the text into real vector paths (using matplotlib's TextPath), with holes handled correctly so letters like "o" and "e" don't come out filled blobs - something naive converters botch constantly.
How it works
text is a multiline string (default "HELLO DAO!\nTEST"), and font_file is a dropdown fed by the .ttf/.otf fonts in the pack's Fonts/ folder - drop a font in, hit the ↻ refresh, and it appears in the list. The pack ships with a full Roboto family, so you're not stuck with the default bitmap font.
font_size, canvas_width, canvas_height set the layout. Fill and stroke are independently controlled: fill_hex + fill_alpha for the letter body, stroke_width + stroke_hex + stroke_alpha for an outline (great for legible captions over busy images). align is center/left/right, bg_transparent toggles a transparent background (or set bg_hex for a solid one).
Outputs:
image- the rendered text image (RGBA ifimage_rgbais on).svg- theSVG_TEXTvector version, wireable into Convert SVG → IMG, SVG Style, or a save node.mask- the text shape as a mask, for compositing or feeding an inpainting step.
The settings that matter
font_file- pick your font; the dropdown won't show new ones until you refresh.fill_hex+stroke_width- the look of the text. Stroke 0 means no outline.svg_vectorize- leave it on if you plan to use the SVG output; it's what makes the letters actual paths.
Installing
Via ComfyUI Manager (search ComfyUI_DAO_master) or:
cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/ComfyUI_DAO_master.git
For the vector path you'll need matplotlib (the README calls it out):
pip install matplotlib
then restart. The pack's README also walks through installing custom fonts into Fonts/ - and reminds you to check licenses, since DaFont fonts in particular are often personal-use only.
Where people get burned
If the font_file dropdown is empty, you haven't put any fonts in Fonts/ (or didn't refresh). If svg_vectorize errors on import, matplotlib is missing. And stroke_width_alpha is a separate legacy-looking field - if the outline looks odd, check both stroke values, not just one.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | HELLO DAO! TEST | — |
| font_file | STRING | — | |
| font_size | INT | 1284–4096 | — |
| canvas_width | INT | 102416–8192 | — |
| canvas_height | INT | 51216–8192 | — |
| fill_hex | STRING | #FFFFFF | — |
| fill_alpha | FLOAT | 100.000–100 | — |
| stroke_width | INT | 00–256 | — |
| stroke_hex | STRING | #000000 | — |
| stroke_alpha | FLOAT | 100.000–100 | — |
| bg_transparent | BOOLEAN | true | — |
| bg_hex | STRING | #000000 | — |
| align | COMBO | center | 3 options: center, left, right |
| svg_vectorize | BOOLEAN | true | — |
| image_rgba | BOOLEAN | true | — |
| stroke_width_alpha | INT | 00–256 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| svg | SVG_TEXT | — |
| mask | MASK | — |