Ref2Font / README.md
SnJake's picture
Update README.md
bc517b3 verified
---
license: mit
base_model: black-forest-labs/FLUX.2-klein-9B
tags:
- lora
- flux
- flux.2
- flux.2-klein-9b
- image-to-image
- text-to-image
- font
- typography
- atlas
- comfyui
- safetensors
---
# Ref2Font V3 — Contextual LoRA for FLUX.2 Klein 9B
**Ref2Font V3** is an updated **contextual LoRA** trained for **black-forest-labs/FLUX.2-klein-9B**. It generates **1280×1280 font atlases** from a single reference image (**"Aa"** for Latin or **"Аа"** for Cyrillic scripts).
### Changes in V3:
- **Cyrillic Support:** Now generates Russian fonts using "Аа" as reference.
- **Extended Glyphs:** Added `"` and `&`.
- **Straighter Letters:** Improved alignment and reduced "jitter" in atlas generation.
**Changes in V2:**
- Fixed alignment issues (letters no longer "dance" or jump).
- Increased resolution to **1280x1280**.
- Improved vectorization scripts.
> Disclaimer: it works **well**, but **not perfectly**. Expect occasional artifacts.
## Examples
![Example_1_C](https://cdn-uploads.huggingface.co/production/uploads/658814fd586088fd274d8cc1/u7Jl9Un35cK1kLJty6I2g.png)
![Example_3_C](https://cdn-uploads.huggingface.co/production/uploads/658814fd586088fd274d8cc1/IwlYEc154OqfAFdZaUz19.png)
![Example_6_C](https://cdn-uploads.huggingface.co/production/uploads/658814fd586088fd274d8cc1/7Ky9ERLVmi4mRO-J9s5YV.png)
## Guide
The full usage, installation guide and detailed workflow live in the [GitHub repo](https://github.com/SnJake/Ref2Font):
```
https://github.com/SnJake/Ref2Font
```
## What’s included
- `Ref2FontV3.safetensors` (LoRA weights)
- `Example Workflow/` (ComfyUI workflow with notes inside nodes)
- `Example/` (input images and their atlases)
- Post-processing scripts (`flux_pipeline.py`, `flux_grid_to_ttf.py`, `flux_upscale.py`)
## License
MIT
## ComfyUI setup
### Required models
1) Base model:
```
https://huggingface.co/black-forest-labs/FLUX.2-klein-base-9B/blob/main/flux-2-klein-base-9b.safetensors
```
Place in: `ComfyUI/models/diffusion_models`
2) Text encoder (Qwen):
```
https://huggingface.co/Comfy-Org/vae-text-encorder-for-flux-klein-9b/blob/main/split_files/text_encoders/qwen_3_8b.safetensors
```
Place in: `ComfyUI/models/text_encoders`
3) VAE:
```
https://huggingface.co/Comfy-Org/vae-text-encorder-for-flux-klein-9b/blob/main/split_files/vae/flux2-vae.safetensors
```
Place in: `ComfyUI/models/vae`
### LoRA
Download:
```
https://huggingface.co/SnJake/Ref2Font/blob/main/Ref2FontV2.safetensors
```
Place in: `ComfyUI/models/loras`
## ⚠️ IMPORTANT: V3 Required Prompts
**For Latin ("Aa" reference):**
> A technical font atlas grid of the Latin charset: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!?.,;:-"&". The style is strictly derived from the reference image "Aa".
**For Cyrillic ("Аа" reference):**
> A technical font atlas grid of the Cyrillic charset: "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789!?.,;:-"&". The style is strictly derived from the reference image "Аа".
### Input image rules
- **Strict black & white only** (no gray, no shadows, no volume)
- **1280×1280** (recommended)
- Follow the examples in `Example/`
## Post-processing: Atlas → TTF
Use the included pipeline script to convert the atlas into a TTF.
### Example command (Windows)
```
python flux_pipeline.py ^
--input "path\to\your_atlas.png" ^
--output-dir "output\folder" ^
--no-upscale ^
--use-grid ^
--simplify 0.5 ^
--canvas 1280 ^
--contour-level 0.5 ^
--trace-scale 4 ^
--trace-blur 1.0 ^
--smooth-iters 2 ^
--baseline-mode auto ^
--align-mode visual ^
--keep-components 4 ^
--min-component-area 3 ^
--component-center-bias 0.65 ^
--cell-bleed 0.4 ^
--cell-bleed-max 10 ^
--core-overlap-min 0.35 ^
--charset "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!?.,;:-""&" ^
--no-auto-invert
```
```
python flux_pipeline.py ^
--input "path\to\your_atlas.png" ^
--output-dir "output\folder" ^
--no-upscale ^
--use-grid ^
--simplify 0.5 ^
--canvas 1280 ^
--contour-level 0.5 ^
--trace-scale 4 ^
--trace-blur 1.0 ^
--smooth-iters 2 ^
--baseline-mode auto ^
--align-mode visual ^
--keep-components 4 ^
--min-component-area 3 ^
--component-center-bias 0.65 ^
--cell-bleed 0.4 ^
--cell-bleed-max 10 ^
--core-overlap-min 0.35 ^
--charset "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789!?.,;:-""&" ^
--no-auto-invert
```
## Notes
- `flux_upscale.py` is optional; you can skip it with `--no-upscale`.
- If the atlas looks inverted, try removing `--no-auto-invert` or add `--invert`.