Nodes/Jovimetrix/TEXT GENERATOR (JOV) πŸ“
ComfyUI Node

TEXT GENERATOR (JOV) πŸ“

Draw text into an image, fonts and all

By AmoranoΒ·Created 3 years agoΒ·Updated 12 months agoΒ· 397
TEXT GENERATOR (JOV) πŸ“
  • 🌈
  • 🌈B
  • πŸ‡ΌπŸ‡­
  • πŸ“
  • πŸ–ΌοΈ
  • 😷
β—„πŸ“β–Ί
β—„FONTDejaVu Sansβ–Ί
β—„FONT_SIZE10.00β–Ί
β—„πŸš¦NONEβ–Ί
β—„πŸ“0.00β–Ί
β—„πŸ”³0.00β–Ί

ComfyUI can't render text. It can generate text in an image, but if you want an actual string drawn onto a canvas - a label, a caption, a timestamp, a watermark - you're usually reaching for a kludge. TEXT GENERATOR is Jovimetrix's take on the missing feature: a procedural text-drawing node that turns a string into an image and a mask, using your system's installed fonts. This is the pre-2.0 name; the current pack calls it TEXT GEN (JOV) πŸ“.

The inputs are self-explanatory and forgiving. πŸ“ is your text (multiline, so yes, multi-line captions work). FONT is a dropdown of installed fonts - the defaults are the DejaVu and STIX families that ship with matplotlib, with more available as you add system fonts. FONT_SIZE is a float (default 10). Then the styling block: 🌈 text color and 🌈B background color as 0–255 RGB, πŸ‡ΌπŸ‡­ the canvas size (VEC2, 512Γ—512 default, 32–8192), 🚦 a resize mode (NONE/FIT/CROP/ASPECT) for when text and canvas disagree, πŸ“ rotation, πŸ“ per-axis scale, and πŸ”³ edge blur. Outputs: πŸ–ΌοΈ the rendered IMAGE and 😷 the text-as-MASK.

The mask output is the secret weapon. Text rendered as a mask means you can composite a label onto any image with a BLEND node, fade it in, or clip another image to the letter shapes. A word turned into a mask is just as useful as the colored version, and you get both for the price of one node. It's also genuinely handy for burning in batch metadata: string together your parameters with a STRINGER, render it here, and every output frame gets its settings stamped on it.

Since it leans on matplotlib for font handling, anything the font system knows is fair game - the pack's README calls out "full text generation support using installed system fonts" as a headline feature. That's also why FONT_SIZE and the styling options are the first things you touch: DejaVu at size 10 is a look, but not usually the one you want.

The catch is the standard legacy one. This node is the older "TEXT GENERATOR (JOV)" build and no longer appears under that name in current Jovimetrix - it was reworked into TEXT GEN (JOV) πŸ“ (shorter name, same menu, plus alignment/justification options it didn't have before). If an old workflow reports this node missing, swap in TEXT GEN and the inputs map across almost 1:1.

To run it, install the pack. ComfyUI Manager β†’ "Jovimetrix", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Amorano/Jovimetrix.git
pip install -r Jovimetrix/requirements.txt

then restart. Dependencies are the pack-wide set - numpy, opencv-contrib-python, Pillow, matplotlib (the fonts live there), cozy-comfyui helpers - no model downloads. Keep ComfyUI at 0.1.3+ and mind the pack's v2.0 split: streaming/GLSL nodes moved to separate Jovi_* packs, which is why old workflow JSONs sometimes reference names today's install doesn't have.

CategoryJOVIMETRIX πŸ”ΊπŸŸ©πŸ”΅/CREATE

Inputs (10)

NameTypeDefaultDescription
πŸ“optSTRINGβ€”
FONToptCOMBODejaVu Sans19 options: DejaVu Sans, DejaVu Sans Display, DejaVu Sans Mono, DejaVu Serif, DejaVu Serif Display, STIXGeneral, +13
FONT_SIZEoptFLOAT10.00β€”
🌈optVEC3255,255,2550–255β€”
🌈BoptVEC30,0,00–255β€”
πŸ‡ΌπŸ‡­optVEC2512,51232–8192β€”
🚦optCOMBONONE4 options: NONE, FIT, CROP, ASPECT
πŸ“optFLOAT0.00-180–180β€”
πŸ“optVEC21,1β€”
πŸ”³optFLOAT0.000–1β€”

Outputs (2)

NameTypeDescription
πŸ–ΌοΈIMAGEβ€”
😷MASKβ€”