|
|
--- |
|
|
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 |
|
|
|
|
|
 |
|
|
|
|
|
 |
|
|
|
|
|
 |
|
|
|
|
|
## 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`. |