Layer Typography
Overview
Image models misspell words and cannot use a font file. When copy must read exactly or be set in a
brand typeface, do not generate it: set it with
, then place it on the art with
. The art and the type stay separate files, so a copy change is a re-render, not a
regeneration, and the same art can carry every language (
).
Both tools are named directly rather than discovered because they are Layer's own deterministic file
operations, not models: no model runs, no Creative Units are spent, and no estimate is needed for
them. The art underneath is still a billed generation and goes through the usual estimate gate in
the
skill.
Not all lettering belongs here.
sets flat, single-colour type. Lettering that must look
drawn into the scene (a carved sign, a neon tube, a painted title with texture) is a generation, and
covers prompting for it.
If a sibling skill named here is missing from your available skills, ask the user to install it
(
npx skills add layerai/skills --skill <name>
); unattended, proceed from tool schemas and flag the
gap.
Quick reference
| Need | Route |
|---|
| Exact copy, brand font, editable later | , then over the art |
| Lettering that is part of the illustration | A generation () |
| Change words already baked into an image | with filter.use_case: "edit_text"
|
| Brand font on the user's disk | , then pass the as |
| Brand font at a public URL | |
| No font file | : a standard font or a Google Fonts family name |
Setting the type
Upload the brand font before anything else. A
takes precedence over
, and
(100 to 900 in steps of 100, 400 regular, 700 bold) picks the face inside that file,
with
for the italic face. Without a file,
falls back to a named family, which
is a different typeface from the brand's even when it looks close. Tell the user when that happens.
Size the canvas (
,
, at most 4096 each) to roughly the box the text will fill in the
final image, so it is barely scaled when placed. Text set small and scaled up goes soft; text set
huge and scaled down loses its weight.
Text that does not fit is refused with the size it needs. Read that size and decide: a bigger box,
a smaller
, or shorter copy. Do not shrink the font silently until it fits, because a
title that fits by being tiny has failed.
Two alignments do different jobs.
and
place the block on
the canvas;
aligns the lines of a multi-line block with each other. A newline starts a
new line and long lines wrap at spaces.
only loosens spacing.
The canvas is transparent unless
is set.
gives a translucent plate
behind the words, which is the simplest contrast fix over busy art.
Flat single-colour type has no outline or shadow. For a drop shadow, render the same text twice, once
in a dark colour and once in the face colour, and stack them in
with the dark copy
offset a few pixels down and right.
Placing it
stacks up to 16 layers into one flat PNG, bottom first. The canvas defaults to the
first layer's image size, so put the art first and the canvas matches it.
- Anchors are pixel offsets from the canvas edges. Set and together and the box
spans between them. To pin text to a corner or centre it without knowing its size, anchor all four
sides at the margin and set and . and
sit on the layer beside , never inside it.
- : for text and logos, so they scale into the box without
distortion. is for full-bleed backgrounds. Never type.
- Rotation turns a layer 90, 180 or 270 degrees: vertical spine text, or a card's index set
upside down in the opposite corner.
Legibility
- Judge the composite at the size it will be seen, not at full resolution. A store icon label or a
mobile button is read at a fraction of the canvas.
- Plan the space when the art is generated: ask for a calm, low-detail area where the title will sit.
Text over the busiest part of the frame needs a plate, and a plate is a compromise.
- Keep a safe margin from every edge. Platforms crop and overlay their own UI, and a CTA against the
edge is the first thing lost.
- One typeface, with weight and size for hierarchy, reads as designed. Three reads as a ransom note.
Changing text already in an image
When the words are baked into existing art, filter
for
,
take the first result, and quote the exact replacement string in the prompt. Check the output letter
by letter. If it misspells twice, remove the old text to a clean plate instead (an
or
model), then letter the plate with
and
.
Worked example
"Put our title 'Ember Vale' in our brand font on this key art, with 'Pre-register now' under it."
- The key art came from an earlier run, so it has a (1920 x 1080). The font is a local
: , complete the two-step upload, keep the .
- for the title: , , , , a 1200 x 240 canvas. If it is refused, read the size it needs and widen the canvas.
- the same title in for the shadow.
- the CTA: ,
background_color: "#000000B3"
for a translucent plate,
a 640 x 112 canvas.
- with four layers, bottom first: the key art with no anchors; the shadow anchored
, , width 1200, height 240; the title at , over it;
the CTA anchored , , width 640, height 112, each text layer .
- View the result at the size the user will deliver it. No step here spent Creative Units, so no
estimate was needed; say so when reporting.
Common mistakes
- Rerolling a generation to fix a misspelled word instead of setting the text.
- Substituting a named family for the brand font without telling the user.
- A canvas far from the final text box, so the type is scaled soft or thin.
- Shrinking until refused text fits, rather than resizing the box or the copy.
- Expecting an outline, gradient or glow from ; it sets flat colour only.
- on a text layer, which distorts the letterforms.
- Text against the frame edge or over the busiest region of the art.
- Flattening text into the art when the asset will be localised later.