FONT (File Format)
The FONT format defines fonts that can be used to display text in-game.
To do: Notate differences between different versions of the format. Only Metroid Prime's FONT version is documented at the moment. Character definition structure should be expanded on; there should be a section explaining what each value does, and it should be made more clear which UV coordinate corresponds to which vertex. |
This file format needs more research There's some unknowns in the header, and some of the values in the character definition structure should be double-checked. |
Format
Header
Offset | Size | Description |
---|---|---|
0x0 | 4 | "FONT" magic fourCC |
0x4 | 4 | Version; see below |
0x8 | 4 | Unknown |
0xC | 4 | Unknown |
0x10 | 4 | Unknown |
0x14 | 4 | Unknown |
0x18 | 4 | Unknown |
0x1C | 4 | Unknown |
0x20 | 4 | Unknown |
0x24 | N | Font name; zero-terminated string |
0x24+N | 4 | TXTR file ID |
0x28+N | 4 | Unknown |
Version
Version | Game |
---|---|
1 | Metroid Prime Kiosk Demo |
2 | Metroid Prime |
4 | Metroid Prime 2 (and demo), Metroid Prime Wii releases |
5 | Metroid Prime 3/DKCR |
Character Definitions
This part of the file defines each character of the font. It starts with a 32-bit count value.
Offset | Type | Size | Description |
---|---|---|---|
0x0 | u16 | 2 | UTF-16 character |
0x2 | float | 4 | Left UV coordinate |
0x6 | float | 4 | Top UV coordinate |
0xA | float | 4 | Right UV coordinate |
0xE | float | 4 | Bottom UV coordinate |
0x12 | u32 | 4 | Glyph left padding |
0x16 | u32 | 4 | Print head advance |
0x1A | u32 | 4 | Glyph right padding |
0x1E | u32 | 4 | Character width |
0x22 | u32 | 4 | Character height |
0x26 | u32 | 4 | Kerning index |
0x2A | End of character definition |
Kerning Table
This table is at the end of the file, and defines kerning pairs. It starts with a 32-bit count value and then loops the following structure:
Offset | Size | Description |
---|---|---|
0x0 | 2 | Character 1 |
0x2 | 2 | Character 2 |
0x4 | 4 | Kerning adjust |
0x8 | End of entry |