Difference between revisions of "FONT (File Format)"
From Retro Modding Wiki
(→Header) |
|||
| Line 90: | Line 90: | ||
| Metroid Prime 3/DKCR | | Metroid Prime 3/DKCR | ||
|} | |} | ||
| − | |||
=== Glyph Entry (Version 2) === | === Glyph Entry (Version 2) === | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
{| class="wikitable" | {| class="wikitable" | ||
| Line 149: | Line 142: | ||
| u32 | | u32 | ||
| 4 | | 4 | ||
| − | | ''' | + | | '''Glyph width''' |
|- | |- | ||
| 0x22 | | 0x22 | ||
| u32 | | u32 | ||
| 4 | | 4 | ||
| − | | ''' | + | | '''Glyph height''' |
|- | |- | ||
| 0x26 | | 0x26 | ||
| Line 162: | Line 155: | ||
|- | |- | ||
| 0x2A | | 0x2A | ||
| − | | colspan=3 {{unknown|End of character definition}} | + | | colspan=3 {{unknown|End of glyph definition}} |
| + | |} | ||
| + | |||
| + | === Glyph Entry (Version 4) === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! 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''' | ||
| + | <ol start="0"> | ||
| + | <li>TXTR Red channel is fill, Green channel is outline</li> | ||
| + | <li>TXTR Blue channel is fill, Alpha channel is outline</li> | ||
| + | </ol> | ||
| + | |- | ||
| + | | 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 | ||
| + | | colspan=3 {{unknown|End of glyph definition}} | ||
|} | |} | ||
Revision as of 01:16, 28 February 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 | Size | Description |
|---|---|---|
| 0x0 | 4 | "FONT" magic fourCC |
| 0x4 | 4 | Version; see below |
| 0x8 | 4 | Unknown Font Metric (in points) |
| 0xC | 4 | Unknown Font Metric (in points) |
| 0x10 | 4 | Unknown Font Metric (in points) |
| 0x14 | 4 | Unknown Font Metric (in points) |
| 0x18 | 4 | Unknown |
| 0x1C | 2 | Unknown |
| 0x20 | 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 | 4 | 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
|
| 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 | |