Difference between revisions of "FONT (File Format)"

From Retro Modding Wiki
Jump to: navigation, search
(Format)
(Glyph Entry (Version 4))
Line 214: Line 214:
 
| u8
 
| u8
 
| 1
 
| 1
| '''Layer Index'''
+
| '''RGBA 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
 
| 0x13
| u32
+
| u8
| 4
+
| 1
 
| '''Glyph left padding'''
 
| '''Glyph left padding'''
 
|-
 
|-
| 0x17
+
| 0x14
| u32
+
| u8
| 4
+
| 1
 
| '''Print head advance'''
 
| '''Print head advance'''
 
|-
 
|-
| 0x1B
+
| 0x15
| u32
+
| u8
| 4
+
| 1
 
| '''Glyph right padding'''
 
| '''Glyph right padding'''
 
|-
 
|-
| 0x1F
+
| 0x16
| u32
+
| u8
| 4
+
| 1
 
| '''Glyph width'''
 
| '''Glyph width'''
 
|-
 
|-
| 0x23
+
| 0x17
| u32
+
| u8
| 4
+
| 1
 
| '''Glyph height'''
 
| '''Glyph height'''
 
|-
 
|-
| 0x27
+
| 0x18
| u32
+
| u16
| 4
+
| 2
 
| '''Kerning index'''
 
| '''Kerning index'''
 
|-
 
|-
| 0x2B
+
| 0x1A
 
| colspan=3 {{unknown|End of glyph definition}}
 
| colspan=3 {{unknown|End of glyph definition}}
 
|}
 
|}

Revision as of 19:27, 26 March 2015

The FONT format defines fonts that can be used to display text in-game.


GravitySuitIcon.png 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.
Morphball wirerender.png 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 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 RGBA layer index
0x13 u8 1 Glyph left padding
0x14 u8 1 Print head advance
0x15 u8 1 Glyph right padding
0x16 u8 1 Glyph width
0x17 u8 1 Glyph height
0x18 u16 2 Kerning index
0x1A 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