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
| Offset
|
Size
|
Description
|
| 0x0
|
4
|
"FONT" magic fourCC
|
| 0x4
|
4
|
Version; see below
|
| 0x8
|
4
|
Max glyph height (plus padding, in points)
|
| 0xC
|
4
|
Min glyph height (plus padding, in points)
|
| 0x10
|
4
|
Max glyph width (plus padding, in points)
|
| 0x14
|
4
|
Min glyph width (plus padding, in points)
|
| 0x18
|
4
|
Unknown
|
| 0x1C
|
2
|
Unknown
|
| 0x1E
|
4
|
Font Size (in points)
|
| 0x22
|
N
|
Font name; zero-terminated string
|
| 0x22+N
|
4
|
TXTR file ID
|
| 0x26+N
|
4
|
Unknown
|
| 0x2A+N
|
4
|
Glyph Count
|
| 0x2E+N
|
|
Glyphs (Version 2, Version 4)
|
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
|
Glyph Entry (Version 2)
| 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
|
Glyph width
|
| 0x22
|
u32
|
4
|
Glyph height
|
| 0x26
|
u32
|
4
|
Kerning index
|
| 0x2A
|
End of glyph definition
|
Glyph Entry (Version 4)
| 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
|
u8
|
1
|
Layer Index
- TXTR Red channel is fill, Green channel is outline
- TXTR Blue channel is fill, Alpha channel is outline
|
| 0x13
|
u32
|
4
|
Glyph left padding
|
| 0x17
|
u32
|
4
|
Print head advance
|
| 0x1B
|
u32
|
4
|
Glyph right padding
|
| 0x1F
|
u32
|
4
|
Glyph width
|
| 0x23
|
u32
|
4
|
Glyph height
|
| 0x27
|
u32
|
4
|
Kerning index
|
| 0x2B
|
End of glyph 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
|