Ask an AI about this

If your language's characters show up as empty boxes in a game, the game's font simply doesn't know them. The Fonts page is how you fix that, permanently, for everyone who installs your translation.

Fonts & glyphs

If your language's characters show up as empty boxes in a game, the game's font simply doesn't know them. The Fonts page is how you fix that, permanently, for everyone who installs your translation.

Why fonts matter

Here's a surprise that catches every first-time translator: you can translate every line of a game perfectly and still see nothing but empty boxes in-game. The reason is fonts. A font only contains the characters its designer drew, and many games ship with fonts that cover the Latin alphabet and little else. If your language is written in Japanese kana and kanji, Georgian, Cyrillic, Greek, Armenian, or any other script, the game's font may simply have no drawing (no glyph) for your characters.

In-game menuNoto Sans JP
  • はじめから
  • つづきから
  • 設定
  • デスクトップに戻る

Every character has a glyph. The menu reads.

A finished translation, drawn twice. The game's own font has no Japanese glyphs, so every character becomes a box; point that font at one that does and the same text reads. Nothing about the translation changed.

Font without your script

□□□□□□□□

Every character renders as an empty box.

Font with your script

ようこそ、旅の方

The same text, readable.

The same thing side by side, if you'd rather compare than watch. Those boxes have a nickname: tofu.

The fix is to bundle a font that covers your script into the translation, and the Fonts page is where you do it. Your patch then carries the font with it, so every player who installs your translation sees real letters.

Font overrides, the two-pane way

The Fonts page shows two lists. On the left are the fonts the game itself uses, found during the scan when you added it. On the right is Tranzio's font library, a curated set with real previews. Your job is to draw a line between them: for each game font your language can't survive, pick a library font that covers it.

Each game font is drawn in its own typeface, read straight out of the game's archives. That matters more than it sounds: a list of names like OldStyle_boxed and BlooberSpecial tells you nothing about which one is the menu, which is a chalk scrawl on a blackboard, and which the player never sees. Clicking a row shows the same font large, above whatever you are replacing it with, so the two can be compared side by side.

3 of 3 overridden

Game fonts

  • Silksong DisplayNoto Sans JP
  • Silksong SerifNoto Serif JP
  • Silksong UI SmallNoto Sans JP

Font library

  • Noto Sans JPはじめから
  • Noto Serif JPはじめから
  • Noto Sans Georgianდაიწყე თამაში
Replacements landing one at a time. The counter at the top keeps score, and a replaced row grows a green edge so you can see at a glance what is still untouched.
  1. Target a row, then pick

    Click a game font to arm it. A banner appears saying what you're assigning to, and the next library font you open offers "Use for that font".

  2. Or just drag

    Drag any card onto a game-font row, from any of the three shelves. Rows light up as drop targets while you drag, in green for an empty row and amber for one that already has a replacement.

  3. Narrow the library

    The library opens filtered to the language you're translating into, because that's almost always what you want. Search by name, or switch language to see what covers a different script.

  4. Say when nothing is needed

    A game ships fonts for scripts nobody is translating into. Press "No replacement needed" on those rows and they stop counting as untouched, so the list can actually reach the end.

  5. Apply and save

    Nothing is written until you hit Apply & save. A bar appears at the bottom while you have unsaved picks, with Discard next to it, and "Reset all" at the top clears every one.

ShortcutAction
Ctrl+FFocus the font library search
Ctrl+SApply and save your replacements

Pick a font whose shapes sit close to the game's original: similar weight, similar mood. Games usually draw headings and body text with different fonts, so match each one rather than pointing everything at a single replacement. Your text should feel like the game always spoke your language, not like a subtitle laid over it.

Where the fonts come from

Three shelves, switched with the chips above the grid. Every card renders its specimen in the real typeface, whichever shelf it is on, so you are always judging letterforms rather than a name.

All52Tranzio12Google Fonts38Yours2
FiraGOTranzio
ვინაიდან ადამიანთა ოჯახის
Sans Serif · Georgian, Cyrillic, Latin
Noto Serif GeorgianTranzio
ვინაიდან ადამიანთა ოჯახის
Serif · Georgian, Latin
The same grid, one shelf at a time. The chip counts tell you how much each one has to offer for the language you have selected.
WhereWhat it does
TranzioThe curated library. Every font in it is cleared to redistribute inside a patch, which is exactly why it is curated rather than uploaded by you.
Google FontsGoogle's whole catalogue, narrowed to the families that can actually draw your language. Nothing is downloaded when you pick one: the file is fetched at build time, so trying five fonts costs nothing.
YoursFont files you added yourself, described below. They stay on your computer and only travel baked inside a build you publish.
Language filterThe picker beside the search box narrows all three shelves at once, and sets what the specimens are written in. It opens on the language you are translating into.
Real sentencesCards draw Google's own specimen rather than a row of the alphabet, because how a face reads at length is the thing you are actually judging. A font is shown in its own script (a Japanese face in Japanese), or in your language when it covers it.

Using your own font

Drop a .ttf or .otf on the box under the library, or click it to choose one. Tranzio copies the file in beside the game, so it keeps working after you clean out your Downloads folder, and reads it before accepting it: you get the family name, the glyph count, and a straight answer about whether it can draw the language you are translating into.

Then it asks what to call it. A file named NotoSansGeorgian-VariableFont_wdth,wght.ttf is not a name, and you are the only one who can supply a better one, so give it a name and it joins the Yours shelf. From there it behaves like any other card: drag it onto a game font, or open it and use it. Had you armed a row before adding the file, it is applied there straight away as well.

Your fonts stay on your computer. Nothing is uploaded when you add one. The file lives in this game's folder, and the only way it travels is baked inside a pak, which happens when you build and publish a release.

FiraGO4,577 glyphs
FiraGO-Regular.ttf
Covers Georgian. Every character in the translation has a shape.
Amorie Modella640 glyphs
Amorie-Modella-Medium.ttf
No glyphs for გ ა მ ო ბ. Those draw as empty boxes in game.
What Tranzio reports after reading a font you picked. The second one would have shipped a screen of empty boxes.

A web font (.woff or .woff2) is refused, because Unreal cannot load one. Convert it to .ttf or .otf first and pick that.

Games store fonts in two ways and Tranzio handles both without asking you which is which. Some keep the font as its own file next to the asset, and replacing it is a swap. Most keep it inside the asset, and there the build has to take the original apart and rebuild it around your font. That second kind used to be invisible: Little Nightmares II shows nineteen fonts on this page, and only two of them are the first kind.

Missing glyphs

A glyph is the drawn shape of a single character. Even a font that mostly covers your language can be missing a few characters (a rare accent mark, a special punctuation), and a font you never replaced will be missing all of them. Picking your own font checks this for you, as above. Two habits cover the rest.

The first is the font coverage figure on the Build page. It sits beside text and audio coverage and counts how many of the game's fonts you have replaced. It won't tell you which characters are missing, but a low number is a reliable warning that boxes are coming.

Fonts
33%
3 / 9 fonts replaced
6 unchanged9 detected
Font coverage before a build. Three of nine replaced means six of the game's fonts still draw with whatever the developer shipped.

The second is to play it. Build, install locally, and walk through the menus, a shop, a cutscene and the settings screen. Boxes are impossible to miss once they're on screen, and a five-minute pass catches the fonts you forgot existed.

Fonts are licensed work. A font is someone's craft, just like your translation. Tranzio's library only carries fonts that are cleared to redistribute, which is exactly why it's curated. If you ever bundle a font from elsewhere, check its license first (open licenses like the SIL Open Font License are the safe standard).