Nodes/Eric Composer Studio/Text Layer (for Image Composer)
ComfyUI Node

Text Layer (for Image Composer)

Text layers in ComfyUI that don't look like a ransom note

By EricRollei·Created 5 months ago·Updated 4 months ago· 3
Text Layer (for Image Composer)
  • fill_image
  • image
  • mask
textSample text
fontC059 BdIta
font_size96
align_hcenter
align_vmiddle
line_spacing1.15
padding24
auto_fittrue
canvas_w1024
canvas_h256
fill_modesolid
color#FFFFFF
gradient_color#3399FF
gradient_angle90
stroke_width0
stroke_color#000000
glow_radius0
glow_strength1.00

Text in ComfyUI is usually a miserable experience: a hardcoded overlay node with one font, one size, and a look that screams "2016 meme". Text Layer from the Eric_Composer_Studio pack is the rare exception. It renders clean, anti-aliased text as an (image, mask) pair that's built to drop straight into an Image Composer slot - solid, gradient or image fill, with stroke and glow. For titles, captions, watermarks or "neon sign" overlays, it's the node you'll actually reach for.

How it works

Text Layer stays deliberately small: it produces a fill (the IMAGE) and a shape (the MASK with the glyph alpha). Everything that makes text look designed - position, scale, rotation, opacity, blend mode, drop shadow - happens downstream in the Image Composer, which is smart. The shadow lives in the composer, so you can move and scale the text and the shadow follows without re-rendering anything. It's Pillow-based, using your actual system fonts (auto-discovered at startup on Windows, macOS and Linux - family names show up sorted in the dropdown, with a (default) fallback if none are found), and font/size combos are cached per process so re-rendering is basically free.

Inputs and outputs that matter

The full input list is long, but the ones you'll actually touch:

  • text - multiline; \n line breaks are preserved.
  • font, font_size - size range is 8–1024px.
  • fill_mode - solid, linear_gradient, or fill_image (the latter takes an optional fill_image IMAGE that gets resized behind the text - photo-fill and texture-fill titles live here).
  • color / gradient_color / gradient_angle - the fill itself.
  • stroke_width / stroke_color - outline, using Pillow's native stroke so joins are clean.
  • glow_radius / glow_strength - a soft halo on the mask. This is the neon knob.
  • auto_fit - on, the canvas sizes to the text bounding box + padding; off, you get the fixed canvas_w/canvas_h.

Outputs are exactly two: image (the RGB fill at canvas size) and mask (anti-aliased text alpha, white where the glyph is). Wire image → image_N and mask → mask_N into any of the six Image Composer slots.

What it pairs with

A few combos from the pack's own docs that work: white text with glow_radius=14 and the composer set to screen blend gives a neon caption over a dark photo; multiply at ~85% opacity over a parchment background reads as an inked stamp; overlay at 60% opacity debosses mid-grey text into a photo's tones. For a subtitle bar, turn auto_fit off, set canvas_w/h, centre the alignment, and park it at the bottom of the canvas.

Installing it

Part of Eric_Composer_Studio, so the usual: ComfyUI Manager → search Eric Composer Studio → install → restart, or git clone https://github.com/EricRollei/Eric_Composer_Studio.git into custom_nodes, then pip install -r requirements.txt. Pillow is the only real dependency this node needs, and it's listed.

One compatibility note worth knowing before you swap it into an old workflow: this is not a drop-in replacement for the TextOverlayNode_v04 from the AAA_Metadata_System pack. It outputs a standard 3-channel IMAGE plus a separate MASK socket (not 4-channel RGBA on the image), and it drops that node's markdown/file-loading and per-pixel emboss/metal effects in favour of vectorized gradients and glow that scale to big canvases without a Python per-pixel loop. If you were feeding a text string with markdown into v04, that won't carry over.

CategoryEric_Composer_Studio

Inputs (19)

NameTypeDefaultDescription
textSTRINGSample text
fontCOMBOC059 BdIta47 options: C059 BdIta, C059 Bold, C059 Italic, C059 Roman, D050000L, DejaVuSans, +41
font_sizeINT968–1024
align_hCOMBOcenter3 options: left, center, right
align_vCOMBOmiddle3 options: top, middle, bottom
line_spacingFLOAT1.150.5–3
paddingINT240–1024
auto_fitBOOLEANtrueSize the output canvas to the text bbox + padding. Off → fixed canvas_w/h.
canvas_wINT102416–8192
canvas_hINT25616–8192
fill_modeCOMBOsolid3 options: solid, linear_gradient, fill_image
colorSTRING#FFFFFF
gradient_colorSTRING#3399FF
gradient_angleFLOAT90-360–3600 = left→right, 90 = top→bottom
stroke_widthINT00–32
stroke_colorSTRING#000000
glow_radiusINT00–64Adds a soft halo to the mask. Useful for neon-style overlays.
glow_strengthFLOAT1.000–4Multiplier on the blurred halo intensity.
fill_imageoptIMAGE

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK