Meux Artistic Text Preview
Bake styled text into the image without leaving ComfyUI
- image
- mask
Text on images is one of those things you usually leave ComfyUI for - render, open Photoshop or GIMP, add the title, come back. If you're producing thumbnails, logos, or title cards in a batch workflow, this node exists to kill that round trip: it renders styled text on a transparent canvas and hands you both the image and a matching mask, so you can composite it straight onto your render.
It ships in the Baidu Meux ComfyTools pack, and it's easily the most feature-dense node in it. Fill, outline, shadow, inner shadow, glow, gradients, per-character spacing, alignment - the kind of surface area you'd expect from a dedicated text tool, not a utility node.
How it works
The node renders your text to a text mask with Pillow, then builds up layers - fill, outline, effects - and composites them over an optional background. It outputs two things: an RGBA IMAGE preview and a MASK derived from the text's alpha. Keep background_opacity at 0 and the image comes out fully transparent, ready for compositing.
Fonts are the interesting bit. The node looks in the pack's own fonts/ folder first, so drop in any font file there and it appears in the font_name dropdown. If it's not there, it falls back to bundled and system fonts. The bundled defaults are Alibaba PuHuiTi variants, a CJK typeface family - perfectly usable for Latin text, but if you want a specific look, add your own font and refresh.
Two font sizing modes: fixed uses the literal font_size; fit scales the text down to fit the canvas. It won't scale up past your font_size, so think of that as the cap.
The inputs that matter
text- multi-line supported, newlines and all.font_name- dropdown, populated from yourfonts/folder first.width/height- the output canvas, up to 4096.font_size_mode/font_size-fixedvsfit.fill_type-solid,gradient, ornone; for gradients pickfill_color_1,fill_color_2, and afill_direction.outline_type/outline_width- solid or gradient stroke around the glyphs.effect_preset- one-clicksoft_shadow,heavy_shadow,soft_glow,neon_glow,engraved, orshadow_glow, witheffect_strengthas a multiplier.background_opacity- 0 means fully transparent.
Outputs: image (the rendered IMAGE) and mask (the text alpha). Wire image into a composite node over your render, or save both.
Installing it
Pack install, same as everything in this set:
cd ComfyUI/custom_nodes
git clone https://github.com/fchangjun/Comfyui_MultiSaveImage
cd Comfyui_MultiSaveImage
pip install -r requirements.txt
Or use ComfyUI Manager (search "Baidu Meux ComfyTools"). Restart, then add your fonts:
cp MyFont.ttf ComfyUI/custom_nodes/Comfyui_MultiSaveImage/fonts/
Restart (or reload) and the font shows up in the dropdown.
Where people get burned
- Font doesn't appear. It's cached, or it's in the wrong folder - the pack's
fonts/directory, not ComfyUI's. - Defaults feel Chinese-first. The bundled defaults are PuHuiTi weights. Nothing wrong with them for Latin text, but that "why is my default font so heavy" reaction is usually just the Alibaba Heavy/Black default doing its thing.
- Mask looks hard-edged when composited. The
maskcomes from the text alpha, so it's sharp by design. If you want a soft edge, blur it downstream.
If you do text-on-image work, this node is the reason to install a pack you might otherwise skip. It's the rare ComfyUI text node that doesn't feel like a toy.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello Art Text | — |
| font_name | COMBO | Alibaba_PuHuiTi_2.0_105_Heavy_105_Heavy | 14 options: Alibaba_PuHuiTi_2.0_105_Heavy_105_Heavy, Alibaba_PuHuiTi_2.0_115_Black_115_Black, Alibaba_PuHuiTi_2.0_35_Thin_35_Thin, Alibaba_PuHuiTi_2.0_45_Light_45_Light, Alibaba_PuHuiTi_2.0_55_Regular_55_Regular, Alibaba_PuHuiTi_2.0_55_Regular_85_Bold, +8 |
| width | INT | 102464–4096 | — |
| height | INT | 102464–4096 | — |
| font_size_mode | COMBO | fixed | 2 options: fixed, fit |
| font_size | INT | 1288–1024 | — |
| char_spacing | INT | 0-20–200 | — |
| line_spacing | INT | 0-512–512 | — |
| text_align | COMBO | center | 3 options: left, center, right |
| vertical_align | COMBO | middle | 3 options: top, middle, bottom |
| bold | BOOLEAN | false | — |
| italic | BOOLEAN | false | — |
| background_color | STRING | #000000 | — |
| background_opacity | FLOAT | 0.000–1 | — |
| padding_percent | FLOAT | 0.100–0.45 | — |
| fill_type | COMBO | solid | 3 options: solid, gradient, none |
| fill_color_1 | STRING | #ff3b30 | — |
| fill_color_2 | STRING | #ffd84d | — |
| fill_direction | COMBO | top_bottom | 6 options: left_right, right_left, top_bottom, bottom_top, diagonal, diagonal_reverse |
| outline_type | COMBO | none | 3 options: none, solid, gradient |
| outline_width | INT | 60–128 | — |
| outline_opacity | FLOAT | 1.000–1 | — |
| outline_color_1 | STRING | #ffffff | — |
| outline_color_2 | STRING | #00d4ff | — |
| outline_direction | COMBO | left_right | 6 options: left_right, right_left, top_bottom, bottom_top, diagonal, diagonal_reverse |
| effect_preset | COMBO | none | 7 options: none, soft_shadow, heavy_shadow, soft_glow, neon_glow, engraved, +1 |
| effect_strength | FLOAT | 1.000–3 | — |
| shadow_mode | COMBO | preset | 2 options: preset, custom |
| shadow_color | STRING | #000000 | — |
| shadow_offset_x | INT | 4-512–512 | — |
| shadow_offset_y | INT | 4-512–512 | — |
| shadow_opacity | FLOAT | 0.350–1 | — |
| shadow_blur | FLOAT | 6.00–128 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |