---
title: "Dense Type Localization — typography-heavy posters/comics, translated with layout intact"
tier: hero
format: image
theme: typography | localization | identity-preservation
persona: brand designer, comic letterer, marketing ops
duration: "~10–20 min depending on revisions"
budget_usd: "~$0.20–$1.00 (Qwen edits + optional finishing)"
caps: ["qwen-image-3-t2i", "qwen-image-3-edit", "recraft-v4"]
skills: ["qwen-image-3", "comic-typography", "finishing-quality"]
showcases: ["/chapters/dense-type-localization-example.html"]
status: "live"
reliability: 3.4 # instruction-edit on dense type usually needs 2–6 iterations; finishing is deterministic
---

# Dense Type Localization — agent playbook (non-rendering docs ready)

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code. Livepeer Agent helps you translate a typography-heavy poster/comic panel **without losing the layout** — same hierarchy, same logo placement, same character identity.

## What you'll get

- **A localized image** — same composition, translated text, preserved brand/character identity
- **A typography audit checklist** — what to proofread (kerning, glyph swaps, line breaks, accents)
- **A print/export-ready file** — normalized format + dimensions for your channel (web, print, storefront)
- **A redo plan** — which single instruction to change when a line breaks or a logo shifts

## Tell the agent what to localize

```yaml
source_image_url:      # https://... poster/comic panel image (or @last_image)
target_language:       # e.g. "es-ES", "fr-FR", "zh-Hans"
replacement_copy:      # paste the FINAL translated copy (include line breaks you want)
layout_rules:          # 1 sentence: "keep logo and art identical; only text changes; preserve hierarchy"
max_spend_usd: 1.00    # hard ceiling; agent must STOP before exceeding
output_slug:           # kebab-case filename prefix
```

## Conventions (how the agent must run)

1. **Spend gate**: preview cost before any multi-try loop. STOP if the next batch could exceed `max_spend_usd`.
2. **Identity gate**: after the first localized draft, STOP for approval before any further edits.
3. **Final review gate**: STOP before export.
4. **No placeholders**: if the translation isn’t provided, STOP and ask for it (don’t invent copy).

## The stages

### Stage 0 — Confirm the brief (no render)

Restate the target language + the exact `replacement_copy` length (characters + line breaks) and confirm the “layout rules” in one sentence.

**STOP**: “Brief confirmed? (approve / edit [field] [new value])”

### Stage 1 — First localization draft (Qwen instruction edit)

Run `qwen-image-3-edit` once with a single, strict instruction:
- Keep all non-text pixels identical (logo, character, textures).
- Replace ONLY the text with `replacement_copy`.
- Preserve the original hierarchy (headline vs subhead vs body).

**STOP**: “Draft looks right? (approve / fix [one issue])”

### Stage 2 — Typography repair loop (2–4 quick iterations)

If the user reports a problem, make **one change per iteration**:
- “line 2 too long” → reflow that block only
- “glyph substitution” → specify the exact glyph and replacement
- “headline weight off” → “match original weight + tracking”

Hard cap: **max 4 retries** total unless the user explicitly raises `max_spend_usd`.

**STOP**: “Typography repaired. Approve this final image? (approve / one more tweak)”

### Stage 3 — Deliver

Return:
- Final URL
- A 6-item typography checklist to proofread
- The exact instruction used in the final successful edit (so it can be reused)

## FINAL OUTPUT

Print exactly:

```
✅ Localized image: <URL>
✅ Target language: <target_language>
✅ Copy checksum:   <N chars, <M line breaks>

Total spent: $X.XX (ceiling $max_spend_usd)
```

## AFTERCARE

- If a line breaks: change only the layout instruction for that block (“reflow body copy into two shorter lines; keep headline unchanged”) and re-run once.
- If Qwen drifts identity: switch to `kontext-edit` for reference-anchored edits and move text into a deterministic overlay step later.

## Notes for the agent (exact calls; keep compact)

- Primary edit (strict):
  - `mcp__livepeer-agent__run_capability({ capability:"qwen-image-3-edit", prompt:<instruction>, inputs:{ image_urls:[source_image_url] } })`
- If Qwen edit drifts identity: fall back to `kontext-edit` (reference-preserving) and overlay text deterministically later.
