ImageTextOutlined
Legible text over any background, stroke included
- IMAGE
Plain white text looks great on a dark image and invisible on a bright one. The fix is an outline, and that's the one extra thing ImageTextOutlined gives you over Allor's basic ImageText: a stroke of a second color around the letters. That's what turns a watermark or a caption from "only readable half the time" into "readable anywhere," because the outline separates the glyphs from whatever's behind them.
It's part of the Allor Plugin (Nourepide/ComfyUI-Allor), the pack that renders text to a transparent RGBA image you can composite. Functionally, this is the node that ImageText actually delegates to - the plain version is just this one with outline_size forced to 0. So if you're choosing between them, there's almost no reason to pick the plain one: you can set outline_size to 0 here and get identical output, or turn the outline on when you need it.
How it works
PIL's drawing again: the node loads the chosen font, measures the text bounding box, and draws the string on a transparent canvas sized to the text (plus margins and outline space). The text fill uses red/green/blue, and the stroke uses outline_red/outline_green/outline_blue at outline_size pixels wide - a black outline (the defaults) on white text is the classic readable-everywhere combo. alpha applies to the whole layer, fill and stroke together.
The font source is the pack's fonts folder (default ComfyUI/comfy_extras/fonts; system/user fonts optional via config.json). No font in the folder, no dropdown entries - that's the usual first-run surprise.
Inputs and outputs
text(STRING, single line).font- dropdown of fonts in the fonts folder.size(INT, default 28).red/green/blue(default 255) - the text fill.outline_size(INT, default 1) - stroke width. 0 disables the outline entirely.outline_red/outline_green/outline_blue(default 0) - stroke color, black by default.alpha(FLOAT, default 1.0) - layer opacity, watermark-friendly at ~0.5.margin_x/margin_y(INT, default 0) - padding around the text.
Output is a single RGBA IMAGE, sized to the text plus outline/margins. Composite it over your image to finish.
Installing it
Same pack, same path: ComfyUI Manager → "Allor Plugin" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nourepide/ComfyUI-Allor
Add a font to ComfyUI/comfy_extras/fonts (.ttf or .otf) and reload before expecting the dropdown to show anything.
Where people get burned
The biggest trap is the outline being too subtle: at outline_size 1 on a busy background, a thin black stroke is barely there - bump it to 2–3 and, if needed, thicken margins so the stroke isn't clipped at the canvas edge. Watch that the output canvas grows with the outline, so text that touched the edge in the plain node will still fit. And the usual family gotcha applies: this is single-line text. For multi-line or centered text, reach for the multiline siblings (ImageTextMultilineOutlined); don't try to fake it with \n here.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| font | COMBO | 0 options: | |
| size | INT | 28 | — |
| red | INT | 255 | — |
| green | INT | 255 | — |
| blue | INT | 255 | — |
| outline_size | INT | 1 | — |
| outline_red | INT | 0 | — |
| outline_green | INT | 0 | — |
| outline_blue | INT | 0 | — |
| alpha | FLOAT | 1.00 | — |
| margin_x | INT | 0 | — |
| margin_y | INT | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |