MX-Font++ β Korean Handwriting (B@340K)
MX-Font++ trained on a Korean font set (print + Nanum handwriting) to generate Korean glyphs in a given handwriting style. This is the main handwriting model from the project ("B@340K"), i.e. training step 340000.
β οΈ Custom architecture β the weights need the code to run.
This is not a transformers model. Load it with the training repo:
π https://github.com/HERIUN/MXFontpp-korean
Files
mxfontpp_korean_hand_340k.pthβ full training checkpoint (generator,generator_ema,discriminator, optimizer states). Inference usesgenerator_ema; the full file also lets you resume training.
Usage
Custom architecture β clone the code repo and run inference there:
git clone https://github.com/HERIUN/MXFontpp-korean && cd MXFontpp-korean
# download mxfontpp_korean_hand_340k.pth into this dir
Edit cfgs/eval.yaml:
dset.test.data_dirβ folder of reference PNGs of the target styledset.test.source_fontβ a Korean source.ttf(content font)dset.test.gen_chars_fileβ JSON list of chars to generate (blank = all in source)
python eval.py cfgs/eval.yaml \
--weight mxfontpp_korean_hand_340k.pth --result_dir out/
eval.py auto-selects generator_ema and writes glyphs to
out/<style>/<codepoint>.png. inference.ipynb does the same interactively.
See the repo README for full details.
Training
- Trained from scratch on a Korean font set (print + Nanum handwriting) β not finetuned from any base checkpoint.
- Data: free Korean fonts (Google Fonts + Naver Nanum handwriting), not
redistributed. List in the repo's
FONTS.md. - Steps: 340000. Korean decomposition/primals JSON are in the code repo.
Intended use & limitations
Meant to fill the long tail of a Korean font set (glyphs beyond the common
KS2350 set) in a consistent style. Per-writer / out-of-distribution style
transfer is not reliable β the style manifold collapses toward an average
hand. Finetuning attempts to fix this (style_consist / style_supcon losses
in the repo) hit a β0.02~β0.04 IoU ceiling and did not break the collapse. For
faithful per-writer transfer use DM-Font instead; use this model for the
in-distribution tail-fill it does well.