Difference between revisions of "FONT (File Format)"
From Retro Modding Wiki
(→Format) |
|||
Line 37: | Line 37: | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
+ | | u32 | ||
| 4 | | 4 | ||
| '''Paragraph upper margin''' | | '''Paragraph upper margin''' | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
+ | | s32 | ||
| 4 | | 4 | ||
| '''Line margin''' | | '''Line margin''' | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
+ | | u32 | ||
| 4 | | 4 | ||
| {{unknown|'''Unknown'''}} | | {{unknown|'''Unknown'''}} | ||
|- | |- | ||
| 0x1C | | 0x1C | ||
+ | | u16 | ||
| 2 | | 2 | ||
| {{unknown|'''Unknown'''}} | | {{unknown|'''Unknown'''}} | ||
|- | |- | ||
| 0x1E | | 0x1E | ||
+ | | u32 | ||
| 4 | | 4 | ||
| '''Font Size''' (in points) | | '''Font Size''' (in points) | ||
|- | |- | ||
| 0x22 | | 0x22 | ||
+ | | string | ||
| N | | N | ||
| '''Font name'''; zero-terminated string | | '''Font name'''; zero-terminated string | ||
|- | |- | ||
| 0x22+N | | 0x22+N | ||
+ | | [[TXTR (Metroid Prime)|TXTR]] | ||
| 4 | | 4 | ||
− | | ''' | + | | '''Texture ID''' |
|- | |- | ||
| 0x26+N | | 0x26+N | ||
+ | | u32 | ||
| 4 | | 4 | ||
| {{unknown|'''Unknown'''}} | | {{unknown|'''Unknown'''}} | ||
|- | |- | ||
| 0x2A+N | | 0x2A+N | ||
+ | | u32 | ||
| 4 | | 4 | ||
| '''Glyph Count''' | | '''Glyph Count''' | ||
|- | |- | ||
| 0x2E+N | | 0x2E+N | ||
− | | | + | | Glyph[] |
− | | ''' | + | | '''Glyph Table''' ([[#Glyph Entry (Version 2)|Version 2]], [[#Glyph Entry (Version 4)|Version 4]]) |
|} | |} | ||
Revision as of 17:07, 26 March 2015
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. |
Contents
Format
Header
Offset | Type | Size | Description |
---|---|---|---|
0x0 | char[4] | 4 | "FONT" magic fourCC |
0x4 | u32 | 4 | Version; see below |
0x8 | u32 | 4 | Unknown |
0xC | s32 | 4 | Line height |
0x10 | u32 | 4 | Paragraph upper margin |
0x14 | s32 | 4 | Line margin |
0x18 | u32 | 4 | Unknown |
0x1C | u16 | 2 | Unknown |
0x1E | u32 | 4 | Font Size (in points) |
0x22 | string | N | Font name; zero-terminated string |
0x22+N | TXTR | 4 | Texture ID |
0x26+N | u32 | 4 | Unknown |
0x2A+N | u32 | 4 | Glyph Count |
0x2E+N | Glyph[] | Glyph Table (Version 2, Version 4) |
Version
Version | Game |
---|---|
1 | Metroid Prime Kiosk Demo |
2 | Metroid Prime NTSC 0-00 |
4 | Metroid Prime PAL/Player's Choice and Metroid Prime 2 |
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 | Left padding |
0x16 | u32 | 4 | Print head advance |
0x1A | u32 | 4 | Right padding |
0x1E | u32 | 4 | Width |
0x22 | u32 | 4 | Height |
0x26 | u32 | 4 | Base offset |
0x2A | u32 | 4 | Kerning index |
0x2E | 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
|
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 |