Nodes/Logo Generator Node for ComfyUI/Logo Generator (Google Fonts)
ComfyUI Node

Logo Generator (Google Fonts)

One-node wordmarks

By cherninlab·Created 2 years ago·Updated 2 years ago· 2
Logo Generator (Google Fonts)
    • IMAGE
    logo_config{ "text": "Your Logo", "font_family": "Roboto", "font_size": 72, "font_color": "#000000", "stroke_width": 0, "stroke_color": "#FFFFFF", "width": 800, "height": 400, "background_color": "#FFFFFF", "x_position": "center", "y_position": "center", "rotation": 0, "spacing": 0, "background_transparency": 0 }

    Diffusion models are great at lots of things and reliably bad at one of them: spelling. Garbled signage is still the telltale sign of an AI image, and typography is the first thing to break when you drop the big text encoder. So when you need a wordmark, a channel name, or a clean "OPEN" sign, fighting the sampler for clean letters is the wrong tool for the job. That's the whole reason this node exists - it's a one-node text renderer that draws real, crisp Google Fonts glyphs with Pillow and hands you an IMAGE you can drop straight into the rest of your workflow.

    There's no diffusion involved at all. The name says "Logo Generator," which sounds like an API you need a key for. The lie is a good one - it calls Google Fonts, but those are open, freely-licensed font files, so there's no key, no account, no quota. The one thing it does need is an internet connection.

    How it works

    Every time you run it, the node takes your config, fetches the font family's CSS from Google Fonts, grabs the first url(...) it finds, downloads the font file, and caches it in your system temp directory so the next run for that family is instant. Then it draws your text with Pillow - fill color, optional stroke/outline, letter spacing, rotation - and converts the finished RGBA image into a ComfyUI IMAGE tensor.

    The mechanism is worth knowing because it explains two behaviors. First, the first time you use a font family you need to be online, and on a fresh machine (or after a temp cleanup) it re-downloads. Second, if the download fails, the node quietly falls back to a bundled DejaVu Sans instead of telling you - so the "wrong font" symptom is usually "no internet," not a bug.

    The one input that is actually the whole node

    This node has exactly one input, logo_config, and it's a single multiline JSON string. Everything lives in that blob - there are no separate node fields for font size or color. Here's the part that matters for a beginner:

    • text - the string to render. Exact characters, no interpretation.
    • font_family - a Google Fonts family name like Roboto, Montserrat, Oswald. Must match the name on fonts.google.com.
    • font_size, font_color - size in pixels and a hex color like #FF0000.
    • stroke_width / stroke_color - outline the letters; stroke_width: 0 disables it.
    • background_transparency - 0 to 255, and it's inverted from what you'd guess: 0 is fully opaque, 255 is fully transparent.
    • x_position / y_position - center, left/right, top/bottom, or a raw pixel number.

    The output is a single IMAGE tensor with an alpha channel, so wire it into PreviewImage or SaveImage. Because it's RGBA, the transparency survives a PNG save - that's how you get a text layer you can composite over a generated background later.

    Installing it

    ComfyUI Manager is the easy path: search for Logo Generator (pack title "Logo Generator Node for ComfyUI") and hit install. Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cherninlab/logo-generator-comfyui
    

    Then restart ComfyUI. The dependencies are blessedly light - just Pillow, requests, and numpy, all things ComfyUI already has. No model files, no weights, no VRAM cost.

    Where people get burned

    The trap is the JSON input. It's a string, not a friendly form, and the node swallows errors: if your JSON has a trailing comma or a missing quote, the whole thing throws and you get a solid black 800×400 image instead of an error message. That's your #1 debugging clue - black output means malformed config, not a broken install. Keep every value quoted, no trailing commas, and use the example config from the README as your starting template.

    The other thing to internalize: this renders text, it doesn't interpret a vibe. "AWESOME" is literal. If you want a stylized logo, use this node for the crisp text layer and let a diffusion model handle the art around it - that division of labor is exactly where a node like this earns its place in the graph.

    Categoryimage/generator

    Inputs (1)

    NameTypeDefaultDescription
    logo_configSTRING{ "text": "Your Logo", "font_family": "Roboto", "font_size": 72, "font_color": "#000000", "stroke_width": 0, "stroke_color": "#FFFFFF", "width": 800, "height": 400, "background_color": "#FFFFFF", "x_position": "center", "y_position": "center", "rotation": 0, "spacing": 0, "background_transparency": 0 }

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE