Standard TTF and WOFF files. Drop them anywhere a custom font goes — no plug-ins, no special integration. Even on e-readers.
✓ And it's 100% free, no signup.
Pick the app or operating system you use most and see what to do.
.ttf you downloaded.Free accounts may need a Canva Pro upgrade to upload custom fonts.
Wing Font is a font-generation tool. Give it two TTFs (one for the base characters, one for the annotation glyphs) plus a CSV mapping characters to annotations, and it produces a new OpenType font whose glyphs have those annotations baked in. The output works anywhere a custom font can be loaded — websites, Word, Telegram, email, you name it.
The whole pipeline runs in your browser via Pyodide (WebAssembly). No Python install, no uploads to a server, no fees, no data leaves your machine.
Romanization is baked into the glyph itself — no HTML <ruby> markup needed. Copy the text anywhere and the annotations travel with it.
Polyphonic characters auto-switch based on the surrounding word — e.g. 銀行 vs 行人 — via an OpenType Chain Contextual Substitution under the `ccmp` feature.
1-indexed digit suffix to override the automatic reading: - `字0` → bare kanji, no annotation on top - `字1` → 1st reading (= default; same as typing `字` alone) - `字2` → 2nd reading - `字10` → 10th reading (use the full decimal for readings beyond the 9th) **In Microsoft Word**: half-width ASCII digits get split into a separate shaping run by DirectWrite, so the ligature can't fire across the boundary — use **fullwidth digits** `字0`, `字1`, `字2` (or the IME-friendly `字丅零`, `字丅一`, `字丅二`) instead. Fullwidth digits are East-Asian-Width=F, which keeps them in the surrounding CJK run, and the override fires correctly.
Your fonts and mapping never leave your browser. Everything runs client-side.