LoGAN: Multilingual Font Localization with Generative Agents
Organizations: Netflix
Abstract
Localizing a font into new languages is a highly intricate task requiring precise design adaptation of glyphs, color/texture, and spacing/kerning, from source to target languages. Most existing methods focus on single glyph generation with limited capability in handling multilingual font rendering. In this work, we propose LoGAN, a VLM-based agentic framework for few-shot multilingual font localization, which takes in a small number of individual glyphs from a font or letters from a logo and uses them to generate complete character sets in other languages. LoGAN breaks down this task into multiple components: a glyph-level diffusion model, a style finetuning module, a spacing and kerning transfer algorithm, and a texture expansion model, with a VLM agent coordinator. LoGAN achieves broad language coverage for font localization with various styles, including Chinese/Korean/Japanese (CJK). We evaluate our approach on both font and real-world logo datasets spanning more than 27 languages and compare it against both specialized font generation and state-of-the-art image editing models with strong text rendering capabilities (e.g., FLUX, Nano-Banana). Our approach yields higher glyph fidelity while maintaining better style, texture, and kerning consistency according to both quantitative and qualitative evaluations.
Figures & tables
| Shape (Symbol) | Description |
|---|---|
| Straight ( ) | Vertical or implied vertical boundaries that restrict close kerning (e.g., both sides of “H”, right side of “E”, left side of “B”, etc. All CJK letters are also assumed to fall within this shape). |
| Circular ( ) | Curved boundaries that naturally accommodate tighter kerning (e.g., both sides of “O” or the left side of “C”). |
| Diagonal ( ) | Ascending diagonal strokes from bottom-left to top-right (e.g., the left side of “A” or the right side of “V”. Right side of “T” also belongs to this shape as you can draw an implicit for tighter kerning). |
| Diagonal ( ) | Descending diagonal strokes from top-left to bottom-right (e.g., the right side of “A” or the left side of “V”). Certain lowercase letters, such as “e” or “w”, are also treated as diagonal because their open contours provide spatial gaps for tighter kerning. |
| Lang. (#) | Model | Editing Type | PSNR | SSIM | LPIPS | DSim | CLIP |
|---|---|---|---|---|---|---|---|
| CJK (42) | AnyText2 [ 53 ] | Text | 6.894 | 0.329 | 0.825 | 0.510 | 0.811 |
| TextDiffuser-2 [ 12 ] | Text | 6.460 | 0.449 | 0.882 | 0.604 | 0.666 | |
| Flux-Text [ 35 ] | Text | 6.900 | 0.580 | 0.706 | 0.374 | 0.858 | |
| Flux-Kontext Pro [ 32 ] | Image | 7.050 | 0.635 | 0.667 | 0.162 | 0.801 | |
| Nano-Banana [ 24 ] | Image | 7.658 | 0.622 | 0.588 | 0.101 | 0.920 | |
| LoGAN w/o LoRA (GPT-5.2) | Text | 9.052 | 0.657 | 0.449 | 0.084 | 0.932 |
| Method | PSNR | SSIM | LPIPS | DreamSim | CLIP |
|---|---|---|---|---|---|
| NB | 15.75 | 0.726 | 0.179 | 0.122 | 0.958 |
| LoGAN | 18.67 | 0.802 | 0.121 | 0.094 | 0.968 |
| Group | Method | PSNR | SSIM | LPIPS | DSim | CLIP |
|---|---|---|---|---|---|---|
| With Texture | Nano-Banana | 10.65 | 0.606 | 0.483 | 0.100 | 0.916 |
| LoGAN | 11.88 | 0.659 | 0.378 | 0.118 | 0.934 | |
| Withou texture | Nano-Banana | 7.85 | 0.647 | 0.504 | 0.081 | 0.924 |
| LoGAN | 9.00 | 0.699 | 0.391 | 0.049 | 0.951 |
| Parameter | Value |
|---|---|
| Noise Scheduler | |
| Shift | 1.0 (3.0 for 512x512) |
| Timesteps | 1000 |
| Transformer (SD3Transformer2DModel) | |
| Sample size | 128 |
| Patch size | 2 |
| Lang. (#) | Model | Editing Type | PSNR | SSIM | LPIPS | DSim | CLIP |
|---|---|---|---|---|---|---|---|
| CJK (42) | AnyText2 [ 53 ] | Text | 6.894 | 0.329 | 0.825 | 0.510 | 0.811 |
| TextDiffuser-2 [ 12 ] | Text | 6.460 | 0.449 | 0.882 | 0.604 | 0.666 | |
| Flux-Text [ 35 ] | Text | 6.900 | 0.580 | 0.706 | 0.374 | 0.858 | |
| Flux-Kontext Pro [ 32 ] | Image | 7.050 | 0.635 | 0.667 | 0.162 | 0.801 | |
| Nano-Banana [ 24 ] | Image | 7.658 | 0.622 | 0.588 | 0.101 | 0.920 | |
| Nano-Banana Pro [ 24 ] | Image | 9.055 | 0.635 | 0.429 | 0.082 | 0.949 |