Difference between revisions of "Xtf"

From xboxdevwiki
Jump to: navigation, search
(File format info and link to a parser / converter tool)
(added more background info)
Line 6: Line 6:
 
== Dashboard fonts ==
 
== Dashboard fonts ==
  
The dashboard fonts were designed by [[Wikipedia:Steve Matteson|Steve Matteson]].
+
The dashboard fonts were designed by [[Wikipedia:Steve Matteson|Steve Matteson]] of [[Wikipedia:Ascender Corporation|Ascdender Corporation]] for use on the Xbox. Matteson had already created many of Microsoft's [[Wikipedia:Microsoft Windows|Windows]] core fonts and would later create the [https://www.fonts.com/font/microsoft/convection:Link Convection fonts used on the Xbox 360].
They contain 7365 glyphs each.
+
 
 +
Each font contain 7365 glyphs each.
  
 
=== Xbox.xtf ===
 
=== Xbox.xtf ===
Line 37: Line 38:
 
**** 4 byte float (X-coordinate)
 
**** 4 byte float (X-coordinate)
 
**** 4 byte float (Y-coordinate)
 
**** 4 byte float (Y-coordinate)
 +
 +
Individual character meshes are stored as triangle strips
  
 
{{FIXME|reason=Confirm these findings and format them better}}
 
{{FIXME|reason=Confirm these findings and format them better}}

Revision as of 15:33, 12 September 2017

Xbox Font Specimen

XTF is a font file format used in the Dashboard. It became famous for being exploited.

Dashboard fonts

The dashboard fonts were designed by Steve Matteson of Ascdender Corporation for use on the Xbox. Matteson had already created many of Microsoft's Windows core fonts and would later create the Convection fonts used on the Xbox 360.

Each font contain 7365 glyphs each.

Xbox.xtf

A monospace font.

Xbox.xtf from Dashboard.

XBox Book.xtf

XBox Book.xtf from Dashboard.

File format

  • 4 byte (magic)
  • 4 byte (length prefix for following string)
  • zero-terminated string with given buffer length (font-name)
  • GLYPHSET (List of supported glyphs)
  • For each cGlyphsSupported:
  • For each GLYPHSET range
    • For each glyph in this range
      • 2 byte (Index count)
      • 2 byte (Vertex count)
      • For each index:
        • 2 byte (Vertex index)
      • For each vertex:
        • 4 byte float (X-coordinate)
        • 4 byte float (Y-coordinate)

Individual character meshes are stored as triangle strips

[FIXME]

Links