ComfyUI Node

font2img

Font2img

By ForeignGods·Created 2 years ago·Updated 2 years ago· 249
font2img
  • images
  • transcription
  • images
  • transcription_framestamps
font_fileAURORA-PRO
font_colorwhite
background_colorblack
border_colorgrey
border_width0
shadow_colorgrey
shadow_offset_x0
shadow_offset_y0
line_spacing5
kerning0
padding0
frame_count1
image_height512
image_width512
rotation_anchor_x0
rotation_anchor_y0
transcription_modefill
text_alignmentcenter center
text_interpolation_optionscumulative
text
animation_resetword
animation_easinglinear
animation_duration10
start_font_size75
end_font_size75
start_x_offset0
end_x_offset0
start_y_offset0
end_y_offset0
start_rotation0
end_rotation0

font2img is the original all-in-one text-animation node from Mana Nodes - the one that put this pack on the map. Give it text and it renders a batch of frames with that text drawn, styled, and animated, ready to hand off to a video combiner. It's the ancestor of everything else in the pack: the styling, canvas, and animation controls that now live in separate nodes were all crammed into this single monster node first.

Why it's a big deal (and why it got split up)

If you've seen the Mana Nodes demos - words scaling and rotating and color-cycling over an AnimateDiff loop - font2img is the node that drew them. The appeal is that it does the whole typography job in one place: pick a font, pick colors, set a start and end size, a start and end rotation, an easing curve, and it interpolates the animation across your frames for you.

The flip side is that "one place" means a wall of maybe thirty widgets. That's exactly why the author later refactored it into modular pieces - Font Properties for the typeface, Canvas Properties for the background, Scheduled Values and Preset Color Animations for the animation, all feeding a slimmer Text to Image Generator. So font2img is the older name. If you installed the pack recently you'll more likely reach for the modular chain, but plenty of tutorials and shared workflows still wire up font2img, so it's worth understanding.

The inputs that matter

Everything's baked in, so the widget list is long, but only a handful actually shape the result:

  • text - multiline. Your words. Supports a per-frame syntax so you can time text changes.
  • font_file - a dropdown of the ~30 fonts that ship with the pack (AURORA-PRO, DejaVu, Montserrat, a few grungy display faces).
  • image_width / image_height - canvas size, default 512×512.
  • frame_count - how many frames to render; this is the length of your animation.
  • transcription_mode - word, line, or fill. Controls how text is chunked onto the canvas, which matters most when you feed it a transcription.

Then the animation block: start_font_size/end_font_size, start_x_offset/end_x_offset (and the y equivalents), start_rotation/end_rotation, an animation_easing curve (linear, exponential, elastic, bounce, and friends), animation_duration, and animation_reset (word/line/never - whether the animation restarts on each new word). You set a from-value and a to-value and the node tweens between them.

Optional inputs: images to render text over an existing frame sequence instead of a solid background, and transcription to accept timed text from a Speech Recognition node.

Outputs are images (the rendered IMAGE batch) and transcription_framestamps - the timed text as a string you can save, hand-correct, and paste back in.

Installing it

It comes with the pack. ComfyUI Manager → search Mana Nodes → install → restart. Or clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/ForeignGods/ComfyUI-Mana-Nodes.git

Install the requirements (pip install -r requirements.txt in your venv, or the python_embed variant on Windows portable) and restart. Text rendering leans on Pillow; the bundled fonts live in the pack's font_files directory.

Common issues

The big one is version confusion. Because the pack moved to the modular Font/Canvas/Generator design, a fresh install may not show a node literally called font2img - or it'll behave differently than a two-year-old tutorial expects. If a workflow you downloaded references font2img and won't load, you're looking at a version mismatch; rebuild it with the current nodes.

Beyond that: to use your own typeface, drop the .ttf/.otf into the pack's font_files folder and restart so it shows up in the dropdown. And non-Latin scripts are a known gap - the author lists better non-Latin support as a to-do, so don't expect clean CJK or Arabic rendering yet.

CategoryMana Nodes

Inputs (33)

NameTypeDefaultDescription
font_fileCOMBOAURORA-PRO29 options: AURORA-PRO, Akira Expanded Demo, Another Danger - Demo, DejaVu Sans, DejaVu Sans Display, DejaVu Sans Mono, +23
font_colorSTRINGwhite
background_colorSTRINGblack
border_colorSTRINGgrey
border_widthINT0
shadow_colorSTRINGgrey
shadow_offset_xINT0
shadow_offset_yINT0
line_spacingINT5
kerningINT0
paddingINT0
frame_countINT11–10000
image_heightINT512
image_widthINT512
rotation_anchor_xINT0
rotation_anchor_yINT0
transcription_modeCOMBOfill3 options: word, line, fill
text_alignmentCOMBOcenter center9 options: left top, left center, left bottom, center top, center center, center bottom, +3
text_interpolation_optionsCOMBOcumulative3 options: strict, interpolation, cumulative
textSTRING
animation_resetCOMBOword3 options: word, line, never
animation_easingCOMBOlinear10 options: linear, exponential, quadratic, cubic, elastic, bounce, +4
animation_durationINT10
start_font_sizeINT75
end_font_sizeINT75
start_x_offsetINT0
end_x_offsetINT0
start_y_offsetINT0
end_y_offsetINT0
start_rotationINT0-360–360
end_rotationINT0-360–360
imagesoptIMAGE
transcriptionoptTRANSCRIPTION

Outputs (2)

NameTypeDescription
imagesIMAGE
transcription_framestampsSTRING