ComfyUI Node

Text_Image_Zho

Render text to an image — with arc layout — without ever leaving ComfyUI

By ZHO-ZHO-ZHO·Created 3 years ago·Updated 2 years ago· 122
Text_Image_Zho
  • color
  • outline_color
  • image
textZHOZHOZHO
selected_font
align
wrap0
font_size12
outline_size0
margin_x0
margin_y0
width512
height512
swapfalse
arc_textfalse
arc_radius100
arc_start_angle180
arc_end_angle360

Diffusion models are famously bad at spelling, so when you need actual legible words in an image - a poster title, a caption, a logo - you stop trying to prompt it and just render the text and composite it on top. Text_Image_Zho is that render step: type a string, get an image of it back, ready to drop onto your generation with the pack's composite nodes. And then there's the party trick: it can draw your text along an arc, which is exactly what people who've watched one too many logo reveal videos want.

It's the flagship text node in ZHO-ZHO-ZHO's ComfyUI-Text_Image-Composite pack. The arc support was merged in from a community contributor (h3clikejava), and honestly it's the pack's most distinctive feature. Pure PIL under the hood - no models, no API keys, runs even on a potato.

How it works

It uses Pillow's text drawing to render your string onto an RGBA canvas (transparent background, so it composites cleanly), then converts to an IMAGE tensor. The selected_font dropdown is populated by scanning your whole ComfyUI directory tree for .ttf, .otf and similar font files - so it picks up the fonts bundled with this pack plus any fonts you've dropped anywhere inside ComfyUI. If wrap is set to 0, it auto-wraps to roughly width / font_size characters per line.

The arc mode (arc_text boolean) changes the whole geometry: your characters get distributed along a circle of arc_radius, starting at arc_start_angle and sweeping to arc_end_angle. Defaults are start 180° to end 360°, which gives you text arcing along the bottom half of the circle - great for badge and seal layouts. Each character is rotated to face the center, with a 10× supersampling pass so curves stay clean. It's the fiddliest part of the node, but it's the reason this one gets shared.

The inputs that matter

  • text - the string to render.
  • selected_font - font dropdown; includes the pack's bundled fonts (Merienda family, Alkatra, OverlockSC, a couple of comic-style TTFs).
  • font_size, color, outline_size, outline_color - sizing and styling. outline_size defaults to 0 (no stroke).
  • align - left, center, or right.
  • width, height, plus margin_x/margin_y and swap - the canvas.
  • arc_text, arc_radius, arc_start_angle, arc_end_angle - the curved-text controls.

Output is a single IMAGE (transparent where there's no text).

Installing it

Same one-line install as the rest of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite

or ComfyUI Manager → search ComfyUI-Text_Image-Composite, then restart. No requirements.txt, no model downloads. It appears under Zho模块组/text.

Common issues

  • Fonts not showing up - the dropdown is populated by scanning the ComfyUI tree at runtime; the bundled fonts ship in the pack's font/ folder so they should always be there. If a custom font you installed isn't listed, make sure it's a supported extension somewhere under your ComfyUI directory.
  • Arc text surprises - the angles are absolute degrees from 0 to 360, and the defaults sweep the bottom arc. If your text renders upside-down or on the wrong side of the circle, flip arc_start_angle/arc_end_angle (try 0 to 180 for the top).
  • Text clipped - the canvas is exactly width×height and there's no auto-fit; big text with small margins will get cut. Bump the canvas, not the font.
  • wrap = 0 means auto-wrap, not "no wrap." If you genuinely want a single unbroken line, set wrap high.

The composite side of this pack (ImageComposite_Zho and friends) is where the rendered text actually lands on your image - the two halves are designed to be used together. For legible, stylable text with a genuinely useful curved mode, this is a solid reach-for, and it's the best-documented reason to install the pack at all.

CategoryZho模块组/text

Inputs (17)

NameTypeDefaultDescription
textSTRINGZHOZHOZHO
selected_fontCOMBO11 options: Alkatra, Merienda-Black, Merienda-Bold, Merienda-ExtraBold, Merienda-Light, Merienda-Medium, +5
alignCOMBO3 options: left, center, right
wrapINT00–8096
font_sizeINT121–2500
colorCOLORred
outline_sizeINT00–8096
outline_colorCOLORblue
margin_xINT00–8096
margin_yINT00–8096
widthINT5121–8096
heightINT5121–8096
swapBOOLEANfalse
arc_textBOOLEANfalse
arc_radiusINT1001–2500
arc_start_angleINT1800–360
arc_end_angleINT3600–360

Outputs (1)

NameTypeDescription
imageIMAGE